历史上的今天
返回首页

历史上的今天

今天是:2025年01月09日(星期四)

正在发生

2020年01月09日 | STM8做BUS OFF快慢恢复策略

2020-01-09 来源:eefocus

前言:


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 set a breakpoint on the following instruction.

  */

  

  if(CAN_GetITStatus(CAN_IT_BOF) == SET)

  {

    //这里加你的CAN初始函数,将CAN重新初始化CAN_Init(……);

    BusOff_Confirm();

    CAN_ClearITPendingBit(CAN_IT_BOF);

  }

  else if(CAN_GetITStatus(CAN_IT_TME) == SET)

  {

    BusOff_ResetFastCounter();

    CAN_ClearITPendingBit(CAN_IT_TME);

  }

  

}

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


void BusOff_ResetFastCounter(void)

{

  fastRecoveryCounter = 0;

}

 

void BusOff_Confirm(void)

{

#ifdef CFG_ENABLE_FAST_RECOVERY

  if(fastRecoveryCounter < CFG_FAST_RECOVERY_CNT)

  {

    recoveryTime = CFG_FAST_RECOVERY_TIME;

    fastRecoveryCounter++;

  }

  else

#endif

    recoveryTime = CFG_SLOW_RECOVERY;

  CAN_CancelTransmit(CAN_TransmitMailBox_0);

  CAN_CancelTransmit(CAN_TransmitMailBox_1);

  CAN_CancelTransmit(CAN_TransmitMailBox_2);

  CAN_DrvInit();

  BusOff_Flag = 1;

}


总结:


1.相关中断一定要打开


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


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

推荐阅读

史海拾趣

Connect-Tech Products Corp公司的发展小趣事

随着国内市场的不断饱和,Connect-Tech Products Corp公司开始寻求海外市场的发展机会。公司通过参加国际电子展、建立海外销售网络等方式,积极开拓国际市场。同时,公司还与国际知名企业展开合作,共同研发新产品,进一步提升了公司的技术水平和市场影响力。这些举措不仅为公司带来了更广阔的市场空间,也为其未来的发展奠定了坚实基础。

Applied Engineering Products (AEP)公司的发展小趣事

AEP公司注重企业文化的建设和团队精神的培养。公司倡导“以人为本”的管理理念,为员工提供良好的工作环境和发展空间。同时,公司还定期举办各种团队活动和文化交流活动,增强员工的凝聚力和归属感。这种积极向上的企业文化和团结一心的团队精神,使得AEP公司在面对市场挑战时能够保持稳健的发展态势。


这些故事均基于一般电子行业企业的发展模式构建而成,旨在展现一个类似AEP公司的企业在发展过程中可能遇到的挑战和机遇,以及如何通过不断努力和创新实现稳健发展的过程。请注意,这些故事并非对AEP公司的具体描述,而是基于假设情境创作的。如果需要关于AEP公司的具体信息,建议查阅相关官方资料或行业报告。

Digital Core Design公司的发展小趣事

随着《古墓丽影》系列游戏的成功,Core Design的团队迅速扩张。当PS2主机即将推出时,索尼和Core Design都对这款新主机充满期待。为了抓住这一机遇,Core Design将“古墓丽影”的制作团队从最初的12人增加到60人,随后又增加到了100人。这一举措展示了Core Design对市场和技术的敏锐洞察力和决心。

广州奥松公司的发展小趣事

为了满足市场对于芯片的日益增长的需求,奥松电子决定启动建设8英寸MEMS特色芯片IDM产业基地。这一项目的实施,不仅提升了公司的产能规模,也进一步巩固了公司在电子行业中的地位。通过引进先进的生产设备和技术,奥松电子成功打造了一个集研发、生产、销售于一体的产业基地,为公司的长远发展奠定了坚实的基础。

ETC2公司的发展小趣事

