MIS系統(tǒng)中GPS15L模塊的應(yīng)用
1 GPS15L接收機模塊性能
GARMIN的GPS15L接收機的功耗非常小,數(shù)據(jù)更新率為每秒一次。其優(yōu)良的性能既能滿足陸地導(dǎo)航的靈敏度要求,也能滿足飛行器的動態(tài)要求。其OEM板無論是硬件和軟件,都十分易于使用。非常適合做系統(tǒng)集成。GPS接收機OEM板中可以將衛(wèi)星軌道參數(shù)、上次定位位置、時間和日期等數(shù)據(jù)保存在靜態(tài)存儲器中,GPS15L接收機內(nèi)部有備用電池來為存儲器供電。
GPS15L的技術(shù)指標包括物理指標、電氣指標、GPS指標、接口、環(huán)境特性、產(chǎn)品配置等。
(1)物理指標
◇尺寸:35.56mm×45.85mm×8.31mm;
◇重量:14克。
(2)電氣指標
◇輸入電壓(直流):3.3~5.4 V;
◇輸入電流:峰值100 mA,標稱值85 mA;
◇備用電池充電電壓(直流):2.8~3.4 V;
◇接收機靈敏度:最小可達-165 dBW。
(3)GPS指標
◇接收機通道:12;
◇定位時間:重新捕獲時間小于2秒,熱啟動約為15秒(所有數(shù)據(jù)已知)。冷啟動約為45秒(初始位置、時間和歷書已知,星歷未知),自動定位時間為5分鐘(歷書已知,初始位置和時間未知),搜索天空(所有數(shù)據(jù)均未知);
◇更新率:1秒;
◇精度:定位精度小于15米(95%),速度精度0.05米/秒RMS(穩(wěn)定狀態(tài)),差分精度小于5米(95%),PPS精度±1微秒;
◇動態(tài)性能:速度上限為1850 kg/h,加速度上限為6 g,高度上限為18000 m。
(4)接口
◇接口特性:RS-232輸出,輸入可為RS-232或者具有RS-232極性的TTL電平??蛇x波特率為300,600,1200,2400,4800,9600,19200,38400;
◇串口1接口協(xié)議:輸出NMEA0183版2.00的ASCII碼語句,包括GPALM,GPGGA,GPGLL,GPGSA,GPGSV,GPRMC,GPVTG(NMEA標準語句);PGRMB,PGRME,PGRMF,PGRMM,PGRMT,PGRMV(GARMIN定義的語句)。還可以將串口1設(shè)置為輸出包括GPS載波相位數(shù)據(jù)的二進制數(shù)據(jù)。輸入初始位置、時間、秒脈沖狀態(tài)、差分模式、NMEA輸出間隔等設(shè)置信息;
◇串口2接口協(xié)議:輸人為實施差分改正數(shù)據(jù)(RTCM SC-104信息類型1,2,3,7,9);
◇秒脈沖PPS特性:1Hz,脈寬可調(diào),精度±1微秒。
(5)環(huán)境特性
◇溫度范圍:工作溫度為-30℃~+80℃,儲存溫度-40℃~+90℃。
(6)產(chǎn)品配置
◇標準配置:GPS OEM板,排線,GAER-MIN OEM設(shè)置軟件,產(chǎn)品說明書;
可選配置:GPS天線為G505,BNC接口;轉(zhuǎn)接線30厘米,BNC轉(zhuǎn)MCX。
GPS15L的串口1與PC的串口連接示意圖如圖1所示。
[!--empirenews.page--]使用時,可將GPS15L的串口1與S3C2410A的串口2進行連接。由于ARM主控板提供的串口是孔狀的,所以,GPS15L要和針狀的串口接頭進行連接,連接時可將圖1中的數(shù)據(jù)出線和數(shù)據(jù)入線兩線對調(diào),并分別連接到針狀串口接頭的PIN3(DATAOUT)和PIN2(DATAIN)。
2 GPS數(shù)據(jù)提取程序的設(shè)計
2.1 串口通信程序的設(shè)計
由于GPS模塊是通過串行口1與S3C2410的串口2進行連接來進行通信的,因此,本文設(shè)計了Linux系統(tǒng)下的相應(yīng)串口通信程序。
在整個操作過程中,與串口的通信只用到了3個功能,即打開、讀和關(guān)閉串口。
(1)打開串口
在Linux下,所有的硬件設(shè)備都被看成是普通文件,系統(tǒng)中每一個設(shè)備都用一種特殊的設(shè)備相關(guān)文件來表示,并存放在/dev/目錄下。串口文件就位于/dev下,串口一為/dev/ttvS0,串口二為/dev/ttyS1,打開串口可通過使用標準的文件打開函數(shù)來進行操作,具體如下:
500)this.style.width=500;" />
(2)讀串口
由于在整個通信過程中,需要的只是從GPS模塊讀取數(shù)據(jù),所以,這里只用到讀串口程序,其代碼如下:
500)this.style.width=500;" />
(3)關(guān)閉串口
關(guān)閉串口實際就是關(guān)閉文件,其代碼如下:
close(m_nFDGPSDevice);
[!--empirenews.page--]2.2 GPS數(shù)據(jù)提取
一般情況下,GPS接收機只要處于工作狀態(tài),就會源源不斷地把接收到的信息通過串口傳送到主控制板中。它的每一條NMEA語句都是以“$”為開始標志、以“\n”為結(jié)束標志。接收到的GPRMC語句格式為:
500)this.style.width=500;" />
其中,CR、LF分別表示ASCII字符“回車”和“換行”,hh代表了“$”和“*”之間所有字符的按位異或值(不包括這兩個字符)。其含義見表1所列。
500)this.style.width=500;" border="0" />
通過讀串口得到的數(shù)據(jù)可能會出現(xiàn)兩種情況,一種情況是每次讀到的數(shù)據(jù)中都會有完整的GPRMC語句,另一種情況是GPRMC分兩次獲得。獲得完整的句子之后。接著判斷得到的句子是否為GPRMC語句(即判斷句子是否以GPRMC開頭),如果是GPRMC語句,再就開始判斷每個數(shù)據(jù)格式是否正確,包括表1中的UTC時間格式、定位有效性、緯度格式、緯度半球表示方法、經(jīng)度格式、經(jīng)度半球表示方法、UTC日期格式信息等,最后還將“$”和“*”之間的所有字符按位異或(不包括這兩個字符),并計算校驗和,看其是否為hh值(“*”之后的值)。
判斷語句是否為GPRMC語句的流程如圖2所示。
其部分關(guān)鍵函數(shù)如下所示:
int Init();初始化函數(shù),用來打開串口,進行串口設(shè)置(波特率、數(shù)據(jù)位、校驗位)等;
void Tick ();讀串口數(shù)據(jù)函數(shù);
void Cleanup ();關(guān)閉串口函數(shù);
void Decode(char*szData);判斷GPRMC語句函數(shù);
bool VeriLine(char*szBuffer);判斷GPRMC語句中數(shù)據(jù)格式是否正確函數(shù);
void DecodeLine (char*szBuffer);提取GPRMC語句中有用信息并打印,包括時間、經(jīng)
緯度、日期。
以下是部分相關(guān)函數(shù):
bool VeriLine(char*szBuffer);判斷GPRMC語句中數(shù)據(jù)格式是否正確函數(shù);
bool VeriTimeForm(char*szBuffer2);判斷時間格式函數(shù);
bool VeriLonForm(char*szBuffer2);判斷經(jīng)度格式函數(shù);
bool VeriLatForm(char*szBuffer2);判斷緯度格式函數(shù);
bool VeriDayForm(char*szBuffer2);判斷日期格式函數(shù);
如果語句為正確的GPRMC語句,接下來就可以提取所需信息,提取時間、經(jīng)緯度和日期信息的部分程序如下:
void PrintTime(char*szBuffer2);打印時間函數(shù),在此要將UTC時間轉(zhuǎn)換為北京時間;
void PrintLonLat (char*szBuffer2,int n);打印經(jīng)緯度函數(shù);
void PrintDay (char*szBuffer2);打印日期函數(shù),以年/月/日形式打印。
3 結(jié)束語
全球定位系統(tǒng)具有性能好、精度高、應(yīng)用廣等特點,是迄今最好的導(dǎo)航定位系統(tǒng)。隨著全球定位系統(tǒng)的不斷改進,以及硬件和軟件的不斷完善,其應(yīng)用領(lǐng)域還在不斷地開拓。目前,GPS應(yīng)用已開始逐步深入人們的日常生活。GARMIN的GPS接收機功耗非常小,數(shù)據(jù)更新很快,而且,其優(yōu)良的性能既能滿足陸地導(dǎo)航的靈敏度要求,也能滿足飛行器的動態(tài)要求。