[经验之谈]9S12的MSCAN速率配置及错误帧故障的解决
- UID
- 781278
- 性别
- 男
|
[经验之谈]9S12的MSCAN速率配置及错误帧故障的解决
CAN模块的时钟配置,取决于TQ数,还有分频数。
但是不少新手还漏掉了一个重要的参数:那就是时钟源。
请查看下图:
[attach]6905[/attach]
CAN模块的时钟源可以选择为 晶振或者总线时钟。默认是晶振。 配置寄存器为 CANCTL1 <6>:CLKSRC 位。 MSCAN Clock Source—This bit de?nes the clock source for the MSCAN module 0 MSCAN clock source is the oscillator clock 1 MSCAN clock source is the bus clock
然后配置分频系数: CANBTR0<5..0>: 预分频因子=1+CANBTR0<5:0>
然后配置TESG1和TSEG2: TSEG1=CANBTR1<3..0> +1 TSEG2=CANBTR1<6..4> +1
位速度=(预分频因子) * (1+TSEG1+TSEG2) / CAN模块时钟 --------------------------------------------------------------------------------------- 近期在调试MSCAN功能中,发现速率升至250Kbps的时候,用周立功CAN调试器测试,部分线路板存在收发上百帧数据即无法收发数据。用VECTOR CAN调试,发现错误帧累积过多,自动被总线上其他节点屏蔽。而速率在125Kbps则无此现象。 此时,配置CAN如下: CAN0CTL1 = 0x80;/* 进入初始化阶段,CAN时钟采用晶振源输入 */ CAN0BTR0 = 0xc1; /* 预分频因子 1+1 = 2 */ CAN0BTR1 = 0x3A; /*采样数,TSEG1及TSEG2 */ 以上已经初步设定CAN速率为 250KBps。 如果是125Kbps,则修改预分频因子CAN0BTR0 = 0xc3;
因此现象不普遍,基本存在于 1/3左右,所以一直在排查硬件问题。CAN线路上相关元器件全部换了一遍,故障依旧。 后来,稍微修改了一下程序,把CAN0BTR0 = 0xc1;改为 0x81;现象略有好转。 经过多次试验,终于发现MSCAN原来存在一个潜在的大问题。 本帖隐藏的内容需要回复才可以浏览
[此贴子已经被作者于2009-7-26 14:52:59编辑过] |
/**********
飞思卡尔交流QQ群:82738157
************/ |
|
|
|
|
|
- UID
- 781278
- 性别
- 男
|
帖子配置错误。 原先要设定成回复可见,结果设成 获赠金币帖 了。 回复可见是正常了,不过获赠金币不能改了。 就这样吧 |
/**********
飞思卡尔交流QQ群:82738157
************/ |
|
|
|
|
|
- UID
- 161539
- 性别
- 男
|
|
|
|
|
|
- UID
- 161539
- 性别
- 男
|
|
|
|
|
|
- UID
- 791852
- 性别
- 男
|
我试试看看。。回复后可以看到的
[此贴子已经被作者于2009-5-30 13:43:28编辑过] |
|
|
|
|
|
- UID
- 764945
- 性别
- 女
|
|
|
|
|
|
- UID
- 153133
- 性别
- 男
|
|
|
|
|
|
- UID
- 183653
- 性别
- 男
|
|
|
|
|
|
- UID
- 776793
- 性别
- 男
|
|
|
|
|
|
- UID
- 529884
- 性别
- 男
|
|
|
|
|
|
- UID
- 779500
- 性别
- 男
|
|
|
|
|
|
- UID
- 793154
- 性别
- 男
|
|
|
|
|
|
- UID
- 521048
- 性别
- 男
|
|
|
|
|
|
- UID
- 174227
- 性别
- 男
|
|
|
|
|
|
- UID
- 520075
- 性别
- 男
|
|
|
|
|
|