打印
[应用相关]

关于CAN数据包的接收处理

[复制链接]
4822|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
8yuuu|  楼主 | 2008-10-29 19:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的应用是这样的,使用CAN中断接收数据包,如果第一个数据包发来后进入了中断,但我的程序还没来得急把数据包里的8字节读出来,第二个数据包又来了,把第一个数据包冲掉怎么办? 有什么好的办法处理这个问题?    
我想在读出数据前关闭CAN中断,但这样会造成丢失数据包的问题

沙发
zlf667788| | 2008-10-30 13:42 | 只看该作者

如果你的处理速度跟不上,那大概有两种可能

1 你的其它任务量太大
2 你的编程水平太差
出果是第一个原因,那大概只能寻求使用性能更高的MCU
如果后一原因,那只有自己去想办法了

使用特权

评论回复
板凳
8yuuu|  楼主 | 2008-10-30 21:01 | 只看该作者

zlf667788能不能给点实质性的答案

使用特权

评论回复
地板
starm| | 2008-10-30 21:16 | 只看该作者

读取一个包应该很快的

读取一个包应该很快的, 或者使用缓冲区. isr 把接收的包放到buf, 主循环轮询buf.

使用特权

评论回复
5
zlf667788| | 2008-10-30 21:41 | 只看该作者

实质的东西要你将你的系统情况介绍清楚才成

比如你的CAN数据包格式,处理方式,传输速率,是实际发生了这种情况还是只是担心出现这种情况,除了处理CAN数据外系统其它的任务都有哪些,不知道这些情况,我只能在这里胡说八道,没什么实际意义的

使用特权

评论回复
6
8yuuu|  楼主 | 2008-11-2 11:56 | 只看该作者

我这个只是担心出现的问题

按照理论上说,不管你设置的缓冲区可以放多少祯数据,当发送的数据量大到一定情况的时候,总有数据包有被冲掉的可能,我是想知道怎么可以很好的避免这种情况

使用特权

评论回复
7
ijk| | 2008-11-3 09:47 | 只看该作者

担心出现问题

  按照理论上说,即使使用Intel P4 3GHz,仍然有数据包 有被冲掉的可能

使用特权

评论回复
8
yemingxp| | 2008-11-3 12:20 | 只看该作者

.

除非有别的更高优先级的中断一直打断你的CAN数据的连续接收,否则是不可能的事情。。。

使用特权

评论回复
9
香水城| | 2008-11-3 12:24 | 只看该作者

在底层协议中是不可能避免数据包丢失的情况,必须靠上层

否则OSI就不需要有7层协议了。任何通信协议都是这样,CAN、USB、Ethernet、I2C等等。

使用特权

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

本版积分规则

24

主题

68

帖子

0

粉丝