Hi@chumcu
ERRINT:
This bit indicates that at least one of the error bits (BIT1ERR, BIT0ERR, ACKERR, CRCERR, FRMERR,
or STFERR) is set. If the corresponding mask bit CTRL1[ERRMSK] is set, an interrupt is generated to the
CPU. This bit is cleared by writing it to 1. Writing 0 has no effect.
默认你如果调用错误中断处理程序的时候,会帮你清ERRINT寄存器。
默认bus-off是自动恢复的。
1.你的第一个需求会存在总线不会进入bus-off状态
“如果在系统启动期间只有一个节点正在运行,则由于确认错误(由错误和状态寄存器中的 ACKERR 位指示),其 TXERRCNT 在尝试发送的每条消息中都会增加。 转换到错误被动状态后,TXERRCNT 不再因确认错误而递增。因此,器件永远不会进入总线关闭状态”
2.第二个工况理论上会进入bus-off,但是默认bus-off是自动恢复的,所以你不需要操作。
针对于第一种工况需要恢复的话,你需要在错误中断处理中判断出该工况,然后重新初始化FlexCAN模块。