用μPSD3234A獲取Motorola Oncore的GPS信息
摘要:介紹Motorola Oncore接收器和μPSD3234A在嵌入式應(yīng)用的優(yōu)勢,及μPSD3234A與Motorola Oncore接收器的硬件接口與軟件程序設(shè)計。 關(guān)鍵詞:Motorola Oncore接收器 μPSD3234A 51內(nèi)核 GPS信息 引 言 摩托羅拉公司經(jīng)過近十年的研究,使全球定位系統(tǒng)(GPS)的產(chǎn)品集成度更高,重量更輕。為了適合嵌入式應(yīng)用而特殊設(shè)計的Oncore接收器,體積小(50.8mm 82.6mm16.3mm),平均故障間隔時間(MTBF)高達1 100 000~1 600 000小時,工程師可更快捷地把GPS技術(shù)引入OEM(初始設(shè)備廠家)的應(yīng)用中。 1 Motorola Oncore接收器的工作原理 如圖1所示,Oncore接收器有8個并行通道,可同時跟蹤8顆衛(wèi)星。Oncore接收器將天線接收的GPS信號進行下變頻處理后,得到的中頻信號,經(jīng)過高速模數(shù)轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號。通道分開器把經(jīng)過數(shù)字化處理的中頻信號分解后送入8個并行通道,以進行信號檢測、碼相關(guān)、載波跟蹤和濾波。 經(jīng)過處理的信號被同步送進定位微處理器單元,這部分電路控制GPS接收器的工作模式和解碼,處理衛(wèi)星數(shù)據(jù)、測量偽距和偽距增量,以進行位置、速度和時間的計算。Oncore接收器中還有一個能使接收器保持休眠狀態(tài)的隨機存儲器,用于保存衛(wèi)星星歷表數(shù)據(jù)、用戶操作參數(shù)、歷書等信息。當Oncore接收器的電源關(guān)閉時,為防止這些信息的丟失,需外接一個+5V的備用電源。為保持實時時鐘的時間,也需要外接+5V電源。 Motorola Oncore接收器有一個TTL串行數(shù)據(jù)接口。此接口為Oncore接收器和系統(tǒng)控制器間提供主控及數(shù)據(jù)通道。 2 μPSD3234A介紹 μPSD3234A是ST公司推出的嵌入40MHz“8032微控制器核”的PSD產(chǎn)品,被稱為“真正的片上系統(tǒng)”。有兩個獨立的Flash存儲器,256KB主Flash存儲器和32KB輔Flash存儲器。當擦除或?qū)懩骋淮鎯ζ鲿r,讀操作可在另一存儲器內(nèi)進行,支持遠程更新的在應(yīng)用編程。8KB的SRAM為用戶的嵌入式實時操作系統(tǒng),高級語言編程,通信緩沖器和堆棧提供足夠的空間。片內(nèi)集成有豐富的功能部件:通用I/O口、可編程邏輯電路、管理監(jiān)控、USB接口、I2C接口、4通道8位 ADC、DDC、5通道PWM。片內(nèi)的8032微控制器核有2個標準異步通信口,3個16位定時/計數(shù)器和2個外部中斷。和其它Flash PSD系列一樣,μPSD3200系列同樣可以通過JTAG ISP 接口進行在系統(tǒng)編程。 3 μPSD3234A與Oncore接收器的接口 μPSD3234A的串口0和Oncore接收器的通信接口,均為TTL電平,可以直接通信。在設(shè)計之初,可先利用板載μPSD3234A芯片的開發(fā)板DK3200搭建硬件電路。為調(diào)試方便,μPSD3234A接收到Motorola Oncore接收器的原始信息。通過μPSD3234A的串口1(經(jīng)電平轉(zhuǎn)換后)送到PC機的RS-232串口,在PC機顯示器上同步顯示。提取到的位置、時間等信息直接在LCD液晶上顯示。連接在PC機并行口的Flash LINK編程器與DK3200開發(fā)板上的JTAG口相連,完成JTAG在系統(tǒng)編程。硬件電路原理框圖如圖3所示。 4 程序設(shè)計 Motorola Oncore接收器的主串口提供兩種數(shù)據(jù)格式:摩托羅拉二進制格式和NMEA 0183格式。摩托羅拉二進制格式應(yīng)用于接收器主串口的輸入輸出,波特率應(yīng)為9600,無奇偶校驗位,1位起始位和1位停止位。所要獲取的GPS參數(shù)是以@@Ea開頭的位置/狀態(tài)/數(shù)據(jù)響應(yīng)信息,以回車換行CR>LF>結(jié)束。其格式為: @@Eamdyyhmsffffaaaaoooohhhhmmmmvvhhddtntimsdimsdimsdi msdimsdimsdimsdimsdsCCR>LF>。 其含義為: 日期: m 月 1~12 d 日 1~31 yy 年 1980~2079 時間: h 小時 0~23 m 分 0~59 s 秒 0~60 位置: aaaa 緯度(mas) -324 000 000~324 000 000(-90~ 90) oooo 經(jīng)度(mas) -648 000 000~648 000 000(-180~ 180) hhhh 橢球高度(cm) -100 000~1 800 000(-1000.00~18 000.00m) 在所有信息終止的CR>LF>前的一個字節(jié)為校驗和,是所有信息字節(jié)的“異或”。 程序是在Keil uVision2的環(huán)境下設(shè)計的。 (1)系統(tǒng)初始化 TMOD=0x20; PCON=0x80; SCON=0x50; // 計算定時初值 value=65536-(36000*125L/(24L*9600)); TH1=value; TL1=value; TR1=1; //定時器1為波特率發(fā)生器 P3SFS=0x03; //設(shè)置LCD的I/O口模式 PSD8xx_reg.VM|=0x80; //定時器0初始化 timer0_init(); //LCD初始化為8位,2行,57點陣, //不閃爍,光標關(guān)閉 lcd_init(); (2)讀取Motorola Oncore接收器信息 先識別判斷是否為@@Ea開頭,若是,將其后的所有字符信息放入org_data[]數(shù)組中,以便后面從中提取所需數(shù)據(jù)。 while(1) { while(!RI); ch=SBUF; if((RI)(ch==0x40)) //識別’a’ { RI=0;head[0]=ch; while(!RI); ch=SBUF; if((RI)(ch==0x40)) //識別第二個’@’ { RI=0;head[1]=ch; while(!RI); ch=SBUF; if((RI)(ch==0x45)) //識別’E’ { RI=0;head[2]=ch; while(!RI); ch=SBUF; if((RI)(ch==0x61)) //識別a? { RI=0;head[3]=ch; for(k=0;k=72;k++) //將后續(xù)72個字符放入org_data[] { while(!RI); org_data[k]=SBUF; RI=0; } } else {RI=0;continue;} } else {RI=0;continue;} } else {RI=0;continue;} } else {RI=0;continue;} } (3)從org_data[]數(shù)組中提取所需信息 程序運行后,在液晶上顯示的結(jié)果為: DATE: ?1-01-2004 TIME h07:m50:s10 LATITU: 0028?44 ?//經(jīng)度為2844′,因為表示度的小圓圈不好顯示,所以用問號?表示度。 LONGIT: 0115?51 ?//緯度為11551′ HIGH: 0145 ft ?//高度為145英尺 結(jié) 語 在需要實時、準確地獲取空間位置和時間信息的場合,如環(huán)境監(jiān)測與保護工程、交通調(diào)度等,該設(shè)計可嵌入到此類遠程移動監(jiān)控系統(tǒng)中。 |
評論