由于在CAN总线网络传输中,振荡器的漂移、网络中节点之间的传输延迟或者由于噪声干扰等原因,都会产生相位误差。同步的概念的提出,保证了CAN总线上报文的传输的正确译码,不会造成节点间积累的相位误差。
一般CAN规范中规定的同步方式分为硬同步和重同步两种。同步过程则由器件自身完成。
硬同步
硬同步发生在报文开始时,由网络中的CAN控制器接收到SYNC_SEG(同步段持续时间段的第一个隐性到线性跳变沿作为网络中节点的位周期。硬同步后,内部位时间从SYNC_SEG重新开始。 重同步
重同步发生的时间是在报文流发送期间,是为了补偿振荡器频率的变化和因报文位流从一个发生器到时,另一发送器二引入的变化。我们取引发重同步沿的相位误差幅值|A|,取同步跳转宽度编程为B。当|A|≤B重同步与硬同步作用相同;当|A|>B,且A>0时,则PHASE_SEG1所延长的总数是重同步跳转宽度;当|A|>B,且A<0时,则PHASE_SEG2所缩短的总数是重同步跳转宽度。为了增加重同步的机会,就需要让隐性到显性2位的跳变最大时间间隔最小化,所使用的方法是位填充。位填充常用在远程帧和数据帧中,从起始帧开始到CRC校验位结束。具体做法是在每隔5个相同值得连续位之后插入一个相反的倒位流。由于CAN位周期因量化而由整数个单位时间组成,二重同步发生在绝对的相位误差大于一个时间单位的情况下,所以重同步发生的时间是在两个节点位周期的同步段相差大于一个时间单位的情况下。
|