一文详解CAN总线错误帧
01
错误帧的帧结构
在发送和接收报文时,总线上的节点如果检测出了错误,那么该节点就会发送错误帧,通知总线上的节点,自己出错了。
主动错误标志:6个连续的显性位;
被动错误标志:6个连续的隐性位;
错误界定符:8个连续的隐性位。
02
错误帧是怎么检测的
在了解CAN总线中的错误检测之前,首先需要了解什么是位填充。
CAN协议中规定,当相同极性的电平持续五位时,则添加一个极性相反的位。
03
错误帧的种类
位错误
ACK错误
填充错误
CRC错误
格式错误
在一帧报文发送时,如果在必须发送预定值的区域内检测到了非法值,那么就检测到一个格式错误。
CAN报文中,有预定值的区域包括:
数据帧和遥控帧的CRC界定符、ACK界定符、EOF;
错误帧界定符
过载帧界定符
04
错误通知
什么情况下发送带有主动错误标志的错误帧;
什么情况下发送带有被动错误标志的错误帧;
在哪个时间点发送错误帧;
错误标志重叠部分是怎样形成的;
4.1 节点错误状态
按照CAN协议的规定,CAN总线上的节点始终处于以下三种状态之一。
主动错误状态
被动错误状态
总关闭状态
当满足一定的条件时,节点可以从一种状态转换为另外一种状态。
处于被动错误状态的节点(可能是接收节点也可能是发送节点)在检测出错误时,发出被动错误标志。
3)总线关闭状态
处于总线关闭状态的节点,只能一直等待,在满足一定条件的时候,再次进入到主动错误状态。
3.3 错误帧的发送
在检测到错误之后,什么时候发送错误帧呢?
按照CAN协议的规定:
位错误、填充错误、格式错误、ACK错误。
在错误产生的那一位的下一位开始发送错误帧。CRC错误
紧随ACK界定符后的位发送错误帧
从上图中可以看出错误帧之中,错误标志重叠部分是怎样形成的,这个例子中,位错误的错误标志与填充错误的错误标志重叠两位,剩下的部分还有四位:
文章来源:公众号车辆技术,侵删