CAN总线采用异步串行通信。 也就是说,没有单独的时钟线来确保每个收发器之间的时钟匹配,每个收发器都以预先设置的波特率分解总线上的级别。 因此,波特率的准确设置对CAN总线的稳定通信非常重要。
在CAN总线上,可以通过控制CAN节点中的位定时寄存器来实现不同的波特率通信。 在CAN协议中,将一个比特时间划分为同步段、传播段、相位缓冲器段1和相位缓冲器段2。 每个段的时间长度可以用系统时钟振荡器分频的整数的基本时间单位来表示。
虽然同步段位于比特的开头,CAN-bus将跳跃边缘规定为同步信号,但是发送节点发送的比特和接收节点接收的比特之间存在网络传播延迟。 传播段是为了补偿这种传播延迟。 因为采样点的位置在相位缓冲器段1和相位缓冲器段2之间,所以通过设置相位缓冲器段1和相位缓冲器段2的值来调整采样点的位置,使得每个比特的采样点匹配缓冲区段长度的调节范围由同步跳跃宽度SJW )决定。
图1 CAN位时间结构图
了解CAN总线的位时间分隔后,让我们看看节点的波特率是如何设置的。 图2是某个ARM内核的CAN比特时间特性寄存器CAN_BTR )。
图2是某ARM内核位时间特性寄存器结构图
SILM 静音模式)和LBKM 环回模式)用于调试;
SJW :同步跳跃宽度;
TS2/TS1 :比特时间中两个时间段的分配;
BRP )波特率分频器,该区域定义基本时间单元的长度;
例如,在某知名汽车制造商的CAN通信标准中,通信速度为125 kbps时,应该采用一次采样,采样点的位置设定在70%~77%之间。 其位定时参数的值如表1和表2所示。
表1 LS_CAN通信速度和采样点参数
表2 LS_CAN选项的时间共享和同步跳转带宽
采样点:采样点不能太靠前,也不能太靠后。 否则,如果正好处于一位的上升沿或下降沿区间,会导致识别错误,因此根据CIA105的标准,采样点为87.5%左右是适当的。 但一般来说,根据情况可以选择75%~85%之间
同步跳变幅度SJW ) SJW的值直接影响重同步时相位缓冲器段的可调范围,SJW的值可以在1~4之间选择,选择3、4可以进一步增加总线的波特率容忍度;
采样次数:分为一次采样和三次采样。 3次采样是为了消除设计当初总线的毛刺,但由于采用3次采样往往会影响SJW的跳变,实际应用中通常采用1次采样。
了解波特率原则后,利用ZLG的波特率计算软件,计算25kbps波特率的设定参数,计算结果如图3所示。
图3 25kbps波特率计算参数
根据上述原则,选择了采样点为75%、SJW为4、分时为14的参数集,并利用ZLG的CAN卡进行了验证。
自动波特率识别:采用CANScope自动检测波特率功能,识别CAN卡波特率,识别结果为25kbps;
图4波特率自动检测
采样点测试:以当前波特率在CANScope上测试CAN卡采样点,测试结果为75%;
图5测试采样点
位宽容限测试:采用CANScope对当前波特率下的CAN卡进行位宽容限测试,测试了对波特率的容限情况,结果为24kbps~26kbps,容限情况良好;
图6位宽容限测试
位时间测试:使用CANScope的图形功能,以当前波特率对CAN卡进行位时间测试,位时间为40us,与25kbps的波特率位时间一致。
图7图的测试位时间
验证了波特率计算机计算的波特率寄存器设定参数,测试结果与预期一致,因此在使用特殊波特率时,波特率计算机可以快速计算位定时寄存器的参数值。 给出了一些可供参考的特殊波特率参数。