距离上次更博以过去数月,今日难得忙里偷闲,有如此时间来对测试中常见的Bus Off问题进行介绍,帮助大家加深对CAN总线的理解。
1 什么是“Bus Off”?
Bus Off,顾名思义就是总线关闭,那么总线为什么会出现Bus Off?其实这和CAN总线的错误处理机制相关,CAN总线共有三种错误机制,这三种错误之间可以通过一定的条件互相转化,总结下来就是下面这幅图:
![](https://i-blog.csdnimg.cn/blog_migrate/400cc94376c26f67acf6ab38b113d8dd.png)
简单总结起来就是一句话:我们的ECU在向CAN总线发送消息时,出现发送失败。此时,ECU每发送失败一次,上图中的发送错误计数器就会+8,如果发送错误计数器的值累计达到255,即连续32帧都发送失败,ECU会进入Bus Off模式。对上述图中内容不了解的同学可以自行搜索,这里就不做赘述了。
2 总线如何产生“Bus Off”
在实际的开发测试中,制造Bus Off的情况通常会采用以下几种方法:
(1)CAN_H对CAN_L短路、CAN_H对GND短路、CAN_L对GND短路等;
(2)采用VH6501来干扰报文,造成Bus Off。
3 Bus Off快慢恢复机制及时间测试
当总线出现Bus Off后,会有一些恢复措施,最常用的就是快恢复和慢恢复的方法;所谓快恢复,就是产生Bus Off后,ECU尝试恢复发送报文,此时的发送周期通常为50ms左右,一般快恢复5次,如果发送成功,则Bus Off解除,否则进入慢恢复机制,通常慢恢复的时间为200ms。
对于Bus Off快慢恢复时间的测试,根据其Bus Off产生的方法,分为两种:
(1)将CAN_H和CAN_L短路,此时出现Bus Off;然后采用示波器进行Bus Off的快慢恢复时间测试;
(2)采用VH6501干扰仪对发送报文的某些位进行干扰,然后在进行快慢恢复时间的测试,此方法在CANoe有专门的的测试例程,只需按照范例的操作进行测试即可,较为容易。
![](https://i-blog.csdnimg.cn/blog_migrate/8fc08e272d983a2dd7fcc45a82b0ecc0.png)