笔记四:深入探索发送请求
(写实验的笔记很伤元气的,今天就来一些比较文的吧)写这一篇的笔记时为了进一步认识的发送请求,我们都知道在TXFIFO填满报文准备向总线发送,都必须向SJA1000控制器申请发送请求,在正常模式中(验收滤波模式),自检模式中,发送请求的设置都不一样。说是要深入探索发送请求,还不如说进一步讲解数据手册里边的内容,那么开始切入真题吧。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
发送请求顾名思义就是在报文呈现发送准备的状态时进行发送申请的动作,在以往练习过的实验基本上接触过发送请求命令有CMR=0x40,CMR=R0x01,那么还有其它的吗?答案是肯定的。
回顾一下命令寄存器,有用的位只有前五位,亦即CMR.0~5而已。而TR(发送请求位)与AT(终止发送位)是对应的关系,这怎么说呢?当TXFIFO已是发送就绪状态,要将报文发送在总线上必须设置TR位逻辑1,一旦TR设置为逻辑1,那么它无法设置TR为逻辑0为取消发送请求,而是必须将AT设置位逻辑1
才能有效的取消发送请求。
除此之外TR,AT,SRR它们可以复合使用,复合后的效果如下:
CMR | 符号 | 说明 |
0x01 | TR=1 | 发送请求 |
0x02 | AT=1 | 发送请求取消 |
0x10 | SRR=1 | 自接收请求 |
0x03 | TR=1,AT=1 | 一次性发送请求 |
0x12 | SRR=1,AT=1 | 一次性自接收请求 |
0x13 | SRR=1,TR=1,AT=1 | 与0x03等价 |
0x11 | SRR=1,TR=1 | 与0x01等价 |
还有一点要注意,之前不是说过了当TR设置为逻辑1,除了设置AT为逻辑1为取消发送请求以外,当发送状态位为逻辑1时,TR也会自动设置位逻辑0.
那么接下来的要事就是通过实验来验证一下...自己可以尝试以不同的工作模式(自检,验收滤波),在节点发送函数CAN_TXD();设置不同的发送请求看看,结果非常有趣,例如在自检模式中,将节点发送函数设置为CMR=0x11的话,自检模式起不了作用。
用户1156182 2009-10-26 09:22