在基于嵌入式主板的工業(yè)智能設(shè)備中,通常都要求設(shè)備具有校時的功能。對像電力自動化這樣的行業(yè),對校時的精度都有很高的要求,通常要求達(dá)到ms精度。為了實現(xiàn)這樣精度的校時,一般需要GPS的支持,即由GPS模塊向主板提供(1)包含絕對時間信息的串口數(shù)據(jù),串口可以是RS232或RS485;(2)整分或整秒的脈沖,也稱為PPS脈沖。在有了以上硬件支持的前提下,應(yīng)用程序還需要按一定策略操作,才能實現(xiàn)高精度的校時。本文以英創(chuàng)公司的ARM9主板(其上運行Windows CE操作系統(tǒng))為例,來介紹一種高精度對時方案,供客戶在實際應(yīng)用中參考。
硬件連接上,把作為時間基準(zhǔn)的GPS輸出的串口信號接到英創(chuàng)ARM9主板的一個串口上,比方“COM3:”;把PPS信號作為中斷信號,接到英創(chuàng)ARM9主板的ISA_IRQ管腳,注意ISA_IRQ是上升沿有效,因此有可能需要對PPS脈沖進行反相處理。校時的軟件操作包括以下步驟:
第1步,從“COM3:”串口讀取GPS信息串,并解析出當(dāng)前的時間參數(shù),只需要保留到秒的精度,同時就可推算出下一個PPS脈沖所代表的整分或整秒時間,應(yīng)用程序可方便的計算出這個時間,在CE中通常把時間表示為SYSTEMTIME格式。
SYSTEMTIME SysTime; // CE通常用該變量表示時間
第2步,當(dāng)應(yīng)用線程接收到ISA_IRQ中斷事件時,把預(yù)先計算好的時間設(shè)置到系統(tǒng)中:
SetSystemTime(&SysTime);
由于設(shè)置時間,涉及到系統(tǒng)內(nèi)核的節(jié)拍數(shù)的調(diào)整,所以會占用一定的時間,一般會超過1ms。所以第2步的設(shè)置,只實現(xiàn)了粗校時。
第3步,當(dāng)后續(xù)的ISA_IRQ中斷事件來到時,此時讀出的時間:
GetLocalTime(&SysTime);
應(yīng)當(dāng)是整秒的,即SysTime.wMilliseconds應(yīng)為0,但實際情況不會為0。這時可計算出偏差的毫秒數(shù):
int nDeltaMilliseconds;
if(SysTime.wMilliseconds > 500)
nDeltaMilliseconds = 1000 - SysTime.wMilliseconds;
else
nDeltaMilliseconds = -SysTime.wMilliseconds;
第4步,應(yīng)用程序在讀取時間時,需要根據(jù)當(dāng)前的nDeltaMilliseconds值進行校正:
FILETIME FileTime; // 時間單位= 100ns
GetLocalTime(&SysTime); // 讀取當(dāng)前時間
SystemTimeToFileTime( &SysTime, &FileTime ); // 轉(zhuǎn)換成FILETIME格式
// 做精確的ms校正
FileTime = (__int64)FileTime +(__int64)(nDeltaMilliseconds * 10);
FileTimeToSystemTime( &FileTime, &SysTime ); // 轉(zhuǎn)換回系統(tǒng)時間格式
由此得到的時間應(yīng)當(dāng)具有ms精度。
第5步,通常nDeltaMilliseconds的絕對值都應(yīng)當(dāng)在幾個ms的范圍,若絕對值超過100ms,通常意味著需要重新進行標(biāo)定,即從第一步重新開始。另外需要注意的是,在進行粗校時時,最好關(guān)閉所有的TCP連接,因為粗校時,可能會使系統(tǒng)的Tick值變小,而系統(tǒng)Tick值一般會作為TCP數(shù)據(jù)的時間標(biāo)簽,若TCP應(yīng)答的時間標(biāo)簽小于數(shù)據(jù)發(fā)送的時間標(biāo)簽時,會造成TCP連接始終掛起。
有關(guān)ISA_IRQ中斷響應(yīng)的相關(guān)編程可參考英創(chuàng)產(chǎn)品資料中的相關(guān)軟件范例。建議客戶在ISA_IRQ的范例代碼的基礎(chǔ)上,構(gòu)建帶精確校時功能的時間類class GPSTime;把ISA_IRQ接收線程發(fā)展成完成上述時間校正的有限狀態(tài)機,最后為其他應(yīng)用程序提供一個讀取時間的API函數(shù)即可。
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3613瀏覽量
91392 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6100瀏覽量
36300
發(fā)布評論請先 登錄
嵌入式主板開發(fā)詳細(xì)指南

高可靠性嵌入式主板設(shè)計

嵌入式主板選型與應(yīng)用指南

小身材大能量:解讀小尺寸嵌入式主板

盤點無風(fēng)扇嵌入式主板應(yīng)用優(yōu)勢

嵌入式主板的概述與發(fā)展

ARM架構(gòu)嵌入式主板特點

嵌入式主板是什么意思?嵌入式主板全面解析
開啟全新AI時代 智能嵌入式系統(tǒng)快速發(fā)展——“第六屆國產(chǎn)嵌入式操作系統(tǒng)技術(shù)與產(chǎn)業(yè)發(fā)展論壇”圓滿結(jié)束
飛凌嵌入式技術(shù)創(chuàng)新日(深圳站)精彩回顧
NTP服務(wù)器知識課堂 網(wǎng)絡(luò)時間同步系統(tǒng)的校時方式

網(wǎng)絡(luò)時間同步系統(tǒng)的校時方式

專為商用平板設(shè)計的RK3588嵌入式主板方案,以智能購物車平板為例

評論