引用地址为:http://bbs.eccn.com/frame.php?frameon=yes&referer=http%3A//bbs.eccn.com/forumdisplay.php%3Ffid%3D3
具体内容如下:
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原来存在一个潜在的大问题。
总结了一下,说明一个问题:当预分配因子小于等于2的时候,如果时钟源采用晶振,那么晶振一定要质优可靠,不允许有毛刺,而且晶振电路布线一定要合理设计。曾经有一块板子,100%会出现这个问题。说明晶振电路存在问题,会有毛刺。这可以说是 飞思卡尔的MSCAN模块潜在的一个比较严重的问题。
因速率在125Kbps时候没有这个问题,说明预分频因子在4或者更大的时候,晶振的毛刺对CAN影响不大。
为了可靠起见,建议采用总线时钟。
个人建议:
汽车CAN通信要求可靠性高,所以时钟源一定要使用有源晶振,并且一定要是高质量的汽车级有源晶振,这样才能保证电路的高可靠性。
文章评论(0条评论)
登录后参与讨论