历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2019年03月11日 | stm32 调试can总线丢帧的问题

2019-03-11 来源:eefocus

问题出现的背景

需要写一个新的电机的驱动,使用can通讯,驱动比较简单,很快就写好了。自己单独测试一个电机的时候没有问题,正反转测什么的都很正常。本以为事情会很顺利,但是在测两个电机的时候,却发现很严重的问题,经常左电机不装或者是右电机不转。


问题的解决步骤


方案一: 


1. 遇到这种问题通常都是加上一个延时,觉得可能就是发的太快了,时许上可能有问题,但是我们的系统是一个实时的系统延时的时间不能太长。 


2. 经过测试发现加延时可能较小出现这种问题的概率,但是不能解决这个问题,最终车子还是无法正常运行,没办法这个方案不行。


分析: 

既然加延时不行的话,只能去找为什么电机不装。使用can转usb将数据抓出来之后,发现电机不转是由于,有帧丢失。每个电机发数据需要2帧数据,两个电机也就是4帧数据。但是只能抓到3帧数据。丢失了一帧数据。那么这个可能是由于can的发送邮箱不够,导致的丢帧


背景知识: 

发送


3 个发送邮箱

发送报文的优先级特性可软件配置

记录发送 SOF 时刻的时间戳

接收


3 级深度的2个接收 FIFO

14 个位宽可变的过滤器组 - 由整个 CAN 共享

标识符列表

FIFO 溢出处理方式可配置

记录接收 SOF 时刻的时间戳


这里写图片描述


因此接下来,我分析就是要检查can邮箱空闲的的寄存器个数,看是否是因为连续发送4帧数据的时候,can空闲的邮箱不够用了。 


这里写图片描述

这里写图片描述


因此我在每次发送之前,检查这个寄存器的26,27,28位,统计可使用的邮箱个数。


方案二: 

发送之前统计可使用的邮箱个数,只有在有邮箱的时候,我们才会发送新的数据。 

结果: 

结果出乎意料,每次发送的时候显示的邮箱个数,都是3个,也就是说根本就没有出现邮箱不够用的情况 。方案二不可行。


继续分析: 


 这里写图片描述 


发现跑的时候,这个位经常会被置1,不是因为邮箱不够丢失数据,而是由于仲裁丢失数据。 

进一步验证: 


 这里写图片描述 


发现这个寄存器每次回复的都是邮箱0,因此跟家判断不是邮箱不够的问题。每50ms发4帧数据是完全够用的。


方案三: 

因为发送数据的id,比从机回复的id要大因此,发送时可能会因为,id较大,同时抢占can的时候会导致数据帧仲裁丢失。 

因此开启can的自动重发功能。 

使用hal库的话也就是一句话:


g_sCAN_Handler[dwDevice].Init.NART  = DISABLE;//开启自动重发


结果问题,完美解决


推荐阅读

史海拾趣

Alpha 3 Manufacturing公司的发展小趣事

在技术创新的基础上,Alpha 3 Manufacturing公司开始积极拓展市场。公司参加了多个国际电子展会,与全球客户建立了广泛的联系。同时,公司还加强了对市场的调研和分析,针对不同地区和客户的需求,推出了定制化的产品和服务。这些举措不仅提高了公司的市场份额,还进一步提升了公司的品牌知名度和影响力。

申风(everanalog)公司的发展小趣事

申风(everanalog)公司于2013年在上海成立,由一群充满激情和梦想的电子工程师组成。创始人施嘉铭凭借其深厚的行业经验和前瞻性的视野,带领团队开始了集成电路设计的探索之旅。在初创阶段,公司面临着资金紧张、人才短缺等挑战,但团队凭借着坚定的信念和不懈的努力,逐渐在市场上站稳了脚跟。

成都芯进(CrossChip)公司的发展小趣事

