OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6028|回复: 0

F7 freeRTOS中CAN丢包怎么搞?请指教

[复制链接]

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2020-3-12
在线时间
24 小时
发表于 2022-12-9 18:39:00 | 显示全部楼层 |阅读模式
电路板上放了W5500网络部分,以及自带三路CAN,还有2515扩展CAN,想把CAN接收的数据通过5500转成网络信号发出去,结果发现CAN丢包,目前CAN都是用的500K,网络用的UDP,CAN接的毫米波雷达,数据量不小,峰值一般1ms四五帧
freeRTOS可用的优先级为5-15。
丢包的检测方式是在CAN上通过kvaser+busmaster进行对比的。MCU这边都是在中断中加了个计数值,然后定时1s把计数值发送。

1)2515这个只要把5500发送的那一行代码关掉马上不丢包,只要打开就丢。
      2515的SPI速率基本都试了一遍,区别不大,5500的SPI速率也试了几个,区别也不大。

      2515采用外部中断方式读取,整个CAN数据读取都是放在这个外部中断的,抢占优先级设了最高0,从优先级也是0。设置了不服从RTOS调度。
      而5500发送程序是放在普通任务中的,怎么会影响中断程序呢??太难理解了。

2)然后就试了自带的CAN,发现问题更恶心
     CAN中断抢占优先级为1,从优先级0,同样不服从RTOS管理,结果开着UDP发送时只收到90%的数据,而关了UDP收到99.5%的数据,还不如扩展的CAN,关了UDP还丢包。。。
    测试自带CAN的时候,扩展CAN是悬空没有数据的,所以不可能被扩展CAN接的外部中断抢占去。

问题是:
W5500这个普通RTOS任务程序怎么会影响高优先级的中断程序的??难道是干扰?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 23:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表