CAN作为一款强大的工业总线,其高性能和高可靠性让其应用特别广泛。一个小知识:汽车里面各个模块之间的通讯就是使用CAN来实现的哦。
既然是总线,那当然会有多个设备挂载在CAN上,当一个设备在发送数据的时候,其他设备也没有在闲着,它们会对接收到的数据格式进行解析,一旦发现有错误就会发送错误信号到总线上。

那么,如果一个设备确实出现了问题,老是发出错误格式的帧(比如波特率有偏差等等)怎么办呢?嘿嘿,不等大家把它踢出局,它自己就会老老实实的退出总线,不再往总线上发数据了,这个就叫做BUS-OFF,也就是设备离线。
那么MCU如何触发这个BUS-OFF呢?我们以GD32F303为例来说明。GD32F303的CAN在发送一次错误的帧后,会将发送错误计数器的值+1,当这个计数值达到255时,就会触发BUS-OFF机制,退出总线。

这个时候有的小伙伴就会问了,一个设备运行很长时间,总会有发送错误的时候吧,如果就这么退出总线了,岂不是太冤了?其实不是的,当设备在发送错误计数器的值不等于0的情况下,发送一次正确的帧,这个计数值会-1的。
当一个设备BUS-OFF了,但它自恢复了错误状态,想继续回到总线上怎么操作呢?有两种方式:
1、打开GD32F303的离线自动恢复功能,当出现BUS-OFF,MCU在检测到离线恢复序列(在CAN_RX检测到128次连续11个位的隐性位 )后就会自动恢复。

2、如果没打开自动恢复功能,则需要让CAN进入到初始化模式,再进入正常工作模式即可。
-
单片机
+关注
关注
6074文章
45341浏览量
663650 -
嵌入式
+关注
关注
5186文章
20153浏览量
328939 -
CAN
+关注
关注
58文章
3013浏览量
471490 -
汽车业
+关注
关注
0文章
23浏览量
3461
发布评论请先 登录
将TC397的MCMCAN模块的canh和canl短接到GND,MCMCAN模块进入到bus off状态后无法继续正常发送的原因?
CYT2B75CAD CAN的bus off状态如何检测的?
STM32G4 CAN为什么无法检测到bus-off状态?
在总线关闭状态下手动重启CAN
请问NUC240 CAN bus遇到bus-off如何自动恢复?
CAN-BUS,CAN-BUS是什么意思
CAN-BUS,CAN-BUS原理是什么?
CAN总线Bus Off原理及恢复解决方案
CAN总线Bus Off原理及CAN总线Bus Off恢复的解决方案
T113核心板CAN通讯bus-off自动恢复

什么是CAN的BUS-OFF,如何恢复BUS-OFF?
评论