CAN五种错误检测机制
一、基于信息流级别的错误检测
1、CRC校验错误
- 15位的CRC通过发送端根据发送信息的内容计算产生
- 接收端根据接收内容重新计算CRC并于发送端发送过来的CRC数值进行比较
- 当两个数字不一致时候CRC错误标记产生
2、帧格式错误检测,当接收端在以下位置检测到非法位时格式错误标记
- CRC认可位
- ACK认可位
- 帧结束位
3、应答错误检测
- 每一个接收端都回在ACK场向总线回应一个显性位
- 如果发送端在ACK场检测不到一个ACK应答将产生应答错误标记
- 常见的应答错误多数由于总线上没有一个活跃的节点引起,即孤立节点的情况
二、基于位(bit)级别的错误检测
4、位(bit)检测
- 在发送过程中发送器通过接收端监视总线上每一位发送出去的电平是否与发送驱动的一致
- 当发监视位电平与发送驱动的不一致将产生一个位错误标记
- 在仲裁场和ACK场不执行填充位错误检测
5、位填充
- 发送端根据发送内容每5个相同的位插入一个反向电平进行填充
- 接收端自动消除填充位保重信息透明传输及恢复
- 当接收检测到连续6个相同的位是将出发位填充错误标记
3、补充
- 位填充用于保证在NRZ位流中有足够的边沿用于从同步
- 错误帧违背位填充规则
错误标记及错误计数
1、错误标记
当节点最少检测到一个错误时将马上终止总线上的传输并发送一个错误帧
2、错误帧
- 错误帧由两个场组成,错误标志及错误界定场,其中包含6位的显性位
- 帧结构图
3、超载帧
当控制器未能足够快地处理当前的信息时将发送超载帧,中断其他发送控制器发送过程以减缓发送速度,加长发送帧间隔。组成:由超载标志场及超载界定场组成
错误计数和错误等级
1、错误计数
- 每监测到一个接收错误,其错误计数加1
- 每监测到一个发送错误,其错误计数加8,发送错误更容易被察觉到
2、错误等级
- 主动错误 Error Counter < 127
- 错误警告 Error Counter = = Error Limit
- 被动错误 Error Counter > 127
- 总线关闭 Error Counter = = 255
常见总线故障原因及处理
1、硬件故障
- 波特率不一致
- 终端电阻失配
2、软件故障
- CAN错误中断类型
- 错误中断处理