CAN总线中位定时的设定方法
摘要:在CAN总线中,位定时有一点小错误就会导致总线性能严重下降。虽然在许多情况下,位同步会修补由于位定时设置不当而产生的错误,但不能完全避免出错情况,并且在遇到两个或多个CAN节点同时发送的情况时,错误的采样点会使节点启动错误认可标志,使节点不能赢得总线上的任何活动。因此要分析、解决这样的错误就需要对CAN总线位定时中的位同步和CAN节点的工作过程有一个深入的了解。本文描述了CAN总线位同步的运行规则以及如何对位定时的参数进行设置。
关键词:总线 位定时 同步 延迟
1. 前言
CAN总线的数据传输速率最高可达1Mbit/s,通常用石英晶振作为时钟发生器,可以独立进行位定时的参数设置,这样即使网络中节点之间的时钟周期不一样仍可获得相同的位速率。但网络中晶振的频率不是绝对稳定的,温度、电压以及器件的异常都会导致微小的差别,但只要将其稳定在振荡器容差范围之内,总线上的节点会通过重同步进行弥补。
CAN总线的一个位时间可以分成四个部分:同步段,传播段,相位段1和相位段2,每段的时间份额的数目都是可以编程控制的,而时间份额的大小tq由系统时钟tsys和波特率预分频值BRP决定:tq=BRP/tsys。如图1:
图1 参数范围说明 分频值 [1…….32] 规定时间份额的长度 同步段 1tq 固定长度,同步总线节点 传播时间段 [1…….8]tq 补偿总线物理延迟时间 相位缓冲段1 [1…….8]tq 重同步时可以暂时延长 相位缓冲段2 [1…….8]tq 重同步时可以暂时缩短 同步跳转宽度 [1…….4]tq 长度小于相位缓冲段表1:位时间的参数2.同步段
(1)同步段用于同步总线上的各个节点,在此段内期望有一个跳变沿出现。如果跳变沿出现在同步段之外,那么沿与同步段之间的长度叫做沿相位误差。采样点位于相位缓冲段1的末尾和相位缓冲段2开始处。
(2)传播时间段用于补偿总线上信号传播时间和电子控制设备内部的延迟时间。因此,要实现与位流发送节点的同步,接收节点必须移相。CAN总线非破坏性仲裁规定,发送位流的总线节点必须能够收到同步于位流的CAN总线节点发送的显性位。图2显示了两个总线节点的相移和传播段时间。
图2在这个例子里,节点A和节点B都是发送节点,因此总线要对两个节点进行仲裁。节点A比节点B提前发送不到1个位时间,当节点B收到延迟后的跳变沿时,B节点要同步于A节点,对位时间进行移相。移相后节点B发送的标识号有较高优先级,因此节点B赢得总线的使用权,如图节点B发送的显性位经过延迟后到达节点A。
因为存在振荡器容差,节点A的采样点在相位缓冲段的位置是不能确定的,所以节点B发送的位流必须在A节点的相位缓冲段1开始之前到达,因此传播时间段的长度将受到这个条件的限制。如果节点B发送一个隐性到显性的跳变沿,节点A在相位缓冲段1开始之后收到,那么节点A就有可能采样到一个隐性位,导致产生一个位错误。这样的错误只有当两个节点都参与总线仲裁,且总线比较长,节点的振荡器频率相差较大时才会出现。另外,CAN总线还提供一种采样方式,即采样3次,在相位缓冲段首尾以及相位缓冲段1、2的交界处各采样一次,并通过位定时逻辑确定位的正确值,这样就会要求额外的一个时间份额的延迟,因而需要更长的传播时间段。
3.相位缓冲段和同步
同步跳转宽度规定了重同步发生时采样点在相位缓冲段内移动的距离。相位缓冲段和同步跳转宽度用来补偿振荡器容差,发生重同步时相位缓冲段会被加长或缩短。当总线发生从隐性到显性跳变时,会产生同步,其作用是控制沿与采样点之间的距离。总线节点在每个时间份额都会采样总线,并与前一次采样值进行比较,如果前一次采样值是隐性而当前的采样值是显性,那么总线节点就会发生一次同步。如果跳变沿出现在同步段的前面,沿相位错误就是负的,反之就是正的。
在帧起始时,总线会进行一次硬同步。硬同步后,位时间由每个位定时逻辑单元在同步段之后重新启动,强迫引起硬同步的边沿处于重新启动位时间的同步段内。
当引起重同步的沿相位错误幅值小于或等于同步跳转宽度的数值时,重同步导致位时间的延长或缩短,使采样点处于适当的位置。当沿相位误差幅值大于重同步跳转宽度时,如果相位误差为正,相位缓冲段1延长数值等于同步跳转宽度;如果相位误差为负,相位缓冲段2缩短数值等于同步跳转宽度。
通过同步,总线可以有效地滤除长度小于传播段与相位缓冲段1长度之和的噪声。但在一个位时间里只允许一种同步发生。除了噪声以外,绝大多数的同步都是由仲裁引起的,总线上的所有节点都要同步于最先开始发送的节点,但是由于总线延迟,节点的同步不可能达到理想的要求。如果最先发送的节点没有赢得总线仲裁,那么所有的接收节点都要重新同步于获得总线仲裁的节点。应答场的情况也是如此,总线上的接收节点都要同步于最先发送显性位的节点。但是当发送节点与接收节点的时钟周期不同并经过多次同步累加起来,振荡器容差会导致同步在仲裁场之后出现。图3列举了沿相位误差为正负两种情况,中间的图作为参考。说明了相位缓冲段如何弥补沿相位错误。
图3在第一个例子里,同步段末端出现了一个隐性到显性的跳变沿,那么相位缓冲段1
《CAN总线中位定时的设定方法》