




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
:技術(shù):咨 本手冊(cè)向大家介紹PZ-S1216F8-BDGPS北斗定位模塊及其在普中實(shí)現(xiàn)GPS/北斗定位。本章分為如下幾部分內(nèi)容:PZ-S1216F8-BDGPS/GPS/北斗雙模定位模塊。該模S1216F8-BDFLASH,3.3V/5V模塊通過(guò)串口與外部系統(tǒng)連接,串口波特率支持4800、9600、19200、38400(默認(rèn))、576001152002304005V/3.3V(1):GPS/北斗接收歷史信息都丟失了(相指模塊保存了GPS/北斗接收歷史信息,但是當(dāng)前可視的信息和保存的信息注(2):模塊的TXD和RXD120歐電阻,做輸出電平兼容處理,所以在使用的時(shí)候要注意,導(dǎo)線電阻不可過(guò)大(尤其是接USBTTL口模塊的時(shí)候,如果模塊的TXDRXD上帶了LED,那就會(huì)有問(wèn)題),否則可能PZ-S1216F8-BDGPS/北斗模塊支持多種通信波特率,通過(guò)串口進(jìn)行設(shè)置,PZ-S1216F8-BDGPS/北斗模塊非常小巧(19.66mm*44.75mm),模塊通過(guò)12*42.54mm4安裝到自己的設(shè)備里面,模塊外觀如圖所示:塊相連即待擴(kuò)展腳,可用的管腳只有5個(gè),各引腳的詳細(xì)描述如圖所示:PPS引腳同時(shí)連接到了模塊自帶了的狀態(tài)指示燈:PPS1,該引腳連接指示燈(即PPS引腳),在默認(rèn)條件下(沒(méi)經(jīng)過(guò)程序設(shè)置),有2個(gè)狀態(tài):1,2,(100ms900ms),PPS1指示燈,我們就可以很方便的判斷模塊的當(dāng)前狀態(tài),方GPS有源天線都是采用SMA接口,我們需要準(zhǔn)備一根IPX(IPEX)SMAPZ-S1216F8-BDGPS/北斗模塊與有源天線,如圖所PZ-S1216F8-BDGPS/NMEA-0183GPS/北斗定位數(shù)據(jù),并可以通過(guò)SkyTraq,NMEA-0183協(xié)議將在后面會(huì)SkyTraqBinaryMessagesofSkyTraqVenus8使用PZ-S1216F8-BDGPS/北斗模塊,任何單片機(jī)(3.3V/5V電源)都可以GPS/北斗定位。PZ-S1216F8-BDGPS/北斗模塊的原理圖如圖所示:PZ-S1216F8-BDGPS/北斗模塊同外部設(shè)備的通口采用UART(串口)方式,輸出的GPS/北斗定位數(shù)據(jù)采用NMEA-0183協(xié)議(默認(rèn)),控制協(xié)議為SkyTraq協(xié)議(該協(xié)議的詳細(xì)介紹請(qǐng)看BinaryMessagesofSkyTraqVenus8GNSSReceiver.pdf這個(gè)文檔)。這里我們主要向大家介紹NMEA-0183NMEA0183是國(guó)家海洋電子(NationalMarineElectronics備統(tǒng)一的RTCM(Radio missionforMaritimeservices)標(biāo)準(zhǔn)NMEA-0183協(xié)議采用ASCII碼來(lái)傳遞GPS,我們稱之為幀。幀格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)1$”:2、aaccc:(aa),后三位為語(yǔ)句名(ccc)3、ddd…ddd:數(shù)據(jù)4、“*”:校驗(yàn)和前綴(也可以作為語(yǔ)句數(shù)據(jù)結(jié)束的標(biāo)志字節(jié)做異或運(yùn)算,得到校驗(yàn)和后,再轉(zhuǎn)換16進(jìn)制格式的ASCII字符)NMEA-0183注1:即協(xié)調(diào)世界時(shí),相當(dāng)于本初子午線(0度經(jīng)線)上的時(shí)間,時(shí)間比UTC早8個(gè)小時(shí)。$GNGGA(GPS,GlobalPositioningSystemFix$GNGGA(MM,hhCRUTC時(shí)間,格式為緯度,格式為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米大地水準(zhǔn)面高度(-9999.9到9999.9米$GNGSA(當(dāng)前信息$GNGSAMA1=2=2D3=3D正在用于定位的號(hào)(PDOP綜合位置精度因子(0.5-HDOP水平精度因子①(0.5-VDOP垂度因子(0.5-$GPGSV(可見(jiàn)數(shù),GPSSalitesin$GPGSV$GPGSV,GSVGSV可見(jiàn)的總數(shù)(00~12,前面的0也將被傳輸)編號(hào)(01~32,前面的0也將被傳輸)仰角(00~90度,前面的0也將被傳輸)方位角(000~359度,前面的0也將被傳輸信噪比(00~99dB,沒(méi)有到時(shí)為空)注:每條GSV語(yǔ)句最多包括四顆的信息,其他的信息將在下一$BDGSV(可見(jiàn)數(shù),GPSSalitesin$BDGSV$BDGSV,GSVGSV可見(jiàn)的總數(shù)(00~12,前面的0也將被傳輸)編號(hào)(01~32,前面的0也將被傳輸)仰角(00~90度,前面的0也將被傳輸)方位角(000~359度,前面的0也將被傳輸信噪比(00~99dB,沒(méi)有到時(shí)為空)注:每條GSV語(yǔ)句最多包括四顆的信息,其他的信息將在下一$GNRMC(推薦, $GNRMCUTC時(shí)間,hhmmss(時(shí)分秒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度,以真北方為參考基準(zhǔn)UTC日期,ddmmyy(日月年磁偏角(000.0~180.0度,前導(dǎo)位數(shù)不足則補(bǔ)磁偏角方向,E(東)或W(西模式指示(A=D=E=N=數(shù)據(jù)無(wú)效)$GNVTG(TrackMadeGoodandGround$GNVTG以真北為參考基準(zhǔn)的地面航向(000~359度,前面的0也將被傳輸以磁北為參考基準(zhǔn)的地面航向(000~3590地面速率(000.0~999.90地面速率(0000.0~1851.80模式指示(A=D=E=N=數(shù)據(jù)無(wú)效)$GNGLL(Geographic$GNGLL緯度ddmm.mmmmm(度分緯度半球N(北半球)或S(南半球經(jīng)度dddmm.mmmmm(度分經(jīng)度半球E(東經(jīng))或W(西經(jīng)UTC時(shí)間:hhmmss(時(shí)分秒A=V=模式指示(A=D=E=N=數(shù)據(jù)無(wú)效)$GNZDA$GNZDA,(1),(2),(3),(4),(5),UTC時(shí)間:hhmmss(時(shí)分秒日月年本地區(qū)域小時(shí)(NEO-6M未用到,為本地區(qū)域分鐘(NEO-6M00)NMEA-0183協(xié)議命令幀部分就介紹到這里,接下來(lái)我們看看NMEA-0183驗(yàn)和是通過(guò)計(jì)算$與*之間所有字符ASCII碼的異或運(yùn)算得到,將得到的結(jié)果以ASCII字符表示就是該校驗(yàn)(hh)。0X47xor0X4Exor0X5Axor0X44xor0X41xor0X2Cxor0X30xor0X39xor0X35xor0X35xor0X35xor0X35xor0X2Exor0X30xor0X30xor0X30xor0X2Cxor0X30xor0X38xor0X2Cxor0X31xor0X32xor0X2Cxor0X32xor0X30xor0X31xor0X35xor0X2Cxor0X30xor0X30xor0X2Cxor0X30xor0X30得到的結(jié)果就是0X4C,用ASCII表示就是4C代碼,解析NMEA-0183數(shù)據(jù),從而得到GPS/北斗定位的各種信息了。PZ-S1216F8-BDGPS/PZ-S1216F8-BDGPS/北斗模塊與開(kāi)發(fā)板如何模塊、PZ-HC05PZ-S1216F8-BDGPS),直接將該模塊插上WIFI模塊接口處即可,其內(nèi)部管腳連接關(guān)系如圖所示:RS2323TXDRXD,RXDTXD3PZ-S1216F8-BDGPS/北斗模塊,然后通過(guò)液晶顯示GPS/北斗信息,包括精度、緯度、高度、速度、用于定位的數(shù)、可見(jiàn)數(shù)、UTC時(shí)間等信息。另外通過(guò)K_UP按鍵,可以開(kāi)啟或關(guān)閉NMEA數(shù)據(jù)的上傳(即輸出到串口1,方便開(kāi)發(fā)調(diào)試)。我們打開(kāi)本實(shí)驗(yàn)工程,可以看到我們的工程APPusart3.c和gps.cusart3.h、gps.h。首先,我們來(lái)看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對(duì)應(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)先級(jí)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ù),還沒(méi)有被{if(USART3_RX_STA<USART3_MAX_RECV_LEN){ 7{} }{ 成}}}}voidusart3_printf(char*{u16i,j;i=strlen((constchar*)USART3_TX_BUF); {}}10ms下面我們來(lái)看下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個(gè)逗號(hào)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++;//去掉負(fù)號(hào)for(i=0;i<ilen;i++)//得到整數(shù)部分?jǐn)?shù)據(jù){ires+=NMEA_Pow(10,ilen-1-i)*(buf[i]-} for(i=0;i<flen;i++)//得到小數(shù)部分?jǐn)?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]- //得到可見(jiàn)北斗數(shù){p1=(u8*)strstr((constchar*)p,"$BDGSV");{posx,&dx);//得到編號(hào)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分開(kāi)的情況,故只判斷GPRMC. { UTC時(shí)間,去掉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- 擴(kuò)大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ū)長(zhǎng)度為20個(gè)字節(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é)議解析部分,這里利用了一個(gè)簡(jiǎn)單的數(shù)逗號(hào)方法來(lái)解析。我們NMEA-0183協(xié)議都是以類似$GPGSV的開(kāi)頭,然后固定輸出格式,不論是否NMEA-0183協(xié)議的$GNGGA$GPGSA$GNGSV、$BDGSV、$GNRMC$GNVTG6gps.h3PPSS1216F8BD_Cfg_Prt寬度(1us~100ms)。的測(cè)量輸出頻率,最快可以達(dá)到20Hz的測(cè)量輸出頻率。S1216F8BD_Send_Date2,完成對(duì)GPS模塊的配置。最后我們打開(kāi)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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 細(xì)胞代謝的特點(diǎn)
- 培養(yǎng)項(xiàng)目參選匯報(bào)
- 三字經(jīng)校本課程總結(jié)匯報(bào)
- 懸浮培養(yǎng)技術(shù)疫苗生產(chǎn)
- 妊娠期貧血的診斷及治療
- 腦積水觀察與護(hù)理
- 同濟(jì)醫(yī)院血透室進(jìn)修結(jié)束匯報(bào)
- 物業(yè)管家服務(wù)解讀
- 醫(yī)療健康規(guī)則解讀
- 汽車維修工藝講解
- Scratch藍(lán)橋杯科學(xué)素養(yǎng)考試卷(初級(jí)組)
- 新職員工安全培訓(xùn)
- 機(jī)械通氣:異常波形解讀
- 專題11初高銜接之計(jì)算補(bǔ)充練習(xí)新高一數(shù)學(xué)暑假銜接與新課重難點(diǎn)預(yù)習(xí)(人教A版2019)
- 涉縣中小學(xué)教師招聘考試真題2023年
- 干膜講義完整版本
- DL-T+5220-2021-10kV及以下架空配電線路設(shè)計(jì)規(guī)范
- 2024年三方資金監(jiān)管協(xié)議
- 橋梁智慧健康監(jiān)測(cè)技術(shù)標(biāo)準(zhǔn)
- 產(chǎn)品代理協(xié)議標(biāo)準(zhǔn)版可打印
- DZ∕T 0206-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 高嶺土、葉蠟石、耐火粘土(正式版)
評(píng)論
0/150
提交評(píng)論