王寶平,余江鑫,陳衛強
(南昌航空大學 信息工程學院,南昌330063)
北斗衛星導航系統是中國自行研制的全球衛星定位與通信系統,系統由空間端、地面端和用戶端組成,可在全球范圍內全天候、全天時為各類用戶提供高精度、高可靠定位、導航、授時服務,并具短報文通信能力。2012年12月27日,北斗系統空間信號接口控制文件正式版正式公布,北斗導航業務正式對亞太地區提供無源定位、導航、授時服務。北斗衛星導航系統同時具備定位與通信功能,相對于GPS有自己獨到的優勢,但在民用領域的應用很不充分,GPS在民用市場占據絕大部分的份額。北斗導航系統在民用領域有著良好的前景,影響、制約北斗系統在民用領域獲得廣泛應用的主要因素就是系統用戶終端。鑒于以上原因,本文設計了一種基于嵌入式系統的北斗定位終端。
由于ARM芯片具有性能高、價格低、功耗低等特點,在嵌入式領域得到越來越廣泛的應用,本系統采用基于ARM架構的S3C2440微控制器負責整個系統的控制。北斗模塊采用和芯星通科技有限公司的UM220導航/授時模塊,負責導航電文的解碼和信號處理,同時將衛星定位技術與GPRS/GSM移動通信技術相結合,完成了設備的短信息通信功能。
按照系統功能要求,可將系統硬件整體架構分為以下5個部分,即中央處理器控制模塊、UM220北斗接收模塊、GPRS/GSM模塊、存儲系統、電源模塊以及人機交互模塊,如圖1所示。

圖1 硬件框圖
CPU處理器與存儲系統是指以S3C2440為微處理器核心,以SDRAM為動態隨機存儲器,以NAND Flash閃存為外存的基本子系統。電源系統提供CPU、存儲器以及外圍設備高質量穩定電源。導航接收系統由北斗二代天線、北斗接收模塊UM220組成。
通常情況下,北斗接收模塊通過天線接收北斗衛星發送的射頻信號,經放大、相關、混頻等一系列處理后,解譯出北斗衛星所發送的導航電文,S3C2440控制模塊從導航電文中進一步解析出緯度、精度、速度、時間等定位信息,并存儲、顯示。系統用戶同時可以將需要發送的定位信息進行格式封裝,然后將定位信息發送給其他用戶。
北斗信號接收系統的核心是UM220模塊,具有尺寸小、重量輕、超低功耗(僅350mW)的特點,能夠同時支持BD2B1、GPS L1兩個頻點。UM220外形尺寸緊湊,采用SMT焊盤,支持標準取放及回流焊接全自動化集成,尤其適用于低成本、低功耗領域。UM220無需外接CPU即可直接輸出NMEA數據,并且支持UART等多種接口。
UM220模塊主要由RF前端、數字中頻濾波、微處理器、存儲單元等組成,上電完成初始自檢后,自動接收來自天線的北斗射頻信號,經變頻、放大、相關、混頻等一系列處理后,完成并行通道對其視界內幾何位置最佳的數顆衛星的連續跟蹤,并測出信號從衛星到接收天線的傳播時間,解譯出北斗衛星所發送的導航電文,最后由串口輸出NMEA-0183數據。UM220硬件接口電路如圖2所示。UM220的串口引腳通過MAX3232電平轉換芯片與S3C2440的串口連接,使其接收 RMC模式下NAME格式的北斗定位數據。
華為GTM900-C是一款兩頻段GSM/GPRS無線模塊。它支持標準的AT命令及增強AT命令,提供豐富的語音和數據業務等功能,是高速數據傳輸等各種應用的理想解決方案。S3C2440作為一種32位高性能、低成本、低功耗的嵌入式RISC微處理器,廣泛應用于通信系統、消費類電子產品、工業控制等產品中。S3C2440通過RS232控制GTM900-C,對于那些需要將遠程數據通過已有的GSM網絡發送到網路中去,實現網絡化功能。GTM900-C邏輯框圖如圖3所示。

圖3 GTM900-C邏輯框圖

圖2 UM220硬件接口電路
嵌入式操作系統是嵌入式系統的重要組成部分,它為應用程序的開發提供了一個軟件平臺。實現嵌入式系統的第一步就是進行系統移植,其中包括操作系統內核、文件系統和各設備驅動程序的移植[1-2]。
本系統中采用Linux-2.6.30.4內核,只需要對各功能模塊進行裁剪即可。嵌入式系統一般采用Flash作為存儲介質,Flash具有獨特的物理特性,必須使用專門的嵌入式文件系統,本系統采用yaffs2文件系統。圖4是系統總體框圖。

