打印

can收发大量数据,偶尔丢失数据

[复制链接]
2067|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用CAN中断接收数据,500k波特率。总线上有9个节点,8个节点只能接收对应ID的数据,1个节点接收总线上其他8个节点发送的数据(假设为节点A)。当A向其他8个节点发数据时,自己还的去接收其他节点发出的数据。通过监测,A发的8帧数据都发出了,但A在接收其他节点发送到总线上数据时,偶尔出现了个别数据的丢失。数据接收在CAN中断中,采用队列方式接收。硬件上匹配电阻已加。不清楚问题出在哪,如何解决?

10.jpg (290.63 KB )

图中ID为47的数据丢失

图中ID为47的数据丢失

相关帖子

沙发
df_flying| | 2017-5-18 15:15 | 只看该作者
查出丢的帧单独发试试?也可以提高下CAN接收中断优先级试试,如果数据量很大的话,你得确保其他8个的数据都正常发送出来了(即总线没有饱和,或者发送没有被抢占!),你可以设置个计数器,发送一个累加一下,然后对比下总的结果分析看看,或者提高到1M试试...,

使用特权

评论回复
板凳
bixiaochangbo|  楼主 | 2017-5-19 09:21 | 只看该作者
哪个节点丢数据是可以看到,而且每次丢的都不是同一节点的。优先级也设得最高了。总线被抢占倒是有可能,8个发送的发送,不太好控制,都是随机发的。接收端接收总线所有数据,有点怀疑接收端数据没处理过来。

使用特权

评论回复
地板
杨爱林林| | 2017-5-22 10:53 | 只看该作者
每次都不一样,很有可能是处理的问题。
你数据量大吗

使用特权

评论回复
5
bixiaochangbo|  楼主 | 2017-5-22 11:42 | 只看该作者
杨爱林林 发表于 2017-5-22 10:53
每次都不一样,很有可能是处理的问题。
你数据量大吗

是的,接收时丢失的都不是某一固定节点的。发送节点发送的是自己节点的ID,接收端没有进行ID的筛选,接收总线上所有发送的数据。9个节点,9帧的数据,会出现抢占总线情况。
接收处理在接收中断中采用队列处理方式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

23

帖子

0

粉丝