APP下载

CAN总线位定时和同步的研究与设计

2010-05-13单琳娜,徐斌山,陈文平

现代电子技术 2009年12期

单琳娜,徐斌山,陈文平

摘 要:在CAN规范中,位定时和同步机制是既重要又难于理解的环节之一,它不仅关系到对规范其他相关内容的理解,甚至能对节点开发的成功与否产生直接的影响。因此介绍了位时间(周期)的组成与结构,总结并归纳位定时的作用;在此基础上,给出硬同步和重同步的定义,重点分析硬同步和重同步的机理,并给出它们相应的图解,形象而又清晰地表明其本质;以独立CAN控制器为例,详细说明在一般开发和工程实际中,位定时参数设置和计算的一般方法及步骤。

关键词:位定时;硬同步;重同步;参数

中图分类号:TP3344文献标识码:B

文章编号:1004-373X(2009)12-142-04

Research and Design on CANbus Bit Time and Synchronization

SHAN Linna,XU Binshan,CHEN Wenping

(College of Information and Electronic Technology,Jiamusi University,Jiamusi,154007,China)

Abstract:In the CANbus norm,bit time and synchronous mechanism is one of the link that is important and difficult to understand,it not only relates to norm the comprehension of other related content,even to influence direct the success or a case of crabs of node development.The constitute and structure of the bit time(period) is introduced,the function of bit time is tallied up and induced.The definition of hard and repetition synchronous is presented on the foundation,the mechanism of hard and repetition synchronous is analyzed,the correspondence diagram is presented,the hypostases is indicated vividly and clear.As an example with independent CANbus controller,the general method and step of bit time are elaborated in the general development and the engineering practice.

Keywords:bit time;hard synchronous;repetition synchronous;parameter

0 引 言

控制器局域网CAN是一种用于连接汽车和工业场合中电子控制模块、传感器和执行器的串行、多主通信规范[1,2]。由于CAN总线具有很强的纠错能力、支持差分收发、传输距离远等特点,因此CAN总线用途非常广泛,现已成为工业数据通信领域的主流技术、基础技术,目前比较流行的TTCan,DeviceNet,CANOpen,SAE J1939等规范均是以CAN为基础的,因此对CAN总线的深入研究是十分必要的。在CAN规范中,位定时和同步机制是既重要又难于理解的环节之一,它不仅关系到对波特率、总线长度等相关内容的理解,甚至对节点开发的成功与否产生直接的影响。然而,目前相关文献均缺乏针对CAN总线位定时和同步机制的详细分析和探讨。在此以CAN技术规范为基础,深入分析CAN总线的位定时和同步机制,给出硬同步和重同步的定义,并给出相应的图解解释方式,对位时间的组成与结构、同步的发生时刻、同步是如何进行的等关键内容给出了明确而又具体的分析。这里的工作对理解位定时和同步机制的本质、指导位时间参数的设置均具有较高的参考价值[3,4]。

1 位定时

1.1 位时间的组成

位时间(位周期)tB即1位的持续时间。正常位时间tNBT是正常位速率fNBT(在非重同步的情况下,借助理想发送器每秒发送的位数)的倒数,即tNBT =1/fNBT。正常位时间可划分为几个互不重叠的时间段,这些时间段包括:同步段(SYNC-SEG)、传播时间段(PROP-SEG)、相位缓冲器段1(PHASE-SEG1)、相位缓冲器段2(PHASE-SEG2)。每个时间段由整数个被称为时间份额tQ的基本时间单位组成。tQ是由振荡器周期tCLK派生出的一个固定时间单元。一个时间份额的持续时间通常便是CAN的一个系统时钟周期tSCL。tSCL可通过可编程的预引比例因子进行调整。每个位时间必须由8~25个时间份额组成。位时间的组成如图1所示。

图1 位时间组成

位时间的各个时间段均有其特定的用途[5]:

(1) 同步段用于使总线上的各个节点同步,要求有1个跳变沿位于此段内,该段长度为1个时间份额;

