[应用相关] 关于CAN数据包的接收处理

[复制链接]
5854|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.
zlf667788 发表于 2008-10-30 21:41 | 显示全部楼层

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

比如你的CAN数据包格式,处理方式,传输速率,是实际发生了这种情况还是只是担心出现这种情况,除了处理CAN数据外系统其它的任务都有哪些,不知道这些情况,我只能在这里胡说八道,没什么实际意义的
 楼主| 8yuuu 发表于 2008-11-2 11:56 | 显示全部楼层

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

按照理论上说,不管你设置的缓冲区可以放多少祯数据,当发送的数据量大到一定情况的时候,总有数据包有被冲掉的可能,我是想知道怎么可以很好的避免这种情况
ijk 发表于 2008-11-3 09:47 | 显示全部楼层

担心出现问题

  按照理论上说,即使使用Intel P4 3GHz,仍然有数据包 有被冲掉的可能
yemingxp 发表于 2008-11-3 12:20 | 显示全部楼层

.

除非有别的更高优先级的中断一直打断你的CAN数据的连续接收,否则是不可能的事情。。。
香水城 发表于 2008-11-3 12:24 | 显示全部楼层

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

否则OSI就不需要有7层协议了。任何通信协议都是这样,CAN、USB、Ethernet、I2C等等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部