Can_h对地短路,BOF标志位置1,恢复线路原状后,没有打开自动恢复功能,但是BOF位自动清零,数据重新发送,这是为什么? |
你没有打开硬件自动恢复,软件可以做恢复的。BOFF是个只读标志位,它是CAN状态的体现,是1是0硬件控制的。 你可以进一步查看下代码,看看发生BUS OFF事件后怎么处理的,是否软件上做了恢复操作 还是硬件有做自动恢复。 你再确认下。
你没有打开硬件自动恢复,软件可以做恢复的。BOFF是个只读标志位,它是CAN状态的体现,是1是0硬件控制的。 ...
下面是手册的描述。这个自动恢复是自动重新初始化CAN模块的意思吗?我原本认为BOF后是处在CAN停止的状态,要硬件或者软件重新初始化。目前我的程序没有做重新初始化的处理,只是会定时发送数据,如果这个CAN本身只是状态上的停止,那硬件将BOF清0后还是会继续发送。 离线恢复 当TEC的值大于255时,beCAN就进入离线状态,CAN_ESR寄存器的BOFF位被置’1’。在离线 状态下,beCAN不再接收和发送报文。 根据CAN_MCR寄存器的ABOM位的设置,beCAN可以自动或在软件的请求下,从离线状态恢 复(变为错误主动状态)。在这两种情况下,beCAN都必须等待一个CAN标准所描述的恢复过程 (CAN RX引脚上检测到128次11个连续的隐性位)。 如果ABOM位为’1’,beCAN进入离线状态后,就自动开启恢复过程。