ATKNEO6MGPS模块使用说明AN1303

上传人:无*** 文档编号:62165861 上传时间:2022-03-14 格式:DOC 页数:22 大小:726KB
返回 下载 相关 举报
ATKNEO6MGPS模块使用说明AN1303_第1页
第1页 / 共22页
ATKNEO6MGPS模块使用说明AN1303_第2页
第2页 / 共22页
ATKNEO6MGPS模块使用说明AN1303_第3页
第3页 / 共22页
点击查看更多>>
资源描述
www. alientek comALIENTEK STM32开发板AN1303AN1303 ATK-NEO-6M GPS 模块使用本应用文档(AN1303,对应战舰STM32开发板扩展实验3/MiniSTM32开发板扩展实验 23)将教人家如何在ALIENTEK STM32丿|:发板上使川ATK-NEO-6M GPS模块(注意,本文档同 时适用ALIENTEK战舰和MiniSTM32两款开发板),并实现GPS定位。本文档分为如卜儿部分:1, ATK-NEO-6M GPS 模块简介2, 硕件连接3, 软件实现4, 验证1、ATK-NEO-6M GPS 模块简介ATK-NEO-6M模块,是ALIENTEK生产的一款高性能GPS模块,模块核心采用UBLOX公 司的NEO-6M模组,II仃50个通道,追踪灵敏度高达-161dBm,测昴输出频率最高町达5Hz。 ATK-NEO-6M模块门带高性能无源陶瓷大线(无需再购买昂贵的冇源犬线了),兼容3.3V和 5V单片机系统,并自带可充电后备电池(支持温启动或热启动)。ATK-NEO-6M模块非常小巧(25.5mm*31mm),模块通过4个2.54mm间距的排针与外 部连接,模块外观如图1.1所示:BAT3 ALIENTEK ATK-NE0-6M-V12 VCCGNDTXDRXD* r:八 IL.一丄丄Pce oocoIOOO 別严q心图1 1 ATK-NEO-6M模块外观图图1.1中,从右到左,依次为模块引出的PIN1-PIN4脚,各引脚的详细描述如农1.1所d:序号名称说明1RXD模块申口接收脚(TTL电平.不能有接接RS232电平!),可接贰片机的TXD2TXD模块串口发送脚(TTL电半.不能肖接接RS232电平!),可接单片机的RXD3GXD地49CC电源(2.7V-5.OV)表1.1 ATK-NEO-6M模块各引脚功能描述另外,模块门带了 个状态指示灯:PPSo该指示灯连接在UBLOX NE0-6M模组的 TIMEPULSE端II,该端II的输出特性可以通过程序设置。PPS指示灯,在默认条件下(没经 过程序设置),有2个状态:1, 常亮,表示模块已开始工作,但还未实现定位。2, 闪烁(100ms灭,900ms亮),表示模块己经定位成功。这样,通过PPS指示灯,我们就可以很方便的判断模块的肖前状态,方便人家使用。ATK-NEO-6M模块默认采用NMEA-0183协议输出GPS定位数据,并可以通过UBX协议 对模块进行配豐,NMEA-0183协议详细介绍请参考UTK-NEO-6M JIJT* T册.pdf,UBX配置 协议,请参考u-blox6_ReceiverDescriptionProtocolSpec_GPS.G6-SW-10018-C.pdfL通过ATK-NE0-6M GPS模块,任何单片机(3.3V/5V电源)都町以很方便的实现GPS定位, 当然他也川以连接电脑,利用电脑软件实现定位。ATK-NEO-6M-V12 GPS模块的原理图如图 1.2所示:VCC;3图1.2 ATK-NEO-6M GPS模块原理图2、硬件连接本实验功能简介:通过串I I 2连接ATK-NE0-6M GPS模块,然后通过液品显示GPS信息, 包括精度、纬度、高度、速度、用丁淀位的卫星数、可见卫星数、UTC时间等信息。同时, 可以通过USMART匸具,设置GPS模块的刷新速率(垠人支持5Hz刷新)和时钟脉冲的配 置。另外,通过KEYO按键,可以开启或关闭NMEA数据的上传(即输出到串【I 1,方便开 发调试)。所要用到的硬件资源如卜 I1, 指示灯DS02, KEYO按键3, 串口 1、串口 24, TFTLCD 模块5, ATK-NEO-6M GPS 模块接卜來,我们看看ATK-NEO-6MGPS模块同ALIENTEK STM32开发板的连接,前而我们介 绍了 ATK-NEO-6M模块的接II,我们通过杜邦线连接模块和开发板的相应端I丨,连接关系如 表2.1所示:ATK-NEO-6M GPS模块与开发板连接关系ATK-NEO-6M GPS 模块VCCGNDTXDRXDALIENTEK STM32 开发板3.3 V/5 VGNDPA3PA2表2.1 ATK-NEO-6M模块同ALIENTEK STM32开发板连接关系表衣屮ATK-NEO-6M GPS模块的VCC,因为我们的模块是町以3.3V或5V供电的,所以可 以接开发板的3.3V电源,也町以接开发板的5V电源,这个随便人家自C选择。模块与开发板的连接是很简单,不过这里特别提醒人家:1,请把GPS模块放到窗户边/阳台,否则可能收不到GPS信号.2,如果想在室内开发,可以考虑使用ALIENTEK提供的蓝牙串口模块(ATKHC05),这 样,我们可以将GPS放到户外/窗口,而仍然在室内进行程序的调试开发。3、软件实现木实验(注:这里仅以战舰板代码为例进行介绍,MmiSTNI32开发板对应代码几乎一 模一样,详见MimSTM32开发板扩展实验23),我们在扩展例程1: ATK-HC05 K牙串口 模块实验的基础上修改,在HARDWARE文件夹里面新建一个GPS文件夹,并新建gps.c, gps.h两个文件。然后在工程HARDWARE组里而添加gps.c,并在T程添加gps.h的头文件 包含路径。在gps.c里面,我们输入如卜代码:#include ”gps.h#include led.h#include delay.IT#include nusart2.hH#include ”stdio.h”#include Hstdarg.hM#mclude Hstnng.hH#include Hmath.hn从buf里面得到第ex个逗号所在的位置返回值:00XFE,代表逗号所在位置的偏移./0XFF,代表不存在第ex个逗号u8 NMEA_Comma_Pos(u8 *buf,u8 ex)u8 *p=buf;while(cx)if(*buf=*| buf,z)retuni OXFF;遇到或非法字符,则不存在第ex个逗号!f(*bufT)cx;bufb+;return bufp;/mF函数返回值:mF次方.u32 NMEA_Pow(u8 m,u8 n)u32 result=l;while(n)result*=ni;retiuu result;/str转换为数字,以丁或者“结束/buf:数字存储区dx:小数点位数,返回给调用函数返回值:转换后的数值int NMEA_Str2mim(u8 *buf,u8*dx)u8 *p=buf;u32 ires=O,fres=O;u8 ilen=O,flen=O,i;u8 niask=O;int res;我hile(l)/得到整数和小数的长度if(*p=-*) mask|=0X02 ;p+;/ 是负数 if(*P=,/ll(*P=*,)break;/ 遇到结束了 if(*p=“)mask|=0X01 ;p+; 遇到小数点 了 else if(*p9|(*pO) 有非法字符ilen=0; flen=0; break;if(mask&0X01 )flen+;else ilen+;P+;if(mask&0X02)bufH-; 去掉负号for(i=0;i5)flen=5; /A4 多取 5 位小数*dx=flen;小数点位数for(i=0;isxTium=NME A_Str2niun(p 1 +posx,&dx);for(i=0 ;ilen;i+)p 1 =(u8 *)strstr(const char *)pJSGPGS“); fdr(j=0;jslmsgslx nuin=NNlEA_Sti-2num(p 1 -posx,&dx);得到卫星编巧else break; posx=NMEA_Comma_Pos(p 1,5+j *4); if(posx?=0XFF)gpsx-slmsgslx.eledeg=NMEA_Sti-2nmii(pl+posx,&dx);得到卫星仰角else break; posx=NMEA_Comma_Pos(p 1,6+j *4); ifi(posx!=0XFF)gpsx-sliiisgslx.azideg=NMEA_Sti-2nuiii(pl+posx,&dx);得到卫星方位角else break; posx=NMEA_Comma_Pos(p 1,7+j *4); if(posx?=0XFF)gpsx-slmsgslx.sn=NMEA_Str2num(pl+posx,&dx);得到卫星信噪比 else break;slx+;p=pl+l;切换到卜一个GPGSV信息分析GPGGA信息/gpsx nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPGGA_Aiialysis(mnea_msg *gpsx5u8 *buf)u8 *pl,dx;u8 posx;p 1 =(u8*)strstr(const char *)buf JSGPGGA”); posx=NMEA_Comma_Pos(p 1,6);得到 GPS 状态if(posx! =0XFF)gpsx-gpssta=NMEA_Str2nmn(p 1 +posx,&dx);posx=NMEA_Comma_Pos(p 1,7);得到用 F定位的卫星数if(posx! =OXFF)gpsx-posslniini=NME A_Str2num(p 1 +posx、&dx);posx=NMEA_Comma_Pos(p 1,9);得到海拔高度if(posx! =OXFF)gpsx-altitiide=NNIE A_Str2num(p 1 +posx,&dx);分析GPGSA信息/gpsx:nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPGSA_Analysis(nmea_msg *gpsx,u8 *buf) u8 ptdx;u8 posx;u8 i;p 1 =(u8)strstr(const cliai- )buf,M$GPGSAH); posx=NNIEA_Coinma_Pos(p 1,2);得到定位类型if(posx! =0XFF)gpsx-fixmode=NNIEA_Str2nxun(p 1 +posx,&dx); for(i=0;ipossli=NMEA_Str2inuii(pl+posx,&dx); else break;posx=NMEA_Comma_Pos(p 1,15);得到 PDOP 位置精度因子if(posx! =OXFF)gpsx-pdop=NME A_Str2num(p 1 *posx?&dx);posx=NMEA_Comma_Pos(p 1,16);得到 HDOP 位置梢度因子if(posx! =OXFF)gpsx-hdop=NME A_Str2num(p 1 posx,&dx);posx=NMEA_Comma_Pos(p 1,17);得到 T)OP 位置轿度因子if(posx! =OXFF)gpsx-vdop=NME A_Str2num(p 1 *posx?&dx);分析GPRNIC信息/gpsx nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void NMEA_GPRMC_Analysis(nmea_msg *gpsx,u8 *buf)u8 車pl,dx;u8 posx;u32 temp;float rs;pl=(u8*)strstr(coiist char )buf,MSGPRMC);posx=NMEA_Comma_Pos(p 1,1);得到 UTC 时间if(posx=OXFF)temp=NMEA_Str2num(p 1 +posx,&dx)ZNMEA_Pow( 10,dx);/fJ 到 UTC 时间 gpsx-utc hour=temp 10000;gpsx-utc min=(temp/100)% 100;gpsx-utc. sec=temp% 100;posx=NMEA_Coinma_Pos(p 1,3);得到纬度if(posx!=0XFF)temp=NMEA_Str2mun(p 1 +posx,&dx); gpsx-latitude=temp/TSIMEA_Pow( 10,dx+2);得到 rs=temp%NME A_Pow( 10,dx+2);得 到,gpsx-latitude=gpsx-latitude*NMEA_Povv(105)+(rs*NMEA_Pow(10,5-dx)/60; 转换为。posx=NMEA_Comma_Pos(p 1,4);/南纬还 是北纬ifnsheiiii=*(pl*posx);posx=NNIEA_Comma_Pos(p 1,5);得到经度if(posx!=0XFF)temp=NN IE A_Str2num(p 1 +posx,&dx); gpsx-longitude=ten4)/NMEA_Pow( 10,dx+2); 得到 rs=temp%NMEA_Pow( 10.dx+2);得到gpsx-longitwde=gpsx-longitude*NMEA_Pow( 10,5)+(1 *NKIEA_Pow( 10,5-dx)/60;东经还是西经得到UTC II期得到UTC I I期 一 一posx=NMEA_Comina_Pos(p 1,6); if(posx =OXFF)gpsx-ewhemi=*(p 1 +posx); posx=NMEA_Commn_Pos(p 1、9); if(posx?=0XFF)temp=NMEA_Str2mun(p 1 +posx,&dx); gpsx-utc. date=temp/10000;gpsx-utc montli=(temp/100)% 100;gpsx-utc.year=2000+temp% 100; 分析GPVTG信息/gpsx nmea信息结构体/buf:接收到的GPS数据缓冲区骨地址void KMEA_GPVTG_Analysis(nmea_msg *gpsx,uS *buf) u8 *pl,dx;u8 posx;p 1 =(u8 *)strstr(const char *)buf,”SGPVTG”);posx=NMEA_C omma_Pos(p 1,7);得到地面速率if(posx?=OXFF)gpsx-speed=NMEA_Str2num(p 1 -posx,&dx); if(dxspeed*=NMEA_Pow( 10,3-ix); 确 保扩人 1000 化提取NMEA-O183信息/gpsx nmea信息结构体/buf:接收到的GPS数据缓冲区首地址void GPS_Aiialysis(mnea_msg *gpsx,u8 *buf)NMEA_GPGSAnalysis(gpsx,buf); GPGS解析 NMEA_GPGGA_Analysis(gpsx,buf); /GPGGA 解析 NMEA_GPGSA_Analysis(gpsx,buf); /GPGSA 解析 NMEA_GPRNIC_Analysis(gpsx,buf); /GPRMC 解析 NMEA_GPTG_Analysis(gpsx,buf); /GPTG 解析 /GPS校验和计算/buf:数据缓存区首地址/len:数据长度cka,ckb:两个校验结果一void Ublox_CheckSiun(u8 *buf,ul6 len,u8* cka,u8xckb)ul6i;*cka=0;*ckb=0;fbr(i=O;iheader=0X62B5;/cfg headerc fg_tp -id=OX0706; cfg_tp-dlengtli=20; cfg_tp-intenal=intenal; c fg-tp-length=length; cfg_tp status=status; cfg_tp-tinieref=O; cfg_tp-flags=O;cresenTed=0;cfg_tp-antdelay=820;c fg_tp-i-fdelay=O; cfg_tp-userdelay=O;/cfg tp id数据区长度为20个字肚 脉冲间隔,us 脉冲宽度,us/时钟脉冲配置参考UTC时间/flags 为 0保附位为0天线延时为820ns/RF延时为0ns用户延时为OnsUblox_CheckSiim(u8 )(&c_tpid),sizeof(_ublox_cf_tp)4,&cfg_tp-cka, & cfg_tp-ckb);while(DNlAl_Chaimel7-CNDTR! =0);等待通道 7 传输完成UART_DNIA_Enable(DMA 1 _Channel7,sizeof(_ublox_cfg_tp);/通过 dina 发送出去 配置UBLOX NEO-6的更新速率/measrate:测吊时河间隔,单位为ms,放少不能小J 200ms (5Hz)/reftime渗考时间,0=UTC Tune: 1=GPS Time (一般设置为 1)void Ublox_Cfg_Rate(u 16 measrate,u8 reftime)小于200ms.直接退出/cfg header/cfg rate id/数据区长度为6个宁节._ublox_cfg_rate cfg_rate=(_ublox_cfg_rate *)USART2 TX BUF; if(measrateheadep=0X62B5; cfg_rate-id=0X0806;cfg_rate-dlengtli=6;c fg_ra te-mea sra te=mea sra te;/ 脉 冲间隔,us cfg_rate-naTate= 1;导航速率(周期),固定为1cfg_rate-tinieref=reftime; 参考时间为 GPS 时间 Ublox_CheckSum(u8 )(&c_rateid),sizeo 心iblox_cfg_rate)4&c 龟 _ratecka, & cfgi*ate-ckb);while(DMAl_Channel7-CNDTR?=0);等待通道 7 传输完成UART_DMA_Enable(DNIAl_Channel7,sizeof(_ublox_cfg_rate);/通过 dma 发送出公 这部分代码町以分为2个部分,第一部分是NMEA-0183数据解析部分,另外一部分则 是UBX协议控制部分。NMEA-0183协议解析部分,这里利用了一个简单的数逗号方法來解析。我们知道NNIEA-0183协议都是以类似SGPGSf的开头,然后崗定输出格式,不论是否仃数据输出, 逗号是肯定会有的而且都会以作为有效数据的结尾,所以.我们了解了 NMEA-0183协议的数据格式(在ATK-NE66M的用户手册有详细介绍)之后,就可以通过数逗号的方 法,來解析数据了。本代码实现了对NMEA-0183 M议的SGPGGA. SGPGSA、SGPGSW SGPRMC和SGPVTG等5炎帧的解析,结果存放在通过gps.h定义的nmea_msg结构体内。UBX协议控制部分,此部分我们只实现了 N匕0(M模组常用的两个配視:时钟脉冲配 国和测棗输出速率配置。时钟脉冲配宣通过Ublox_Cfg_Tp实现,町以设置脉冲间隔,脉冲宽度等信息。测就输出速率配置则通过Ublox_Cfg_Rate函数实现,通过该皈数,町以设置 模块的测鼠输出速率,垠快町以达到5Hz的测录输岀速率。我们将Ublox_Cfg_Rate和Ublox_Cfg_Tp加入USMART控制,方便人家测试。另外耍 在usart2 h电面,将USART2_MAX_RECV_LEN的值设置为800,。然后在gps.h电而,我们 输入如下代码:#ifiidef_GPS_H#defme _GPS_H#include ,tsys.ht,/GPS NMEA-0183协议重要参数结构体定义 卫星信息typedef stnictu8 num;卫星编号u8 eledeg; 卫星仰角ul6 azideg; 卫星方位角u8 sn;信噪比nniea_slmsg;/UTC时间信息typedef stnictul6 year; /年份u8 month;/ 月份u8 date; /El 期u8 hour; /小时u8 min; 分钟u8 sec; 秒钟mnea_utc_time;/NMEA0183协议解析后数据存放结构体typedef structu8 svnum;/可见卫星数nmea_slmsgslmsg12; /绘多 12 颗卫星mnea utc tune utc;/UTC时间u32 latitude;纬度 分扩人100000倍,实际耍除以100000u8 nshenu;北纬/南纬,N:北纬;S:南纬u32 longitude;经度 分扩人100000倍,实际要除以100000u8 ewhemi;东经/西经,E:东经;W西经u8 gpssta;/GPS状态:0,未定位;1, II:差分定位;2,差分定位;6,正在估算.u8 posslnum;用于定位的卫星数12.u8 possl12;用于定位的卫星编号u8 fixmode./定位类型丄没订定位;2,2。定位;3,3。定位ul6pdop;位置精度因子0500,对应实际值0-50.0U16 hdop;水平精度内子。丸0,对应实际值00.0ul6 vdop;垂直精度因子0500,对应实际值050.0int altitude;海拔高度,放人了 10倍,实际除以10单位:0.1mul6 speed;地面速率,放人了 1000倍,单位0001公里/小时nniea_msg;/UBLOXNEO-6M时钟脉冲配置结构体_packed typedef strnct ful6 header;/cfg header,固定为0X62B5(小端模式)ul6 id;/CFG TP ID OX0706 (小端模式)ul6 dlength;数据长度u32 inteival;时钟脉冲间隔,单位为usu32 length;脉冲宽度,单位为ussigned char status;时钟脉冲配置:1,高电平有效;0,关闭;1,低电平有效.u8 timeref;参考时间:0,UTC时间;1,GPS时间;2,当地时间.u8 flags;时间脉冲设置标志u8 reserved;保留signed short antdelay;天线延时signed short l-fdelay;/RF延时signed int iiserdelay;用户延时u8 cka;校验CK_Au8 ckb;校验CK_B_ublox_c 龟_tp;/UBLOXNEO-6M刷新速率配迓结构体_ acked typedef struct/ul6 header;/cfg header,固定为0X62B5(小端模式)ul6 id;/CFG RATE ID:0X0806 (小端模式)ul6 dlength;数据长度ul6 measrate;测杲时何间隔,单位为ms,最少不能小J-200ms( 5Hz)ul6 liaxTate;导航速率(周期),固定为1ul6 timeref;参考时间:0=UTC Tune; 1=GPS Time:u8 cka;校验CK_Au8 ckb;校验CK_B_ublox_ctg_rate;int NMEA_Str2num(u8 *buf,u8*dx);void GPS_Analysis(nmea_msg *gpsx,u8 *buf);void NMEA_GPGSV_Analysis(nmea_msg *gpsx,u8 *buf);void NMEA_GPGGA_Analysis(nmea_msg *gpsx,u8 *buf);void NNIEA_GPGSA_Analysis(nmea_msg *gpsx,u8 *buf);void NNIEA_GPGSA_Analysis(nmea_msg *gpsx,u8 *buf);void KMEA_GPRMC_Analysis(nmea_msg *gpsx,u8 *buf);void NMEA_GPVTG_Analysis(nmea_msg *gpsx,uS *buf);void Ublox_Cfg_Tp(u32 intenral,u32 lengtli,signed char status);void Ublox_Cfg_Rate(ul 6 measrate,ub reftime);#endifgps.h里面的内容,都令非常详细的备注,这里就不釦兑了。最后,在test e里面,修改代码如下:u8 USART 1_TX_BUFUSART2_MAX_RECAr_LEN;串 I I 1,发送缓存区nmea_msg gpsx;/GPS 信息_align(4) u8 dtbuf5O;打印缓存器const u8*fixmode_tbl4=TailVFail,n 2D ,” 3D ; /fix mode 字符串 显示GPS定位信息void Gps_Msg_Shov(void)float tp;POINT_COLOR=BLUE;tp=gpsx longitude;spruitf(char *)dtbuf,MLongitude.5f %lctp =100000,gpsx.ewhenu);得到经度字符串LCD_ShowString(30,l 30,200,16,16,dtbuf);tp=gpsx latitude; spruitf(char *)dtbuf,11Latitude.5f %lc,tp/=100000,gpsx.nshemi);得到纬度字符串LCD_ShowString(30,150,200,16,16,dtbuf);tp=gpsx.altitude;spniitf(char )dtbuf,MAltitude:%. 1 fin役tp/=l0);得到高度字符串LCD_ShowString(30,170,200,16,16,dtbuf);tp=gpsx speed; spruitf(char *)dtbuf,nSpeed:%.3fknihH,tp/= 1000);得到速度字符串LCD_ShowString(30,l 90,200,16,16,dtbuf);if(gpsx.fixmode=3) / 定位状态spnntf(chai- *)dtbuf;Tix Mode:%sM,fixmode_tblgpsx fixmode); LCD_ShowStnng(30,210,200,16,16,dtbuf);spmitf(char *)dtbuf,Halid sateHite:%02dH,gpsx.possliiuiii); 川 J淀位的卩星数LCD_ShowStnng(30,230,200,16,16,dtbuf);sprnitf(char *)dtbuf,HArisible sateHite:%02dM,gpsx.sTium%100);/nf 见卩丿乜数 LCD_ShowStnng(30,250,200,16,16,dtbuf);spniitf(char *)dtbuf,MUTC Date:%04d/%02d %02d H,gpsx.utc.year,gpsx.utc.month, gpsx.utc.date); 显示 UTC 口期/prmtfCyear2:%driT,gpsx utc year);LCD_ShowString(30270,200,16,16,dtbuf);spniitf(char *)dtbuf,HUTC Time:%02d:%02d:%02d ,gpsx.utc.hoiir.gpsx.utc.min, gpsx.utc.sec); 显示 UTC 时间LCD_SliowString(30,290,2(X),l 6,16,dtbuf);int mam(void)ul6 1,1-xlen; ul6 lenx;118 key; u8 upload=0;Stm32_Clock_Imt(9);系统时钟设置delay_imt(72);延时初始化uart_iiut(72,38400);串口 1 初始化为 38400USART2_Init(36,38400);/初始化串 I I 2LED_ImtO;初始化与LED连接的硬件接IIKEY_Imt();初始化与LED连接的硬件接IILCD_ImtO;初始化 LCDusmart_dev.imt(72);初始化 USMARTPOINT COLOR=RED;LCD_ShowStimg(30,20,200,16,16,ALIENTEK STM32 A_AH);LCD_ShowString(30,40,200,16,16,uNE0-6M GPS TEST);LCD_ShowStrmg(30,60,200,16,16,” ATOMALIENTEK”); LCD_ShowStimg(30,80,200,16,16,KEY0:Upload NNIEA Data SW);LCD_ShowStnng(30,100,200,16,16,rNMEA Data UploadOFF); while(l)delaynis(l);if(USART2_RX_STA&0X8000)接收到一次数据了 rxlen=USART2_RX_STA&0X7FFF;/ 得到数据长度 fbr(i=0;irxlen;i-H-)USARTl_TX_BUFi=USART2_RX_BUFi; USART2_RX_STA=0;启动下一次接收USARTl_TX_BUFi=0;自动添加结束符GPS_Analysis(&gpsx,(u8*)USARTl_TX_BUF);/ 分析字符串 Gps_Msg_Shou);显示信息if(upload)prmtf(,rn%srn,USARTl_TX_BUF);接收到的数据发送到串II 1 key=KEY_Scan(0); if(key=KEY_RIGHT) upload=?upload;POINT_COLOR=RED;if(upload)LCD_ShowStniig(30,100,200,16,16;NMEA Data Upload ON ”); else LCD_ShowStnng(30,100,200,16,16,fNMEA Data Upload OFF); if(lenx%500)=0)LED0=!LED0; lenx-H-;此部分代码比较简单,main函数初始化便件Z后进入死循坏,等待串II 2接收GPS数 据。每次接收到GPS模块发送过來的数据,就执彳J:数据解析,并町以根据盂要(通过KEY0 按键开启/关闭),将收到的数据通过出II 1发送给上位机,数据解析后执行GPS定位数据 的显示。至此,整个ATK-NEO-6M GPS模块测试代码就介绍完了,我们接卜來看代码验证。4、验证在代码编译成功Z后,我们卜墩代码到我们的STM32开发板上(假设ATK-NEO-6MGPS模块已经连接上开发板,并且再次提醒人家,必须把ATK-NEO-6M GPS模块置丁窗 户旁、阳台或者室外,否则可能搜不到卫星!), LCD显示如图4.1所示界面:QR4 38163G4/ALIENTEK STM32GPS TESTATO腕ALIENTEKKEYO:Upload NfflEA Data 3W IlMEA Data Upload:ONLongitude:113. 36836 ELatitude:23.13847 NAltitude:40. 4iri Speed:0. 537km/hFix Mode: 3DValid satellite:08Visible satellite:15 UTC Date:2013/03/10 UTC Tiirie:13:06:12图4.1 LCD显示界面上图是我们的GPS模块成功泄位后的照片,町以得到当前地点的经纬度、高度、速度、 定位模式、用丁定位卫星数、可见卫星数和UTC 口期时间等信息。此时,我们的ATK-NEO-6M GPS模块,用于定位的卫星达到8颗,町见的卫星数多达15颗!我们打开center软件,连接开发板,并按一卞开发板的KEY0,程序I:传NMEA数据 到电脑,町以看到u-center软件显示如图4.2所示(这里提醒人家,ipcenter会控制DTR/RTS, 将B0拉高,导致mcenter连接开发板以后,按开发板的复位开发板不会运行代码。所以必 须先断开u-center的连接,再按开发板的复位.待开发板程序启动以后,再连接!):图 4.2 u-center 显示 ATK-NEO-6M GPS 模块信息可以看到,此时用于定位的卫星数更多了,有9颗,且信号强度都还不错,总可见卫星 数为15颗,町见ATK-NEO-6M GPS模块虽然川的是无源夭线,但是其搜星能力还是非常 不错的。模块在定位成功后,町以看到ATK-NEO-6MGPS模块的蓝色灯开始闪烁。模块默认的 NNIEA数据输出速度为1Hz;默认的PPS蓝灯闪烁情况为100ms火,900ms亮。不过我们 J以通过usrnart,调用Ublox_Cfg_Rate和Ublox Cfg Tp两个函数,來改变默认的设賢。如 图4 3所示(注恿先断开ucenter的连接):图4.3通过usmart改变模块默认设置状况通过如图4.3所示的两个函数调用,我们设置模块的数据输出速率为5HzM以看到LCD 显示的信息更新速度明显变快,同时町以看到PPS灯变成了 1秒短亮一次(实际上是危 lOOinSt 灭 900ms)o通过KEY0按键,还nJ以通过串|调试助手接收NMEA数据,这里我们就不再介绍了, 人家自行实验即可。至此,关J-ATK-NEO-6MGPS模块的介绍,我们就讲完了,通过本文档的学习,相信 人家可以很快学会ATK-NEO-6M GPS模块的使用。正点原子ALIENTEK2013-3-10开源 电子 网: 星翼电子官网:ALIENTEKwww. openedv. com2013-03-22
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!