首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[经验之谈]9S12的MSCAN速率配置及错误帧故障的解决

[经验之谈]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 ************/

帖子配置错误。
原先要设定成回复可见,结果设成 获赠金币帖 了。
回复可见是正常了,不过获赠金币不能改了。
就这样吧

/********** 飞思卡尔交流QQ群:82738157 ************/
另一个是选择时钟源吗?

怎么回复后也看不到啊

我试试看看。。回复后可以看到的

[此贴子已经被作者于2009-5-30 13:43:28编辑过]

[em03][em03][em03]
我试试看看。。回复后可以看到的

怎么回复后也看不到啊

[em01]
我试试看看。。回复后可以看到的

应该是时钟的配置!

狂顶,先看看
我正在学习CAN中,谢谢楼主分享。

dddddddddddddddddddddd

sgfgdfdfgdfgdfgdfdfgdfdf

我回复了,谢谢!!

[em01]
返回列表