版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
:技术:咨 本手册向大家介绍PZ-S1216F8-BDGPS北斗定位模块及其在普中实现GPS/北斗定位。本章分为如下几部分内容:PZ-S1216F8-BDGPS/GPS/北斗双模定位模块。该模S1216F8-BDFLASH,3.3V/5V模块通过串口与外部系统连接,串口波特率支持4800、9600、19200、38400(默认)、576001152002304005V/3.3V(1):GPS/北斗接收历史信息都丢失了(相指模块保存了GPS/北斗接收历史信息,但是当前可视的信息和保存的信息注(2):模块的TXD和RXD120欧电阻,做输出电平兼容处理,所以在使用的时候要注意,导线电阻不可过大(尤其是接USBTTL口模块的时候,如果模块的TXDRXD上带了LED,那就会有问题),否则可能PZ-S1216F8-BDGPS/北斗模块支持多种通信波特率,通过串口进行设置,PZ-S1216F8-BDGPS/北斗模块非常小巧(19.66mm*44.75mm),模块通过12*42.54mm4安装到自己的设备里面,模块外观如图所示:块相连即待扩展脚,可用的管脚只有5个,各引脚的详细描述如图所示:PPS引脚同时连接到了模块自带了的状态指示灯:PPS1,该引脚连接指示灯(即PPS引脚),在默认条件下(没经过程序设置),有2个状态:1,2,(100ms900ms),PPS1指示灯,我们就可以很方便的判断模块的当前状态,方GPS有源天线都是采用SMA接口,我们需要准备一根IPX(IPEX)SMAPZ-S1216F8-BDGPS/北斗模块与有源天线,如图所PZ-S1216F8-BDGPS/NMEA-0183GPS/北斗定位数据,并可以通过SkyTraq,NMEA-0183协议将在后面会SkyTraqBinaryMessagesofSkyTraqVenus8使用PZ-S1216F8-BDGPS/北斗模块,任何单片机(3.3V/5V电源)都可以GPS/北斗定位。PZ-S1216F8-BDGPS/北斗模块的原理图如图所示:PZ-S1216F8-BDGPS/北斗模块同外部设备的通口采用UART(串口)方式,输出的GPS/北斗定位数据采用NMEA-0183协议(默认),控制协议为SkyTraq协议(该协议的详细介绍请看BinaryMessagesofSkyTraqVenus8GNSSReceiver.pdf这个文档)。这里我们主要向大家介绍NMEA-0183NMEA0183是国家海洋电子(NationalMarineElectronics备统一的RTCM(Radio missionforMaritimeservices)标准NMEA-0183协议采用ASCII码来传递GPS,我们称之为帧。帧格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)1$”:2、aaccc:(aa),后三位为语句名(ccc)3、ddd…ddd:数据4、“*”:校验和前缀(也可以作为语句数据结束的标志字节做异或运算,得到校验和后,再转换16进制格式的ASCII字符)NMEA-0183注1:即协调世界时,相当于本初子午线(0度经线)上的时间,时间比UTC早8个小时。$GNGGA(GPS,GlobalPositioningSystemFix$GNGGA(MM,hhCRUTC时间,格式为纬度,格式为ddmm.mmmmm(度分格式纬度半球,N或S(北纬或南纬经度,格式为dddmm.mmmmm(度分格式经度半球,E或W(东经或西经GPS0=1=2=正在使用的用于定位的数量(HDOP水平精确度因子(海拔高度(-9999.9到9999.9米大地水准面高度(-9999.9到9999.9米$GNGSA(当前信息$GNGSAMA1=2=2D3=3D正在用于定位的号(PDOP综合位置精度因子(0.5-HDOP水平精度因子①(0.5-VDOP垂度因子(0.5-$GPGSV(可见数,GPSSalitesin$GPGSV$GPGSV,GSVGSV可见的总数(00~12,前面的0也将被传输)编号(01~32,前面的0也将被传输)仰角(00~90度,前面的0也将被传输)方位角(000~359度,前面的0也将被传输信噪比(00~99dB,没有到时为空)注:每条GSV语句最多包括四颗的信息,其他的信息将在下一$BDGSV(可见数,GPSSalitesin$BDGSV$BDGSV,GSVGSV可见的总数(00~12,前面的0也将被传输)编号(01~32,前面的0也将被传输)仰角(00~90度,前面的0也将被传输)方位角(000~359度,前面的0也将被传输信噪比(00~99dB,没有到时为空)注:每条GSV语句最多包括四颗的信息,其他的信息将在下一$GNRMC(推荐, $GNRMCUTC时间,hhmmss(时分秒A=V=纬度ddmm.mmmmm(度分纬度半球N(北半球)或S(南半球经度dddmm.mmmmm(度分经度半球E(东经)或W(西经地面速率(000.0~999.9节地面航向(000.0~359.9度,以真北方为参考基准UTC日期,ddmmyy(日月年磁偏角(000.0~180.0度,前导位数不足则补磁偏角方向,E(东)或W(西模式指示(A=D=E=N=数据无效)$GNVTG(TrackMadeGoodandGround$GNVTG以真北为参考基准的地面航向(000~359度,前面的0也将被传输以磁北为参考基准的地面航向(000~3590地面速率(000.0~999.90地面速率(0000.0~1851.80模式指示(A=D=E=N=数据无效)$GNGLL(Geographic$GNGLL纬度ddmm.mmmmm(度分纬度半球N(北半球)或S(南半球经度dddmm.mmmmm(度分经度半球E(东经)或W(西经UTC时间:hhmmss(时分秒A=V=模式指示(A=D=E=N=数据无效)$GNZDA$GNZDA,(1),(2),(3),(4),(5),UTC时间:hhmmss(时分秒日月年本地区域小时(NEO-6M未用到,为本地区域分钟(NEO-6M00)NMEA-0183协议命令帧部分就介绍到这里,接下来我们看看NMEA-0183验和是通过计算$与*之间所有字符ASCII码的异或运算得到,将得到的结果以ASCII字符表示就是该校验(hh)。0X47xor0X4Exor0X5Axor0X44xor0X41xor0X2Cxor0X30xor0X39xor0X35xor0X35xor0X35xor0X35xor0X2Exor0X30xor0X30xor0X30xor0X2Cxor0X30xor0X38xor0X2Cxor0X31xor0X32xor0X2Cxor0X32xor0X30xor0X31xor0X35xor0X2Cxor0X30xor0X30xor0X2Cxor0X30xor0X30得到的结果就是0X4C,用ASCII表示就是4C代码,解析NMEA-0183数据,从而得到GPS/北斗定位的各种信息了。PZ-S1216F8-BDGPS/PZ-S1216F8-BDGPS/北斗模块与开发板如何模块、PZ-HC05PZ-S1216F8-BDGPS),直接将该模块插上WIFI模块接口处即可,其内部管脚连接关系如图所示:RS2323TXDRXD,RXDTXD3PZ-S1216F8-BDGPS/北斗模块,然后通过液晶显示GPS/北斗信息,包括精度、纬度、高度、速度、用于定位的数、可见数、UTC时间等信息。另外通过K_UP按键,可以开启或关闭NMEA数据的上传(即输出到串口1,方便开发调试)。我们打开本实验工程,可以看到我们的工程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];//发送缓冲,最大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对应引脚复用映射GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用功能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优先级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据{res=USART_ReceiveData(USART3);if((USART3_RX_STA&(1<<15))==0)//接收完的一批数据,还没有被{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:数字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++)//得到整数部分数据{ires+=NMEA_Pow(10,ilen-1-i)*(buf[i]-} for(i=0;i<flen;i++)//得到小数部分数据{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]- //得到可见北斗数{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;//数据区长度为20个字节.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协议控制部分。NMEA-0183协议解析部分,这里利用了一个简单的数逗号方法来解析。我们NMEA-0183协议都是以类似$GPGSV的开头,然后固定输出格式,不论是否NMEA-0183协议的$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);//得到经度字符串 ",tp/=100000,gpsx.nshemi);//得到纬度字符串sprintf((char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024技术服务咨询合同
- 2024年货物搬运及装卸合作协议2篇
- 机械制造业卫生保障
- 《常用定位元件》课件
- 2024年离职员工保密合同
- 2024年火锅店创业联盟协议书
- 冶金行业销售员工作报告
- 教育机构代理合同三篇
- 2024年综合性能源管理服务协议范本版B版
- 二零二五年度2025版个人承包体育赛事运营合同范本3篇
- 社会学概论期末复习题及答案
- 五输穴与临床应用课件
- 物料吊笼安全技术标准
- 工程项目施工方案比选
- 盾构始发施工技术要点PPT(44页)
- 甲烷(沼气)的理化性质及危险特性表
- 某钢铁有限责任公司管理专案报告书---提升配电系统管理水平降低变配电装置事故率
- 促销费用管理办法15
- 《三国演义》整本书阅读任务单
- GB 13296-2013 锅炉、热交换器用不锈钢无缝钢管(高清版)
- 中医院中药的饮片处方用名与调剂给付规定
评论
0/150
提交评论