求助群老大,CAN发送丢桢问题

2019-08-08 13:49发布

本帖最后由 hzf924999023 于 2017-10-10 09:19 编辑

CAN总线,我每发送50多次,有1次没有返回数据,经过测试是没发送出去的问题,我在后面加了一个延时就可以了,群里讨论一下。上面的whlie没起作用的原因是什么
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
哆啦A萌
1楼-- · 2019-08-08 15:01
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-08-08 15:47
试试寄存器版本代码
哆啦A萌
3楼-- · 2019-08-08 21:37
本帖最后由 哆啦A萌 于 2017-10-10 08:36 编辑

原因:出现丢帧的问题是因为大量发送时,总线被占等原因造成有几帧数据没有被发送而是挂起到邮箱中等待发送,那么此时再发送时则会造成申请邮箱失败,如果你去判断mbox肯定会出现mbox==CAN_TxStatus_NoMailBox                                                                                                                                                           解决方法:先把delay_ms(5);去掉,然后把“CAN_TransmitStatus(CANx, mbox)!=CAN_TxStatus_Failed”改为“CAN_TransmitStatus(CANx, mbox)!=CAN_TxStatus_Ok”即可

hzf924999023
4楼-- · 2019-08-08 21:51
哆啦A萌 发表于 2017-10-10 08:32
原因:出现丢帧的问题是因为大量发送时,总线被占等原因造成有几帧数据没有被发送而是挂起到邮箱中等待发送 ...

用!=CAN_TXStatus_OK检测有时候会直接卡主
哆啦A萌
5楼-- · 2019-08-09 00:52
hzf924999023 发表于 2017-10-10 09:27
用!=CAN_TXStatus_OK检测有时候会直接卡主

有i的限制怎么会卡住?其实最好是去判断邮箱,如果写入了邮箱了总归是会被发送的,如果邮箱没有空余时再进行等待邮箱空余,这样只有在大量发送数据时才会等待
hzf924999023
6楼-- · 2019-08-09 03:46
 精彩回答 2  元偷偷看……

一周热门 更多>