can_tsync同步原理
整體來(lái)說(shuō),can的時(shí)間同步還是比較簡(jiǎn)單的,如下圖所示,整個(gè)過(guò)程如下(tips:時(shí)間戳自1970年1月1日00:00:00經(jīng)過(guò)的時(shí)間,是由秒+納秒組成的。):
1time master在t01時(shí)刻以廣播的形式發(fā)送一個(gè)sync報(bào)文,并把時(shí)間秒部分的時(shí)間放到報(bào)文上,發(fā)送到time slave;使用can confirmation的機(jī)制,記下sync報(bào)文實(shí)際從can驅(qū)動(dòng)發(fā)送出去的時(shí)間,t1r.
- time slave在t2r時(shí)刻接收到sync報(bào)文
- time master在sync發(fā)送完之后,隨后發(fā)送follow up報(bào)文,并把t1r的納秒通過(guò)報(bào)文發(fā)送出去,即t4r = t2r-s(t0r)。這里有一個(gè)潛在條件,那就是sync報(bào)文由can timesync模塊組裝好報(bào)文后調(diào)用發(fā)送接口,直到從can driver上出去,整個(gè)時(shí)間是不會(huì)超過(guò)1s的。所以t4r實(shí)際上就是從can timesync報(bào)文發(fā)送出去直到can driver發(fā)送出去的一個(gè)延時(shí)。
- time slave在t3r接收到follow up報(bào)文。
- 因此在t3r時(shí)刻,master此刻真正的時(shí)間t(master_now) = t3r - t2r + t4r
注意:實(shí)際上,上面的時(shí)間大多都是不精確的:
- SYNC和FOLLOW_UP消息分為兩種格式,Type=0x10為不安全的不帶CRC校驗(yàn)的報(bào)文格式,對(duì)應(yīng)FUP消息類型為0x18;Type=0x20為帶CRC校驗(yàn)的安全報(bào)文格式,對(duì)應(yīng)FUP消息類型為0x28。
- Byte0:時(shí)間同步類型:0x20代表當(dāng)前發(fā)送的是帶CRC校驗(yàn)的TSync同步消息, 0x28代表當(dāng)前發(fā)送的是對(duì)應(yīng)0x20 SYNC消息的FUP同步消息;0x10代表當(dāng)前發(fā)送的是不帶CRC校驗(yàn)的TSync同步消息, 0x18代表當(dāng)前發(fā)送的是對(duì)應(yīng)0x10 SYNC消息的FUP同步消息;
- Byte1:byte0為0x20或0x28時(shí),Byte1為該消息的CRC校驗(yàn)值;
- Byte2:高4位為時(shí)間同步域Time Domain;低4位為Sequence Counter,隨發(fā)送次數(shù)循環(huán)累加;
- Byte3:byte0為0x10或0x20時(shí),Byte3為UserByte0;同步類型為0x28或0x18時(shí),高5位保留, bit3 SGW為時(shí)間同步狀態(tài)(0:SyncToGTM, 1:SyncToSubDomain),bit1-bit0 OVS為時(shí)間同步溢出時(shí)間overflow of seconds;
- Byte4-Byte7為同步時(shí)間,同步類型為SYNC消息時(shí)為32bits 秒時(shí)間,同步類型為FUP消息時(shí)為30bits ns時(shí)間。
-
CAN
+關(guān)注
關(guān)注
57文章
2762瀏覽量
464016 -
車載
+關(guān)注
關(guān)注
18文章
615瀏覽量
83408 -
時(shí)鐘同步
+關(guān)注
關(guān)注
0文章
89瀏覽量
12785 -
報(bào)文
+關(guān)注
關(guān)注
0文章
38瀏覽量
4059
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論