CAN时钟同步来源,AUTOSAR cp的规范,AUTOSAR定义的基于CAN总线时间同步的CanTSyn模块处理CAN总线上的时间信息分发,它以广播的形式将时间信息从master节点(TM) 传输到各slave节点(TS),还可通过时间网关(TW)将时间同步到其他子网,以解决因各ECU节点的硬件时钟信号偏差、CAN总线传输延时如协议仲裁以及各ECU节点内的软件处理等原因导致的时间延迟。网络拓扑如下:
can_tsync实现原理
有了上述基础之后,我们会理解到can timesync实现起来也不会太难,在autosar cp的框架下,所有的时间都是从StdmM(Synchronized Time-Base Manager)获取的。所以,我们可以如下伪代码:
C
// can time master
TimeRaw_t t0r;
StbM_GetCurrentTimeRaw(&t0r);
CanTsync_SetT0r(t0r);
CanIf_Transmit(sync_message);
CanTsync_TxComfirmation()
{
TimeRaw_t t1r;
StbM_GetCurrentTimeRaw(&t1r);
uint32_t t4r = CanTsync_GetT4r(t0r, t1r);
CanTsync_SetT4r(t4r);
CanIf_Transmit(fup_message)
}
C
// can time slave
TimeRaw_t t2r, t3r, t4r, t0r;
CanSync_RxIndication(sync_msg)
{
StbM_GetCurrentTimeRaw(&t2r);
t0r = CanTsync_GetT0r(sync_msg);
}
CanSync_RxIndication(fup_msg)
{
StbM_GetCurrentTimeRaw(&t3r);
t4r = CanTsync_GetT0r(fup_msg);
TimeRaw_t real_time = CanTsync_CalcuTimeOffset(t0r, t2r, t3r, t4r);
StbM_SetGlobalTime(real_time);
}
can tsync来源于autosar cp,所以上述实现风格也是仿照autosar cp的风格。StbM是整个cp的时间基础管理,负责抽象底层不同的时间同步协议,为上层提供统一的时间戳接口以及当前的时间同步状态的接口。整体框架如下:
上一篇:车载gptp同步原理介绍
下一篇:车载时钟同步can_tsync同步原理
- 全自动洗衣机程序及电路图
- 用于微处理器复位电路的 NCP301HSN22T1 2.2V 电压检测器的典型应用
- AN933:2.4 GHz EFR32 最小 BOM 应用笔记
- C2931200-基于CH342F的USB转双串口方案验证板
- MAXREFDES70#:高精度、长电池生命热量/流量计
- FEBFAN6224M_CP01,基于用于反激式转换器的 FAN6224M 绿色模式同步整流控制器的评估板
- 基于attiny85的春节“烟花”(炸电容)
- DC987B-A,用于 LTC6400-8 3GHz 全差分 ADC 驱动器演示电路的演示板
- LF18ABDT-TR 1.8V 低压降稳压器的典型应用
- 使用 Analog Devices 的 LTC1046CN8 的参考设计
- 直播已结束|TI 嵌入式直播周带您直击工业应用
- 【免费申请】英飞凌PSoC 62S4 先锋套件 (CY8CKIT-062S4)
- 直播已结束【艾迈斯欧司朗高效能源存储解决方案,工业级数据采集前端集成电路产品分享】
- 【1月14日 技术直播】工程师请就位,Keysight计量专家开讲啦 ~电子仪器计量校准基础知识与校准周期探讨
- 乐享MPLAB Xpress云端IDE,开心答题赢礼品
- 有奖直播:Keysight World Tech Day 2024 汽车分论坛|汽车自动驾驶与新能源
- 开学季!EEworld下载中心 Cortex主题资源上传
- 【有奖直播】:Microchip ATmega4809系列单片机简介