在CAN标准中,采用振荡器容差这一术语来代表时钟容差。实际实现时,有的实现方案用振荡器加锁相环构成时钟,此时CAN的时钟偏差就由2部分构成。为了与标准文字一致,本文不把时钟容差与振荡器容差严格区分。将振荡器的频率相对误差表示为△,时,按ISO11898-1的12.4.2.5款规定,它的约束有2条。
①正常传送时由于CAN填充位规则,重同步的距离最多为10位。为同步正确,有:
(2×△f)×10×NBT
其中,NBT为标称位时间。
②出错时,有错的节点要发报错帧。为了区分是本地错还是全局错,要考察发出主动报错标志后的第7位是否还是显位。由于出错前可能有6位显位,所以2个同步段S相隔13位。容许的差小于缓冲段长:
(2×△f)×(13×NBT-P2)
在2个不等式中选最小者为本应用的时钟容差。例如Tbit=1 000 ns,总线长20 m,收发器的延迟为150 ns时,整个传输延迟为Tprop=500 ns,取Tq=125 ns,算出Pr=4,P1=1,P2=2,SJW=1,NBT=8。由上述二式算出的△f分别为0.006 25和0.004 90,取其中小者0.004 90,即接近0.5%。
|