首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[原创]做CAN发送时,过一段时间出现缓冲区满,发送数据出错,请问?!

[原创]做CAN发送时,过一段时间出现缓冲区满,发送数据出错,请问?!

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


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


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


 

CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
在线等!!
CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
由于CAN总线发送数据需要总线仲裁,也就是将数据放入CAN发送缓冲区,需要总线仲裁要有一定的延时。如果该数据没有发送出去,你在用该缓冲区发送数据肯定出错了。解决方法在用该缓冲区发送数据时,先检查缓冲区是否满,如果满了,用另一个。MSCAN08有三个发送缓冲区,如果三个都满了,程序中设置一个标志,发送该AD数据错误。然后重新发送。
我使用的是自动判别缓冲区,那个空使用那个并且,我单独做了个试验只调CAN发送函数发送数据为零,还是出现缓冲区满的错误.
CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
没有人碰到这个问题吗?
CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
利用发送中断试一下
cxj16888,你好!我刚才给你发了个消息,请你查看
加油
我同意是总线仲裁的问题,或者是你的这个节点的发送周期大于AD采样周期吧
飞思卡尔带我走进神奇的单片机世界
刚刚测试过,缓冲区0和1,送任何数都没有问题发送正常数据长度2,但数据长度是8的时候缓冲区中必须是大于零的数否则发送缓冲区满错误;只有一个CAN发送函数中断没有打开。
我使用的是处理器专家生成的函数。请教!!
CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
我觉得是数据根本没有发送出去,发送标志位没有清除.
但用工具观察,数据一直在发送,如果发送没有成功接收端不应接收到信息,只要发送成功标志位应该是自动清除。
CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
把晶振换成16M的。
已经解决了,是波特率设置的问题。波特率如果有误差的话,就会出现这种结果
这个错误是比较奇怪,当建立一个新的工程时,使用助理工程师选用CAN模块在模特率选项中键入250K确定后面会出现246K;当时没有注意,就是这个地方出的问题。由于波特率近似所以发送不是0的数据时很长时间都正常后出现错误,而发送0时由于全部位显性电平无法同步造成发送失败,发送缓冲区溢出;请大家注意!
CANBUS 电液控制汽车电子,希望和大家交朋友! http://www.51mcu.cn
我也遇到这个问题,在250KHz下能够很好的发送,但是在125KHz下发送几时条,发送缓冲区就满了~!请问该怎么解决啊
返回列表