CAN无法连续发送的问题

2019-08-17 04:34发布

在进入while循环之前我初始化了can总线,并接着发送一个can数据帧(比如起名为A帧)。在while循环中每隔100ms发送一个can数据帧(起名为B帧)。
我用一个can软件在总线上500ms发一个数据帧(起名为C帧),一直发送。当给开发板上电后,在软件上看到B帧和C帧都发送正常,但是A帧却没有发出来。
后来测试出:当不发送C帧时,即开发板上电后总线上没有数据帧,这时候A帧发送正常。
如果开发板上电后总线上有C帧一直在发送,那么A帧就发布出来了,但是我在can初始化和A帧之间插入一个5ms的延时,这时候A帧就能发出来了。
想不明白为什么。有人试验过或遇到过吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
aseeman
1楼-- · 2019-08-17 08:00
 精彩回答 2  元偷偷看……
yanhan
2楼-- · 2019-08-17 10:42
我又重新做了多次实验,使用正点原子开发板的程序连着发10次can数据帧,显示只能发三次。这应该是can发送邮箱只有三个,所以发了三次,连续发送的话后面的就发不出来了。要怎么解决呢?
365mcu
3楼-- · 2019-08-17 13:45
回复【2楼】yanhan:
---------------------------------
发送之前判断邮箱是否已满!
aseeman
4楼-- · 2019-08-17 15:10
回复【4楼】aseeman:
---------------------------------
看错了。。把发送看成接收了。不过道理一样
yanhan
5楼-- · 2019-08-17 18:37
回复【4楼】aseeman:
---------------------------------
接收我是采用缓存的,这个没有问题。在发送的时候是因为只有3个邮箱,如果发送的太快,要等到有空闲邮箱的时候才能发送新的,这个我也解决了。但有一个地方百思不得其解,就是我初始化完CAN通信之后,接着发送一个数据帧出来,这个帧多数情况是发布出来的,偶尔能发出来,不知道为什么,仅仅是发一个帧,没有连续发多个帧。如果在can初始化之后加一个5ms的延时就可以发出来这个帧。有了解的给解答一下
Mozie
6楼-- · 2019-08-17 20:40
 精彩回答 2  元偷偷看……

一周热门 更多>