打印

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

[复制链接]
309|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CAN作为一款强大的工业总线,其高性能和高可靠性让其应用特别广泛。一个小知识:汽车里面各个模块之间的通讯就是使用CAN来实现的哦。
既然是总线,那当然会有多个设备挂载在CAN上,当一个设备在发送数据的时候,其他设备也没有在闲着,它们会对接收到的数据格式进行解析,一旦发现有错误就会发送错误信号到总线上。
那么,如果一个设备确实出现了问题,老是发出错误格式的帧(比如波特率有偏差等等)怎么办呢?嘿嘿,不等大家把它踢出局,它自己就会老老实实的退出总线,不再往总线上发数据了,这个就叫做BUS-OFF,也就是设备离线。
那么MCU如何触发这个BUS-OFF呢?我们以GD32F303为例来说明。GD32F303CAN在发送一次错误的帧后,会将发送错误计数器的值+1,当这个计数值达到255时,就会触发BUS-OFF机制,退出总线。
这个时候有的小伙伴就会问了,一个设备运行很长时间,总会有发送错误的时候吧,如果就这么退出总线了,岂不是太冤了?其实不是的,当设备在发送错误计数器的值不等于0的情况下,发送一次正确的帧,这个计数值会-1的。
当一个设备BUS-OFF了,但它自恢复了错误状态,想继续回到总线上怎么操作呢?有两种方式:
1、打开GD32F303的离线自动恢复功能,当出现BUS-OFFMCU在检测到离线恢复序列(在CAN_RX检测到128次连续11个位的隐性位  )后就会自动恢复。
2、如果没打开自动恢复功能,则需要让CAN进入到初始化模式,再进入正常工作模式即可。
本教程由GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网,GD32MCU技术交流群:859440462


使用特权

评论回复
沙发
小小蚂蚁举千斤| | 2024-7-31 22:06 | 只看该作者
出现BUS-OFF,MCU在检测到离线恢复序列

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

7

粉丝