初级会员

- 积分
- 117
- 金钱
- 117
- 注册时间
- 2020-3-12
- 在线时间
- 24 小时
|
电路板上放了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任务程序怎么会影响高优先级的中断程序的??难道是干扰?
|
|