打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
STM8做BUS OFF快慢恢复策略
userphoto

2022.09.17 广东

关注

前言:

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)成功发送报文则清零快恢复次数

初始化时打开相关中断

  1. CAN_ITConfig(CAN_IT_FMP,ENABLE);
  2. CAN_ITConfig(CAN_IT_BOF,ENABLE);
  3. CAN_ITConfig(CAN_IT_ERR,ENABLE);

中断里这样写

  1. INTERRUPT_HANDLER(CAN_TX_IRQHandler, 9)
  2. {
  3. /* In order to detect unexpected events during development,
  4. it is recommended to set a breakpoint on the following instruction.
  5. */
  6. if(CAN_GetITStatus(CAN_IT_BOF) == SET)
  7. {
  8. //这里加你的CAN初始函数,将CAN重新初始化CAN_Init(……);
  9. BusOff_Confirm();
  10. CAN_ClearITPendingBit(CAN_IT_BOF);
  11. }
  12. else if(CAN_GetITStatus(CAN_IT_TME) == SET)
  13. {
  14. BusOff_ResetFastCounter();
  15. CAN_ClearITPendingBit(CAN_IT_TME);
  16. }
  17. }

注意这样CAN_CancelTransmit这里一定要用的,否则会有问题

  1. void BusOff_ResetFastCounter(void)
  2. {
  3. fastRecoveryCounter = 0;
  4. }
  5. void BusOff_Confirm(void)
  6. {
  7. #ifdef CFG_ENABLE_FAST_RECOVERY
  8. if(fastRecoveryCounter < CFG_FAST_RECOVERY_CNT)
  9. {
  10. recoveryTime = CFG_FAST_RECOVERY_TIME;
  11. fastRecoveryCounter++;
  12. }
  13. else
  14. #endif
  15. recoveryTime = CFG_SLOW_RECOVERY;
  16. CAN_CancelTransmit(CAN_TransmitMailBox_0);
  17. CAN_CancelTransmit(CAN_TransmitMailBox_1);
  18. CAN_CancelTransmit(CAN_TransmitMailBox_2);
  19. CAN_DrvInit();
  20. BusOff_Flag = 1;
  21. }

总结:

1.相关中断一定要打开

2.BUS OFF自动手动恢复要配置对

3.发生BUS OFF要取消当前发送数据

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
转载:CAN BusOff相关知识点
Vector达芬奇工具使用笔记
CAN通信:Busoff问题知多少
修改了一下大智慧V7.08版的mktgroup.cfg和taskkey.cfg文件,增加了天津贵金属等
你会在国外坐bus吗?
The Kowloon Motor Bus Co. (1933) Ltd 九龍巴士(一九三三)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服