4、硬同步
接收单元在总线空闲状态检测出第一个下降沿时(对应报文的SOF下降沿)进行的同步调整。在检测到SOF的下降沿时,直接将此下降沿的位置认为是SS段,然后按照位时序对信号进行采样,达到同步的效果。硬同步的过程如图5所示。
图5 硬同步将下降沿位置标识为SS段
5、重同步
硬同步只是在总线空闲时检测出下降沿(帧起始)时进行,后续CAN报文数据位的同步则需要通过调整位时序来进行重同步。在接收过程中检测出总线上的下降沿来临时,根据SJW值通过加长PBS1段,或缩短PBS2段,以调整同步。但如果发生了超出SJW值的误差时,最大调整量不能超过SJW值。重同步的过程如图6、图7所示。
图6 同步前下降沿延后2个Tq
图7 同步后PBS1增加2个Tq
其中,图6可以有另一种理解:CAN总线上通讯的误差我们也可以量化,量化成Tq数。图6中对误差的量化结果为下降沿延后2个Tq,因此在图7重同步时在PBS1段增加2个Tq;但总线误差真的就刚好是2个Tq吗?答案是否定的,当位时序总Tq数越大,对误差的量化就会越精确,重同步的同步效果就越理想。因此,合理配置位时序的Tq数极为重要。
6、位时序计算
位时序在底层、微观上可体现为误差的量化,在上层、宏观上又体现为波特率(Baud)和采样点位置(Samp_pos)。在位时序中,波特率的表现形式为总Tq数,采样点位置的表现形式为各段的Tq数(采样点位置处于PBS1和PBS2的交界处)。他们之间的换算关系如下。其中:CLK为当前时钟频率,DIV是分频系数。
若当前时钟频率CLK=80M,用户配置Baud =1M,Samp_pos =80%。DIV=1时,Tq个数N = 80M/1M = 80;DIV=2时,Tq个数N = 80M / 2 / 1M = 40。
以40个Tq数为例(SS+PTS+PBS1+PBS2=40),各段Tq数应满足以下计算公式,其中TSEG1为PTS和PBS1的合并(CAN控制器将二者视为一段),TSEG2为PBS2段。
计算可得SS=1,TSEG1 = 31,TSEG2=8。通过计算结果配置CAN控制器相应寄存器,即可得到相应的波特率及采样点位置。
注意,不同的分频系数DIV,对应不同的Tq数,但都满足位时序要求,在选择时我们应尽可能选择小的分频系数(多的Tq数),这样的位时序调整会更加准确,同步效果越理想。
总结
CAN总线没有时钟线,严格来讲并不是同步通讯,但它存在位时序调整这种特殊的同步机制,使得CAN通讯的可靠性无限接近于同步通讯。因此,即使汽车的电子控制单元(ECU)在不断增加,但CAN总线依旧凭借自身的高可靠性,在汽车控制领域被大量应用。
ZPS-CANFD是致远电子总线分析仪第二代CAN总线开发辅助工具,是适用于CANFD、CAN、LIN总线的测量及测试仪器,支持总线数据的发送和接收,高层协议解析及诊断,能对CANFD、CAN总线物理层电气信号实时采集和记录,并附带有高速模拟通道、通用数字IO及模拟IO,通过提供的硬件接口及软件功能,用户能够便捷地构建总线信号测量与分析、节点功能仿真及测试、网络可靠性诊断及评估的自动化系统。