OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7912|回复: 6

CAN无法连续发送的问题

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
36
金钱
36
注册时间
2015-10-14
在线时间
1 小时
发表于 2015-12-7 21:35:34 | 显示全部楼层 |阅读模式
5金钱
在进入while循环之前我初始化了can总线,并接着发送一个can数据帧(比如起名为A帧)。在while循环中每隔100ms发送一个can数据帧(起名为B帧)。
我用一个can软件在总线上500ms发一个数据帧(起名为C帧),一直发送。当给开发板上电后,在软件上看到B帧和C帧都发送正常,但是A帧却没有发出来。
后来测试出:当不发送C帧时,即开发板上电后总线上没有数据帧,这时候A帧发送正常。
如果开发板上电后总线上有C帧一直在发送,那么A帧就发布出来了,但是我在can初始化和A帧之间插入一个5ms的延时,这时候A帧就能发出来了。
想不明白为什么。有人试验过或遇到过吗?

最佳答案

查看完整内容[请看2#楼]

这是因为接收邮箱只有3个,你接收的时候数据溢出了。 解决方法:建立接收数据缓存区,接到的数据先放到缓冲区。保证数据不会溢出,就不会丢报文!收数据的时候就直接从缓冲区读就行了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-5-14
在线时间
17 小时
发表于 2015-12-7 21:35:35 | 显示全部楼层
这是因为接收邮箱只有3个,你接收的时候数据溢出了。
解决方法:建立接收数据缓存区,接到的数据先放到缓冲区。保证数据不会溢出,就不会丢报文!收数据的时候就直接从缓冲区读就行了!
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
36
金钱
36
注册时间
2015-10-14
在线时间
1 小时
 楼主| 发表于 2015-12-8 10:28:39 | 显示全部楼层
我又重新做了多次实验,使用正点原子开发板的程序连着发10次can数据帧,显示只能发三次。这应该是can发送邮箱只有三个,所以发了三次,连续发送的话后面的就发不出来了。要怎么解决呢?
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2015-12-8 10:38:12 | 显示全部楼层
回复【2楼】yanhan:
---------------------------------
发送之前判断邮箱是否已满!
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-5-14
在线时间
17 小时
发表于 2015-12-19 22:03:19 | 显示全部楼层
回复【4楼】aseeman:
---------------------------------
看错了。。把发送看成接收了。不过道理一样
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
36
金钱
36
注册时间
2015-10-14
在线时间
1 小时
 楼主| 发表于 2015-12-21 13:06:15 | 显示全部楼层
回复【4楼】aseeman:
---------------------------------
接收我是采用缓存的,这个没有问题。在发送的时候是因为只有3个邮箱,如果发送的太快,要等到有空闲邮箱的时候才能发送新的,这个我也解决了。但有一个地方百思不得其解,就是我初始化完CAN通信之后,接着发送一个数据帧出来,这个帧多数情况是发布出来的,偶尔能发出来,不知道为什么,仅仅是发一个帧,没有连续发多个帧。如果在can初始化之后加一个5ms的延时就可以发出来这个帧。有了解的给解答一下
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2017-7-1
在线时间
23 小时
发表于 2017-7-1 14:07:10 | 显示全部楼层
楼主 这个程序还有吗 我这边也是这样的问题  我除接收一下数据才能发送  否则无法发送
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 12:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表