详解CAN总线信号传输位定时与位同步

CAN协议与其它现场总线协议的区别中有一个是:它使用同步数据传输而不是异步传输(面向字符) 。这意味着传输性能得到更有效的发挥,但是另一方面,这需要更加复杂的位同步方法 。
【详解CAN总线信号传输位定时与位同步】在面向字符的协议中的位同步实现起来很简单,在接受每个字符的起始位时进行同步 。但在同步传输协议中,只有一帧的开始才有一个起始位 。这通常不足以使接收器的位采样和发送器保持同步 。为了使接收器在帧结束时也能正确采样到接收的位流,就需要接收器不断进行重新同步 。重新同步表示在位流中每个有效的信号边沿都可对接收信号的时钟周期进行检测 。在信号边沿间的最大时间周期内,发送和接受振荡器之间最大可能的时间差必须在一个位间隔内的标称采样点之前和之后通过足够的空闲时间("相位缓冲段")来补偿 。
由于CAN协议使用非破坏性的位总线仲裁和显性应答位,信号从发送器传输到接收器再返回到接收器必须在一个位时间内完成 。因此除了保留用于同步的时间外,还需要一个时间段("传输延迟段")对总线上的信号传输进行补偿以及用于发送和接收节点的内部信号延迟 。
一个位间隔的时间段的长度根据振荡器周期,被定义为一个基本时间单位(时间份额)的倍数 。基本时间单位tq是表示同步机制时间分辨率的基本单位并且因为同步段而被引入到位时间中 。同步段是位时间中CAN信号电平的边沿将要产生的那一部分 。在同步段之后产生的边沿与同步段之间的距离称为该边沿的"相位误差e" 。
传输延迟段提供必要的时间用于处理网络中的最大信号传输延迟 。该时间段必须两倍于两个节点之间的最大信号传输延迟时间加上发送和接收节点的内部延迟时间之和 。
需要区分两种类型的同步:帧起始处的"硬同步"和帧中间的"重新同步" 。在硬同步之后,位时间在sync段结束时重新启动而不考虑相位的误差 。这样硬同步强制产生硬同步的边沿延伸到重新启动的位时间的同步段中 。重新同步导致位时间缩短或延长,从而使采样点产生移位 。
通过标称采样点之前和之后的相位缓冲段,在重新同步时为实际采样点的移位保留了空闲时间 。同步只发生在隐性位转换到显性位电平的边沿 。通过在每个时间量内对总线的实际电平进行采样并和前一次采样点的总线电平相比较可检测出边沿 。如果在同步段内检测到边沿,那么该边沿可实现同步,否则信号边沿与同步段的结束之间的距离就是边沿相位误差(以时间量计算) 。如果边沿发生在同步段之前,相位误差为负,否则为正 。
如果相位误差为正,相位缓冲段1将被延长 。每次重新同步时,相位缓冲段缩短或延长的数量("同步跳转宽度",SJW)的最大值受到限制,它可编程为1和Min{4,Phase_Seg1}之间的值 。
当信号边沿相位误差的数值小于或等于SJW的编程值 。硬同步和重新同步的值将是相同的 。如果相位误差的数量大于SJW,重新同步将无法完全补偿相位误差,这样误差(相位误差-SJW)仍然存在 。
在两次采样点之间只允许执行一次同步 。重新同步维持了边沿和采样点之间的最小距离,使总线电平的稳定和滤除尖峰的时间小于传输段和相位段1时间之和 。
一个位时间内不同的段可按照下面的限度进行编程:
Sync_Seg:1时间份额
Prop_Seg1:1...8或更多时间份额
Phase_Seg1:1...8或更多时间份额
Phase_Seg2:Max{Phase_Seg1,信息处理时间}
波特率预分频器:1...32
SJW:1...4,但是不大于Min{4,Phase_Seg1}
在同步的时候,Phase_Seg1可以长于编程的标称时间而Phase_Seg2可以短于标称时间 。
"数据处理时间"从采样点之后开始,它是用于决定随后发送的位电平的时间(例如,数据位、CRC位、填充位、错误标志或空闲) 。该时间不能大于2个时间量 。其长度为Phase_Seg2编程值的下限 。在同步时Phase_Seg2可以小于数据处理时间,这不会影响总线的时序 。
每个位时间的时间份额值必须设置为8到25的范围内 。
如果发送器的振荡器比接收器的慢(a),用于同步的信号边沿将延迟到达接收器 。接收器可通过采样点的移位进行补偿 。可补偿的最大累积"延迟"(边沿相位误差)由相位段1所保留的时间确定 。在重新同步过程中,如果相位误差的值小于等于SJW,采样点则根据所发生的边沿相位误差e进行移位,并因此恢复与当前位位置相关的采样点的位置 。
当发送器的振荡器比接收器的快时(b),信号边沿的到达比接收器预期的要早,因此下一个位时间间隔必须提前启动 。这通过缩短相位缓冲段2来实现 。这种情况下,同步段被省略了,因此在重新同步之后,从信号边沿到采样点之间的距离和同步段到采样点之间的距离相等(如果没有检测到边沿) 。在第一个例子中,该"提前"边沿的相位误差值小于SJW,因此可以实现完全补偿 。
相位缓冲段只是暂时改变,在下一个位时间里如果没有检测到相位误差,它们将恢复为标称值 。接收器希望边沿出现在同步段当中 。
下面是应用于位同步的规则[ISO99-1]:
在一个位时间内的两次采样点之间只有一次同步 。
只有在前一个采样点检测到的信号电平与后一个采样点的信号电平不同时,才能使用从隐性到显性的信号边沿进行同步 。短暂的干扰脉冲是不起作用的 。
只要在总线空闲时出现一个隐性到显性的信号边沿,就会执行一个"硬同步"(新的位时间间隔的起始) 。
在帧间空间中(间歇场的第一位除外)隐性到显性的信号边沿会导致执行一个硬同步 。

    推荐阅读