CAN总线中位定时的设定方法
在第一个例子里,同步跳转宽度大于或者等于噪声跳变沿的相位误差,因此采样点适当移动,采样值为隐性位,消除了噪声。在第二个例子中,同步跳转宽度小于沿相位误差,采样点移动的长度不够,显性值被当作总线的真实值采样。
4. 振荡器容差范围
影响振荡器容差范围的因素有相位缓冲段1、相位缓冲段2、同步跳转宽度和位时间。最大容差范围需要满足下面两个条件:
I:df<= I I:df<=需要注意
的是同步跳转宽度不能大于相位缓冲段1和2中的任何一个。
5. CAN控制器的配置与延迟时间的计算
配置CAN控制器最关键的部分就是对两个寄存器的设置。寄存器0决定传播时间段、相位缓冲段1和相位缓冲段2;寄存器2决定同步跳转宽度和分频值。在位定时寄存器中,TSEG1,TSEG2,SJW和BRP设定的值要比其功能值小1,因此设定范围是[0…..N-1]而不是[1…..N]。所以位时间可以由 [TSEG1+TSEG2+3]tq或者[同步段+传播段+相位缓冲段1+相位缓冲段2]tq得到。
当总线延迟时间很小时,计算节点的输入延迟和输出延迟就要求很精确。在位定时的设置中,只有节点的输入和输出延迟需要知道。我们可以通过下述方法计算延迟时间。在总线上输入一个显性脉冲,长度为一个位时间的长度,处于空闲状态的错误激活节点将认为是帧起始因而会产生一次硬同步,6个隐性位过后,总线节点会发现一个填充位错误,发出错误激活标志。我们可以得到从发送显性脉冲开始到接收错误激活标志结束的这段时间t1。t1包括节点输入延迟和输出延迟、同步延迟以及多个位时间。同步延迟由时钟振荡器决定。在位时间里,时钟同步延迟由同步段补偿,因此在计算延迟时间时,要通过调节时钟振荡器的相位来消除它。为了获得较为精确的延迟时间,我们必须对时钟振荡器的相位以及总线节点进行调整以获得最小的t1。因此,输入输出延迟时间t2=min(t1)─7o(正常位时间)。
6.小结
位时间的范围是8~25个时间份额,时间份额的大小由分频值确定。我们首先要确定的是传播时间段。大小由总线延迟时间决定。在一个可以扩展的总线结构中,最大节点延迟和总线最大长度必须考虑。一般情况下,每米延迟为5.5ns。
同步段的长度为1个时间份额。因此相位缓冲段的长度为(时间份额总数-1-传播时间段时间份额数)tq,如果剩余的份额数是偶数,那么应有相位缓冲段1=相位缓冲段2,或者相位缓冲段2=相位缓冲段1+1。而且,相位缓冲段2的最小长度不应小于控制器的信息处理时间,通常情况下,应该大于2个时间份额。
同步跳转宽度的最大值、相位缓冲段1的最小值都是4个时间份额。
如果有多个配置可以选择,那么应该选择具有最高振荡器容差范围的参数配置。如果总线上有不同时钟的节点,那么在计算传播时间段时,应该以具有最大延迟的那个节点为准。振荡器容差范围的确定应以对振荡器容差范围要求最高的节点为准。
参考文献:
邬宽明. CAN总线原理和应用系统设计.北京航空航天大学出版社,1995.1
Florian Hartwich. The Configration of the CAN Bit Timming PHILIPS Semiconductors 公司. CAN SPECIFICATION, 1991,9
《CAN总线中位定时的设定方法(第2页)》