本帖最后由 embCHIP 于 2022-6-2 18:24 编辑
#每日话题# #申请原创# #技术资源# CAN协议中有一个错误是BUS OFF 暨 总线离线
1、触发CAN BUSOFF
将CAN芯片STB引脚拉高或者去掉CAN芯片,发送数据多次,可以触发总线离线
2、阅读手册中BUSOFF可以触发中断,为了便于调试,代码开启状态改变错误中断。
3、不使能ABOM功能暨离线自动恢复,观察到代码进入离线中断服务函数,
但是BOFF位没有自动清除,TEC也没有清除
4、开启离线中断,使能ABOM功能,观察到代码进入离线中断服务函数,但是看到TEC和BOFF功能被清除,
这是因为开启了ABOM功能,设置了硬件检测到128次11位连续隐性位,如果CAN通讯速率为500K时,
CAN在几十ms内就能检测时128次11位连续隐性位,然后将TEC和BOFF清除,芯片退出离线状态,恢复通讯。
5、总的来说
1)can芯片STB引脚拉高或者去掉can芯片,can报文持续发送,当TEC大于255则进入busoff状态。 2)测试当开启ABOM功能之后,busoff就能恢复正常,重复离线操作,未发现不能通信的情况。
(不要怀疑,你近视了,看不清图片)
|