如果 ECU 进入 Bus off 状态,控制器将不再向总线发送周期性和事件性报文,任何保留在 Tx缓存中的周期性和事件型报文的发送将被清除,不允许等待传输请求和被恢复除非发送被再次使能。在 Bus Off 恢复以后或者网络返回到激活状态后,周期性和事件型报文的发送将被再次执行,同时最新的信号状态也将被传输。
CAN Bus off 处理和恢复
如果总线监测到严重错误, Bus off 恢复后将重启总线使 ECU 完成初始化,可使用以下策略,通过快恢复和慢恢复的结合处理方式,Bus-off 处理过程描述如下:
(1) 只要 CAN 控制器检测到 Bus off 状态,则 Bus off 标志将被置位;
(2) Bus off 事件发生是通过一个中断或者通过上层软件的一个状态位来确定, Bus off 发生
后节点将立刻与总线断开;
(3)复位 CAN 控制器寄存器;
(4)在快恢复和慢恢复期间,所有的 CAN 通信将被暂停;
(5)当快恢复或慢恢复时间截止时,节点将尝试重新连接 CAN总线;
(6)复位计数器 初始值为 0,当节点尝试连接总线失败同时再次检测到 Bus off 置
位标志,然后评估这个 Bus off 是个连续的 Bus off 并且没有成功的恢复,这时复位计数器 (初值为 0)加 1,节点再次断开与总线连接;
(7)当复位计数器小于等于 10(也可以是其他值,由主机厂定义),慢恢复 定时将被启动;
(8)当复位计数器大于 10(也可以是其他值,由主机厂定义), 快恢复 定时启动, 慢恢复定
时停止;
(9) 当一帧报文被成功发送,节点将回到可用的网络状态,节点离开 Bus off 状态,进入正
常通信状态,复位计数器被清 0;
(10) 如果报文未成功发送同时 Bus off 事件再次被确认,节点将重复尝试以上的 Bus off 处
理步骤直到错误被清除。
注意:
1) Bus off 节点尝试在快恢复或者慢恢复定时结束被应用程序复位后将被立即重新启动;
2) 节点从总线上断开连接:报文发送停止同时报文超时检测定时器停止;
3) 节点连接到总线:报文发送被激活同时报文超时检测定时器被激活;
4) 如果总线上出现 128 次连续的 11 个隐性, CAN 控制器退出它的内部 Bus off 错误状态,
ECU 接收状态激活;