(2) 传播时间段用于补偿网络内的物理延时,它是信号在总线上传播时间、输入比较器延时和输出驱动器延时之和的2倍,该段长度为1~8个时间份额;

(3) 相位缓冲器段1和相位缓冲器段2用于补偿沿的相位误差,通过重同步,相位缓冲器段1可被延长或相位缓冲器段2可被缩短。

这些时间段的长度均是可编程的。在常用的通信控制器(SJA1000)或PAC82C200中,合并传播时间段和相位缓冲器段1,称为时间段1(TSEG1),相位缓冲器段2称为时间段2(TSEG2),如图1所示。

采样点是这样一个时刻:在此时刻上,总线电平被读取并被理解为其自身的数值。它位于相位缓冲器段1的终点。在重同步期间,采样点的位置被移动整数个时间份额,该时间份额被允许的最大值称为重同步跳转宽度(SJW),它可被编程为1~4个时间份额。值得注意的是,重同步跳转宽度并不是位时间的组成部分。

1.2 位定时的作用

位定时是由节点自身完成的(可编程),节点进行位定时的作用为[6,7]:

(1) 确定位时间,以便确定波特率(位速率),从而确定总线的网络速度;或在给定总线的网络速度的情况下确定位时间;

(2) 确定1位的各个组成部分——同步段、传播时间段、相位缓冲器段1和相位缓冲器段2的时间长度,其中同步段用于硬同步,位于相位缓冲器段1终点的采样点用于保证正确地读取总线电平;

(3) 确定重同步跳转宽度以用于重同步。

2 CAN总线同步机制分析

CAN规范定义了自己独有的同步方式:硬同步和重同步。同步与位定时密切相关。同步是由节点自身完成的,节点将检测到来自总线的沿与其自身的位定时相比较,并通过硬同步或重同步适配(调整)位定时。在一般情况下,引起硬同步和重同步发生的、来自总线的沿如图2所示。

图2 硬同步和重同步发生时刻示意图

2.1 硬同步

CAN 技术规范给出了硬同步和重同步的结果,但没有给出硬同步和重同步的定义。这里首先给出硬同步和重同步的定义,然后对其进行分析。

所谓硬同步,就是由节点检测到的,来自总线的沿强迫节点立即确定出其内部位时间的起始位置(同步段的起始时刻)。硬同步的结果是,沿到来时刻的前一时刻(以时间份额tQ量度),即成为节点内部位时间同步段的起始时刻,并使内部位时间从同步段重新开始。这就是规范中所说的“硬同步强迫引起硬同步的沿处于重新开始的位时间同步段之内”。硬同步一般用于帧的开始,即总线上的各个节点的内部位时间的起始位置(同步段)是由来自总线的一个报文帧的帧起始的前沿决定的。

同步段的时间长度为1个时间份额。如图3所示,来自总线的引起硬同步的沿在t1时刻到来,则节点检测到该沿。将t1时刻的前一时刻t0(以tQ为周期)作为内部位时间同步段的起始时刻。

图3 硬同步图解

2.2 重同步

所谓重同步,就是节点根据沿相位误差的大小调整其内部位时间,以使节点内部位时间与来自总线的报文位流的位时间接近或相等。作为重同步的结果,PHASE-SEG1可被延长或PHASE-SEG2可被缩短,从而使节点能够正确地接收报文。重同步一般用于帧的位流发送期间,以补偿各个节点振荡器频率的不一致。这里涉及到沿相位误差的概念。沿相位误差由沿相对于节点内部位时间同步段的位置给定,以时间份额量度,沿相位误差的符号为e,其定义如下:

(1) 若沿处于SYNC~SEG之内,则e=0;

(2) 若沿处于采样点之前(TSEG1内),则e>0;

(3) 若沿处于前一位的采样点之后(TSEG2内),则e<0。

