Board logo

标题: [原创]做CAN发送时,过一段时间出现缓冲区满,发送数据出错,请问?! [打印本页]

作者: cxj16888    时间: 2006-10-25 23:46     标题: [原创]做CAN发送时,过一段时间出现缓冲区满,发送数据出错,请问?!

1。为什么出现这种情况?


2。怎么解决,应该怎样做?


具体情况是,中断采集AD数据,然后通过CAN发送到总线,但总是出现缓冲区满错误。


 


作者: cxj16888    时间: 2006-10-26 10:17

在线等!!
作者: tannyhbkj    时间: 2006-10-26 10:24

由于CAN总线发送数据需要总线仲裁,也就是将数据放入CAN发送缓冲区,需要总线仲裁要有一定的延时。如果该数据没有发送出去,你在用该缓冲区发送数据肯定出错了。解决方法在用该缓冲区发送数据时,先检查缓冲区是否满,如果满了,用另一个。MSCAN08有三个发送缓冲区,如果三个都满了,程序中设置一个标志,发送该AD数据错误。然后重新发送。
作者: cxj16888    时间: 2006-10-26 14:02

我使用的是自动判别缓冲区,那个空使用那个并且,我单独做了个试验只调CAN发送函数发送数据为零,还是出现缓冲区满的错误.
作者: cxj16888    时间: 2006-10-27 09:16

没有人碰到这个问题吗?
作者: yunfeng    时间: 2006-10-27 12:18

利用发送中断试一下
作者: fan7973    时间: 2006-10-30 19:36

cxj16888,你好!我刚才给你发了个消息,请你查看
作者: yjbmtc    时间: 2006-10-31 15:20

我同意是总线仲裁的问题,或者是你的这个节点的发送周期大于AD采样周期吧
作者: cxj16888    时间: 2006-10-31 17:16

刚刚测试过,缓冲区0和1,送任何数都没有问题发送正常数据长度2,但数据长度是8的时候缓冲区中必须是大于零的数否则发送缓冲区满错误;只有一个CAN发送函数中断没有打开。
我使用的是处理器专家生成的函数。请教!!
作者: lingxiang    时间: 2006-11-5 17:06

我觉得是数据根本没有发送出去,发送标志位没有清除.
作者: cxj16888    时间: 2006-11-6 11:28

但用工具观察,数据一直在发送,如果发送没有成功接收端不应接收到信息,只要发送成功标志位应该是自动清除。
作者: stu999    时间: 2006-11-23 11:24

把晶振换成16M的。
作者: yunfeng    时间: 2006-11-24 10:57

已经解决了,是波特率设置的问题。波特率如果有误差的话,就会出现这种结果
作者: cxj16888    时间: 2006-11-26 11:07

这个错误是比较奇怪,当建立一个新的工程时,使用助理工程师选用CAN模块在模特率选项中键入250K确定后面会出现246K;当时没有注意,就是这个地方出的问题。由于波特率近似所以发送不是0的数据时很长时间都正常后出现错误,而发送0时由于全部位显性电平无法同步造成发送失败,发送缓冲区溢出;请大家注意!
作者: zjzhanghui    时间: 2010-5-5 11:09

我也遇到这个问题,在250KHz下能够很好的发送,但是在125KHz下发送几时条,发送缓冲区就满了~!请问该怎么解决啊
作者: mcu2007    时间: 2010-5-5 15:54

谁有用过SWCAN吗 是否能和标准CAN直接用(硬件上)




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0