为什么需要时间同步?CAN时间同步机制详解

2025-06-21 07:49:36

02

CAN时间同步机制

下面我们主要来梳理基于CAN总线的时间同步。从AUTOSAR规范来看,其主要分为两步,第一步是TM发送SYNC信息,第二步是发送FUP(Timeadjustment message (Follow-Up),时间调整信息),如图2所示。

8w7ednc

图2 CAN时间同步步骤

具体如下:

1、TM节点在t0r时刻调用接口发送SYNC信号,SYNC信号中包含的时间信息为t0r,在t1r时刻SYNC信号发送完成,此时的时间为t1r。TS节点在t2r时刻接收到了SYNC信号。

2、TM节点再次发送FUP信号,信号中包含的时间信息为t4r=t1r-(st0r),其中st0r=t1r-t0r,TS节点在t3r时刻接收到了FUP信号。

根据上面两步的时间信息,TS节点可以计算本地的时间同步值为t3r-t2r+t1r。

CAN时间同步消息结构

CAN时间同步中使用到的SYNC和FUP帧的帧格式如图3所示。

8w7ednc

图3 SYNC和FUP帧格式

SYNC帧:

1,Byte0用于表示CRC是否起作用,其中Byte0=0x10表示不采用CRC,Byte0=0x20表示采用CRC;

2、当Byte0=0x20时,表示采用CRC,则Byte1用于存储CRC的值,当Byte0=0x10时,Byte1的默认值为0;

3、Byte2的高4位表示时间同步域,低4位为Sequence Counter,有点类似与应用报文的rolling counter;

Byte3为用户自定义;

Byte4~Byte7为同步时间,长度为32bits,单位为秒;

FUP帧:

Byte0同样用于表示是否使用CRC,其中Byte0=0x18表示不适用CRC,Byte0=0x28表示使用CRC;

2、当Byte0=0x28时,表示采用CRC,则Byte1用于存储CRC的值,当Byte0=0x18时,Byte1的默认值为0;

3、Byte2与SYNC帧一样,高4位表示时间同步域,低4位为Sequence Counter;

4、Byte3的高5位为保留位,, bit2为SGW,表示时间同步状态(0:SyncToGTM, 1:SyncToSubDomain),bit1-bit0为OVS,表示时间同步溢出时间(overflow of seconds);

5、Byte4~Byte7中的高2位为0,低30位表示同步时间,单位为ns。

03

AUTOSAR中CanTSyn的配置

在AUTOSAR中要实现CAN时间同步,其涉及到的模块有3个,分别为STdM、CanIf、CanTSyn,各模块之间的关系如图4所示。

8w7ednc

图4 AUTOSAR中实现CAN时间同步涉及到的模块

其中StdM用于同步各软件模块,并提供绝对时间值。涉及到的配置Timebase、时钟源等,主要几个如下所示。

对于CanTSyn模块而言,其涉及到的配置如下所示。

而在CanIf模块而言,需要将报文设置为时间同步报文,如下所示。

小结

以上就是CAN时间同步的一个简单介绍,主要是梳理了时间同步技术的缘由、CAN时间同步机制、CAN时间同步在AUTOSAR架构下的实现。