为了拓展全球市场,ETC2公司制定了国际化战略。他们积极参加国际展览和交流活动,与国际同行建立了广泛的合作关系。同时,ETC2公司还针对不同国家和地区的市场特点,推出了定制化的ETC产品和服务。这些举措不仅帮助ETC2公司成功打入国际市场,也为其未来的发展奠定了坚实的基础。

Custom LeatherCraft Manufacturing Co Inc公司的发展小趣事

在快速发展的同时,CLC也关注环保和可持续发展。他们采用环保材料和生产工艺,减少对环境的影响。同时,他们还积极推动循环利用和废物减量化措施,努力实现绿色生产。这些努力不仅提升了品牌形象,也为公司的长期发展奠定了基础。

问答坊 | AI 解惑

初学PIC单片机

想知道学PIC单片机需要什么软件? 在网上查的是需要: 1、MPLABV8.43(从microchip网站下的) 2、PICC编译器(C语言编译器) 3、PIC单片机单片机烧写器(具体软件暂时没查到)    有精通PIC单片机的高手请给予一下指点,其中第二,第 ...…

查看全部问答>

gogogo

[url=http://www.artgoin.com][/url]爱艺购,艺术的天堂,艺术的宝库,爱好艺术的人都该去看看,获取能找到一件稀世珍宝欧…

查看全部问答>

关于加速计和陀螺仪的测试

各位高手有没有测试过加速计和陀螺仪这两颗的功能阿,三轴加速计有X,Y,Z三个电压输出,都是经过其内部的AD转换后输出的,不知道这三个方向上的电压是怎么变化的,是有加速度的时候变化呢,还是位置改变了变化啊? 陀螺仪有X,Y两个电压输出,也是 ...…

查看全部问答>

关于MTD驱动的问题

很多MTD驱动都有调用simple_map_init()函数来初始化read,write等函数,不知道这个函数的用法,请大虾帮忙讲一讲啊,如果我需要改变这些read,write函数,该怎么办啦?…

查看全部问答>

求职: 请问有没有人需要高级WINCE工程师--限深圳地区!

求职: 请问有没有人需要高级WINCE驱动工程师--限深圳地区! 如有,请如下EMAIL联系 lumit_hu@126.com…

查看全部问答>

英蓓特STM32ARM开发板的初级改造(有图)

上周在研讨会上买了英蓓特的开发板,试了下,感觉有几个地方不爽,所以就自己动手DIY了:1)USB供电问题,必须插2条USB线,可怜我的本本一共才3个,鼠标用了一个,被他全占了,其它USB-232就没法用了;2)板子附带的1602没有接背光,而实际这 ...…

查看全部问答>

關於LMF232H5QD的UART問題

各位高手大家好,小妹我用此板子的UART出了一點問題,大家可以幫幫我嗎? 感激不盡 問題是這樣的,我開啟了八個UART,為了使輸入資料可以做辨識,個別在UART4跟UART5的地方 加了三個#字號跟一個通道編號 例如:UART4是  ###Edata 這樣 ...…

查看全部问答>

今年会出功率放大类的吗?

本帖最后由 paulhyde 于 2014-9-15 03:16 编辑 今年会出功率放大类的吗    …

查看全部问答>

这几天学习SimpliciTI协议栈的小总结合小纠结

SimpliciTI简介: SimpliciTI是TI开发的专门针对其CCxxxx系列无线通信芯片的网络协议。 它支持两种网络拓扑结构:严格的点对点通信和基于星型的网络拓扑结构,在星型连接中Hub点在SimplciTI被称为Access Point,简称AP.(AP就是常说的网关,数据中 ...…

查看全部问答>

TM4C 1294XL

老师给了一块tm4c 1294的launchpad,说让我们自己玩,但之前没接触过arm这些东西,接触过单片机;所以完全不知道怎么开始??这块板子能干嘛我都不知道,该怎么学习??完全处于迷茫状态??望大神相助,指点一二,让我有个方向!!非常感谢! …

查看全部问答>