admin管理员组

文章数量:1562464

前言:

CAN总线上出现错误会导致CAN控制器进入BUS OFF状态,具体的可以参考CAN的规范。

CAN控制器提供自动恢复和手动恢复功能。

1.自动恢复

自动恢复比较简单,初始化的时候打开自动恢复功能。要求不高的话建议打开,否则CAN BUS OFF一直无法恢复通信。

CAN->MCR |= CAN_MasterCtrl_AutoBusOffManagement;/*atuo bus off recovery */
2.手动恢复

一般车厂要求ECU不能自动恢复,而是先快恢复后慢恢复。

常用的就是:先100ms恢复5次,然后是1000ms恢复一次。

具体的就是:

(1)发生BUS OFF后,立即关闭TX,然后重置CAN控制器

(2)快恢复次数+1

(3)快恢复次数<5则设置恢复时间为100ms,否则,恢复时间设置1000ms

(4)恢复时间到了,就打开TX

(5)成功发送报文则清零快恢复次数

初始化时打开相关中断

CAN_ITConfig(CAN_IT_FMP,ENABLE);
CAN_ITConfig(CAN_IT_BOF,ENABLE);
CAN_ITConfig(CAN_IT_ERR,ENABLE);
中断里这样写

INTERRUPT_HANDLER(CAN_TX_IRQHandler, 9)
{
/* In order to detect unexpected events during development,
it is recommended to se

本文标签: 快慢网络