圖4 系統總體框圖

圖5 軟件體系結構
在本系統中,需要解算北斗數據、數據存儲、傳送等。整個系統的軟件由主控模塊、北斗定位模塊、GPRS通信模塊、LCD顯示模塊和串口操作模塊5部分組成,如圖5所示。
主控模塊完成硬件的初始化、調用北斗定位模塊和GPRS通信模塊提供的函數、調用LCD顯示模塊以顯示運行狀態信息。
UM220模塊輸出的定位信息符合NMEA-0183通信標準格式,其輸出數據采用的是ASCII字符組成的字符串,包含了經度、緯度、速度、時間、日期及衛星狀況等信息。消息的基本格式為:
$MSGNAME,data1,data2,data3,…\r\n
NMEA-0183協議中最常見的幾種格式有GGA、RMC、GSV、VTG[3]。用戶可根據需要選用某種數據句型。本系統將采用BDRMC數據格式。
北斗定位模塊程序的設計首先判斷所收到的數據是否為RMC記錄,如果是則對BDRMC字段進行解析并保存數據,即只接收該語句即可。
$BDRMC數據格式如下所示:
$BDRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*<13><CR><LF>
其中<1>~<12>字段分別表示固定位置的UTC時間、是否有效、緯度、緯度半球、經度、經度半球、地面速度、地面方位、固定位置UTC日期、磁偏角、磁偏角方向、模式指示[4]。
接收數據前,要先對串口進行配置,Linux下串口的配置信息大部分都保存在termios結構體中,可以直接使用Linux API提供的接口或通過掩碼設置相關數據位進行串口的配置操作,具體操作在這里不再一一贅述。
開始接收數據時,若從串口讀入的不是“$”,則說明接收錯誤,重新接收數據;若等于“$”,則接收正確。開始接收,再次判斷緩存,若接收的是“$BDRMC”語句,則開始將北斗數據存入Beidou_data[]數組中,最后仍判斷串口接收緩存。接收到“A”說明此次定位是有效的,若接收到“N”則釋放緩存,重新接收。由于北斗定位數據以“*”為分隔符,接收到字符“*”,即當緩存等于“*”的時候,說明北斗定位信息接收完畢。其程序流程圖如圖6所示。
GPRS/GSM模塊負責接收遠程信息并且傳送定位信息。對短消息的控制共有3種實現途徑:Block Mode、基于AT命令的Text Mode和基于AT命令的PDU Mode。使用Block Mode需要廠家提供的驅動支持。Text Mode比較簡單,但這種模式只能發送ASCII碼,不能發送中文的Unicode碼。PDU模式是發送接收短信息的一種方法,短信息正文經過十六進制編碼后被傳送。目前PDU已取代Block Mode,因此本文主要討論PDU模式。
在PDU模式中,有三種編碼方式來對發送的內容進行編碼[5],它們是7位、8位和UCS2編碼。7位編碼用于發送普通的ASCII字符,8位用于發送數據信息,UCS2編碼用來發送Unicode字符。所以當發送含有中文的信息時,只能使用Unicode編碼。GPRS/GSM模塊程序設計流程圖如圖7所示。

圖6 定位模塊流程圖

圖7 GPRS模塊流程圖
系統各模塊正確連接后,LCD能夠正確顯示定位信息,圖8為北斗模塊輸出的ASCII信息。圖9為LCD顯示的經緯度信息。

圖8 北斗模塊輸出的ASCII信息

圖9 LCD顯示的經緯度信息
衛星導航定位系統被廣泛應用于國防、通信等各領域。本系統將嵌入式技術、衛星導航系統、GPRS無線通信技術相結合,成功實現了北斗定位與GPRS通信為一體的嵌入式定位設備。在項目設計中,以嵌入式系統開發流程為依據,通過進行需求分析,制定了合理的系統軟硬件功能劃分,分析了軟件系統和硬件系統設計,完成了設備的研制。
[1]劉崢嶸,張智超,許振山.嵌入式Linux應用開發詳解[M].北京:機械工業出版社,2004.
[2]John Lombardo.嵌入式Linux[M].吳雨濃,譯.北京:中國電力出版社,2003.
[3]王春波.GPS/GPRS車載終端的設計與實現[D].成都:電子科技大學,2008:2-30.
[4]李新,包劍,劉卉.車載GPS終端的設計與實現[J].遼寧工程大學學報,2004(S1).
[5]鐘章隊,蔣文怡.GPRS通用分組無線業務[M].北京:人民郵電出版社,2001.