《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于ARM微控制器的GPS接收機的研究與設(shè)計
基于ARM微控制器的GPS接收機的研究與設(shè)計
來源:微型機與應(yīng)用2011年第14期
張青苗1,劉永鴻2,何寶福2
(1.防空兵指揮學(xué)院 研究生16隊,河南 鄭州450052;2.防空兵指揮學(xué)院 科研部,河南 鄭州4
摘要: 介紹了GPS的定位原理及算法,在此基礎(chǔ)上,提出了一種基于ARM微處理器的GPS接收機的設(shè)計方案。該GPS接收機采用Atmel公司生產(chǎn)的ATR0600芯片作為接收機的射頻前端,內(nèi)嵌ARM7核的ATR0620芯片作為接收機的數(shù)字基帶處理器, 并闡述了外圍擴展電路及軟件設(shè)計。該GPS接收機具有體積小、功耗低、性能高的特點。
Abstract:
Key words :

摘  要: 介紹了GPS的定位原理及算法,在此基礎(chǔ)上,提出了一種基于ARM微處理器的GPS接收機的設(shè)計方案。該GPS接收機采用Atmel公司生產(chǎn)的ATR0600芯片作為接收機的射頻前端,內(nèi)嵌ARM7核的ATR0620芯片作為接收機的數(shù)字基帶處理器, 并闡述了外圍擴展電路及軟件設(shè)計。該GPS接收機具有體積小、功耗低、性能高的特點。
關(guān)鍵詞: GPS接收機;ATR0600;ARM;ATR0620

 全球定位系統(tǒng)(GPS)作為一種成熟的導(dǎo)航定位技術(shù),以其全天候、高精度、自動化、高效率等顯著特點及所獨具的定位導(dǎo)航、授時授頻、精密測量等多方面的強大功能,使其用途越來越廣泛。但傳統(tǒng)的使用8 bit單片機設(shè)計的GPS接收機,在數(shù)據(jù)處理、系統(tǒng)性能提升以及功能擴展等方面存在較大的不足。隨著嵌入式技術(shù)的發(fā)展,以ARM為代表的32 bit微處理器憑借其高性能、低功耗、低成本、體積小等優(yōu)點,在現(xiàn)實中獲得了廣泛的應(yīng)用。
    本文介紹了一種GPS接收機的整體設(shè)計方案,該方案采用Atmel公司生產(chǎn)的ATR0600和ATR0620芯片。其中ATR0600芯片作為接收機的射頻前端,內(nèi)嵌ARM7TDMI處理器核的ATR0620芯片作為接收機的數(shù)字基帶處理器。該方案具有低功耗、高性能、尺寸小、成本低的特點。
1 GPS定位原理
    GPS由21顆工作衛(wèi)星和3顆備用衛(wèi)星組成,分布在高度為20 200 km的6個軌道平面上,運行周期為ll h 58 min,其在空間的軌道分布保證了在地球上任何地方、任一時刻都能接收到至少4顆GPS衛(wèi)星的信號[1-3]。
    為了確定接收機在地球上的位置,首先要得到衛(wèi)星的瞬時空間位置,即接收機根據(jù)接收到的導(dǎo)航衛(wèi)星的星歷參數(shù),通過計算得到當(dāng)前衛(wèi)星在地球坐標(biāo)系中的瞬時位置坐標(biāo)。星歷參數(shù)是描述衛(wèi)星運行軌道的一組數(shù)據(jù),由衛(wèi)星以導(dǎo)航電文的形式連續(xù)不斷地向地面用戶接收機播發(fā)。其中包括星歷參數(shù)的參考?xì)v元、參考?xì)v元的開普勒軌道參數(shù)和軌道攝動改正項。其中,除真近點角f是時間的函數(shù)外,其余均為獨立的常數(shù)。因此,計算衛(wèi)星任一瞬時位置的關(guān)鍵就在于計算參數(shù)f。
    為了確定接收機在地球上的位置,還需通過測量獲得接收機對衛(wèi)星的相對距離,結(jié)合該衛(wèi)星在空間的瞬時位置坐標(biāo),確定觀測點的定位參數(shù)所對應(yīng)的圓面,由3個或3個以上的圓面在三維空間內(nèi)相交而得出自己在地球上的位置,實現(xiàn)高精度的定位和導(dǎo)航。
    但是,由于接收機時鐘與衛(wèi)星時鐘不能達到完全同步,接收機通信鏈路得到的接收機到衛(wèi)星的距離應(yīng)記為偽距?籽,它包含從衛(wèi)星到接收機的幾何距離和由接收機時鐘與衛(wèi)星時鐘之間的差異而造成的偏移,其中接收機時鐘偏移tu也是未知數(shù)。因此,確定接收機位置需解算4個未知數(shù),即位置坐標(biāo)的3個分量(x,y,z)和時鐘偏移tu,至少需要4個方程式,即至少需要觀測到4顆衛(wèi)星。

    3個坐標(biāo)分量的系數(shù)是近似用戶位置指向第s號衛(wèi)星的矢量的方向余弦。第一次計算定位時,如無近似位置可用,可將(0,0,0)作為初始值,也可由用戶手動輸入接收機的近似位置坐標(biāo)作為初始值代入以減少迭代次數(shù)。如果在不久以前的工作中已獲得位置,則可用所存儲的位置作為初始值進行迭代,從而減少迭代次數(shù),縮短解算時間。
    如果這樣計算出的結(jié)果不夠精確,則將解算出的點坐標(biāo)作為新的初始估計值代入,再重新按上述步驟求解,一般迭代2~3次便可達到可接受的精度要求。
    當(dāng)僅觀測到4顆衛(wèi)星時,采用上述算法即可獲得用戶位置和時間偏移的單點解。若在觀測過程中跟蹤到4顆以上的衛(wèi)星,則出現(xiàn)了冗余觀測量,可用最小二乘法平差求解獲得用戶位置和時間偏移的估值,還可采用動態(tài)濾波等抗干擾手段平滑導(dǎo)航解,進一步提高導(dǎo)航定位的精度及連續(xù)性。
