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

CAN接收丢包

[复制链接]
猪小屁 提问时间:2024-11-15 16:27 / 已解决

我的主机给从机发送数据的时候,6帧数据以下没问题,有个包被分了10帧数据发送,但是中断接收后再组包就只收到了四帧数据,是不是因为STM32的CAN接收中断是不是只能两个FIFO最多一次接收6帧的数据,有什么解决的办法吗,求大佬解惑😄

收藏 评论10 发布时间:2024-11-15 16:27

举报

10个回答
xmshao 最优答案 回答时间:2024-11-18 17:17:57

猪小屁 发表于 2024-11-18 13:56
但是改了接收长度后,之前有个指令包有十个数据也可以了哎

哦?但关键目前CAN2.O每帧最多也就8个数据啊,这是硬件固定的。

不了解你具体代码实现,你搞定就行。

xmshao 回答时间:2024-11-15 16:45:01
这里每个FIFIO最多同时存储3个邮箱,两个也就6个。


如果一次性过来的数据包太多太快,若CPU取走不及时
是有可能丢包。这时会有FIFO溢出标志。


现在数据的提取通过中断,保证优先级,先拿走数据再处理。
总之尽可能避免FIFO溢出。


适当地调整波特率,平衡下收发情况。
猪小屁 回答时间:2024-11-15 17:04:20

xmshao 发表于 2024-11-15 16:45
这里每个FIFIO最多同时存储3个邮箱,两个也就6个。</p>
<p>

响应优先级已经是0了,波特率也是1M,需要更改吗

butterflyspring 回答时间:2024-11-15 17:12:25

猪小屁 发表于 2024-11-15 17:04
响应优先级已经是0了,波特率也是1M,需要更改吗

可以按照大佬的建议,看看有没有溢出标志。

如果有,那么就按照建议去优化,指导它消失能全部接收。

猪小屁 回答时间:2024-11-18 08:25:53

😄 原来是主机写的接收库函数限制了接收长度

xmshao 回答时间:2024-11-18 11:40:08

猪小屁 发表于 2024-11-18 08:25
😄 原来是主机写的接收库函数限制了接收长度

库函数里每次到FIFO里提取的数据个数最多也就是8个。

猪小屁 回答时间:2024-11-18 13:56:58

xmshao 发表于 2024-11-18 11:40
库函数里每次到FIFO里提取的数据个数最多也就是8个。

但是改了接收长度后,之前有个指令包有十个数据也可以了哎

猪小屁 回答时间:2024-11-19 08:20:26

xmshao 发表于 2024-11-18 17:17</p>
<p>哦?但关键目前CAN2.O每帧最多也就8个数据啊,这是硬件固定的。

[md]我用的FDCAN是不是会多点👀️

xmshao 回答时间:2024-11-19 12:02:03

猪小屁 发表于 2024-11-19 08:20
我用的FDCAN是不是会多点👀️

FDCAN的确可以多达64字节,但你要选择支持FDCAN的STM32芯片。

猪小屁 回答时间:2024-11-19 15:54:05

xmshao 发表于 2024-11-19 12:02
FDCAN的确可以多达64字节,但你要选择支持FDCAN的STM32芯片。

嗯嗯,谢谢大佬👍

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