一、CAN出错管理
CAN 协议描述的出错管理,完全由硬件通过发送错误计数器(CAN_ESTS 寄存器里的TXEC 域),和接收错误计数器(CAN_ESTS 寄存器里的RXEC 域)来实现,其值根据错误的情况而增加或减少。关于TXEC和RXEC 管理的详细信息,请参考CAN 标准。
软件可以读出发送/接收错误计数器的值来判断CAN 网络的稳定性。
通过读取错误状态寄存器CAN_ESTS 的LEC[2:0]位来获取当前错误状态的详细信息。通过设置CAN_INTE寄存器(比如ERRITE 位),当检测到出错时软件可以灵活地控制中断的产生。
二、离线恢复
当TXEC 大于255 时,bxCAN 就进入离线状态,同时CAN_ESTS 寄存器的BOFFL 位被置’1’。在离线状态下,bxCAN 无法接收和发送报文。
根据CAN_MCTRL 寄存器中ABOM 位的设置,bxCAN 可以自动或在软件的请求下,从离线状态恢复(变为错误主动状态)。在这两种情况下,bxCAN 都必须等待一个CAN 标准所描述的恢复过程(CAN RX 引脚上检测到128 次11 个连续的隐性位)。