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能够使总线取得更宽的波特率容忍度;
采样次数:分为单次采样跟三次采样,三次采样在规划之初尽管是为了过滤掉总线上毛刺,可是选用三次采样经常会影响SJW的跳转,所以实践运用中咱们一般都会选用单次采样。
了解设置波特率的准则后,咱们选用ZLG的波特率核算软件,对25kbps波特率的设置参数进行核算,核算成果如图3。
图 3 25kbps波特率核算参数
依据上面说到的准则,咱们选取采样点为75%,SJW为4,时刻比例为14的一组参数,选用ZLG的CAN卡做验证。
l主动波特率辨认:选用CANScope主动侦测波特率的功用,对CAN卡的波特率进行辨认,辨认成果为25kbps;
图 4 主动侦测波特率
l采样点测验:选用CANScope对当时波特率下CAN卡的采样点进行测验,测验成果为75%;
图 5 采样点测验
l位宽容忍度测验:选用CANScope对当时波特率下CAN卡进行位宽容忍度测验,测验其对波特率的容忍度状况,测验成果为24kbps~26kbps,容忍度状况较好;
图 6 位宽容忍度测验
l位时刻测验:用CANScope的眼图功用对当时波特率下CAN卡进行位时刻测验,位时刻为40us,与25kbps波特率的位时刻相符。
图 7 眼图测验位时刻
经过对波特率核算器核算出来的波特率寄存器设置参数进行验证,发现测验成果跟咱们的预期成果共同,因而在运用特别波特率时,咱们能够凭借波特率核算器来快速核算出位守时寄存器的参数值。下面咱们给出一些可参阅的特别波特率的参数: