打印
[汽车MCU – KEA]

CAN接口调试

[复制链接]
1115|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Reuterking|  楼主 | 2015-12-17 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
KEA128,原来的Demo代码中,clock的source是使用系统bus时钟——没有去尝试使用系统时钟,直接将时钟源配置为外部晶振产生的时钟。

sMSCANConfig.sSetting.bCLKSRC = 0;                //1: Bus clock; 0: OSC

一个小插曲是波特率的配置。
API中配置波特率还是不方便,计算出来的是125kHz,结果实际是500kHz,以至于使用工具进行接收时,无法收到数据。在示波器测量TX口线上的波特率之后,将工具的波特率改为500kHz,即解决问题了。

相关帖子

沙发
李香兰| | 2015-12-17 20:34 | 只看该作者
难道是因为计算的不够准确吗

使用特权

评论回复
板凳
NXP_TICS_Jeremy| | 2015-12-18 09:37 | 只看该作者
谢谢分享,楼主能否将你发现此问题的过程,梳理一下,如果真是个bug,也方便我们这边check

使用特权

评论回复
地板
Reuterking|  楼主 | 2015-12-18 14:21 | 只看该作者
重新设定波特率之后的参数如下:
#define BAUD_RATE_SJW                     SJW_4TQ        /*!< 1 set Synchronization Jump Width. */
#define BAUD_RATE_BRP                                0                /*!< 1 Baud Rate Prescaler */       
#define BAUD_RATE_SAMP                                0                /*!< 0-One sample per bit, 1-three sample per bit. */       
#define BAUD_RATE_TSEG1                                TSEG_7  /*!< Time Segment 1: TSEG1: 4~16        */
#define BAUD_RATE_TSEG2                                TSEG_8  /*!< Time Segment 2: TSEG2: 2~8                */
#define BAUD_RATE_CLOCK                                8000000L/*!< clock source for MSCAN*/
#define Baud_RATE                                        BAUD_RATE_CLOCK/(BAUD_RATE_BRP+1)/(BAUD_RATE_SJW+1)/(3 + BAUD_RATE_TSEG1+BAUD_RATE_TSEG2)

==>>8M/1/4/16) = 125kHz

KEA128芯片规格书上的位时间计算如下:(page-563)
位时间 = (1 + 时段1 + 时段2) * (预分频器值)/ fCANCLK
好像省掉了对同步段和相位缓冲段的要求描述。

这两种方式计算都无法获取所需要的波特率。
****
另外,既然TSEG1和TSEG2有范围要求,对TEG_1和2的定义如果可以分开,或者至少如我注释部分添加的,也许可以更加让使用者感到两段的差异。
配置出错时,虽然CW会有提醒,但是不追究时,就会出错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

17

帖子

0

粉丝