随着技术的不断积累和市场的逐步拓展,成都芯进电子逐渐在磁传感器芯片领域崭露头角。他们不仅实现了霍尔效应和磁阻效应磁传感器芯片的量产,还成功研发了电流传感器芯片、电机驱动芯片和电源管理芯片等系列产品。这些产品的推出,不仅丰富了公司的产品线,也进一步提升了公司的市场竞争力。

GuangDong Province MengCo Semiconductor Co., Ltd公司的发展小趣事
合理的电路布局可以减小电磁干扰和信号衰减,提高电路的稳定性和可靠性。
Advanced Illumination Inc公司的发展小趣事

品质是Ai公司发展的生命线。公司始终将品质管理放在首位,建立了严格的质量管理体系和检验流程。从原材料采购到产品出厂的每一个环节,公司都进行严格把控,确保产品的品质和性能达到最高标准。同时,公司还不断收集客户反馈,对产品进行持续改进和优化,以满足客户不断变化的需求。

CHINFA公司的发展小趣事

作为一家有社会责任感的企业,CHINFA公司始终关注社会公益事业。公司积极参与扶贫济困、捐资助学等公益活动,为社会做出了积极贡献。同时,公司还注重员工培训和福利保障,为员工提供了良好的工作环境和发展机会。这种对社会责任的担当和履行,使CHINFA公司赢得了社会各界的广泛认可和尊重。

这五个故事只是CHINFA公司发展历程中的一部分,但它们却充分展示了公司在电子行业中的坚韧不拔、追求卓越的精神风貌。相信在未来的发展中,CHINFA公司将继续书写更加辉煌的篇章。

问答坊 | AI 解惑

可播放语音的红外遥控小车

由于这段时间工作很忙,OUR ROBOT 1号的研发工作一直搁浅。最近利用指导本科毕业生毕业设计的机会,和漂亮的毕业生陈MM一起制作了一辆可播放语音的红外遥控小车,也算是把OUR ROBOT 1号的一些核心部件进行了实际组装测试,收获颇多,先看看照片吧。 ...…

查看全部问答>

我用AD6.9设计的原理图问题,大家帮忙看看

错误如下,请问高手如何解决? [Warning] 2812.SCHDOC Compiler Nets Wire AGND has multiple names (Net Label AGND,Net Label G1,Net Label G2,Net Label GND,Net Label VCC) 17:08:30 2008-4-21 1 另外:当光标停留在电源或地符号上时出现提示 ...…

查看全部问答>

Zigbee的MAC地址和电脑的MAC地址有什么区别?

Zigbee的MAC地址64位 电脑的MAC地址48位 他们之间有什么联系和区别?…

查看全部问答>

OV7620问题

谁知道OV7645FB OV7620 这两个传感器 的区别?? 它们接口相同吗?不同请详细介绍下 O(∩_∩)O~ 如果用OV7620的代码做参考去移植OV7645FB 修改大吗?…

查看全部问答>

请问我会vb ,c# 可以学习plc吗?

windows和web的程序都做过,但不懂plc(完全不懂),请问能学吗?难度有多大?如何开始?谢谢!…

查看全部问答>

求一款无须时钟源输入的计时器IC

还是那个555的。 俺昨天试了试,发现一个问题: 假如输入在20秒的延迟内没有回复到高电平,那么,输出将一直保持高电平...... 也就是说我的想法,没戏。   这时,我想,其实就是一个延时触发么。 假如说还用555,想到的一个方法是,做成 ...…

查看全部问答>

我把仿真版的78m05改为7533,rlink就连不上了

                                 刚开始我的板还连的上,或有时掉电复位一下也可以,但最近它就是不干活了…

查看全部问答>

异步fifo的深度,怎样设计才算合理?

 看到不同设计者, 在设计相同的东西时,异步FIFO深度各不相同, 哦, 不知道怎样设计才算合理?…

查看全部问答>

求助

485芯片中与430RXD相连的管脚在板子断电情况下有66mv的电压,请问这种情况下430还能收到PC发过来的数据吗? PS:430TXD管脚的电压值为0 [ 本帖最后由 zzbaizhi 于 2012-3-9 16:40 编辑 ]…

查看全部问答>