2 GPS接收機的硬件設(shè)計
    衛(wèi)星信號由天線接收,直接進入射頻前端。射頻前端具有變頻作用,將射頻信號轉(zhuǎn)換為中頻信號。中頻信號經(jīng)采樣信號采樣、量化后,轉(zhuǎn)換為數(shù)字中頻信號。數(shù)字中頻信號進入基帶數(shù)字處理器,基帶數(shù)字處理器完成衛(wèi)星信號的處理后,解調(diào)出導(dǎo)航電文,進行相應(yīng)的處理后給出所需的定位信息或提供特定的應(yīng)用服務(wù)。
    GPS接收機的基本組成如圖1所示[4-6]。

2.1 基于ATR0600的射頻前端電路設(shè)計
    射頻(RF)前端模塊位于接收機天線與基帶數(shù)字信號處理模塊之間,它通過天線接收所有可見GPS衛(wèi)星信號,經(jīng)前置濾波器和前置放大器的濾波放大后,再與本機振蕩器產(chǎn)生的正弦波本振信號進行混頻而下變頻成中頻(IF)信號,最后經(jīng)模數(shù)轉(zhuǎn)換器將中頻信號離散成包含GPS信號成分的、頻率較低的數(shù)字中頻信號,并在此過程中進行必要的濾波和增益控制。
    本設(shè)計中射頻前端主要由Atmel公司生產(chǎn)的ATR0600芯片及外圍濾波電路構(gòu)成,它是一個GPS接收機射頻前端IC芯片,采用單IF結(jié)構(gòu),芯片上包含有混頻器、IF放大器、2 bit的模數(shù)轉(zhuǎn)換器、晶體振蕩器等電路,芯片具有極高的集成度和很小的功耗(約50 W)。
    ATR0600通過外部天線接收1 575.42 MHz的L1 GPS信號,經(jīng)過一個無源帶通濾波器和LNA(低噪聲放大器)進行第1級濾波、放大后,被外部SAW濾波器進行鏡像抑制并對1 800 MHz GSM頻帶信號進行隔離。該信號與基準(zhǔn)頻率為23.104 MHz的本振信號進行混頻,混頻器將GPS信號下變頻到97.76 MHz中頻。混頻后,該信號經(jīng)過LC帶通濾波器和可變益放大器(VGA),與片上集成的中頻帶通濾波器組合,完成對GSM干擾信號的濾波。VGA輸出驅(qū)動集成的1.5 bit A/D轉(zhuǎn)換器,將中頻信號轉(zhuǎn)化成4.35 MHz的數(shù)字中頻信號。
