嵌入式系統(tǒng)中實時時問的獲取
2 從GPS接收機(jī)獲取實時時間
GPS是美國開發(fā)研制的最初主要作為軍用的一種全球定位系統(tǒng),有三個部分組成:空間部分、地面監(jiān)控部分和用戶部分。一般來說,在地面上的GPS接收機(jī)能接收5~12個衛(wèi)星信號,而為了獲得地面上的定位坐標(biāo),至少需要4顆衛(wèi)星的信號,三個用來確定GPS接收機(jī)的緯度、經(jīng)度和海拔高度,第四個則提供同步校正時間。
GPS接收機(jī)只要處于工作狀態(tài)就會源源不斷地把計算出的GPS導(dǎo)航定位信息通過串口傳送到計算機(jī)中。GPS接收機(jī)送出的數(shù)據(jù)都是格式化的,NMEA一0183協(xié)議是GPS接收機(jī)應(yīng)當(dāng)遵循的標(biāo)準(zhǔn)協(xié)議,大多數(shù)常見的GPS接收機(jī)、GPS數(shù)據(jù)處理軟件、導(dǎo)航軟件都遵守或者至少兼容這個協(xié)議。下面介紹下如何從符合NMEA―0183協(xié)議的接收機(jī)接收數(shù)據(jù)中提取時間信息。
接收機(jī)通過串口發(fā)送到計算機(jī)的數(shù)據(jù)主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成,根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同,主要有“$GPGGA”、“$GPGSA”、“$GPGSV”以及“$GPRMC”等。這些幀頭標(biāo)識了后續(xù)幀內(nèi)數(shù)據(jù)的組成結(jié)構(gòu),各幀均以回車符和換行符作為幀尾標(biāo)識一幀的結(jié)束。對于通常的情況,我們所關(guān)心的定位數(shù)據(jù)如經(jīng)緯度、速度、時間等均可以從“$GPRMC”幀中獲取得到,該幀的結(jié)構(gòu)及各字段釋義如下:
$GPRMC,1>,2>,3>,4>,5>,6>,7>,8>,9>,10>,11>*hhCR>LF>
1>當(dāng)前位置的格林尼治時間,格式為hhmmss
2>狀態(tài),A為有效,V為接收警告,即當(dāng)前天線視野上方的衛(wèi)星個數(shù)少于3顆。
3>緯度,格式為ddmm.mmmm
4>標(biāo)明南北半球,N為北半球、S為南半球
5>徑度,格式為dddmm.mmmm
6>標(biāo)明東西半球,E為東半球、W為西半球
7>地面上的速度,范圍為0.ON999.9
8>方位角,范圍為000.O到359.9度
9>日期,格式為ddmmyy
lO>地磁變化,從000.0到180.O度
ll>地磁變化方向,為E或W
在Linux操作系統(tǒng)中,從$GPRMC數(shù)據(jù)幀中提取時間信息的代碼如下:本文引用地址:http://m.butianyuan.cn/article/152515.htm
程序首先打開串口,然后對串口參數(shù)進(jìn)行配置,隨后進(jìn)入無限循環(huán)主體。這段代碼是作為主進(jìn)程的一個線程實現(xiàn)串口數(shù)據(jù)的接收,當(dāng)串口接收緩沖區(qū)中無數(shù)據(jù)時,read函數(shù)阻塞。程序中只提取了時間信息,若需導(dǎo)航數(shù)據(jù)可以類似方法提取。
3 結(jié)束語
本文分別介紹了兩種嵌入式系統(tǒng)中獲取實時時間的方法:時鐘芯片方法和GPS接收機(jī)方法。時鐘芯片方法的優(yōu)點是硬件連接簡單、成本低;缺點是存在積累誤差、易受環(huán)境影響、可靠性差。GPS接收機(jī)的優(yōu)點:由于GPS衛(wèi)星使用的是可以精確到十億分之一秒的原子鐘,所以不存在時間誤差問題。同時也應(yīng)該看到,目前GPS核心技術(shù)在國外,國內(nèi)GPS市場主要還是做代理或是在購買國外GPS模塊的基礎(chǔ)上做產(chǎn)品開發(fā),這就使得開發(fā)成本偏高。GPS方法中還有一個問題就是在某些情況下接收不到GPS信號,如在高樓林立的環(huán)境下或是在地下室之類的地方。此時就應(yīng)該讓GPS接收機(jī)方法與處理器內(nèi)部的實時時鐘(RTC)配合工作,這樣在短時接收不到GPS信號的情況,仍可以從RTC讀取時間。
評論