时间融合和使用
对于整车来说,Tsync模块需要将整车所有vehicle time和utc同步好,对于用户来说,开发者最好提供获取vehicle time和utc时间的接口,用户无需要关注时钟同步的过程和细节。
时间融合与utc同步
前面提到vehicle time和utc的精度不一样,所以使用场景各有不同,也就意味着同一个ecu内,应该同时存在上述两种时间,我们以网关(GW),座舱控制器(CDC),智驾控制器(ADC)以及TBOX为例分析。
如上图所示,vehicle time可以借助gptp以及can_tsync让所有ecu保持同步,而utc时间必须借助外部环境先同步TBOX。但是如何让GW, CDC ,ADC也能同步UTC时间呢?
针对上述拓扑,vehicle master和utc master不在同一个ecu,可以借助当前最火的SOA思想,在TBOX上部署UtcServiceProvider,提供GetUtc和PubUtc两种接口,而GW, ADC, CDC则可以部署UtcServiceConsumer。为了消除SOA传输带来的延迟,我们可以将TBOX的utc和vehicle time一同给到consumer端,这样的话,UTCconsumer=UTC(provider)+(vehicle_time(consumer)-vehicle_time(provider))。
如果vehicle master和utc master在同一个ecu,如下图,这种方式相对来说,会更加简单一点。比如我们可以将utc的时间在tbox上于vehicle time同步,然后通过gptp的报文,简介的同步所有的ecu的utc时间。
不管上述任何一种情况,实际并不复杂,前一种让架构部门输出soa的描述语言(arxml,idl),由下游直接生成服务和实现服务即可;而后一种情况从方式较为简单了,但是需要考虑时间跳变的问题。
对外接口
针对使用者来说,期望能够直接获取utc时间或者vehicle time,所以开发者理应再提供接口直接获取,屏蔽使用者无需关心的细节。代码示例如下:
复制
C++
class JinbaoClock {
public:
static struct timespec GetVehicleTime()
{
struct timespec ts_ptp;
if (clock_gettime(clk_id_, &ts_ptp)) {
return {};
}
return ts_ptp;
}
static struct timespec GetUtc()
{
struct timespec ts_utc;
if (clock_gettime(CLOCK_REALTIME, &ts_utc)) {
return {};
}
return ts_utc;
}
};
上一篇:汽车ECU地漂的原因、影响及测试方法
下一篇:车载gptp同步原理介绍
- LT8714EFE 200kHz、20V 至 30V 输入的典型应用电路产生 -15V 至 15V 输出,提供 -1A 至 1A 的输出电流同步 PWM 控制器
- LTM4631IV 4 相、1.2V、40A 输出降压型稳压器的典型应用电路
- EVAL-CN0253-SDPZ,一款基于 ADG5408 的稳健、低功耗、电池监控电路前端评估板
- WY709高频焊台透明版(一)-PD转DC小板
- STR-NIS5232-GEVB:Strata Enabled NIS5232 12V、44mΩ、4.2A eFuse
- 1064-868-DK,Si1064 868-MHz 无线 MCU 开发套件
- 【训练营】智能插排
- esp32_clamp_link
- 使用 ROHM Semiconductor 的 BU4926 的参考设计
- MCP1501T-40E/RW 4.096V 负参考电压的典型应用电路