基于S3C44B0X和M12模塊的GPS接收終端
1 引言
GPS (全球定位系統(tǒng))是為海上、陸地和空中各種運(yùn)輸工具和移動設(shè)備的導(dǎo)航和定位而開發(fā)的,具有高精度、全天候、全球性和點間無需通視等優(yōu)點,使測量技術(shù)發(fā)生了質(zhì)的飛躍。GPS技術(shù)引入我國后,特別是美國取消SA政策后的這幾年發(fā)展十分迅速。目前,GPS已被廣泛應(yīng)用在工程測量、地理測繪、交通運(yùn)輸和軍事等諸多領(lǐng)域,取得了明顯的社會和經(jīng)濟(jì)效益,發(fā)展前景十分廣闊。
在GPS的行業(yè)應(yīng)用中,數(shù)據(jù)接收終端是最基本的設(shè)備。目前的數(shù)據(jù)接收終端具有智能化和可擴(kuò)展性不斷增強(qiáng)的發(fā)展趨勢,表現(xiàn)為內(nèi)嵌的MCU功能越來越強(qiáng)大,接口越來越豐富。本文介紹一種以目前比較流行的基于ARM7架構(gòu)的嵌入式處理器S3C44B0X和Motorola的M12模塊的GPS數(shù)據(jù)接收終端的設(shè)計。
2 終端的硬件設(shè)計
終端由S3C44B0X 和M12模塊及一些外圍器件組成,系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。
S3C44B0X具有2個功能完整的串口(UART),其I/O操作電壓范圍為3.0~3.6 V,M12模塊提供一個用于輸入控制信息和輸出定位與狀態(tài)信息串口,其I/O電平符合TTL電平范圍,為0~3 V,因此,可以將S3C44B0X的I/O輸出高電平設(shè)置成3 V,把S3C44B0X 和M12的RxD、TxD和GND直接連接,進(jìn)行異步串行數(shù)據(jù)交換。由于S3C44B0X內(nèi)部存儲空間非常有限,需要外擴(kuò)存儲器件,這里擴(kuò)展了一片F(xiàn)LASH和一片SDRAM 存儲器。此外,鍵盤和顯示器被掛接在S3C44B0X上面,以提供人機(jī)交互的功能。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
2.1 S3C44B0X 與存儲器的接口設(shè)計
S3C44B0X自身不具有ROM,因此必須外接ROM來存儲掉電后仍需要保存的代碼和數(shù)據(jù)。本系統(tǒng)采用SST39VF160閃速存儲器(FLASH Memory)作為系統(tǒng)的ROM,此器件具有非易使性,可輕易擦寫。該器件容量為1 MB×16,與S3C44B0X接口如圖2所示。
圖2 S3C44B0X與SST39VF160接口圖
由于本終端采用SST39VF160作為程序存儲器(內(nèi)含處理器的啟動代碼),所以SST39VF160映射在處理器的Bank0區(qū)域內(nèi)。因此,他的片選端與處理器的nGCS0相連。
為了提高程序運(yùn)行的速度和效率,系統(tǒng)還擴(kuò)展了SDRAM 作為程序數(shù)據(jù)暫存空間。SDRAM器件的型號為IS42S16400,其存儲空間組織方式為1 MB×16×4 Bank,共64 Mb,數(shù)據(jù)總線寬度為16,其與S3C44B0X的接口如圖3所示。
圖3 S3C44B0X 與IS42S16400接口圖
2.2 S3C44B0X與LCD的接口設(shè)計
本系統(tǒng)采用了G35_II LCD套件作為顯示器,G35_II的液晶屏尺寸為3.5英寸,分辨率為320×240,顏色為16灰度。S3C44B0X內(nèi)部含有一個LCD驅(qū)動控制器,能自動產(chǎn)生LCD 驅(qū)動控制所需的控制信號,因此S3C44B0X可以與諸如黑白灰度、STN型彩色等LCD屏直接接口,而不需要另外加LCD控制器。在這種接口方式下,LCD顯示緩沖區(qū)映射在系統(tǒng)的存儲器空間上,程序只需將象素點內(nèi)容寫入存儲器對應(yīng)地址就可以實現(xiàn)對應(yīng)LCD屏上象素點顏色的顯示。本終端采用S3C44B0X的PC口和PD口作為LCD驅(qū)動接口,使用4位象素灰度模式查找表和8位單掃描方式進(jìn)行顯示。本終端的顯示器以顯示數(shù)據(jù)發(fā)送接收情況和數(shù)據(jù)流量信息為主。
3 S3C44B0X與M12模塊的接口程序設(shè)計
接收終端使用S3C44B0X的COM0口向M12模塊發(fā)出控制指令和接收定位信息。M12模塊支持Motorola二進(jìn)制格式和NMEA0183格式兩種的數(shù)據(jù)輸出模式。在Motorola二進(jìn)制模式下,M12以9600 b/s的速率輸出數(shù)據(jù)和接收指令;在NMEA0183,M12以4800 b/s的速率輸出數(shù)據(jù)和接收指令。默認(rèn)狀態(tài)下,M12模塊工作在Motorola二進(jìn)制模式下。為了獲取更高的數(shù)據(jù)傳輸速度,本研究使用M12模塊默認(rèn)的工作模式,即Motorola二進(jìn)制模式。在該模式下,串行數(shù)據(jù)傳輸格式為:8位數(shù)據(jù)位,1位停止位,無奇偶校驗和硬件流控制。
S3C44B0X以通過向M12發(fā)送AT指令的方式對其進(jìn)行控制。根據(jù)Motorola GPS Products-Oncore User'sGuide所列舉的內(nèi)容,Motorola的AT I/O指令一共有69條,其中M12模塊所支持的指令有51條。利用這些指令可以很方便的對M12模塊進(jìn)行日期時問設(shè)定、自定義坐標(biāo)設(shè)定和定位信息讀取等操作。在接收終端中,只需要讀取M12模塊的定位信息,因此程序中只用到51條指令中的1條指令:
@@EqmC<CR><LF>
該指令用于控制M12模塊輸出定位信息。其中“@@”是I/O指令的前綴;“Eq”是指令的關(guān)鍵字;“m”是M12模塊輸出(響應(yīng))信息模式選擇,其數(shù)值可以是0~255之間的整數(shù),當(dāng)“m”為0時,響應(yīng)信息只輸出一次,當(dāng)“m”為1時,響應(yīng)信息每秒鐘輸出一次,當(dāng)“m”為2時,響應(yīng)信息每2 s輸出一次,如此類推,當(dāng)“m”為255時,響應(yīng)信息每255 s輸出一次;“C”是指令的校驗和(Checksum)數(shù)據(jù);“<CR>”是回車符;“<LF>”是換行符。為了便于采集定位數(shù)據(jù),將“m”的數(shù)值設(shè)置為0,使M12模塊每接收一次指令就回復(fù)一次定位數(shù)據(jù)。
M12模塊在默認(rèn)狀態(tài)下只能接受以Motorola二進(jìn)制形式輸入的指令。所謂的Motorola二進(jìn)制形式是指將指令的前綴、關(guān)鍵字和后綴(回車和換行)變換成相應(yīng)的ASCII碼后,加上模式“m”與校驗和“C”組合成的二進(jìn)制指令代碼。本研究中所用到的“@@EqmC”指令格式轉(zhuǎn)換如下:
Message format:@@EqmC<CR><LF>
Hexadecimal:40 40 45 71 00 34 0D 0A
其中,校驗和“C”是指“E”、“q”和“m”三個的校驗和,即0x45、0x71和0x00之間的校驗和(將0x45和0x71按位異或的結(jié)果再和0x00進(jìn)行按位異或),結(jié)果為0x34。輸入指令時,只需要按照9600 b/s、8位數(shù)據(jù)位、1位停止位、無奇偶校驗和硬件流控制的串口格式,將0x40、0x40、0x45、0x71、0x00、0x34、0x0D和0x0A八個數(shù)從M12模塊的串口連續(xù)輸入進(jìn)去即可,M12模塊在接收到其可識別的指令之后會在1 s之內(nèi)做出響應(yīng)。
在接收和識別指令“@@EqmC”之后,M12模塊在接收到正常的GPS衛(wèi)星信號時會以相同的串口數(shù)據(jù)格式和速率輸出以下格式的定位信息:
@@Eq,mm,dd,YY,hh,mm,ss,dd,mm.mmmm,n,ddd,
mm.mmmm,w,shhhh.h,sss.s,h,m,t,dd.d,nn,rrrr,aa,CC<CR><LF>
該信息是按照ASCII碼的形式輸出的,每段信息均以逗號相隔。根據(jù)Motorola GPS Products-Oncore User'sGuide對于該信息的解釋,該信息按照所描述的內(nèi)容可以拆分成7大部分,其拆分示意格式如下:
@@Eq,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>
其中,第1部分信息為日期信息。“mm”是指月,數(shù)值為01~12;“dd”是指日,數(shù)值為01~31;“yy”是指年,數(shù)值為98~18。
第2部分信息是UTC(Universal Coordinated Time)時間信息。其中,“hh”為時,數(shù)值為00~23;“mh”為分,數(shù)值為00~59;“s”是秒,數(shù)值為00~60。
第3部分信息是緯度信息。其中,“dd”是度,數(shù)值為00~90;“mm.mmmm”是分,數(shù)值為00.0000~59.9999;n為方向,他有兩個取值,一是“N”,代表北緯,二是“S”代表南緯。
第4部分信息是經(jīng)度信息。其中,“ddd”是度,數(shù)值為000~180;“mm.mmmm”是分,數(shù)值為00.0000~59.9999;w為方向,他有兩個取值,一是“w”,代表西經(jīng),二是“E”代表東經(jīng)。
第5部分信息是海拔高度。其中,“s”是符號,有“+”和“-”兩個取值;“hhhh.h”是以米為單位的高度數(shù)據(jù)。海拔高度信息的數(shù)值范圍為:-1000.0~+18000.0。
第6部分信息是速度信息。其中“sss.s”是以節(jié)為單位的速度數(shù)據(jù),其數(shù)值為000.0~999.9;“hhh.h”為以度為單位前進(jìn)方位角數(shù)據(jù),其數(shù)值為000.0~359.9。
第7部分是接收終端的狀態(tài)信息。其中,“m”是定位工作模式信息,取值為0或1,0代表單機(jī)模式(Autonomous),1代表差分模式(Differentia1);“t”是定位類型信息,取值為0~3,0代表無定位,1代表2D定位,2代表3D定位,3代表廣播模式;“dd.d”是幾何因子信息,取值為00.0~99.9;“nn”使用中的衛(wèi)星數(shù)目,數(shù)值為00~37;“rrrr”為參考站識別碼,數(shù)值為0000~1023;“aa”以秒為單位的差分?jǐn)?shù)據(jù)時間,數(shù)值為00~60;“CC”為校驗和。
GPS接收終端只需要M12模塊提供經(jīng)緯度位置,所以需要通過程序提取上述的7大部分信息中第3和第4部分信息。S3C44B0X與M12模塊接口的COM0初始化代碼如下:
UFCON0=0x0;
UMCON0=0x0;
ULCON0=0x3;
UCON0= 0x245;
UBRDIV0= ((int)(Fclk/(16 * 9600))-1);
S3C44B0X與M12的接口程序流程如圖4所示。S3C44B0X首先請求M12模塊輸出定位數(shù)據(jù)(向M12模塊發(fā)出指令“@@EqmC”),然后等待M12模塊回送數(shù)據(jù)。當(dāng)M12模塊回送數(shù)據(jù)時,S3C44B0X首先做出判斷,確認(rèn)其收到的是預(yù)期的定位信息,然后將定位信息(經(jīng)緯度數(shù)據(jù))截取下來,整理成可供顯示數(shù)據(jù)信息后在LCD上顯示經(jīng)緯度數(shù)據(jù),最后將串口的接收緩沖區(qū)清空,以免下次接收信息時出錯。由于M12模塊在1 s之內(nèi)只能響應(yīng)一條指令,所以接收終端的數(shù)據(jù)信息最快1 s更新一次。
圖4 S3C44B0X與M12的接口程序流程圖
4 結(jié)語
本文講述了一個基于S3C44B0X和M12模塊的GPS數(shù)據(jù)接收終端的設(shè)計。通過在華南農(nóng)業(yè)大學(xué)工程學(xué)院土槽實驗室的GPS基準(zhǔn)點(坐標(biāo)為:東經(jīng)113°20.538 541',北緯23°09.581 834')的靜態(tài)定位實驗測定(持續(xù)進(jìn)行了約50 min,采集到3125組經(jīng)緯度數(shù)據(jù),靜態(tài)定位數(shù)據(jù)分布如圖5所示),M12模塊的單擊靜態(tài)定位精度為<7.81m,符合其用戶手冊上所標(biāo)的無SA政策下<25m的精度范圍。接收終端運(yùn)行穩(wěn)定,定位信息每1 s更新一次,可作為對精度要求不高的民用地理定位。
圖5 系統(tǒng)靜態(tài)定位值散布圖