CAN技术规范中也给出了重同步跳转宽度,重同步策略与同步规则,但比较抽象、不易理解。为深入理解节点是如何进行重同步的,图4给出了重同步的图解。在图4中,SY,PR,PS1和PS2分别表示同步段、传播段、相位缓冲段1和相位缓冲段2。假定总线位流的第一位(帧起始,为“0”)起始于t1时刻、终止于t2时刻,总线位流的第2位为“1”;从第2位开始,总线位流的“隐性”(“1”)至“显性”(“0”)和“显性”(“0”)至“隐性”(“1”)的跳变沿均用于重同步。在t1时刻,节点检测到总线的跳变沿,便进行硬同步,使t1时刻的跳变沿处于节点内部第1位位时间的同步段内。节点从第1位的同步段开始启动内部位定时,即根据系统要求的波特率给出内部位时间。现假定由于各节点振荡器频率的不一致,在t2时刻的跳变沿未处于节点第2位位时间的同步段SY内,而是处于PS1内,即有e>0。这表明节点内部的位时间小于总线位流的位时间。为了使节点能从总线上通过采样得到正确的位数值,需使节点内部的位时间延长,以使节点内部位时间与总线位流位时间接近或相等。因此,在这种情况下节点应采取的重同步策略为:使PS1延长一定宽度(图4中PS1延长2个时间份额,即同步跳转宽度为大于等于2个时间份额,如为3个时间份额)。e<0的情况与之类似,只是PS2会相应地缩短一定宽度。这与CAN技术规范中的重同步策略是一致的。

图4 重同步图解(e>0)

这里需要注意的是,相位缓冲段只在当前的位时间内被延长或缩短,在接下来的位时间内,只要没有重同步,各时间段将恢复编程预设值。

3 控制器中位定时参数设置的一般方法

在典型的独立CAN控制器(SJA1000或PCA82C200)中,负责位定时的寄存器为总线定时寄存器0(BTR0)和总线定时寄存器1(BTR1),其结构如图5所示[8,9]。

图5 总线定时寄存器

寄存器中有关参数的计算公式如下:

tSCL=2tCLK•BRP(1)

BRP=32BRP.5+16BRP.4+8BRP.3+

4BRP.2+2BRP.1+BRP.0+1(2)

SJW=tSJW/tSCL=2SJW.1+SJW.0+1(3)

SYNCSEG=tSYNCSEC/tSCL=1(4)

TSEG1=tTSEG1/tSCL=8TSEG1.3+4TSEG1.2+

2TSEG1.1+TSEG1.0+1(5)

TSEG2=tTSEG2/tSCL=4TSEG2.2+2TSEG2.1+

TSEG2.0+1(6)

这些参数的范围在CAN中有较严格的规定,具体如表1所示。

表1 位定时参数的范围(以时间份额度量)

参数范围说明

SAM0或1规定采样次数

SJW1~4规定相位缓冲段延长或缩短的上限

BRP1~64规定时间份额的长度

SYNCSEG1同步总线上各节点

TSEG11~16补偿沿相位误差可被延长

TSEG21~8补偿沿相位误差可被缩短

NBT8~25正常位时间

在有些情况中,为了优化网络性能,这些参数的设置往往需要考虑传输延迟、时钟偏频等因素。然而,对于一般的开发或工程实际,完全可以根据经验对其进行计算和设置。这里以一个时钟频率为20 MHz、通信波特率为250 Kb/s(位时间为4 μs)的系统为例,介绍与位定位有关的各参数的计算方法和步骤。

(1) 确定时间份额。

由表1可知,在1个位周期中时间份额的数量必须是8~25之间的一个整数值。在满足这个前提下,应该使时间份额的时间值尽可能的小1些,也就是让1个位周期中时间份额的数量更多。这样做的目的是为了使采样点位置的选择具有更好的分辨率。考虑到以上两个因素,在这里将时间份额的数量设置为20,于是有:

时间份额: tSCL=200 ns。

根据式(1):