2.2 基于ATR0620的基帶處理器電路
    基帶數(shù)字信號處理模塊是GPS接收機的核心部分,它通過處理射頻前端所輸出的數(shù)字中頻信號,復(fù)制出與接收到的衛(wèi)星信號相一致的本地載波和本地偽碼信號,從而實現(xiàn)對GPS信號的捕獲與跟蹤,并且從中獲得GPS偽距和載波相位等測量值以及解調(diào)出導(dǎo)航電文。
    基帶數(shù)字信號處理模塊通常是硬件與軟件相結(jié)合的有機體,其中載波解調(diào)和C/A碼解擴通常是由ASIC硬件形式的數(shù)字信號處理器來完成的,而在微處理器中運行的跟蹤環(huán)路控制軟件通過計算來調(diào)節(jié)數(shù)字信號處理器的各種操作。由Atmel公司生產(chǎn)的ATR0620芯片包含有一個基于ARM7TDMI處理核的16通道相關(guān)器,它具有高性能的32 bit RISC結(jié)構(gòu),使用16 bit指令系統(tǒng),能利用ARM7TDMI微控制器核與片上RAM完成GPS16通道相關(guān)器和外圍設(shè)備接口功能。利用芯片內(nèi)部大量的功能寄存器可以滿足實時控制應(yīng)用需求。
2.3 GPS接收機的電路設(shè)計
    ATR0600射頻前端為ATR0620提供衛(wèi)星信號、主時鐘信號和其他一些控制信號,而ATR0620為ATR0600提供采樣信號。圖2為利用ATR0600和ATR0620芯片設(shè)計的GPS接收機方框圖。

2.4 存儲模塊及通信接口
    選用Cypress公司生產(chǎn)的CY7C1041,由片選信號NSCS[I]選通來擴展SRAM,容量為4 MB。Flash則選用ST公司的4 MB容量的SST39VF400芯片,由片選信號NSCS[0]選通。
    接收機中設(shè)計了兩種通信接口:一種是JTAG調(diào)試接口,連接JTAG仿真器進行開發(fā)調(diào)試,下載用戶程序;另一種是RS232通信串口,用于與主機通信。
3 GPS接收機的軟件設(shè)計
    GPS的用戶設(shè)備主要由接收機硬件和處理軟件組成。用戶通過用戶設(shè)備接收GPS衛(wèi)星信號,經(jīng)信號處理而獲得用戶位置、速度等信息,最終達到利用GPS進行導(dǎo)航和定位的目的。GPS接收機軟件的處理流程如圖3所示。程序包含匯編語言程序(用于引導(dǎo)和系統(tǒng)初始化)和C語言應(yīng)用程序(用于主要的導(dǎo)航定位計算)兩部分。軟件整體采用并行任務(wù)結(jié)構(gòu),由相關(guān)器產(chǎn)生的累加數(shù)據(jù)IRQ中斷信號進行任務(wù)切換的驅(qū)動,在中斷服務(wù)程序中更新偽碼、載波和數(shù)據(jù)解調(diào)環(huán)路。

    GPS接收機的應(yīng)用軟件根據(jù)不同的用途而有所區(qū)別,主要包括數(shù)據(jù)采集與分析、衛(wèi)星位置計算、時間推算、差分定位和動態(tài)定位等程序。本文設(shè)計的GPS接收機上的程序主要在ARM—μCLinux交叉編譯環(huán)境下用C語言進行編寫,通過ARM7 JTAG接口連接JAG仿真器進行調(diào)試和移植。
3.1 初始化/清除模塊
    在初始化程序段中要完成對GPS設(shè)備的注冊,設(shè)備節(jié)點的創(chuàng)建和對串口相關(guān)寄存器的初始化。部分代碼如下:
if((register_chrdev(GPS_MAJOR,GPS_NAME,&gps_fops))<0)
{//注冊GPS字符設(shè)備
printk(KERN_INFO“[registering of“GPS”is failed]\n”);
return ret;}
devfs_GPS_dir=devfs_mk_dir(NULL,“GPS”,NULL);
devfs_handle=devfs_register(devfs_GPS_dir,“GPS”DEVFS_FL_
DEFAULT,GPS_MAJOR,0,S_IFCHR|S_IRUSR|S_IWUSR,
&GPS_fops,NULL);
printk(“GPS suecessfully initialized\n”);
*UCONO=Ox0211;//串口工作模式定義
*UBDRO=Ox0017;//波特率的選擇相反,清除模塊函數(shù)
//GPS_Cleanup(),完成注銷字符設(shè)備
devfs_unregister_chrdev(GPS_MAJOR,GPS_NAME);
printk(“GPSmoduleremoved\n”);
3.2 兩個數(shù)據(jù)結(jié)構(gòu)定義
    模塊驅(qū)動的最終目的就是取得GPS信息,因此規(guī)范GPS數(shù)據(jù)對數(shù)據(jù)傳遞的可靠性和速率都是有益的。
