王寶平,余江鑫,陳衛(wèi)強(qiáng)
(南昌航空大學(xué) 信息工程學(xué)院,南昌330063)
北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國(guó)自行研制的全球衛(wèi)星定位與通信系統(tǒng),系統(tǒng)由空間端、地面端和用戶端組成,可在全球范圍內(nèi)全天候、全天時(shí)為各類用戶提供高精度、高可靠定位、導(dǎo)航、授時(shí)服務(wù),并具短報(bào)文通信能力。2012年12月27日,北斗系統(tǒng)空間信號(hào)接口控制文件正式版正式公布,北斗導(dǎo)航業(yè)務(wù)正式對(duì)亞太地區(qū)提供無(wú)源定位、導(dǎo)航、授時(shí)服務(wù)。北斗衛(wèi)星導(dǎo)航系統(tǒng)同時(shí)具備定位與通信功能,相對(duì)于GPS有自己獨(dú)到的優(yōu)勢(shì),但在民用領(lǐng)域的應(yīng)用很不充分,GPS在民用市場(chǎng)占據(jù)絕大部分的份額。北斗導(dǎo)航系統(tǒng)在民用領(lǐng)域有著良好的前景,影響、制約北斗系統(tǒng)在民用領(lǐng)域獲得廣泛應(yīng)用的主要因素就是系統(tǒng)用戶終端。鑒于以上原因,本文設(shè)計(jì)了一種基于嵌入式系統(tǒng)的北斗定位終端。
由于ARM芯片具有性能高、價(jià)格低、功耗低等特點(diǎn),在嵌入式領(lǐng)域得到越來(lái)越廣泛的應(yīng)用,本系統(tǒng)采用基于ARM架構(gòu)的S3C2440微控制器負(fù)責(zé)整個(gè)系統(tǒng)的控制。北斗模塊采用和芯星通科技有限公司的UM220導(dǎo)航/授時(shí)模塊,負(fù)責(zé)導(dǎo)航電文的解碼和信號(hào)處理,同時(shí)將衛(wèi)星定位技術(shù)與GPRS/GSM移動(dòng)通信技術(shù)相結(jié)合,完成了設(shè)備的短信息通信功能。
按照系統(tǒng)功能要求,可將系統(tǒng)硬件整體架構(gòu)分為以下5個(gè)部分,即中央處理器控制模塊、UM220北斗接收模塊、GPRS/GSM模塊、存儲(chǔ)系統(tǒng)、電源模塊以及人機(jī)交互模塊,如圖1所示。
圖1 硬件框圖
CPU處理器與存儲(chǔ)系統(tǒng)是指以S3C2440為微處理器核心,以SDRAM為動(dòng)態(tài)隨機(jī)存儲(chǔ)器,以NAND Flash閃存為外存的基本子系統(tǒng)。電源系統(tǒng)提供CPU、存儲(chǔ)器以及外圍設(shè)備高質(zhì)量穩(wěn)定電源。導(dǎo)航接收系統(tǒng)由北斗二代天線、北斗接收模塊UM220組成。
通常情況下,北斗接收模塊通過天線接收北斗衛(wèi)星發(fā)送的射頻信號(hào),經(jīng)放大、相關(guān)、混頻等一系列處理后,解譯出北斗衛(wèi)星所發(fā)送的導(dǎo)航電文,S3C2440控制模塊從導(dǎo)航電文中進(jìn)一步解析出緯度、精度、速度、時(shí)間等定位信息,并存儲(chǔ)、顯示。系統(tǒng)用戶同時(shí)可以將需要發(fā)送的定位信息進(jìn)行格式封裝,然后將定位信息發(fā)送給其他用戶。
北斗信號(hào)接收系統(tǒng)的核心是UM220模塊,具有尺寸小、重量輕、超低功耗(僅350mW)的特點(diǎn),能夠同時(shí)支持BD2B1、GPS L1兩個(gè)頻點(diǎn)。UM220外形尺寸緊湊,采用SMT焊盤,支持標(biāo)準(zhǔn)取放及回流焊接全自動(dòng)化集成,尤其適用于低成本、低功耗領(lǐng)域。UM220無(wú)需外接CPU即可直接輸出NMEA數(shù)據(jù),并且支持UART等多種接口。
UM220模塊主要由RF前端、數(shù)字中頻濾波、微處理器、存儲(chǔ)單元等組成,上電完成初始自檢后,自動(dòng)接收來(lái)自天線的北斗射頻信號(hào),經(jīng)變頻、放大、相關(guān)、混頻等一系列處理后,完成并行通道對(duì)其視界內(nèi)幾何位置最佳的數(shù)顆衛(wèi)星的連續(xù)跟蹤,并測(cè)出信號(hào)從衛(wèi)星到接收天線的傳播時(shí)間,解譯出北斗衛(wèi)星所發(fā)送的導(dǎo)航電文,最后由串口輸出NMEA-0183數(shù)據(jù)。UM220硬件接口電路如圖2所示。UM220的串口引腳通過MAX3232電平轉(zhuǎn)換芯片與S3C2440的串口連接,使其接收 RMC模式下NAME格式的北斗定位數(shù)據(jù)。
華為GTM900-C是一款兩頻段GSM/GPRS無(wú)線模塊。它支持標(biāo)準(zhǔn)的AT命令及增強(qiáng)AT命令,提供豐富的語(yǔ)音和數(shù)據(jù)業(yè)務(wù)等功能,是高速數(shù)據(jù)傳輸?shù)雀鞣N應(yīng)用的理想解決方案。S3C2440作為一種32位高性能、低成本、低功耗的嵌入式RISC微處理器,廣泛應(yīng)用于通信系統(tǒng)、消費(fèi)類電子產(chǎn)品、工業(yè)控制等產(chǎn)品中。S3C2440通過RS232控制GTM900-C,對(duì)于那些需要將遠(yuǎn)程數(shù)據(jù)通過已有的GSM網(wǎng)絡(luò)發(fā)送到網(wǎng)路中去,實(shí)現(xiàn)網(wǎng)絡(luò)化功能。GTM900-C邏輯框圖如圖3所示。
圖3 GTM900-C邏輯框圖
圖2 UM220硬件接口電路
嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的重要組成部分,它為應(yīng)用程序的開發(fā)提供了一個(gè)軟件平臺(tái)。實(shí)現(xiàn)嵌入式系統(tǒng)的第一步就是進(jìn)行系統(tǒng)移植,其中包括操作系統(tǒng)內(nèi)核、文件系統(tǒng)和各設(shè)備驅(qū)動(dòng)程序的移植[1-2]。
本系統(tǒng)中采用Linux-2.6.30.4內(nèi)核,只需要對(duì)各功能模塊進(jìn)行裁剪即可。嵌入式系統(tǒng)一般采用Flash作為存儲(chǔ)介質(zhì),F(xiàn)lash具有獨(dú)特的物理特性,必須使用專門的嵌入式文件系統(tǒng),本系統(tǒng)采用yaffs2文件系統(tǒng)。圖4是系統(tǒng)總體框圖。
圖4 系統(tǒng)總體框圖
圖5 軟件體系結(jié)構(gòu)
在本系統(tǒng)中,需要解算北斗數(shù)據(jù)、數(shù)據(jù)存儲(chǔ)、傳送等。整個(gè)系統(tǒng)的軟件由主控模塊、北斗定位模塊、GPRS通信模塊、LCD顯示模塊和串口操作模塊5部分組成,如圖5所示。
主控模塊完成硬件的初始化、調(diào)用北斗定位模塊和GPRS通信模塊提供的函數(shù)、調(diào)用LCD顯示模塊以顯示運(yùn)行狀態(tài)信息。
UM220模塊輸出的定位信息符合NMEA-0183通信標(biāo)準(zhǔn)格式,其輸出數(shù)據(jù)采用的是ASCII字符組成的字符串,包含了經(jīng)度、緯度、速度、時(shí)間、日期及衛(wèi)星狀況等信息。消息的基本格式為:
$MSGNAME,data1,data2,data3,…\r\n
NMEA-0183協(xié)議中最常見的幾種格式有GGA、RMC、GSV、VTG[3]。用戶可根據(jù)需要選用某種數(shù)據(jù)句型。本系統(tǒng)將采用BDRMC數(shù)據(jù)格式。
北斗定位模塊程序的設(shè)計(jì)首先判斷所收到的數(shù)據(jù)是否為RMC記錄,如果是則對(duì)BDRMC字段進(jìn)行解析并保存數(shù)據(jù),即只接收該語(yǔ)句即可。
$BDRMC數(shù)據(jù)格式如下所示:
$BDRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*<13><CR><LF>
其中<1>~<12>字段分別表示固定位置的UTC時(shí)間、是否有效、緯度、緯度半球、經(jīng)度、經(jīng)度半球、地面速度、地面方位、固定位置UTC日期、磁偏角、磁偏角方向、模式指示[4]。
接收數(shù)據(jù)前,要先對(duì)串口進(jìn)行配置,Linux下串口的配置信息大部分都保存在termios結(jié)構(gòu)體中,可以直接使用Linux API提供的接口或通過掩碼設(shè)置相關(guān)數(shù)據(jù)位進(jìn)行串口的配置操作,具體操作在這里不再一一贅述。
開始接收數(shù)據(jù)時(shí),若從串口讀入的不是“$”,則說明接收錯(cuò)誤,重新接收數(shù)據(jù);若等于“$”,則接收正確。開始接收,再次判斷緩存,若接收的是“$BDRMC”語(yǔ)句,則開始將北斗數(shù)據(jù)存入Beidou_data[]數(shù)組中,最后仍判斷串口接收緩存。接收到“A”說明此次定位是有效的,若接收到“N”則釋放緩存,重新接收。由于北斗定位數(shù)據(jù)以“*”為分隔符,接收到字符“*”,即當(dāng)緩存等于“*”的時(shí)候,說明北斗定位信息接收完畢。其程序流程圖如圖6所示。
GPRS/GSM模塊負(fù)責(zé)接收遠(yuǎn)程信息并且傳送定位信息。對(duì)短消息的控制共有3種實(shí)現(xiàn)途徑:Block Mode、基于AT命令的Text Mode和基于AT命令的PDU Mode。使用Block Mode需要廠家提供的驅(qū)動(dòng)支持。Text Mode比較簡(jiǎn)單,但這種模式只能發(fā)送ASCII碼,不能發(fā)送中文的Unicode碼。PDU模式是發(fā)送接收短信息的一種方法,短信息正文經(jīng)過十六進(jìn)制編碼后被傳送。目前PDU已取代Block Mode,因此本文主要討論P(yáng)DU模式。
在PDU模式中,有三種編碼方式來(lái)對(duì)發(fā)送的內(nèi)容進(jìn)行編碼[5],它們是7位、8位和UCS2編碼。7位編碼用于發(fā)送普通的ASCII字符,8位用于發(fā)送數(shù)據(jù)信息,UCS2編碼用來(lái)發(fā)送Unicode字符。所以當(dāng)發(fā)送含有中文的信息時(shí),只能使用Unicode編碼。GPRS/GSM模塊程序設(shè)計(jì)流程圖如圖7所示。
圖6 定位模塊流程圖
圖7 GPRS模塊流程圖
系統(tǒng)各模塊正確連接后,LCD能夠正確顯示定位信息,圖8為北斗模塊輸出的ASCII信息。圖9為L(zhǎng)CD顯示的經(jīng)緯度信息。
圖8 北斗模塊輸出的ASCII信息
圖9 LCD顯示的經(jīng)緯度信息
衛(wèi)星導(dǎo)航定位系統(tǒng)被廣泛應(yīng)用于國(guó)防、通信等各領(lǐng)域。本系統(tǒng)將嵌入式技術(shù)、衛(wèi)星導(dǎo)航系統(tǒng)、GPRS無(wú)線通信技術(shù)相結(jié)合,成功實(shí)現(xiàn)了北斗定位與GPRS通信為一體的嵌入式定位設(shè)備。在項(xiàng)目設(shè)計(jì)中,以嵌入式系統(tǒng)開發(fā)流程為依據(jù),通過進(jìn)行需求分析,制定了合理的系統(tǒng)軟硬件功能劃分,分析了軟件系統(tǒng)和硬件系統(tǒng)設(shè)計(jì),完成了設(shè)備的研制。
[1]劉崢嶸,張智超,許振山.嵌入式Linux應(yīng)用開發(fā)詳解[M].北京:機(jī)械工業(yè)出版社,2004.
[2]John Lombardo.嵌入式Linux[M].吳雨濃,譯.北京:中國(guó)電力出版社,2003.
[3]王春波.GPS/GPRS車載終端的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2008:2-30.
[4]李新,包劍,劉卉.車載GPS終端的設(shè)計(jì)與實(shí)現(xiàn)[J].遼寧工程大學(xué)學(xué)報(bào),2004(S1).
[5]鐘章隊(duì),蔣文怡.GPRS通用分組無(wú)線業(yè)務(wù)[M].北京:人民郵電出版社,2001.