CAN总线通讯中存在三种主要的错误状态,分别是:
1. 主动错误状态:在此状态下,节点能正常地参与总线通信,并在检测到错误时主动发出错误标志。
2. 被动错误状态:此状态的节点虽然仍能参与通信,但在接收数据时不会积极发送错误通知,以避免干扰其他节点。当此状态的节点检测到错误,而其他主动状态的节点未发现时,总线仍视为无错误状态。在发送数据后,被动错误的节点需要等待一段时间才能再次发送,并在此期间插入特定的延迟传送位。
3. 总线关闭状态:在此状态下,节点无法参与总线上的任何通信活动,包括数据的接收和发送。
这些状态的管理依赖于发送和接收错误计数器的值。处理进入Busoff状态的节点时,可以采取以下几种策略:
策略一:
当发送错误计数器达到256或接收错误计数器达到128时,系统将进入复位模式。此时,系统将尝试快速恢复错误计数器,如果错误持续存在,则在进行10次快速恢复后转入慢速恢复。若慢速恢复进行20次后问题仍未解决,则需要人工干预处理。
策略二:
禁用自动重发功能,改为使用单次发送模式。在这种模式下,发送操作不会阻塞其他操作,用户可以通过软件控制数据的重发。例如,在发送数据时,用户可以向控制寄存器写入单次发送命令。
策略三:
设定发送超时时间,当超过预定时间后仍未发送成功的数据将被清除。具体来说,每个发送报文在进入发送缓冲后,系统会为其设置一个约32帧时间的延时。如果在这个时间内报文仍未发送成功,系统将清空发送缓冲并丢弃该报文。这意味着每个报文最多只有32帧时间的重发机会。
全部评论 (0)