这里需要注意的是,相位缓冲段只在当前的位时间内被延长或缩短,在接下来的位时间内,只要没有重同步,各时间段将恢复编程预设值。
3 控制器中位定时参数设置的一般方法
在典型的独立CAN控制器(SJA1000或PCA82C200)中,负责位定时的寄存器为总线定时寄存器0(BTR0)和总线定时寄存器1(BTR1),其结构如图5所示。
寄存器中有关参数的计算公式如下:
这些参数的范围在CAN中有较严格的规定,具体如表1所示。
在有些情况中.为了优化网络性能,这些参数的设置往往需要考虑传输延迟、时钟偏频等因素。然而,对于一般的开发或工程实际,完全可以根据经验对其进行计算和设置。这里以一个时钟频率为20 MHz、通信波特率为250 Kb/s(位时间为4μs)的系统为例,介绍与位定位有关的各参数的计算方法和步骤。
(1)确定时间份额。
由表1可知,在1个位周期中时间份额的数量必须是8~25之间的
(3)确定同步跳转宽度和采样次数。
为完成位定时参数的设置,最后还要确定同步跳转宽度和采样次数。同步跳转宽度的一般设置原则是在允许的范围内应尽可能的大一些,这样更有利于在重同步时对沿相位误差的补偿,在这里可将该参数设置为3。采样次数的设置比较容易和直接,对于高速总线,建议将SAM置为“0”,此时总线被采样1次;而对于低/中速总线,建议将SAM置为“1”,此时总线被采样3次。250 Kb/s属于高速总线,所以在这里SAM应置为0。通过以上方法和步骤所确定的各参数值,再结合式(2)、式(3)、式(5)、式(6)可直接得出寄存器BTR0和BTR1的设置值。
4 结 语
(1)结合图解的方式对CAN总线位定时、硬同步和重同步等关键技术的深入探讨和分析,反映了CAN总线位定时和同步机制的本质、清晰地表明了它们在CAN技术规范中的地位与作用。
(2)在CAN总线中,通信波特率(位时间)、每个位时间的采样位置及个数、同步跳转宽度等都可以自行设定。然而,位定时参数如果设置不当就会检测到错误并进行错误处理,导致总线性能下降甚至无法工作。因此要分析、解决这样的问题就需要对CAN总线位定时和同步机制有较深入的理解,从而保证正确地设置位定时参数。
(3)这里所研究的内容,是深入理解和学习CAN总线技术的前提和保证,也是进行后续开发和研究的基础和关键。