Can busoff 解读

1. busoff 解读
1.1什么是busoff?

busoff 表示总线的关闭,此时ECU从总线脱离,既不能接收总线的报文,也不能向总线发送报文。

1.2.哪些情况会导致 busoff 产生?

假设can总线上有两个节点,BusOff故障的宏观原因主要包括以下几点:

(1)CAN_H和CAN_L的开路、短路以及终端电阻的开路等会导致can busoff;

(2)任何一个节点的CAN控制器或收发器的故障会导致BusOff故障的发生。

(3)外部环境中的电磁干扰或其他形式的干扰导致CAN信号传输异常,进而导致BusOff故障。

1.3. busoff 实际产生原因

  节点自身识别到自己发送错误,发送错误计数器(TEC)大于255导致的。

说明:

(1)CAN总线上存在多种错误状态,位错误(Bit Check Error)、位填充错误(Bit Stuff Error)、CRC错误(CRC Error)、帧格式错误( Check Error)、应答错误(Acknowledgment Error)。

(2)CAN模块中有接收错误计数器(REC)及发送错误计数器(TEC);CAN错误包括三种状态,即主动错误、被动错误、总线关闭;

         1>.主动错误:当发送错误计数器和接收错误计数器值都小于128时产生,正常进行总线通讯,错误发生时,发送主动错误帧;

         2>.被动错误:当发送错误计数器或接收错误计数器值大于等于127时产生;正常进行总线通讯,错误发生时,发送被动错误帧;

         3>.总线关闭:当发送错误计数器大于等于256时产生,不收发任何报文。

综上所述 物理层的线路问题、CAN控制器的硬件故障、CAN总线的信号干扰等都有可能产生BusOff故障。但是节点进入busoff状态,一定是因为节点自身识别到自己发送错误,发送错误计数器(TEC大于255导致的。一旦检测到BusOff故障,可以通过重新初始化CAN控制器来解决。

2.busoff 快慢恢复机制
     2.1.引入快慢恢复机制的原因

        当节点进入总线关闭状态后,如果MCU仅是开启自动恢复功能,CAN控制器在检测到128次11个连续的隐性位后即可恢复通信。以500K的波特率为例,128*11*(1/500000)= 0.002816s。这意味着如果节点所在的CAN总线的帧间隔时间大于0.002816s,节点在总线空闲时间内便很快恢复通信。当进入总线关闭状态时,节点已经发生了严重的错误,处于不可信状态,如果迅速恢复参与总线通信,具有较高的风险,因此,在实际的应用中,往往会通过MCU对CAN控制器总线关闭状态的恢复过程进行编程处理,以控制节点从总线关闭状态恢复到错误主动状态的等待时间,达到既提高灵活性又保证节点在功能上的快速响应性的目的。

2.2.快慢恢复流程

(1)节点在正常通讯的过程中,出现了发送错误,且发送错误计数不断增加,只要发送错误计数没有超过255, CAN控制器便会自动重发报文,如果发送错误计数超过255,则节点状态为总线关闭状态。快慢恢复流程如下:

        1>.busoff 产生,总线处于关闭状态。

        2>.进入can busoff 中断,在中断中记录busoff 状态,置位busoff标志位,这时MCU已经进入“快恢复”过程。根据标志位控制位控制MCU的 can控制器停发报文, 并进行等待。

        3>.时间达到T1(如100ms)后,MCU重新初始化CAN控制器并与总线通信,这样便完成了一次“快恢复。

        4>.重复快恢复流程,当节点“快恢复”计数达到设定的值N(如10次),MCU把恢复总线通信的等待时间T2进行延长(如1000ms),这样便实现了“慢恢复”过程。

        注意

        1>.“快恢复”和“慢恢复”过程的主要区别就在于恢复节点参与总线通信的等待时间的不同。

        2>.如果总线上只有一个节点,该节点发送的报文没有其他节点应答,此时节点的TEC只会增加到128,不会产生busoff。

        3>.在快/慢恢复时间内应暂停发送报文,可以接收报文。

 

  • 21
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值