CAN协议中本身就有错误错误处理机制,通过检测CAN总线上出现的报文错误或者错误帧数(率)。前者可以重传出错的报文,后者错误帧速率在10fr/s以下可以忽略(不绝对),超过10fr/s 可能会影响报文广播。
其实每个CAN节点在接收报文的时都会自动检测报文中的错误。如果发现错误,发现节点将传送一个错误标志,从而中断该节点和总线的通信。其它节点将检测错误标志导致的错误(如果它们尚未检测到初始错误)并采取合适的措施(例如丢弃当前报文)。
每个节点维护两个错误计数器:传送错误计数器和接收错误计数器。有几个规则规定这些计数器怎样增加和/或减少计数。总的来讲,检测到故障的传送器增加其传送错误计数器比侦听节点增加其接收错误计数器要快。这是因为,很有可能是传送器发生了故障!当任何错误计数器增加到超过某个值时,节点将首先进入“错误被动”,也就是说,它在检测到错误时不会积极地阻止总线通信,然后“离开总线”,这意味着节点根本不参与总线通信。
使用错误计数器,CAN节点不但可以检测故障,而且可以执行错误限制。#面试##车载测试##can#
其实每个CAN节点在接收报文的时都会自动检测报文中的错误。如果发现错误,发现节点将传送一个错误标志,从而中断该节点和总线的通信。其它节点将检测错误标志导致的错误(如果它们尚未检测到初始错误)并采取合适的措施(例如丢弃当前报文)。
每个节点维护两个错误计数器:传送错误计数器和接收错误计数器。有几个规则规定这些计数器怎样增加和/或减少计数。总的来讲,检测到故障的传送器增加其传送错误计数器比侦听节点增加其接收错误计数器要快。这是因为,很有可能是传送器发生了故障!当任何错误计数器增加到超过某个值时,节点将首先进入“错误被动”,也就是说,它在检测到错误时不会积极地阻止总线通信,然后“离开总线”,这意味着节点根本不参与总线通信。
使用错误计数器,CAN节点不但可以检测故障,而且可以执行错误限制。#面试##车载测试##can#