CAN总线上的错误类型
近海
|
2019.12.30
|
0
+关注

CAN总线上的节点在发送和接收报文时,如果检测到错误,该节点就会往总线上发送错误帧,通知总线上的其它节点出错了,需要停止接收或者发送报文。那么哪些情况会导致节点检测到错误呢?下面就来讨论一下这个问题。

CAN协议定义了五种错误类型:位错误、ACK错误、填充错误、CRC错误和格式错误。

1. 位错误

节点在往总线上发送电平的同时会检测总线上的电平,如果发现检测到的电平与自己发送的电平不一致,就说明总线上出现了位错误。比如发送了显性电平却检测到隐性电平,或者相反,就表明总线上出现了位错误。

2. ACK错误

CAN协议规定,在报文发出之后,如果接收节点B成功接收了该报文,那么B就要在报文ACK场向总线上发送一个显性位来应答发送节点A。因此,发送节点A会在ACK场从总线上检测到一个显性位。所以,如果发送节点A没有在ACK场检测到显性位,那么A就会检测到一个ACK应答错误,说明没有节点成功接收该报文,如下图所示。

3. 填充错误

CAN协议规定,节点发送数据时,当连续发送5位相同极性的数据时,则必须插入1个极性相反的位,如下图所示。

所以,在执行位填充原则的场内(数据帧和远程帧的SOF~CRC序列),最长的连续相同电平为5位,如果连续检测到六个同性位,则检测到一个位填充错误。

4. CRC错误

CRC序列是有发送器CRC计算的结果组成的,接收器和发送器以相同的方法计算CRC。如果计算的结果和接收到的CRC序列不同,则检测出一个CRC错误,如下图所示。

5. 格式错误

当固定形式的场中出现一个或多个非法位时,则检测到一个格式错误。

在CAN报文中,有固定形式的区域包括:

(1)数据帧和远程帧的CRC界定符、ACK界定符、EOF;

(2)错误帧界定符;

(3)过载帧界定符。

以上介绍了CAN协议规定的5种错误类型,并分析了每种错误发生的原因。希望通过本文的介绍,能够使大家对CAN总线有更深入的了解,从场的层面去分析每一帧报文,这样当CAN总线上出现错误时可以有的放矢地解决问题。

精选留言
延伸阅读
更多报告干货
写留言
4732
阅读
收藏
回到顶部