原创 转载:今天在中电网上看到的有关CAN的注意事项。

2009-9-27 11:30 2813 4 3 分类: 汽车电子

引用地址为: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原来存在一个潜在的大问题。




本帖隐藏的内容需要回复才可以浏览



最后,我把CAN0CTL1 = 0x80; 改为 CAN0CTL1 = 0xc0;故障消失。
仔细分析了一下,我仅仅是把CAN时钟源从晶振改为总线。说明晶振有问题。
用示波器测量,发现晶振有轻度的毛刺,一般情况下不影响使用。


总结了一下,说明一个问题:当预分配因子小于等于2的时候,如果时钟源采用晶振,那么晶振一定要质优可靠,不允许有毛刺,而且晶振电路布线一定要合理设计。曾经有一块板子,100%会出现这个问题。说明晶振电路存在问题,会有毛刺。这可以说是 飞思卡尔的MSCAN模块潜在的一个比较严重的问题。
因速率在125Kbps时候没有这个问题,说明预分频因子在4或者更大的时候,晶振的毛刺对CAN影响不大。
为了可靠起见,建议采用总线时钟。


个人建议:


汽车CAN通信要求可靠性高,所以时钟源一定要使用有源晶振,并且一定要是高质量的汽车级有源晶振,这样才能保证电路的高可靠性。


 


 


 

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条