CAN时间同步学习与软件实现

本文介绍了时间同步在多控制器系统中的重要性,详细描述了时间同步报文格式,涉及类型、校验、域和计数器等元素。此外,文章还着重讲解了在EAS中通过CAN、CANIF、SYNC和STBM进行软件配置的过程,以及如何使用GPT定时器提供微秒级计时基准。
摘要由CSDN通过智能技术生成

1、时间同步目的

        目的:合作时,无法有效各个控制器都有自己的晶振,可以自己计时,但是由于晶振不一致,和启动时间不一致,各自的计时没有一个统一的计时基准。这样在多控制器地将不同控制器的信号从时间上对齐。所以时间同步是为了给多个控制器间提供统一的时间基准。

2、时间同步报文格式

Byte0:时间同步类型,0x10:SYNC not CRC secured messag 
                                      0x20:SYNC CRC  secured messag
Byte1:时间同步校验;
Byte2:D:时间同步域(多个同步域使用)
             SC:时间同步序计数器(0-15循环累加)
Byte3:SYNC:UserByte0
             FUP: SGW(跟随帧同步节点状态):0x0:SyncToGTM, 0x1:SyncToSubDomain
                      OVS:同步溢出时间

StbM:负责抽象基于不同传输介质的AUTOSAR时间同步协议,为整个软件系统来提供时间同步之后的全局时间戳

CanTsync:负责时间同步协议的实现;

Canif:负责发送或接收承载着时间同步信息的报文;

Can Driver:提供CAN接收与发送能力;
 

3、软件实现

在EAS添加CAN,CANIF,SYNC,STBM
导入DBC,配置CAN和CANIF

配置Stbm:


StbMMainFunctionPeriod:配置 StbM 模块主函数的调用周期,单位:ms

OsSecondsPerTick:计数器的周期,(文档单位是S,EAS这里不能写小数,实际单位是MS)

OsCounterMaxAllowerValue:计数器溢出值

StbMSyncLossThreshold:配置当前时间与待更新时间的最大允许差值,0 表示不做差值校验。

StbMSyncLossTimeout:配置时间同步报文的接收超时时间,单位:S

OsSecondsPerTick:计数器的周期,
(单位是S)

OsCounterMaxAllowerValue:计数器溢出值
 

SYNC配置(slave端)

CanSyncMainFunctionPeriod:配置 StbM 模块主函数的调用周期,单位:ms

DatdIdList:根据OEM需求设置

stbm需要提供一个时间基准

我在项目中是用GPT定时器提供us级计数(CAN时间同步最高支持ns)

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值