查看: 2548|回复: 2

[求助] kinetis中的CAN

[复制链接]

该用户从未签到

1

主题

7

帖子

0

新手上路

Rank: 1

积分
8
最后登录
1970-1-1
发表于 2013-6-20 17:19:39 | 显示全部楼层 |阅读模式
 小弟第一次做CAN通信,用到了k60,看了ds(英文版有点困难)和一些参考书《..M4自学笔记..》,对于邮箱的设置有些地方不理解:
其一:模块配置寄存器MCR->RFEN-----接受队列使能位。使能队列和不使能队列有什么区别呢(自学笔记251页)
其二:MCR->IRMQ------使能私有接收掩码与队列;请问掩码寄存器里的掩码有什么作用(自学笔记250页)
其三:MCR-&gtSEG1、2---------相位段1、2,这两位参与了通信频率的计算,但是我不明白相位段具体是什么(自学笔记255页)
其四:ID过滤器表是指根据接收邮箱中预先设置的ID来选择性收取报文吗?
谢谢指导啊,求邮箱设置的资料~~
我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
90
最后登录
1970-1-1
发表于 2013-6-28 14:43:38 | 显示全部楼层

RE:kinetis中的CAN

1.接收队列就相当于一个缓冲区,可以由好几个mailbox组成去接收相同ID帧。如果在总线上某一个ID的重复率特别高,比如1ms一次,在这种情况下如果只用一个mailbox去接收,CPU在读取这个box时候,box锁定,在读取过程中如果再来相同ID的帧就可能会丢失。 用队列就可以很好的解决问题,相同的ID的帧过来大家就先排队等候CPU来处理。
2. CAN总线上有非常多的ID,一个CAN的节点只处理一些与她相关的ID,那总线上的ID这么多,怎么去过滤呢,掩码基本就是做这个的.它跟mailbox的ID区配合来决定要过滤掉或者要接收哪些ID. 在掩码中,0表示不检查总线上的ID是否匹配,换句话说就是全接收,1表示要检查总线上的ID是否跟设置的ID匹配。怎么理解呢,打个比方。 比如一个接收的Mailbox的ID设置成 0x15,如果对就的掩码是0xFF,那就是说每一个ID位都要检查匹配,结果就是只有ID为0x15的帧能收。如果掩码为0x00,那就是啥ID的帧都收。 如果掩码是0x0F,那就是接收0x05,0x15,0x25.....0xF5。
3.相位跟CAN总线上的同步有关。如果您想深入了解,那要细读一下CAN的协议。在编程的时候你只要按照规则设定TQ数和BRP基本就可以了。在真正做CAN总线系统的时候,一般厂家都会给出这方面的要求。比如多少速率,1bit多少TQ等,这些跟实际的布线,线材等相关。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

7

帖子

0

新手上路

Rank: 1

积分
8
最后登录
1970-1-1
 楼主| 发表于 2013-6-28 17:19:13 | 显示全部楼层

RE:kinetis中的CAN

回答得好清晰!!thank you very much
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-10-13 08:26 , Processed in 0.095521 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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