- 相關推薦
用μPSD3234A獲取Motorola Oncore的GPS信息
摘要:介紹MotorolaOncore接收器和μPSD3234A在嵌入式應用的優勢,及μPSD3234A與MotorolaOncore接收器的硬件接口與軟件程序設計。關鍵詞:MotorolaOncore接收器μPSD3234A51內核GPS信息
引言
摩托羅拉公司經過近十年的研究,使全球定位系統(GPS)的產品集成度更高,重量更輕。為了適合嵌入式應用而特殊設計的Oncore接收器,體積小(50.8mm×82.6mm×16.3mm),平均故障間隔時間(MTBF)高達1100000~1600000小時,工程師可更快捷地把GPS技術引入OEM(初始設備廠家)的應用中。
1MotorolaOncore接收器的工作原理
如圖1所示,Oncore接收器有8個并行通道,可同時跟蹤8顆衛星。Oncore接收器將天線接收的GPS信號進行下變頻處理后,得到的中頻信號,經過高速模數轉換器轉換為數字信號。通道分開器把經過數字化處理的中頻信號分解后送入8個并行通道,以進行信號檢測、碼相關、載波跟蹤和濾波。
經過處理的信號被同步送進定位微處理器單元,這部分電路控制GPS接收器的工作模式和解碼,處理衛星數據、測量偽距和偽距增量,以進行位置、速度和時間的計算。Oncore接收器中還有一個能使接收器保持休眠狀態的隨機存儲器,用于保存衛星星歷表數據、用戶操作參數、歷書等信息。當Oncore接收器的電源關閉時,為防止這些信息的丟失,需外接一個+5V的備用電源。為保持實時時鐘的時間,也需要外接+5V電源。
Oncore接收器引腳如圖2所示。
MotorolaOncore接收器有一個TTL串行數據接口。此接口為Oncore接收器和系統控制器間提供主控及數據通道。
2μPSD3234A介紹
μPSD3234A是ST公司推出的嵌入40MHz“8032微控制器核”的PSD產品,被稱為“真正的片上系統”。有兩個獨立的Flash存儲器,256KB主Flash存儲器和32KB輔Flash存儲器。當擦除或寫某一存儲器時,讀操作可在另一存儲器內進行,支持遠程更新的在應用編程。8KB的SRAM為用戶的嵌入式實時操作系統,高級語言編程,通信緩沖器和堆棧提供足夠的空間。片內集成有豐富的功能部件:通用I/O口、可編程邏輯電路、管理監控、USB接口、I2C接口、4通道8位ADC、DDC、5通道PWM。片內的8032微控制器核有2個標準異步通信口,3個16位定時/計數器和2個外部中斷。和其它FlashPSD系列一樣,μPSD3200系列同樣可以通過JTAGISP接口進行在系統編程。
3μPSD3234A與Oncore接收器的接口
μPSD3234A的串口0和Oncore接收器的通信接口,均為TTL電平,可以直接通信。在設計之初,可先利用板載μPSD3234A芯片的開發板DK3200搭建硬件電路。為調試方便,μPSD3234A接收到MotorolaOncore接收器的原始信息。通過μPSD3234A的串口1(經電平轉換后)送到PC機的RS-232串口,在PC機顯示器上同步顯示。提取到的位置、時間等信息直接在LCD液晶上顯示。連接在PC機并行口的FlashLINK編程器與DK3200開發板上的JTAG口相連,完成JTAG在系統編程。硬件電路原理框圖如圖3所示。
4程序設計
MotorolaOncore接收器的主串口提供兩種數據格式:摩托羅拉二進制格式和NMEA0183格式。摩托羅拉二進制格式應用于接收器主串口的輸入輸出,波特率應為9600,無奇偶校驗位,1位起始位和1位停止位。所要獲取的GPS參數是以@@Ea開頭的位置/狀態/數據響應信息,以回車換行<CR><LF>結束。其格式為:
@@Eamdyyhmsffffaaaaoooohhhhmmmmvvhhddtntimsdimsdimsdi
msdimsdimsdimsdimsdsC<CR><LF>。
其含義為:
日期:m月1~12
d日1~31
yy年1980~2079
時間:h小時0~23
m分0~59
s秒0~60
位置:aaaa緯度(mas)
-324000000~324000000(-90°~90°)
oooo經度(m
as)
-648000000~648000000(-180°~180°)
hhhh橢球高度(cm)
-100000~1800000(-1000.00~18000.00m)
在所有信息終止的<CR><LF>前的一個字節為校驗和,是所有信息字節的“異或”。
程序是在KeiluVision2的環境下設計的。
(1)系統初始化
TMOD=0x20;
PCON=0x80;
SCON=0x50;
//計算定時初值
value=65536-(36000*125L/(24L*9600));
TH1=value;
TL1=value;
TR1=1;//定時器1為波特率發生器
P3SFS=0x03;
//設置LCD的I/O口模式
PSD8xx_reg.VM|=0x80;
//定時器0初始化
timer0_init();
//LCD初始化為8位,2行,5×7點陣,
//不閃爍,光標關閉
lcd_init();
(2)讀取MotorolaOncore接收器信息
先識別判斷是否為@@Ea開頭,若是,將其后的所有字符信息放入org_data[]數組中,以便后面從中提取所需數據。
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))//識別抋?
{RI=0;head[3]=ch;
for(k=0;k<=72;k++)
//將后續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[]數組中提取所需信息
讀取的信息都存放在org_data[]數組中,根據@@Ea的格式內容即可定位所需信息的位置。數組中所存放的是二進制數,為了能顯示還需將其轉換為ASCII碼的形式,因此還提供了以下4個函數來實現此功能,分別是:hextobcdtoascii_two(unsignedinthexs_two,unsignedcharnum_two)、hextobcdtoascii_four(unsignedinthexs_four,unsignedcharnum_four)、hextobcdtoascii_nine(unsignedlonginthexs_nine,unsignedcharnum_nine)和init_msgbuff(unsignedchar*dataptr,unsignedchar*buffptr),其中前3個分別是實現將二進制數轉換成兩位、四位和九位的ASCII碼形式,最后一個函數是實現將代碼段中的字符串存入數據存儲區內,用以實現將字符串顯示在液晶顯示器上。
程序運行后,在液晶上顯示的結果為:
DATE:?1-01-2004
TIME爃07:m50:s10
LATITU:牋0028?44?//經度為28°44′,因為表示度的小圓圈不好顯示,所以用問號?表示度。
LONGIT:牋0115?51?//緯度為115°51′
HIGH:牋0145牋ft?//高度為145英尺
結語
在需要實時、準確地獲取空間位置和時間信息的場合,如環境監測與保護工程、交通調度等,該設計可嵌入到此類遠程移動監控系統中。
【用μPSD3234A獲取Motorola Oncore的GPS】相關文章:
Motorola微處理器的bootloader分析與應用08-06
在動手中獲取知識08-05
數據挖掘技術與用戶知識獲取08-05
職場人士獲取成功的關鍵素質08-17
游戲流量獲取方式計劃方案08-22
以獲取為話題的作文(精選6篇)08-04