struct GPS_DATA{
    unsigned int hour;//小時,24小時制
    unsigned int minute;//分
    unsigned long Second;//秒,精度小數(shù)點后三位
    unsigned long latitude;//緯度
    unsigned char southornorth;//緯度屬于南北的標(biāo)志碼
    unsigned long longitude;//經(jīng)度
    unsigned char eastorwest;//經(jīng)度屬于東西的標(biāo)志碼
    };//其中包括了在導(dǎo)航系統(tǒng)中所需的幾個重要數(shù)據(jù)
    另外還有對驅(qū)動模塊文件操作結(jié)構(gòu)的定義。即:
static struct file_operations gps_fops={
    ead:gps_read,
    rite:gps_write,
    octl:gps_ioctl,
    open:gps_open,
    elease:gps_release
    };//定義了設(shè)備操作映射函數(shù)結(jié)構(gòu)
3.3 驅(qū)動程序的模塊操作
    在導(dǎo)航系統(tǒng)進入GPS導(dǎo)航模式時,系統(tǒng)首先將GPS模塊注冊到操作系統(tǒng)中,實現(xiàn)初始化過程,再通過gps_open函數(shù)打開設(shè)備。此過程中完成對中斷、緩沖區(qū)以及定時器等資源的申請,為GPS數(shù)據(jù)讀取做準(zhǔn)備。通過gps_write()向模塊寫命令字來自主地選擇工作模式,gps_ioctl()則是選擇串口傳輸模式,使之與GPS模塊傳輸模式相匹配。之后的應(yīng)用程序?qū)?chuàng)立一個獨立的進程gps_read()來讀取GPS數(shù)據(jù),該進程沒有數(shù)據(jù)時將一直處于睡眠狀態(tài)等待數(shù)據(jù),有數(shù)據(jù)時進入中斷處理模塊,完成數(shù)據(jù)的分析,生成GPS_DATA數(shù)據(jù)結(jié)構(gòu),供導(dǎo)航使用。這個進程是隨著導(dǎo)航模式的切換而終止的,此時除了關(guān)閉進程外,還需調(diào)用gps_release()釋放申請的所有資源,并關(guān)閉設(shè)備。
4 性能測試
    本設(shè)計的GPS接收機采用內(nèi)嵌ARM7核的GP4020芯片作為接收機的數(shù)字基帶處理器。通過實驗調(diào)試,消除了以往微處理器的瓶頸效應(yīng),具有體積小、功耗低、性能高的特點。其主要性能指標(biāo)如下:
    (1)最大數(shù)據(jù)更新速率4 Hz;
    (2)定位精度3 m CEP;
    (3)功率消耗<0.1 W;
    (4)信號重新捕獲時間<1 s;
    (5)動態(tài)范圍<4 g;
    (6)首次定位時間:熱啟動時間為2.5 s;冷啟動時間為41 s;“暖”啟動時間為31 s。
    利用Atmel公司生產(chǎn)的ATR06XX芯片組和ARM的高效處理控制技術(shù)精心設(shè)計的超外差式GPS接收機可達到很高的接收靈敏度、頻率選擇性和較大的動態(tài)范圍,并具有結(jié)構(gòu)簡單、體積小、重量輕、省電等優(yōu)點。最后經(jīng)整機測試,指標(biāo)達到設(shè)計要求。如在此基礎(chǔ)上對硬件中的天線部分和軟件中的程序設(shè)計等加以修改,此方案可應(yīng)用于我國的“北斗一號”衛(wèi)星導(dǎo)航定位系統(tǒng)。因此,本設(shè)計具有廣闊的應(yīng)用范圍。
參考文獻
[1] 謝鋼.GPS原理與接收機設(shè)計[M].北京:電子工業(yè)出版社,2009.
[2] 黃智偉.GPS接收機電路設(shè)計[M].北京:國防工業(yè)出版社,2006.
[3] 黃繼海,楊凱.ARM系統(tǒng)應(yīng)用設(shè)計[M].鄭州:防空兵指揮學(xué)院,2007.
[4] 劉基余.GPS衛(wèi)星導(dǎo)航定位原理與方法[M].北京:科學(xué)出版社,2003.
[5] 李洪濤,許國昌.GPS應(yīng)用程序設(shè)計[M].北京:科學(xué)出版社,2000.
[6] 周立功.ARM微控制器基礎(chǔ)與實踐[M].北京:北京航空航天大學(xué)出版社,2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。