请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G473 CAN发送数据出现丢帧的情况,怎么解决?

[复制链接]
lthuijoljnk 提问时间:2024-11-29 23:17 / 未解决

配置CAN以FIFO模式发送,单片机周期发送不同ID的CAN报文,同时使用软件ZCANPRO周期发送不同ID的报文到CAN总线上来模拟总线上的负载。尝试了延时或等待有空闲邮箱时再将报文添加进去。最终发现都有丢帧的情况。

调试如下:固定发送报文数量,并仿真,对将要发送的数据添加到邮箱的成功状态进行计数。

第一种情况:等待所有发送邮箱都为空,再添加报文,出现丢帧。发20000帧,成功添加进邮箱的有20000帧,收到的有19971帧。

image.png2637442e172d2fef06e9088b138303f.png

第二种情况:延时一段时间,再添加报文,出现丢帧。发20000帧,成功添加进邮箱的有18682帧,收到的有18605帧。

image.png

7555fd4a6bbef9ca0f6fdeb529fafff.png可以看到,通过等待FIFIO空闲时放入数据可以减少丢帧,但即使能将数据都成功添加到FIFO中,在发送时依然会丢帧。这是硬件的问题吗?还是是软件配置上的问题?

b11115ac522d8dde0e3e49df896aa68.png
image.png
image.png
收藏 评论3 发布时间:2024-11-29 23:17

举报

3个回答
xmshao 回答时间:2024-12-2 14:30:02
发送尽量按照邮箱空事件或FIFO空闲事件进行。


最终发生丢帧会不会跟你添加的干扰有关? 你可以尝试将测试干扰信号逐渐减弱比较下。


尽管CAN支持失败重发,我相信CAN总线的负载能力也是有限的。
lthuijoljnk 回答时间:2024-12-3 12:05:49

xmshao 发表于 2024-12-2 14:30
发送尽量按照邮箱空事件或FIFO空闲事件进行。</p>
<p>

谢谢提醒,我意识到了是CAN重发机制导致的,先前调试功能时将自动重发功能失能了,将其使能问题就解决了。

xmshao 回答时间:2024-12-4 15:29:47

lthuijoljnk 发表于 2024-12-3 12:05
谢谢提醒,我意识到了是CAN重发机制导致的,先前调试功能时将自动重发功能失能了,将其使能问题就解 ...

[md]呵呵 原来还没开出错重发功能哦。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版