CAN总线常见的错误帧及产生原因
文章目录
- 一、位错误(Bit Error)
- 1. 表现形式
- 2. 产生原因
- 二、填充错误(Stuff Error)
- 1. 表现形式
- 2. 产生原因
- 三、CRC 错误(CRC Error)
- 1. 表现形式
- 2. 产生原因
- 四、格式错误(Form Error)
- 1. 表现形式
- 2. 产生原因
- 五、应答错误(ACK Error)
- 1. 表现形式
- 2. 产生原因
- 六、超时错误(Timeout Error)
- 1. 表现形式
- 2. 产生原因
CAN(Controller Area Network)
总线是一种广泛应用于汽车、工业自动化等领域的串行通信协议。在 CAN 总线通信过程中,可能会出现多种错误帧,本文介绍常见的几种
一、位错误(Bit Error)
1. 表现形式
节点在发送某一位时,期望总线上出现与自己发送相同的电平,但实际监测到的电平与发送的电平不一致。
例如,节点发送一个显性位(逻辑 0),但在总线上检测到隐性位(逻辑 1)。
2. 产生原因
这可能是由于电磁干扰、线路故障、收发器故障等原因导致信号在传输过程中发生畸变。
二、填充错误(Stuff Error)
1. 表现形式
CAN 总线采用位填充技术,即当连续出现 5 个相同极性的位后,发送节点会自动插入一个相反极性的位。
如果接收节点在接收数据时,发现连续出现 6 个相同极性的位而没有插入填充位,或者填充位的极性错误,就会检测到填充错误。
2. 产生原因
这通常是由于发送节点的位填充逻辑出现故障或者数据传输过程中的干扰导致填充位丢失或极性改变。
- 或者 未接收到报文
- 或者 接收节点波特率配置错误
三、CRC 错误(CRC Error)
1. 表现形式
CAN 帧中包含一个 CRC 序列,用于检测数据在传输过程中是否发生错误。
发送节点根据帧的内容计算出一个 CRC 值,并将其附加在帧的后面。接收节点在接收到帧后,会根据接收到的帧内容重新计算 CRC 值,并与接收到的 CRC 序列进行比较。如果两者不相等,则认为出现 CRC 错误。
2. 产生原因
这可能是由于数据在传输过程中受到干扰,导致部分位发生改变,从而使计算出的 CRC 值与接收到的 CRC 序列不一致。
四、格式错误(Form Error)
1. 表现形式
CAN 帧有特定的格式,包括帧起始、仲裁场、控制场、数据场、CRC 场、应答场和帧结束等部分。
如果接收节点在接收帧时,检测到某个场的格式不符合规定,例如帧结束位不是隐性位,或者应答场的格式错误等,就会检测到格式错误。
2. 产生原因
这可能是由于发送节点的帧格式生成逻辑出现故障或者数据传输过程中的干扰导致帧格式被破坏。
五、应答错误(ACK Error)
1. 表现形式
在 CAN 总线通信中,当接收节点正确接收到一个有效的帧后,会在应答场中发送一个显性位作为应答信号。
发送节点在发送完帧后,会在应答场中监测是否接收到应答信号。如果发送节点在应答场中没有检测到显性位,即没有接收到应答信号,则认为出现应答错误。
2. 产生原因
这可能是由于接收节点没有正确接收到帧,或者接收节点出现故障无法发送应答信号,也可能是应答信号在传输过程中受到干扰而丢失。
六、超时错误(Timeout Error)
1. 表现形式
当发送节点在规定的时间内没有收到接收节点的应答信号,或者接收节点在规定的时间内没有接收到数据帧,就会产生超时错误。
2. 产生原因
这通常是由于网络负载过重、节点故障或者是通信线路故障等原因导致的。