Busoff产生机制
CAN通信Busoff即总线关闭态,一个CAN节点有三种状态,主动错误状态、被动错误状态以及总线关闭态。如下图可知进入Busoff的原因是因为发错错误大于255,在此状态节点不能收发报文。
单节点特殊情况
根据CAN规范,单节点发送报文NO ACK的错误也会使发送节点的TEC不断增加,那么TEC是否会增加到大于255,进而产生Busoff?实际测试是不会的,TEC只会增加到128,这是为什么呢?如果总线上只有一个节点,也就没有必要通信,自然也没必要进入Busoff,当节点TEC增加到128后按上图是进入到被动错误状态。
根据如下规范内容描述:节点发出错误标志时,发送错误加8,但是节点如果处于被动错误态检测到ACK错误就不再发出错误标识了,TEC保持不变。这种情况也很好理解,就是发送节点一直发送报文,但是在TEC累计到128之前一直没有接收节点应答ACK,因此到128后就没必要一直发送了。
Busoff诊断故障代码处理机制
下图是一个客户需求,由图可知Busoff发生后快恢复100ms,Busoff一直存在连续恢