我们最近做CAN收发的时发现,nuc977在linux下读取can帧的时候有丢帧现象。
我们另外一头连接的是PLC设备,该设备能够保证在20ms内发送9帧数据,但是我们在nuc977上接收的时候发现出现丢帧。你们遇到过这个问题么?
我用周立功USBCAN检测了,可以确保PLC设备能够在20ms内发送出来9帧数据。
最近编辑记录 thy442156388 (2020-09-27 10:38:03)
离线
你这是linux下的应用接收丢帧还是硬件自己就丢了?
如果是应用的话,20ms 9帧的话,如果硬件没有FIFO存下来的话。是非常有可能丢失的。linux下调度nice 值最大是+19基本时间片是5ms。
你这每帧传输时间都是小于5ms的,在单核CPU的情况下如果其他应用占用了CPU的话,应用丢帧就正常了。毕竟Linux不是一个实时操作系统。
离线
下午我这边仔细检查了一下,发现是串口速率过慢的问题,CAN配置的是1M速率, 每一帧数据都打出来的情况下,串口的数据丢失了。导致我认为是CAN接收丢帧。
后面将程序输出信息重定向到文件当中,分析发现没有丢帧现象。
离线
另外补充一下,后面做了时间测定,在CAN在1M的速度下,收发18帧数据时间不到2ms,在一个调度时间片内应该是可以完成。我遇到的问题是调试手段不到位的原因。
离线