LPC11Cx系列CAN总线位定时参数计算方法校正

2013-09-21 10:44卢斌董书大
单片机与嵌入式系统应用 2013年1期
关键词:缓冲区寄存器时钟

卢斌,董书大

(湖南大学 电气与信息工程学院,长沙 410082)

引 言

LPC11Cx系列是NXP公司的高性价比Cortex-M0构架ARM微控制器产品,内嵌CAN总线控制器。CAN总线位定时参数决定CAN总线能否按给定速率正常通信及其稳定性,但在实践中发现,原版用户手册及国内译本在CAN总线位定时参数配置寄存器的表述上有误,导致用户CAN总线无法正常通信。下面将校正错误,并给出CAN总线位定时参数具体计算实例。

1 位定时时序及参数

依据CAN总线规范,LPC11Cx系列的位时间被分成4个段:同步段、时间传播段、相位缓冲区段1和相位缓冲区段2,位时序如图1所示。

图1 位时序

图1中,每一个段包含有一个指定的、可编程的时间量子数,如表1所列。

表1 CAN总线位时间参数

表1中,时间量子tq是位时间长度的基本时间单元,tq与CAN总线控制器的系统时钟fsys可确定参数BRP,即tq=BRP/fsys。同步段SYNC_SEG是位时间的第一部分,CAN总线的边沿电平会在这里发生。传播时间段PROP_SEG用于对CAN总线网络内的物理延迟时间进行补偿。相位缓冲区段TSEG1和TSEG2包围着采样点。(重新)同步跳转宽度SJW实现对边沿相位误差作出补偿。

2 位定时寄存器描述校正

LPC11Cx系列CAN总线的位时间参数通过其内部的32位控制寄存器CANBT来定义及编程。CANBT寄存器的详细描述如表2所列。

表2 CAN总线位定时寄存器CANBT

请注意,表2中上标注*表示硬件把写入这些位的值理解为位值+1。NXP公司原版用户手册及国内译本还同时标注了SJW、TSEG2,说明这两项也需进行位值+1处理,但这么做得出的位定时参数无法使CAN总线正常通信。

3 位定时参数计算

根据表1各定时位段定义,设目标系统晶振频率为12MHz,经过LPC11Cx内部PLL锁相环电路倍频后,系统时钟频率fsys为48MHz。现要求CAN总线速率fc为500kHz,则CAN总线时钟周期tc=1/fc=1/500kHz=2μs,位定时参数计算如下。

首先,将系统时钟频率fsys进行6分频,即fsys/(BRP+1)=fsys/6=48MHz/6=8MHz,由此确定参数BRP=0x000101,而时间量子tq=1/8MHz=0.125 μs,CAN总线时钟周期tc包含的时间量子tq的个数为:tc/tq=2μs/0.125μs=16。

然后,根据CAN总线传输介质及应用场合的电磁干扰状况,适当确定CAN总线位定时寄存器CANBT的SJW、TSEG1、TSEG2的值,使这3项位值之和等于16。这里对3项位值取值为:SJW=0x11,TSEG1=0x0110,TSEG2=0x111,并满足:SJW+(TSEG1+1)+TSEG2=16。

最后,将上述位值组合,确定位定时参数值为0x76C5,这个值将被配置写入到位定时寄存器CANBT中。在Cortex-M0的CMSIS软件开发标准框架下,可很方便地调用LPC11Cx片上CAN API函数集来编程,如下语句即可实现寄存器CANBT的位定时参数配置:

结 语

实践表明,在改变系统时钟频率、CAN总线通信速率及CANBT寄存器的各项位值的情况下,校正之后的位定时参数计算方法所获得的参数值均能满足CAN总线正常通信的要求,消除了用户手册误导。如何提高CAN总线通信的可靠性,在位定时方面还需要根据CAN总线的具体工作状况不断进行实验,并对CANBT寄存器的各项位值仔细调整而得到最佳值。

[1] 牛跃听,周立功.CAN总线嵌入式开发——从入门到实战[M].北京:北京航空航天大学出版社,2012.

[2] 杨春杰.CAN总线技术[M].北京:北京航空航天大学出版社,2010.

[3] NXP Semiconductors.LPC111x/LPC11Cxx User manual[DB/OL].[2012-03].http://www.zlgmcu.com/NXP/LPC1000/LPC1100.asp.

[4] ISO 11898-2007Road vehicles——Controller area network(CAN)——Part 5:High-speed medium access unit with lowpower mode[S].

猜你喜欢
缓冲区寄存器时钟
STM32和51单片机寄存器映射原理异同分析
别样的“时钟”
古代的时钟
Lite寄存器模型的设计与实现
基于网络聚类与自适应概率的数据库缓冲区替换*
有趣的时钟
时钟会开“花”
一类装配支线缓冲区配置的两阶段求解方法研究
关键链技术缓冲区的确定方法研究
初涉缓冲区