CAN時鐘同步來源,AUTOSAR cp的規(guī)范,AUTOSAR定義的基于CAN總線時間同步的CanTSyn模塊處理CAN總線上的時間信息分發(fā),它以廣播的形式將時間信息從master節(jié)點(TM) 傳輸?shù)礁鱯lave節(jié)點(TS),還可通過時間網(wǎng)關(guān)(TW)將時間同步到其他子網(wǎng),以解決因各ECU節(jié)點的硬件時鐘信號偏差、CAN總線傳輸延時如協(xié)議仲裁以及各ECU節(jié)點內(nèi)的軟件處理等原因?qū)е碌臅r間延遲。網(wǎng)絡(luò)拓?fù)淙缦拢?/p>
can_tsync實現(xiàn)原理
有了上述基礎(chǔ)之后,我們會理解到can timesync實現(xiàn)起來也不會太難,在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,所以上述實現(xiàn)風(fēng)格也是仿照autosar cp的風(fēng)格。StbM是整個cp的時間基礎(chǔ)管理,負(fù)責(zé)抽象底層不同的時間同步協(xié)議,為上層提供統(tǒng)一的時間戳接口以及當(dāng)前的時間同步狀態(tài)的接口。整體框架如下:
-
CAN
+關(guān)注
關(guān)注
57文章
2719瀏覽量
463377 -
車載
+關(guān)注
關(guān)注
17文章
603瀏覽量
83345 -
總線
+關(guān)注
關(guān)注
10文章
2868瀏覽量
87991 -
時鐘同步
+關(guān)注
關(guān)注
0文章
85瀏覽量
12752
發(fā)布評論請先 登錄
相關(guān)推薦
評論