野火stm32核心板-wf-neo6m模块用户手册_第1页
野火stm32核心板-wf-neo6m模块用户手册_第2页
野火stm32核心板-wf-neo6m模块用户手册_第3页
野火stm32核心板-wf-neo6m模块用户手册_第4页
野火stm32核心板-wf-neo6m模块用户手册_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本手册旨在帮助用户正确构建WF-NEO-6M模块的使用环境,引导用户快速使用该关于WF-NEO-6M模块的特性参数、硬件资源、原理图、机械尺寸等说明请《WF-NEO-6M》关于模WF-NEO-6M的硬件参数请参考文档《NEO-6_DataSheet_(GPS.G6-HW-WF-NEO-6M用户手 文档说 安装u-blox6GPSReceiver驱 硬件测 NMEA-0183协 NMEA-0183简 NMEA-0183常用语句格式说 使用单片机系统控制WF-NEO-6M模 代码分 结构体nmeaPARSER和 GPS_Decode_USART例 配置DMA串 软件简 软件操 连接GPS模 配置GPS模块寄存 WF-NEO-6M模块非常方便,为此,我们首先要准备好软件环境。主要是安装好u-blox6GPSReceiver驱动(USB转串口驱动)及野火GSM串口调试助手。WF-NEO-6MUSBUSB协议转换成串口协议,使得电脑能直接用USB线与模块通讯,但在使用前,需要给电脑安装相应的驱动。USBu-blox_GPS_Receiver_drv.zip压缩包驱动安装包,解压后双击u-blox_GPS_Receiver_drv_1206.exe.exe文件即可安装。MicroUSBWF-NEO-6M模块,模块获得电源后,它的红色时间脉冲指示灯会亮起来,此时在电脑设备管理器界面的COM设备中会看到u-blox6GPSReceiver设备,见图1-1,图中的设备指示使用的串是COM9,在后面的串口调试助手中,我们根据这里提示来选择对应的串。1-1设备管理器中的u-blox6GPSReceiver软件WF-NEO-6M模块,野火提供了多功能调试助手软件。配合行,得到时间、、海拔等数据,并根据得的结果在地图上标注实时位置,使应用GPS模块变得更为简单直观。Windows系统组件.NetFramework4.0。软件中使用的地图需要联网使用,在没有网络的情况下,软件中的地图部分会加载异常。软件正常运行界面见图1-2。使用方

1-2野火多功能调试助手(GPS界面择到GPS调试功能界面,把WF-NEO-6M模块通过USB线连接到电脑,见图1-3,该软COM口(COMu-blox6GPSReceiver驱动程序是否正确安装),选择WF-NEO-6M模块所用的COM口,及默认波特率9600,然后点击“打开串口”按钮,即可接收到GPS模块传回的信息,见图1-4。除了实时由GPS模块传回的信息,本软件还支持对GPS日志文件。GPS日GPSGPS模块接收到这些信息后,TXTGPS日志文件,方便以后使用。在使用日志文件时,点击控制面板中的“GPS日志文件”加载该文件即可,在野火多功能调试助手软件中提供了一个GPS日志文件“gpslog.txt”,用户可以使用它来测试软件的功能,加载该文件后,软件会输出GPS结果并在地图上标注日志中记录的位置,见图1-5。1-3模块通过USB1-4打开GPS图1-5GPS日志文使用野火多功能调试助手可方便地测试WF-NEO-6M模块是否正常,测试步骤如GPS日志文件检验野火多功能调试助手是否正常运行(如不能正常运行,请到野火反馈,我们会持续改进,谢谢支持~)在调试助手软件上打开WF-NEO-6M对应的串口,它的数据输出窗口会输出GPS的原始数据(下一小节将解析这些数据格式)。输出的数据一般会出现两种情况,见图2-1。2-1信号好与信号差时的GPSGPS数据信息数据间有很多连续的“逗号”,而下图中逗号与逗号之间一般是有数字的,它们分别对应了GPS信号差与GPS信号良好的状况。GPS模块的位置,GPS信号会比较差,可到室外空旷的地方测试(如楼顶、阳台、窗边),如果使用了有源天线,则应检查一下有源天线是否接触不良,并把天线置于室外。另外,野火多功能调试助手加载的地图是需要在联网的时候才能正常使用的,所以在室外无网络的地方,测试GPS时可把GPS数据以文件格式保存起来,在联网的情况下再加载GPS日志文件进行。实际上,当调试助手的信息窗口显示接收到连续的以$GPXXX开头的数据时,已经说明GPS模块正常了,当然,软件在地图上标注出当前地点才是我们追求的目标!WF-NEO-6MUSBGPSNMEA-0183协议,输出的信息形前面的图2-1所示NMEA是国家海洋电子(NationalMarineElectronicsAssociation)为海用电子设备制定的标准格式,目前已经成为了GPS导航设备统一的RTCM标准协议,NMEA3.0协议还扩展了北斗导航系统的版本。-0183是一套定义输的标准信,有几种同的格式每种都是立相II30-100择输出,最常用的格式为",它包含了定位时间,纬度,经度,高度,定位所用的卫星数,P,A实际上已成为所有的S。NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有PRN数据UTCPRN数据UTC时间和日 hh——校验和(checksum),$与*ASCII码的校验和(各字节做异或运算,得到校验和后,再转换16进制格式的ASCII字符。) GPS固定数据输出语句(Globalpositioningsystemfixdata)。 纬度半球,N或S(北纬或南纬 经度半球,E或W(东经或西经 <10>高度单位,M<11>大地椭球面相对海平面的高度(-999.9<12>高度单位,M<14>差分参考标号,从0000到1023(前导位数不足则补<15>GPS精度指针及使用(GNSSDOPandActiveSalites)。 第1信道正在使用的PRN码(PseudoRandomNoise,伪随机噪声码 <10>第8信道正在使用的PRN<11>第9信道正在使用的PRN<12>第10信道正在使用的PRN<13>第11信道正在使用的PRN<14>第12信道正在使用的PRN<15>PDOP综合位置精度因子(0.5<16>HDOP水平精度因子(0.5<17>VDOP垂度因子(0.5-<18> litesinView)格式:$GPGSV, GSV语句电文 GSV 推荐最小数据量的GPS信息( mendedMinimumSpecificGPS/TRANSITData)。 定位状态,A=有效定位,V=无效定 纬度半球N(北半球)或S(南半球 <10>MagneticVariation,磁偏角(000.0~180.0<11>Declination,磁偏角方向,E(东)或W(西<12>ModeIndicator,模式指示(NMEA01833.00版本输出,A=自主定位,D=E=估算,N=数据无效<13>地面速度信息(CourseovergroundandGroundspeed) M,表示“磁 N,表示 K,表示“千米/小时 模式指示(A=自主定位,D=差分,E=估算,N=数据无效<10>定位地理信息(Latitudeandlongitude,withtimeofpositionfixand 纬度半球N(北半球)或S(南半球 定位状态,A=有效定位,V=无效定 模式指示(A=自主定位,D=差分,E=估算,N=数据无效 当前时间信息:(Timeand 本地区域分钟(NEO-6M不支持,为 了解了NMEA格式有之后,我们就可以编写相应的程序了,而程序员Tim )提供了一个非常完善的NMEA库,在以下可以到:,直接使用该库,可以避免重复发明的工作。在野火提供的GPS模块资料的“NMEA0183库源码”文件夹中也包含了该库的源码,野火提供的STM32程序就是使用该库来NMEA语句的。该库目前为0.5.3版本,它使用纯C语言编写,支持windows、winCE、UNIXGPGGA,GPGSA,GPGSV,GPRMC,GPVTG这五种语句(这五种语句已经提供足够多的GPS信息),解析得的GPS数据信息以结构体,附加了地理学相关功能,可支持导航等数据工作,除了解析NMEA语句,它还可以根据随机数产生NMEA使用单片机系统控制WF-NEO-6MWF-NEO-6MTTL电平的串口通讯标准,非常方便使用单片机系统来控制。本小节以野火STM32开发板为例子说明如何使用STM32来控制WF-NEO-6M模块。WF-NEO-6M模块通讯,与模块连接时,只要通过模块引出的4-1单片机与WF-NEO-6MWF-NEO-WF-NEO-WF-NEO-WF-NEO-WF-NEO-6MSTM32-ISOSTM32-ISO-MINI开发板的源码,连接NEO-6M模块的,连接引脚说明见表4-24-24-34-2野火开发板与WF-NEO-6MISOISO-(模块引脚)WF-SIM900A模WF-NEO-WF-NEO-WF-NEO-WF-NEO-4-2野火STM32-ISO开发板与WF-NEO-6MSTM32-ISOPA3/USART2_RXPA2/USART2_TX引脚与开发板上的485相连,为了防止引脚共用的影响,请把ISO板子左侧在表4-3中的跳线帽1CAN/4854485R5485D另外,在使用WF-NEO-6M模块的时候不要接入头4-3野火STM32-ISO-MINI开发板与WF-NEO-6M除了头,ISO-MINI板子上的其它外设没有使用到USART2,直接连接模块即可程序WF-NEO-6MISOISO-MINI的例GPS模块资料\STM32控制代码\。ISOISO-MINI例程的功能和使用方法是完全一样的,根据自己使用的开发板,对应的程序即可,具体说明见图4-4及表4-4。4-4野火STM32-ISOISO-MINI开发板配套WF-NEO-6M卡内的GPS日志文件进行,并把结果通过usart1输出到电脑的串不需要GPS模块,把程序下的gpslog.txt文件到SD卡的根,并SD卡接入开发板,然后在电脑端使用串口调试助手(115200-N-8-1)可接收开发板返回的GPS结果STM32开发板通过的NMEA信息,并把结usart1输出到电脑SDWF-NEO-6M模块按说明接STM32开发板。然后使用串口调试助手可接收(115200-N-8-1)可接收开发板返回的GPS结果,在信号良好的情况下,会输出准确的时间、等信STM32开发板通过usart2GPS模块输出的NMEA信息,把结果屏会输出准确的时间、等信息。实验本程序对板子上SD卡的gpslog.txt文件进行(请确保卡内有该文件),实验时把USB线接入开发板的USBTOUART接口可接收开发板对GPS日志的信息,见图4-5,GPS_Decode_USART实确的,见图4-6。GPS_Decode_LCD实载的液晶屏会显示出准确的,见图4-7。在本小节中分析如何使用NMEA库GPS数据信息,野火提供的GPS_Decode_SDCardGPS_Decode_USARTGPS数据信息的来源,前者从SD卡文件中获取,后者从GPS通过串口模块获取,而它们获取信息后的过程实验描述及工程文件从板载SD卡的gpslog.txt文件加载GPS数据信息,使用NMEA库,并把结果通过usart1输出。工程名NMEAnmealib/mealib/mealib/mealib/mealib/mealib/mealib/tok.c用户编写的文Fatfs文件系ST固件流代码5-1GPS_Decode_SDCardmain文1 * *@author*@version* * ***实验平台:野火ISO-STM32-MINI**淘 *#include#include#include#include#include#include#include25externvoidnmea_decode_test(void);27*本工程用于对SD卡内的GPS*int{/*配置USART1printf调试信息 /*GPS测试 while42main函数先是初始化了usart1,便于输出GPS结果。然后就开始执行函数代码5-2nmea_decode_test函12FATFS3FIL4FRESULT5UINTbr,bw; /*FileR/Wcount*/7*@briefnmea_decode_testGPS文件信*@param*@retvalvoid{ nmeaINFO nmeaPARSER nmeaTIME //时 char /*盘符 /*GPS信息的文件res=f_open(&log_file,"0:gpslog.txt",FA_OPEN_EXISTING|FA_READ);if(!(res==FR_OK))printf("\r\n打开gpslog.txt文件失败,请检查SD卡的 是否存放return /*设置用于输出调试信息的函数nmea_property()->trace_func=nmea_property()->error_func=&error;/*GPS数据结构while(!f_eof(&log_file))f_read(&log_file,&buff[0],100,/*进行nmea格式nmea_parse(&parser,&buff[0],br,&info);/*对后的时间进行转换,转换成时间/*输出得到的信息printf("\r\n时间%d,%d,%d,%d,%d,%d\r\n",beiJingTime.year printf("\r\n海拔高度:%f米printf("\r\n速度:%fkm/hprintf("\r\n航向:%f度}/*释放GPS数据结构/*关闭文件}41while循环是本函数中最最重要的结构,每次循环开始前检查是否已到文件尾,没到文件尾即调用f_read函数GPS日志文件的内容,紧接着调用NMEA库函数nmea_parse进行,的结果存放在数据结构变量info中,由于结果得到的时间信息是时间,所以在输出结果前,调用了GMTconvert函数把它转化成时间。是的,这样就完成了GPS信息的,十分简单,关于nmea_parse函数在这里不再分析,有的读者可以自行阅读其源码。结构nmeaPARSER见表5-1。将要的GPS原始数而parser及info变量的数据类型nmeaPARSER和nmeaINFO则是NMEA库特有的数据结构。其中nmeaPARSER的定义见代码5-3。typedefstruct_nmeaPARSERvoidvoidunsignedcharintint78}可以看到,nmeaPARSER是一个链表,在时,NMEA库会把输入的GPS原始数据压入到nmeaPARSER结构的链表中,便于对数据管理及。在使用该结构前,我们调用了nmea_parser_init函数分配动态空间,而结束时,调用了nmea_parser_destroy函数释放分配的空间,见代码5-3的第39和63行。NMEA库良好的封装特性使我们无需关注更深入的实现,只需要再了解一下nmeaINFO数据结构即可,所有GPS得到的结果都在这个结构中,其结构体定义见代码5-4。代码5-4nmeaINFO结构体定1*SummaryGPSinformationfromallparsed*usedalsoforgeneratingNMEA*@see*@seenmea_GPGGA2info,typedefstruct_nmeaINFO /**<Maskspecifyingtypesofpackagesfromdatahavebeenobtained9 nmeaTIMEutc; /**<UTCofposition*/ /**<GPSqualityindicator(0=Invalid;1=2=Differential,3=Sensitive) /**<Operatingmode,usedfornavigation(1=Fixavailable;2=2D;3=3D)double /**<PositionDilutionOfPrecisiondouble /**<HorizontalDilutionOfPrecisiondoubleVDOP; /**<VerticalDilutionOfPrecision*/ double /**<LatitudeinNDEG-+/-[degree][min].[sec/60] double /**<LongitudeinNDEG-+/-[degree][min].[sec/60] double /**<Antennaaltitudeabove/belowmeansea(geoid)inmeters double /**<Speedoverthegroundinkilometers/hour double /**<TrackangleindegreesTrue doubledeclination;/**<Magneticvariationdegrees(Easterlysubtractsfromtruecourse) nmeaSATINFOsatinfo;/**<Sa litesinformation*/28}接收到的GPS信息导航模式:1-无效,2-2D,3-度][分].[秒/60]度][分].[秒/60]nmeaSATINFO结分配由于NMEA库在进行时需要动态分配较大的堆空间,所以我们需要在STM32startup_stm32f10x_hd.s文件中对堆空间进行修改,本工程中设置的堆空间大小设置为0x00001000,见代码5-5。;Amountofmemory(inbytes)allocatedfor;Tailorthisvaluetoyourapplication;<h>Stack <o>StackSize(inBytes)<0x0-;67Stack_Size STACK,NOINIT,READWRITE, 13;<h>Heap14 <o>HeapSize(inBytes)<0x0-15;17Heap_Size HEAP,NOINIT,READWRITE, heap GPS_Decode_USART例程使用USART2获取GPS模块输出的原始信息,并把结控制器在处理数据的同时,串口源源不断地接收GPS数据,此时会造成串口数据丢失,而野火例程使用DMA串口缓冲区方案,解决了这个问题。工程名NMEAnmealib/mealibnmealib/mealib/mealib/mealib/mealib/tok.c用户编写的文Fatfs文件系ST固件DMA先来阅读GPS_Decode_USART例程的main文件,见代码5-6,它与GPS_Decode_SDCard例程区别在代码的第37行,相对增加了GPS_Config函数,它对USART2接口初始化,以便于接收GPS模块的信息。代码5-6GPS_Decode_USART例程main文1 * *@author*@version* * ***实验平台:野火ISO-STM32-MINI**淘 *#include#include#include#include#include#include#include25externvoidnmea_decode_test(void);27*本工程用于对SD卡内的GPS*int{/*配置USART1printf调试信息/*GPS模块使用的接口/*GPS测试while}初始了串口及串口配套的DMA模式。代码5-7GPS_Config函1*@briefGPS_Configgps*@param*@retvalvoid{11GPS_USART_INIT函数stm32USART2外设作了基本的初始化,除了要注意把波特率配置9600,其它跟普通串口配置无异。本例程重点在DMA的配置,GPS_DMA_Config函数定义见代码5-8。代码5-8GPS_DMA_Config函1*@briefGPS_DMA_Configgpsdma*@param*@retvalstaticvoid{9/*开启DMA时钟/*设置DMA源:串口数据寄存器地址DMA_InitStructure.DMA_DIR=/*内存数据单位DMA_InitStructure.DMA_Mode=/*内存到内存的传输DMA_InitStructure.DMA_M2M=/*配置DMA的通道DMA_ITConfig(GPS_DMA_CHANNEL,DMA_IT_HT|DMA_IT_TC,ENABLE);//配置/*使能DMA_Cmd/*配置串口向DMA发出RX请求42本函数中使用到比较多的宏,部分定义见代码5-9。GPS_DMA_Config函数主要工作如下:设置了外设地址为USART2的数据寄存器,并把数据传输方向设置为从USART2数据寄存器传输到内存变gps_rbuff中,该缓冲区数512字节。最关键的位置是37DMA半传输结束中断及全传输结束中断,所以它实际把缓冲A/BDMA接收了半个缓冲区大小的数据时(本程序为256字节),就会引起中断。得益于这个机制,可以设计程序当DMA使用缓冲区A数据时,控制CPU使用B中的数据进行GPS,当DMA使用B时,控制CPU使用A进行,只要缓冲12*DMA接收缓冲3uint8_t45*GPS67#defineUSART2_DR_Base 289#define 10#define 11#define 当DMA的半传输中断或全传输中断产生时,进入的中断服务函数调用了1*@briefGPS_ProcessDMAIRQGPSDMA*@param*@retvalvoid{8if(DMA_GetITStatus(GPS_DMA_IT_HT /*DMA半传输完成GPS_HalfTransferEnd DMAClearFlag(GPSDMAFLAGelseifDMA_GetITStatus(GPS_DMA_IT_TC*DMA传输完成GPS_TransferEnd 17GPS_HalfTransferEnd和GPS_TransferEnd标志位进行标记,在流程中根据这两个标志使用不同的缓冲区进行处理,处理过程见代码5-11。代码5-11nmea_decode_test函1*@briefnmea_decode_testGPS模块信*@param*@retvalint{8nmeaINFO nmeaPARSER uint8_t nmeaTIME //时/*设置用于输出调试信息的函数nmea_property()->trace_f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论