CAN同步机制,你真的了解吗?
发布日期:2022-07-05 15:10

CAN总线作为异步通信方式,收发双方节点需约定相同的波特率进行通讯,但由于各种因素影响,接收方的数据总会有误差,当误差过大时,整个通讯网络将不能正常通讯。那么,该如何保障CAN节点之间通信同步呢?


CAN同步机制


1、CAN时钟


首先了解一下CAN总线系统中的两个时钟:晶振时钟周期和CAN时钟周期。


晶振时钟周期:是由单片机振荡器的晶振频率决定的,指的是振荡器每振荡一次所消耗的时间长度,也是整个系统中最小的时间单位。

CAN时钟周期:CAN时钟是由系统时钟分频而来的时间长度值,实际上就是一个时间份额Tq。


图1 CAN时钟与位时间的关系


其中,CAN位时间表示CAN的一位二进制数据所保持的时间,具体关系如图2所示。


图2  CAN总线二进制报文与位时间关系


2、位时序

CAN总线作为串行通信,发送单元采用不归零编码,将数据以位流形式发送到总线上,并且每一位数据位宽都由CAN控制器的N个时钟周期组成,该时钟周期则为最小的时间单位Time Quantum(以下称为Tq),这N个Tq被分为四段:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2(PBS2),而采样点位置处于PBS1和PBS2的交界处。


1位分为4个段,每个段又由若干个Tq构成,这称为位时序,如图3所示。


图3 同TQ数量情况下不同采样点的配置时序


其中,各段的作用为:

同步段(SS:Synchronization Segment):CAN网络中的所有节点,在接收一位数据时,以此段作为位起始的参考点,进行下降沿的检测,统计下降沿基于SS段的偏移,然后进行位时序的调整,使接收趋于同步(下降沿在理想情况下应出现在SS段)。需注意,进行位时序调整的条件是检测到下降沿,若无下降沿则不进行调整,因此为了避免多个相同连续位出现导致位时序得不到调整,产生不同步的情况,CAN控制器增加了填充位的概念,当出现连续5个相同位后,添加一位相反电平的填充位。SS段长度固定为1个Tq。


传播时间段(PTS:Propagation Time Segment):CAN总线上数据的传输会受到物理延迟,比如发送单元的发送延迟、总线上信号的传播延迟、接收单元的输入延迟等,PTS段就是用来补偿这些因素产生的时间延迟。而PTS段长度至少应为这些因素产生的时间延时的2倍,PTS段长度至少为1个Tq。


相位缓冲段1(PBS1:Phase Buffer Segment 1):若下降沿延后N个Tq,且延迟不大于同步跳转宽度,使得原本位时序中采样点位置提前N个Tq,则需要对PBS1段增加N个Tq数(使采样点位置延后N个Tq),吸收这段误差。PBS1段长度至少为1个Tq。


相位缓冲段2(PBS2:Phase Buffer Segment 2):若跳变边沿提前N个Tq, 且不大于同步跳转宽度,使得原本位时序中采样点位置延后N个Tq,则需要对上一个位时序的PBS2段减少N个Tq数(使采样点位置提前N个Tq),吸收这段误差。PBS2段长度至少为2个Tq。


重同步补偿宽度(SJW: reSynchronization Jump Width):SJW为PBS1增加或PBS2减少的最大Tq数。


3、CAN同步的策略


CAN同步是以位为单位,每接收一个下降沿,则进行一次同步。发送单元以约定好的位时序进行数据发送。接收单元根据总线上接收到的下降沿进行位时序同步。


但是,发送节点和接收节点作为互相独立的硬件个体,时钟频率误差、传输路径上的(电缆、驱动器等)相位延迟等都会引起时序偏差。因此接收单元需通过硬同步或者重同步的方法进行位时序调整。如图4帧结构所示,硬同步只在空闲状态检测出第一个下降沿(帧起始下降沿)时进行,而重同步则在其余各段进行。


图4  CAN标准数据帧结构


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,通过提供的硬件接口及软件功能,用户能够便捷地构建总线信号测量与分析、节点功能仿真及测试、网络可靠性诊断及评估的自动化系统。



关键词:CAN同步机制 CAN总线 CAN时钟
浏览量:8068
来 源:ZLG致远仪器
编辑:清风
声明:凡本网注明"  来源:仪商网"的所有作品,版权均属于仪商网,未经本网授权不得转载、摘编使用。
经本网授权使用,并注明"来源:仪商网"。违反上述声明者,本网将追究其相关法律责任。
本网转载并注明自其它来源的作品,归原版权所有人所有。目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如有作品的内容、版权以及其它问题的,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
本网转载自其它媒体或授权刊载,如有作品内容、版权以及其它问题的,请联系我们。相关合作、投稿、转载授权等事宜,请联系本网。
QQ:2268148259、3050252122。
展开全文