BRP=tSCL/2tCLK=2

(2) 设置时间段和采样点。

下面需要对时间段1和时间段2进行分配和设置。由于时间份额的数量已经确定,再根据:时间份额的数量=1+TSEG1+TSEG2,

这样看来,时间段1和2似乎有多个配置可供选择。但有一点值得注意的是,时间段1和2的确定同样关系着采样点在位周期中的位置,这是非常关键的。因为如果采样点选择的不适当,在有些情况中会直接导致错误的出现。与普通的串行通信端口或UART在中间位置(50%)的采样不同,CAN总线的采样点最好靠近位时间的末端。根据工程经验,一般将采样点时间比设置在位时间80%的位置是最佳的,于是有:

TSEG1=15;TSEG2=4

采样点时间比=(1+TSEG1)/(1+TSEG1+

TSEG2)=(1+15)/(1+15+4)=0.8=80%

(3) 确定同步跳转宽度和采样次数。

为完成位定时参数的设置,最后还要确定同步跳转宽度和采样次数。同步跳转宽度的一般设置原则是在允许的范围内应尽可能的大一些,这样更有利于在重同步时对沿相位误差的补偿,在这里可将该参数设置为3。采样次数的设置比较容易和直接,对于高速总线,建议将SAM置为“0”,此时总线被采样1次;而对于低/中速总线,建议将SAM置为“1”,此时总线被采样3次。250 Kb/s属于高速总线,所以在这里SAM应置为0。

通过以上方法和步骤所确定的各参数值,再结合式(2)、式(3)、式(5)、式(6)可直接得出寄存器BTR0和BTR1的设置值[10,11]。

4 结 语

(1) 结合图解的方式对CAN总线位定时、硬同步和重同步等关键技术的深入探讨和分析,反映了CAN总线位定时和同步机制的本质、清晰地表明了它们在CAN技术规范中的地位与作用。

(2) 在CAN总线中,通信波特率(位时间)、每个位时间的采样位置及个数、同步跳转宽度等都可以自行设定。然而,位定时参数如果设置不当就会检测到错误并进行错误处理,导致总线性能下降甚至无法工作。因此要分析、解决这样的问题就需要对CAN总线位定时和同步机制有较深入的理解,从而保证正确地设置位定时参数。

(3) 这里所研究的内容,是深入理解和学习CAN总线技术的前提和保证,也是进行后续开发和研究的基础和关键。

参考文献

[1]夏德海.现场总线的现状及其发展趋势[J].电气时代,2006(8):16-19.

[2]刘芳.浅谈基于CAN总线现场的数据采集系统[J].铁道通信信号,2006(3):23-24.

[3]饶运涛,邹继军,王进宏.现场总线CAN原理与应用技术[M].2版.北京:北京航空航天大学出版社,2007.

[4]甘永梅,李庆丰,刘晓娟,等.现场总线技术及应用[M].北京:机械工业出版社,2004.

[5]鞠玉翔.基于CAN的一个现场总线控制实验系统的设计[D].上海:华东理工大学,2004.

[6]蒋智康,陈涛,宋春宁.PIC单平机的CANopen通信协议[J].单片机与嵌入式系统应用,2008(9):24-27.

[7]杨福宇.对TTCAN的分析[J].单片机与嵌入式系统应用,2008(6):5-7.

[8]姜重然,陈文平,单琳娜.基于单片机以太网节点及精简TCP/IP协议栈的设计[J].单片机与嵌入式系统应用,2008(8):73-75.

[9]姜重然,陈文平,单琳娜.基于现场总线一种报文优先级产生与检测方法[J].测控技术,2008(9):54-56.

[10]张煌,王常顺.CAN总线冗余的船舶监控系统的设计[J].单片机与嵌入式系统应用,2008(10):57-60.

[11]刘国栋,王爽心,吴枝祥.LPC2131基于CPLD的CAN接口设计[J].单片机与嵌入式系统应用,2008(5):66-67.