pz s1216f8 bd gps北斗定位模塊手冊普中stm32f4開發(fā)板_第1頁
pz s1216f8 bd gps北斗定位模塊手冊普中stm32f4開發(fā)板_第2頁
pz s1216f8 bd gps北斗定位模塊手冊普中stm32f4開發(fā)板_第3頁
pz s1216f8 bd gps北斗定位模塊手冊普中stm32f4開發(fā)板_第4頁
pz s1216f8 bd gps北斗定位模塊手冊普中stm32f4開發(fā)板_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

:技術(shù):咨 本手冊向大家介紹PZ-S1216F8-BDGPS北斗定位模塊及其在普中實現(xiàn)GPS/北斗定位。本章分為如下幾部分內(nèi)容:PZ-S1216F8-BDGPS/GPS/北斗雙模定位模塊。該模S1216F8-BDFLASH,3.3V/5V模塊通過串口與外部系統(tǒng)連接,串口波特率支持4800、9600、19200、38400(默認)、576001152002304005V/3.3V(1):GPS/北斗接收歷史信息都丟失了(相指模塊保存了GPS/北斗接收歷史信息,但是當前可視的信息和保存的信息注(2):模塊的TXD和RXD120歐電阻,做輸出電平兼容處理,所以在使用的時候要注意,導(dǎo)線電阻不可過大(尤其是接USBTTL口模塊的時候,如果模塊的TXDRXD上帶了LED,那就會有問題),否則可能PZ-S1216F8-BDGPS/北斗模塊支持多種通信波特率,通過串口進行設(shè)置,PZ-S1216F8-BDGPS/北斗模塊非常小巧(19.66mm*44.75mm),模塊通過12*42.54mm4安裝到自己的設(shè)備里面,模塊外觀如圖所示:塊相連即待擴展腳,可用的管腳只有5個,各引腳的詳細描述如圖所示:PPS引腳同時連接到了模塊自帶了的狀態(tài)指示燈:PPS1,該引腳連接指示燈(即PPS引腳),在默認條件下(沒經(jīng)過程序設(shè)置),有2個狀態(tài):1,2,(100ms900ms),PPS1指示燈,我們就可以很方便的判斷模塊的當前狀態(tài),方GPS有源天線都是采用SMA接口,我們需要準備一根IPX(IPEX)SMAPZ-S1216F8-BDGPS/北斗模塊與有源天線,如圖所PZ-S1216F8-BDGPS/NMEA-0183GPS/北斗定位數(shù)據(jù),并可以通過SkyTraq,NMEA-0183協(xié)議將在后面會SkyTraqBinaryMessagesofSkyTraqVenus8使用PZ-S1216F8-BDGPS/北斗模塊,任何單片機(3.3V/5V電源)都可以GPS/北斗定位。PZ-S1216F8-BDGPS/北斗模塊的原理圖如圖所示:PZ-S1216F8-BDGPS/北斗模塊同外部設(shè)備的通口采用UART(串口)方式,輸出的GPS/北斗定位數(shù)據(jù)采用NMEA-0183協(xié)議(默認),控制協(xié)議為SkyTraq協(xié)議(該協(xié)議的詳細介紹請看BinaryMessagesofSkyTraqVenus8GNSSReceiver.pdf這個文檔)。這里我們主要向大家介紹NMEA-0183NMEA0183是國家海洋電子(NationalMarineElectronics備統(tǒng)一的RTCM(Radio missionforMaritimeservices)標準NMEA-0183協(xié)議采用ASCII碼來傳遞GPS,我們稱之為幀。幀格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)1$”:2、aaccc:(aa),后三位為語句名(ccc)3、ddd…ddd:數(shù)據(jù)4、“*”:校驗和前綴(也可以作為語句數(shù)據(jù)結(jié)束的標志字節(jié)做異或運算,得到校驗和后,再轉(zhuǎn)換16進制格式的ASCII字符)NMEA-0183注1:即協(xié)調(diào)世界時,相當于本初子午線(0度經(jīng)線)上的時間,時間比UTC早8個小時。$GNGGA(GPS,GlobalPositioningSystemFix$GNGGA(MM,hhCRUTC時間,格式為緯度,格式為ddmm.mmmmm(度分格式緯度半球,N或S(北緯或南緯經(jīng)度,格式為dddmm.mmmmm(度分格式經(jīng)度半球,E或W(東經(jīng)或西經(jīng)GPS0=1=2=正在使用的用于定位的數(shù)量(HDOP水平精確度因子(海拔高度(-9999.9到9999.9米大地水準面高度(-9999.9到9999.9米$GNGSA(當前信息$GNGSAMA1=2=2D3=3D正在用于定位的號(PDOP綜合位置精度因子(0.5-HDOP水平精度因子①(0.5-VDOP垂度因子(0.5-$GPGSV(可見數(shù),GPSSalitesin$GPGSV$GPGSV,GSVGSV可見的總數(shù)(00~12,前面的0也將被傳輸)編號(01~32,前面的0也將被傳輸)仰角(00~90度,前面的0也將被傳輸)方位角(000~359度,前面的0也將被傳輸信噪比(00~99dB,沒有到時為空)注:每條GSV語句最多包括四顆的信息,其他的信息將在下一$BDGSV(可見數(shù),GPSSalitesin$BDGSV$BDGSV,GSVGSV可見的總數(shù)(00~12,前面的0也將被傳輸)編號(01~32,前面的0也將被傳輸)仰角(00~90度,前面的0也將被傳輸)方位角(000~359度,前面的0也將被傳輸信噪比(00~99dB,沒有到時為空)注:每條GSV語句最多包括四顆的信息,其他的信息將在下一$GNRMC(推薦, $GNRMCUTC時間,hhmmss(時分秒A=V=緯度ddmm.mmmmm(度分緯度半球N(北半球)或S(南半球經(jīng)度dddmm.mmmmm(度分經(jīng)度半球E(東經(jīng))或W(西經(jīng)地面速率(000.0~999.9節(jié)地面航向(000.0~359.9度,以真北方為參考基準UTC日期,ddmmyy(日月年磁偏角(000.0~180.0度,前導(dǎo)位數(shù)不足則補磁偏角方向,E(東)或W(西模式指示(A=D=E=N=數(shù)據(jù)無效)$GNVTG(TrackMadeGoodandGround$GNVTG以真北為參考基準的地面航向(000~359度,前面的0也將被傳輸以磁北為參考基準的地面航向(000~3590地面速率(000.0~999.90地面速率(0000.0~1851.80模式指示(A=D=E=N=數(shù)據(jù)無效)$GNGLL(Geographic$GNGLL緯度ddmm.mmmmm(度分緯度半球N(北半球)或S(南半球經(jīng)度dddmm.mmmmm(度分經(jīng)度半球E(東經(jīng))或W(西經(jīng)UTC時間:hhmmss(時分秒A=V=模式指示(A=D=E=N=數(shù)據(jù)無效)$GNZDA$GNZDA,(1),(2),(3),(4),(5),UTC時間:hhmmss(時分秒日月年本地區(qū)域小時(NEO-6M未用到,為本地區(qū)域分鐘(NEO-6M00)NMEA-0183協(xié)議命令幀部分就介紹到這里,接下來我們看看NMEA-0183驗和是通過計算$與*之間所有字符ASCII碼的異或運算得到,將得到的結(jié)果以ASCII字符表示就是該校驗(hh)。0X47xor0X4Exor0X5Axor0X44xor0X41xor0X2Cxor0X30xor0X39xor0X35xor0X35xor0X35xor0X35xor0X2Exor0X30xor0X30xor0X30xor0X2Cxor0X30xor0X38xor0X2Cxor0X31xor0X32xor0X2Cxor0X32xor0X30xor0X31xor0X35xor0X2Cxor0X30xor0X30xor0X2Cxor0X30xor0X30得到的結(jié)果就是0X4C,用ASCII表示就是4C代碼,解析NMEA-0183數(shù)據(jù),從而得到GPS/北斗定位的各種信息了。PZ-S1216F8-BDGPS/PZ-S1216F8-BDGPS/北斗模塊與開發(fā)板如何模塊、PZ-HC05PZ-S1216F8-BDGPS),直接將該模塊插上WIFI模塊接口處即可,其內(nèi)部管腳連接關(guān)系如圖所示:RS2323TXDRXD,RXDTXD3PZ-S1216F8-BDGPS/北斗模塊,然后通過液晶顯示GPS/北斗信息,包括精度、緯度、高度、速度、用于定位的數(shù)、可見數(shù)、UTC時間等信息。另外通過K_UP按鍵,可以開啟或關(guān)閉NMEA數(shù)據(jù)的上傳(即輸出到串口1,方便開發(fā)調(diào)試)。我們打開本實驗工程,可以看到我們的工程APPusart3.c和gps.cusart3.h、gps.h。首先,我們來看usart3.c#include"stdio.h"#include"time.h"u8USART3_RX_BUF[USART3_MAX_RECV_LEN];//接收緩沖,最大u8USART3_TX_BUF[USART3_MAX_SEND_LEN];//發(fā)送緩沖,最大USART3_MAX_SEND_LENu16USART3_RX_STA=0;voidUSART3_Init(u32{GPIO_InitTypeDefGPIO_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//使能GPIOARCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//使能USART3//串口3對應(yīng)引腳復(fù)用映射GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復(fù)用功能GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //速度

GPIO_InitStructure.GPIO_OTypeGPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉//Usart3NVICNVIC_InitStructure.NVIC_IRQChannel=NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2優(yōu)先級0NVIC_InitStructure.NVIC_IRQChannelSubPriority= NVIC_InitStructure.NVIC_IRQChannelCmd= 器//USART3USART_InitStructure.USART_BaudRate=bound;//串口波特率USART_InitStructure.USART_WordLength=USART_WordLength_8b;//8USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_ParityUSART_Parity_No;/位 USART_InitStructure.USART_ModeUSART_Mode_Rx|USART_Mode_Tx;USART_Init(USART3,&USART_InitStructure);USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//斷USART_Cmd(USART3, }voidUSART3_IRQHandler(void{u8據(jù){res=USART_ReceiveData(USART3);if((USART3_RX_STA&(1<<15))==0)//接收完的一批數(shù)據(jù),還沒有被{if(USART3_RX_STA<USART3_MAX_RECV_LEN){ 7{} }{ 成}}}}voidusart3_printf(char*{u16i,j;i=strlen((constchar*)USART3_TX_BUF); {}}10ms下面我們來看下gps.c里面的代碼,如下:#include"gps.h"#include"led.h"#include"usart3.h"#include"stdio.h"#include"stdarg.h"#include"string.h"#include"math.h" ma_Pos(u8*buf,u8{{if(*buf=='*'||*buf<''||*buf>'z')return0XFF;//遇到'*'或者字符,則不存在第cx個逗號if(*buf==',')cx--}returnbuf-}u32NMEA_Pow(u8m,u8{u32result=1;returnresult;}//buf:數(shù)字intNMEA_Str2num(u8{u8u32ires=0,fres=0;u8mask=0;intwhile(1){elseif(*p>'9'||(*p<'0')) {}elseilen++;}if(mask&0X02)buf++;//去掉負號for(i=0;i<ilen;i++)//得到整數(shù)部分數(shù)據(jù){ires+=NMEA_Pow(10,ilen-1-i)*(buf[i]-} for(i=0;i<flen;i++)//得到小數(shù)部分數(shù)據(jù){fres+=NMEA_Pow(10,flen-1-i)*(buf[ilen+1+i]-}return}voidNMEA_GPGSV_ysis(nmea_msg*gpsx,u8{u8u8posx;p1=(u8*)strstr((constcharlen=p1[7]- {p1=(u8*)strstr((constchar*)p,"$GPGSV");{ 得到編elseif(posx!=0XFF)gpsx->s/得 仰elseif(posx!=0XFF)gpsx- else 得到信噪}}}voidNMEA_BDGSV_ysis(nmea_msg*gpsx,u8{u8u8posx;p1=(u8*)strstr((constcharlen=p1[7]- //得到可見北斗數(shù){p1=(u8*)strstr((constchar*)p,"$BDGSV");{posx,&dx);//得到編號elseelseelseosx,&dx);//得到信噪比}}}voidNMEA_GNGGA_ysis(nmea_msg*gpsx,u8{u8posx;p1=(u8*)strstr((constchar 于定位的 }

if(posx!=0XFF)gpsx-voidNMEA_GNGSA_ysis(nmea_msg*gpsx,u8{u8posx;u8i;p1=(u8*)strstr((constchar

{elsebreak;}

//得到 //得到 //得到if(posx!=0XFF)gpsx-}voidNMEA_GNRMC_ysis(nmea_msg*gpsx,u8{u8posx;u32temp;floatrs;p1=(u8*)strstr((constchar*)buf,"$GNRMC");//"$GNRMC",&和GNRMC分開的情況,故只判斷GPRMC. { UTC時間,去掉ms} 度{ gpsx->latitude=gpsx->latitude*NMEA_Pow(10,5)+(rs*NMEA_Pow(10,5-}度

{ }

{ }}voidNMEA_GNVTG_ysis(nmea_msg*gpsx,u8{u8u8p1=(u8*)strstr((constchar

{gpsx- 擴大1000倍}}voidGPS_ysis(nmea_msg*gpsx,u8{NMEA_GPGSV_ysis(gpsx,buf);//GPGSV解析NMEA_BDGSV_ysis(gpsx,buf);//BDGSV解析NMEA_GNGGA_ysis(gpsx,buf);//GNGGA解析NMEA_GNGSA_ysis(gpsx,buf);//GPNSA解析NMEA_GNRMC_ysis(gpsx,buf);//GPNMC解析NMEA_GNVTG_ysis(gpsx,buf);//GPNTG解析} 配置代 u8{u8rval=0;while((USART3_RX_STA&0X8000)==0&&len<100)/{} { {elseif(USART3_RX_BUF[i]==0X84){}} }else returnrval;} u8S1216F8BD_Cfg_Prt(u8baud_id){ //配置波特率的ID //操作串口1 //保存到SRAM&FLASHcfg_prt->CS=cfg_prt->id^cfg_prt->com_port^cfg_prt-_prt- }u8S1216F8BD_Cfg_Tp(u32width){u32 cfg_tp->sos=0XA1A0;//cfgheader(小端模式)cfg_tp->id=0X65; //cfgtpidcfg_tp->Sub_ID=0X01;//數(shù)據(jù)區(qū)長度為20個字節(jié).cfg_tp->width=temp;//脈沖寬度,uscfg_tp->Attributes=0X01;- return}Hz,最大不能大于50Hzu8S1216F8BD_Cfg_Rate(u8Frep){ //cfgheader(小端模式)cfg_rate- //cfgrateid //保存到SRAM&FLASH.//脈沖間隔 return}voidS1216F8BD_Send_Date(u8*dbuf,u16{ {}}外一部分則是S1216F8BDF8-BD協(xié)議控制部分。NMEA-0183協(xié)議解析部分,這里利用了一個簡單的數(shù)逗號方法來解析。我們NMEA-0183協(xié)議都是以類似$GPGSV的開頭,然后固定輸出格式,不論是否NMEA-0183協(xié)議的$GNGGA$GPGSA$GNGSV、$BDGSV、$GNRMC$GNVTG6gps.h3PPSS1216F8BD_Cfg_Prt寬度(1us~100ms)。的測量輸出頻率,最快可以達到20Hz的測量輸出頻率。S1216F8BD_Send_Date2,完成對GPS模塊的配置。最后我們打開main.c文件,里面的代碼如下:#include"system.h"#include"led.h"#include"key.h"#include"usart.h"#include"tftlcd.h"#include"gps.h"#include"usart3.h"#include"string.h"u8 nmea_msg align(4)u8dtbuf[50]; constu8*fixmode_tbl[4]={"Fail","Fail","2D3D"};//fix//顯示GPS{floattp; ",tp/=100000,gpsx.ewhemi);//得到經(jīng)度字符串 ",tp/=100000,gpsx.nshemi);//得到緯度字符串sprintf((char

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論