OpenEdv-开源电子网

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

STM32的CAN的发送邮箱的使用疑问。

[复制链接]

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2014-9-1 08:11:58 | 显示全部楼层 |阅读模式
5金钱
第一次接触CAN,看手册的时候知道STM32F407的CAN有3个发送邮箱,
如果使用这三个发送邮箱发送相同的一帧数据,那接收方认为是三个不同的数据还是当成是三个相同的数据了,

如果接收方当成三个相同数据那么3个发送邮箱有什么意义。

如果当成三个不同的数据,那么接收方是根据什么区分这三个的。

还有,就是怎么选择你先使用的邮箱,

最佳答案

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

对方并不知道你是哪个邮箱发过来的,所以3个邮箱都是相同的数据,对方肯定认为是相同的数据。 至于你说的无意义,那是你的思路有问题。三个邮箱,可以存储3个消息,依次发送,如果没有邮箱,那么你每次都必须等上一条消息发送完成,才可以发下一条。这里邮箱就有一个缓冲作用。 接收数据一般可以根据ID来区分,还可以根据数据内容区分。比如CAN每次8个字节,你可以利用8个字节数据再定义其它协议。如果不会,请先学会modbus。 怎么 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-1 08:11:59 | 显示全部楼层
对方并不知道你是哪个邮箱发过来的,所以3个邮箱都是相同的数据,对方肯定认为是相同的数据。
至于你说的无意义,那是你的思路有问题。三个邮箱,可以存储3个消息,依次发送,如果没有邮箱,那么你每次都必须等上一条消息发送完成,才可以发下一条。这里邮箱就有一个缓冲作用。
接收数据一般可以根据ID来区分,还可以根据数据内容区分。比如CAN每次8个字节,你可以利用8个字节数据再定义其它协议。如果不会,请先学会modbus。
怎么选择邮箱,就是那个空用哪个。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
 楼主| 发表于 2014-9-1 17:06:47 | 显示全部楼层
原子哥,帮帮忙。
回复

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
 楼主| 发表于 2014-9-1 22:13:51 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
怎么选择邮箱,就是那个空用哪个。  

那么 这应该是硬件控制的了,而不需要软件区选择邮箱了???
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-1 23:21:02 | 显示全部楼层
回复【4楼】wang12zhe:
---------------------------------
软件要查询哪个邮箱是空的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-5-23
在线时间
5 小时
发表于 2015-7-18 09:42:09 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
三个邮箱,可以存储3个消息,依次发送,如果没有邮箱,那么你每次都必须等上一条消息发送完成,才可以发下一条???

请问下:如果有三个邮箱,那么他不是也一个一个邮箱发送的嘛?也就是说等待上一个邮箱发送完了,才发送下一个。是这样的嘛?那么跟发完一条消息,才可发下一条就没有区别了?求解???谢谢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-18 18:15:36 | 显示全部楼层
回复【6楼】zjutcf:
---------------------------------
FIFO相当于一个缓冲区,如果你以固定时间,连续不断的发送,自然,FIFO用处不大。
但是,如果你是不固定时间,或者不是连续发送,那FIFO的用处就大了。
自己好好想想。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-6-28
在线时间
2 小时
发表于 2018-6-28 16:45:05 | 显示全部楼层
我觉得是STM32的描述有问题,应该说是只有一组三级缓存的发送邮箱;举个例子:DSP芯片(DSP28335)内有很多个邮箱,它们分别是独立的邮箱,可以对单独某一个或者某几个邮箱进行数据存储发送。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-6-28
在线时间
2 小时
发表于 2018-6-28 17:09:05 | 显示全部楼层
正点原子 发表于 2015-7-18 18:15
回复【6楼】zjutcf:
---------------------------------
FIFO相当于一个缓冲区,如果你以固定时间,连续不 ...

我觉得是STM32的描述有问题,应该说是只有一组三级缓存的发送邮箱;举个例子:DSP芯片(DSP28335)内有很多个邮箱,它们分别是独立的邮箱,可以对单独某一个或者某几个邮箱进行数据存储发送。
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-9-24
在线时间
1 小时
发表于 2020-4-21 16:19:30 | 显示全部楼层
正点原子 发表于 2014-9-1 08:11
对方并不知道你是哪个邮箱发过来的,所以3个邮箱都是相同的数据,对方肯定认为是相同的数据。
至于你说的无 ...

我的理解是:调用CAN_Transmit(CAN1, &txdMsg)函数后,剩下的就交给CAN控制器了,控制器会把数据放入当前空着的最高优先级的邮箱中再进行发送。CPU则继续往下运行,假如此时再填充结构体,并调用CAN_Transmit(CAN1, &txdMsg)函数,如果上一次的数据没发完呢,那么第二个邮箱就起作用了,数据会暂时保存到第二个邮箱等待发送。一旦超过3个报文,则需要在第三个CAN_Transmit(CAN1, &txdMsg)后加一个检测空邮箱的函数,只有存在空邮箱才继续填充结构体并调用CAN_Transmit(CAN1, &txdMsg)发送数据。不知道我的理解对不对,还有检测是否有空邮箱的函数是什么?原子哥
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2020-2-3
在线时间
11 小时
发表于 2020-11-13 09:45:27 | 显示全部楼层
a495256807 发表于 2020-4-21 16:19
我的理解是:调用CAN_Transmit(CAN1, &txdMsg)函数后,剩下的就交给CAN控制器了,控制器会把数据放入当前 ...

发送邮箱就是一个FIF0,他最大只能存储3个数据,邮箱没空闲前,就不能再填充数据了。
但是数据量很大时,去判断邮箱空闲填充就不行了,也会出现丢帧的现象,CAN总线对于负载率大了,怎么解决丢帧问题,也是一个难题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 21:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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