在线时间0 小时
UID2010670
注册时间2013-5-15
NXP金币0
该用户从未签到
注册会员

- 积分
- 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等,这些跟实际的布线,线材等相关。 |
|