CAN总线Bus-off机制介绍及恢复策略说明
Bus-off产生机制
CAN通信Bus-off即总线关闭态,一个CAN节点有三种状态,主动错误状态、被动错误状态以及总线关闭态。如下图可知进入Bus-off的原因是因为发送错误大于255,在此状态节点不能收发报文。
以上三种错误状态标识发生故障的严重程度,总线关闭态是节点最严重的错误状态。并且,节点在不同的状态下具有不同的特性,在总线关闭状态下,节点不能发送报文或者应答总线上的报文,也就意味着不能再对总线有任何影响。
状态跳转和错误计数的规则使得节点在发生通信故障时有了较好的自我错误处理和恢复机制,从一种较严重的错误状态跳转到另一种严重性相对较低的状态,本质上就是一种恢复过程。
在通信过程中,主动错误和被动错误两种状态下的节点恢复过程一般不需要MCU进行额外的编程处理,直接使用CAN控制器固有功能即可。但对于总线关闭状态,往往不直接使用CAN控制器固有的恢复过程,而是对其进行编程控制,以实现“快恢复”和"慢恢复"机制。
单节点特殊情况
根据CAN规范,单节点发送报文NO ACK的错误也会使发送节点的TEC不断增加,那么TEC是否会增加到大于255,进而产生Bus-off?实际测试是不会的,TEC只会增加到128,这是为什么呢?如果总线上只有一个节点,也就没有必要通信,自然