摘要:
can
通信中,波特率、位周期内取样点数和位置可以编程设置,这些设置为用户根据
其应用优化网络通信性能提供了方便。优化位定时参数,能够保证信息同步,保证传输延迟
和时钟误差在极端条件下进行恰当的错误检测。
本文说明位定时参数的确定方法。
关
键词:
can
总线
位定时
同步
延迟引言
can
总线是一种有效支持分布式控制和实时控制的、
多主的异步串行通信网络。由于
can
总线具有较强的纠错能力,支持差分收发,适合高噪声
环境,具有较远的传输距离,并且
philips
和
intel
等半导体公司都有支持
can
通信协议的
集成器件。
can
总线已经在各个领域中得到了广泛应用。在
can
通信协议中规定,通信波特
率、每个位周期的取样位置和个数,都可以自行设定。这样的设计理念,为用户在自己的应
用中,优化网络通讯性能提供了空间。为了通过设定位定时参数来优化网络通信性能,必须
清楚位定时参数与参考时钟误差和系统内信号延迟的关系。如果位周期内的取样位置偏后,
将能够容忍较大的信号传输延迟,相应的,总线传输距离可以延长;而如果周期内的取样位
置接近中间,则可以容忍系统的节点间的参考时钟误差。但这显然是矛盾的,为了协调这种
矛盾,必须对位定时参数进行优化位置。
图
1
位周期结构图
通过对
can
总线位定时参数进行研究,找到矛盾的关键所在,就能够对其进行优化,
从而提高通信系统的整体性能。下面以
philips
公司的独立通信控制器
sja1000
为例,进行
研究。
1
相关定义
1.1
位周期的组成波特率
(
fbit
)
是指单位时间内所传输的数据位的数量,
一般取单位时间为
1s
。波特率由通信线上传输的一个数据位周期的长度(
tbit
)决定,如下
式所示。
fbit=1/tbit
(
1
)根据
philips
公司的独立通信控制器,一个位周期由
3
个部分组成:同步段(
tsync_seg
)
、相位缓冲段
1
(
ttseg1
)和相位缓冲段
2
(
ttseg2
)
。
tbit=tsync_seg+ttseg1+ttseg2 (2)
所有这些时间段,都有一个共同的时间单元—
—系统时钟周期(
tscl
)
。具体到
sja1000
,
tscl
由总线时序寄存器的值来确定。
sja1000
有
2
个总线时序寄存器,即总线时序寄存器
0
(
btr0
)和总线时序寄存器
1
(
btr1
)
。这
2
个寄
存器有自己不同的功能定义,
共同作用决定总线的通信波特率。
总线时序寄存器
0
定义波特
率预设值
brp
(共
6
位,取值区间
[1,64]
和同步跳转宽度
sjw
(共
2
位,取值区间
[1,4]
)的
值。位功能说明如表
1
所列。
表
1bit7bit6bit5bit4bit3bit2bit1bit0sjw.1sjw.0brp.5brp.4brp.3brp.2brp.1brp.0can
的系统时钟周期
tscl
,可以由
brp
的数值为决定,计算公式如下:
tscl=2tclk
×
brp=2tclk
×
(32brp.5+16brp.4+8brp.3+4brp.2+2brp.1+1brp.0+1)
(
3
)其中
tclk
为参考时间
的周期。
tclk=1/fclk
(
4
)为了补偿不同总线控制器的时钟振荡器之间的相位偏移,
任何总线控制器必须在当前传送的相关信号边沿重新同步。同步跳转宽度定义了每一位周期
可以被重新同步缩短或延长的时钟周期的最大数目。
tsjw=tscl
×(
2
×
sjw.1+1
×
sjw.0+1
)
(
5
)总线时序寄存器
1
定义每个位周期长度采样点的位置和在每个采样点的采样数目。位
功能说明如表
2
所列,其中
sam
意义见表
3
。
表
2bitbitbitbitbitbitbitbitsamtseg2.2tseg2.1tseg2.0tseg1.3tseg1.2tseg1.1tseg1.0
表
3
位值功
能
sam0
三倍:总线采样三次:建议在中
/
低速总线(
a
和
b
级)使用,有
处于过滤总线上毛刺
1
单倍:总线采样一次;建议使用在高速总线上(
saec
级)
tseg1
(共
4
位,取值区间
[1,16]
)和
tseg2
(共
3
位,取值区间
[1,8]
)决定了每一位时钟数目和采样点
的位置。这里
tsync_seg=1
×
tscl
(此时间段固定)
(
6
)
ttseg1=tscl
×
(8
×
tseg1.3+4
×
tseg1.2+2
×
tseg1.1+1
×
tesg1.0+1) (7)ttseg2=tscl
×
(4
×
tseg2.2+2
×
tseg2.1+1
×
tesg2.0+1) (8)
位周期的标量值
(
nbt
)
定义为,
sync_seg
(
同步段系统时钟周期数)
、
tseg1
(相位缓冲段
1
系统时钟周期数)
、
tseg2
(相位缓冲段
2
系统时钟周期数)之和。这决
定了它的取值区间为
[3,25]
,在
1
个取样点时,最小值一般取
4
;在
3
个取样点时,最小值
一般取
5
。
nbt=tbit/tscl=sync_seg+tseg1+tseg2 (9)
位周期的一般结构如图
1
所示。