前言
CAN总线的错误类型主要包括:位错误、填充错误、格式错误、ACK错误和CRC错误。这里一定要做好CAN总线的错误类型、错误帧类型、节点状态之间的区别。
- 错误类型是帧传输出错的原因类型;
- 错误帧类型(主动错误帧、被动错误帧)是帧传输在出现错误类型的任意一种后进行的错误帧发送处理。
- 节点状态(主动错误、被动错误、总线关闭)是帧传输出错后对于节点状态的不同定义。
关于错误帧类型、节点状态的内容在后续的文章中会进行详细介绍。
一、基本定义
能够根据错误类型的定义中得出一些结论:
- 只能由发送节点检测出来的是位错误、ACK错误。
- 只能由接收节点检测出来的是CRC错误。
- 发送节点/接收节点都能检测出来的是填充错误和格式错误。
这些对于在实际测试过程中分析错误帧出现的原因有一定理论支撑。
二、错误检测范围
根据上图我们能够清楚的知道每种错误类型在帧结构中的检测范围:
位错误:从帧起始SOF到帧结束EOF。
填充错误:从帧起始SOF到CRC。
格式错误:CRC界定符、ACK界定符和帧结束EOF。
ACK错误:ACK位。
CRC错误:CRC场位。
其中,格式错误有一个特例。当接收节点在帧结束EOF最后一位检测到显性位,不认为是格式错误,而认为是超载帧的开始。但发送节点会认为是格式错误。