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