CAN总线——错误帧和错误状态

一、五种CAN总线可能发生的错误

1、CRC错误:

接收节点计算出的CRC校验值,与发送节点计算的结果不一致;

2、格式错误:

传输的数据帧格式,与任何一种帧格式都不符;

3、应答错误:

ACK段,发送节点没有收到接收节点发出的应答(显性位);

单节点的CAN设备发送数据帧时为发生应答错误;

4、位发送错误:

发送过程中,发送节点发送的同时监听总线电平,如果总线电平和发送的不一致;

在仲裁域发现不同不报错,因为就是要仲裁掉优先级低的报文;

发送被动错误标志、主动错误标志期间检测总线电平有6个相同位时;

5、位填充错误:

帧起始到CRC之间,接收节点检测到有6个连续相同的位电平时,也就是违反5位相同位插入1位相反位的“位填充”原则;

因为ACK域和帧结束域电平固定,也无需填充;

二、三种错误状态

主动错误标识——6个显性位、由主动错误节点发出

被动错误标识——6个隐性位、由被动错误标志发出

错误界定符——8个隐性位

1、主动错误 :

因为主动错误标识由6个显性位组成,可以理解为破坏“位填充”原则,一个节点发现通信错误时,它会主动将帧彻底破坏掉,让其他节点知道它接收出错了;

CAN总线的特点是“广播”,也就是总线上一个节点发出,其余所有节点均能正确接收,如果有一个或多个节点由于某种原因出现接收错误,那么这个节点会主动站出来,通过发送不符合“位填充”规则的帧错误帧,来彻底把这一帧破坏掉,以通知其他节点“这一帧我接收错了,不算数,重来”,其他节点也许没有错,但是也会在收到主动错误标识后发出一个主动错误标识;发送节点在发送的同时也会监听总线数据,当发现数据被其他节点“破坏”后,会主动进行数据重发。

由CAN控制器自动完成。 

错误不多,不是我导致的,我主动发送错误标识,通知其他节点放弃这一帧,我正常收发;

2、被动错误 :

错误比较多,很可能错误是由我导致的,我通知其他节点有错但是不干扰他们正常收发数据,也不要求重发,同时我不能连续发送了,得再插入8位隐性位的“延迟传送”段;这样是为了让其他正常节点(处于主动错误)优先使用总线;

被动错误的节点很可能存在硬件故障,不能让它拖累整个网络;

3、总线关闭:

   错误太多,是我的问题,我停止收发并脱离总线;

   总线上数据的收发都被禁止;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN总线通信协议错误是指在CAN总线通信中发生了一些问题或错误导致数据传输出现异常的情况。错误可以分为以下几种类型: 1. 误码(Error Frame):当总线上的任一节点检测到总线上出现了错误时,会发送一个误码给其他节点,来通知它们发生了错误。 2. 传输错误(Transmission Error Frame):当一个或多个CAN节点尝试发送数据帧时,如果在总线中发生了传输错误,例如位错误、标识符错误或CRC校验错误等,就会发送传输错误。 3. 硬件错误(Hardware Error Frame):当CAN控制器发现硬件故障或错误时,会发送硬件错误来通知其他节点,同时也会主动使整个系统进入总线离线状态,以防止错误数据的传输。 4. 重传错误(Retry Error Frame):当发送节点在传输数据帧时,如果在规定的重传次数内未能成功发送,就会发送重传错误。这种错误通常会引发其他节点对数据帧的重传,以保证数据的正确传输。 5. 格式错误(Format Error Frame):当节点在接收数据帧时,如果发现数据帧的格式不符合当前总线通信协议的规范,例如格式错误类型错误等,就会发送格式错误来通知发送节点。 总的来说,CAN总线通信协议错误的出现意味着通信中出现了异常情况,可能是硬件故障、传输错误、格式不正确等原因导致的数据传输异常。及时检测和处理错误对于确保CAN总线通信的稳定性和可靠性非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值