查看: 3123|回复: 4

[已解决] MK60FX512VLQ15芯片CAN通讯问题?(已解决)

[复制链接]

该用户从未签到

2

主题

7

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
发表于 2013-8-26 17:15:14 | 显示全部楼层 |阅读模式
现有三台机子(id是1,2,3),其机子的程序都是烧写一样的程序。
 两台机子(2,3)同时向另外一台(1)机子发送数据,1号机子总只能接收到2号机子的数据,而相应的3号机子的数据总丢掉。其错误计数都是为0。
2号或3号机子单独向1号机子发送,1号机子接收都正常。
接收邮箱设置都是8到10三个邮箱,发送邮箱设置都是11到13三个邮箱,都初始化中断和配置了。接收采用中断方式。
想问下:如何正确接收2和3号同时发过来的数据,要注意哪些地方?
还想问下:接收邮箱都配置相同的ID,是不是自动变为接收队列?接收数据时第1个邮箱接收后未处理自动变为第二个邮箱接收?
我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-8-27 10:41:52 | 显示全部楼层

回复:MK60FX512VLQ15芯片CAN通讯问题?(正解)

两个CAN节点要同时发送数据是不可能出现的,因为CAN总线是抢占式的,同时只能有一个CAN节点发送数据。你需要注意2号节点发送CAN帧的密度,如果2号节点一直发送CAN帧,长期占用CAN总线,3号节点是没有机会发送CAN帧的。
关于多个MB配置相同的ID,可以在CANx_MCR使能队列模式【IRMQ】,这样多个MB可以按队列顺序依次接收相同ID 的CAN帧。最后一个MB有可能会出现OVERRUN的情况,即没有及时读取接收到的数据。
祝顺利。
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

7

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
 楼主| 发表于 2013-8-29 13:26:00 | 显示全部楼层

回复:MK60FX512VLQ15芯片CAN通讯问题?

回复第 2 楼 于2013-08-27 10:41:52发表:
两个CAN节点要同时发送数据是不可能出现的,因为CAN总线是抢占式的,同时只能有一个CAN节点发送数据。你需要注意2号节点发送CAN帧的密度,如果2号节点一直发送CAN帧,长期占用CAN总线,3号节点是没有机会发送CAN帧的。
关于多个MB配置相同的ID,可以在CANx_MCR使能队列模式【IRMQ】,这样多个MB可以按队列顺序依次接收相同ID 的CAN帧。最后一个MB有可能会出现OVERRUN的情况,即没有及时读取接收到的数据。
祝顺利。
 
现在出现一个问题,假如我设置接收邮箱从0到5.接收后,邮箱到达第5邮箱后就一直第5邮箱接收了,不再从0开始了。查看CODE代码都是为2表示有数据,而中断里面此邮箱标志位0啊。如何解决啊?
看了下说明书要解锁,读取时间就可以,好像也行不通。
 
回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-9-2 16:40:41 | 显示全部楼层

回复:MK60FX512VLQ15芯片CAN通讯问题?

回复第 3 楼 于2013-08-29 13:26:00发表:
回复第 2 楼 于2013-08-27 10:41:52发表:
两个CAN节点要同时发送数据是不可能出现的,因为CAN总线是抢占式的,同时只能有一个CAN节点发送数据。你需要注意2号节点发送CAN帧的密度,如果2号节点一直发送CAN帧,长期占用CAN总线,3号节点是没有机会发送CAN帧的。
关于多个MB配置相同的ID,可以在CANx_MCR使能队列模式【IRMQ】,这样多个MB可以按队列顺序依次接收相同ID 的CAN帧。最后一个MB有可能会出现OVERRUN的情况,即没有及时读取接收到的数据。
祝顺利。
 
现在出现一个问题,假如我设置接收邮箱从0到5.接收后,邮箱到达第5邮箱后就一直第5邮箱接收了,不再从0开始了。查看CODE代码都是为2表示有数据,而中断里面此邮箱标志位0啊。如何解决啊?
看了下说明书要解锁,读取时间就可以,好像也行不通。
 

 

当MB收到CAN帧后应该会自动被lock,如果配置中断,则对应的中断标志位会置位,可以在中断服务程序中读取MB控制和状态字将会lock MB,这样可以保护数据不被覆盖。然后通过读取FLEXCANn_TIMER寄存器来解锁MB。
回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-9-2 16:40:42 | 显示全部楼层

回复:MK60FX512VLQ15芯片CAN通讯问题?

回复第 3 楼 于2013-08-29 13:26:00发表:
回复第 2 楼 于2013-08-27 10:41:52发表:
两个CAN节点要同时发送数据是不可能出现的,因为CAN总线是抢占式的,同时只能有一个CAN节点发送数据。你需要注意2号节点发送CAN帧的密度,如果2号节点一直发送CAN帧,长期占用CAN总线,3号节点是没有机会发送CAN帧的。
关于多个MB配置相同的ID,可以在CANx_MCR使能队列模式【IRMQ】,这样多个MB可以按队列顺序依次接收相同ID 的CAN帧。最后一个MB有可能会出现OVERRUN的情况,即没有及时读取接收到的数据。
祝顺利。
 
现在出现一个问题,假如我设置接收邮箱从0到5.接收后,邮箱到达第5邮箱后就一直第5邮箱接收了,不再从0开始了。查看CODE代码都是为2表示有数据,而中断里面此邮箱标志位0啊。如何解决啊?
看了下说明书要解锁,读取时间就可以,好像也行不通。
 

 

当MB收到CAN帧后应该会自动被lock,如果配置中断,则对应的中断标志位会置位,可以在中断服务程序中读取MB控制和状态字将会lock MB,这样可以保护数据不被覆盖。然后通过读取FLEXCANn_TIMER寄存器来解锁MB。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-6 09:35 , Processed in 0.093506 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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