微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 射频工程师文库 > CAN总线位定时和同步的研究与设计

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

时间:07-05 来源:电子技术应用 点击:

\


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技术规范中的重同步策略是一致的。

\

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

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

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

\


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

\


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

\


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

(1)确定时间份额。

由表1可知,在1个位周期中时间份额的数量必须是8~25之间的
\\
(3)确定同步跳转宽度和采样次数。

为完成位定时参数的设置,最后还要确定同步跳转宽度和采样次数。同步跳转宽度的一般设置原则是在允许的范围内应尽可能的大一些,这样更有利于在重同步时对沿相位误差的补偿,在这里可将该参数设置为3。采样次数的设置比较容易和直接,对于高速总线,建议将SAM置为"0",此时总线被采样1次;而对于低/中速总线,建议将SAM置为"1",此时总线被采样3次。250 Kb/s属于高速总线,所以在这里SAM应置为0。通过以上方法和步骤所确定的各参数值,再结合式(2)、式(3)、式(5)、式(6)可直接得出寄存器BTR0和BTR1的设置值。

4 结 语

(1)结合图解的方式对CAN总线位定时、硬同步和重同步等关键技术的深入探讨和分析,反映了CAN总线位定时和同步机制的本质、清晰地表明了它们在CAN技术规范中的地位与作用。
(2)在CAN总线中,通信波特率(位时间)、每个位时间的采样位置及个数、同步跳转宽度等都可以自行设定。然而,位定时参数如果设置不当就会检测到错误并进行错误处理,导致总线性能下降甚至无法工作。因此要分析、解决这样的问题就需要对CAN总线位定时和同步机制有较深入的理解,从而保证正确地设置位定时参数。
(3)这里所研究的内容,是深入理解和学习CAN总线技术的前提和保证,也是进行后续开发和研究的基础和关键。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top