mtk gps调试手册

一、串口使用 
GPS模块的使用其实仅仅是一个串口应用的例子。实际只是直接使用串口就可以工作,底层串口驱动已经由MTK全部完成了。   MTK 串口有自已封装的一套接口函数,详见 Uart_dispatch.c 。驱动原文件在 Uart.c。 与WIN32不同的是,MTK所有的串口都在 drv_comm.c 文件中已经打开过了。所以在使用的时候,不需要再次打开,MTK采用了一种ower的方式,将串口指定给一个模块。这样在每次收到数据后,串口都会向指定模块发送一条消息,消息号:MSG_ID_UART_READY_TO_READ_IND。因而,我们只须要创建一个自已的模块,并且在消息循环中处理这条消息,函数UART_GetBytes 和UART_PutBytes 就可以实现对串口的收和发。  下面写出过程: 
1、 创建一个处理串口消息的服务TASK。我们使用的是MOD_CUSTOM2。先在 
custom_config.c 文件中启用宏 #define CUSTOM2_EXIST; 2、 在TASK进入消息循环前,初始化串口,波特率等。 
   UART_SetOwner(uart_port2, MOD_CUSTOM2); // 串口归custom2所有 
   UART_SetBaudRate(uart_port2, UART_BAUD_9600 ,MOD_CUSTOM2); // 波特率    UART_ClrRxBuffer(uart_port2,MOD_CUSTOM2); // 清接收缓充区    UART_ClrTxBuffer(uart_port2,MOD_CUSTOM2); // 清发送缓充区 
3、 在消息循环中,处理数据事件。每次读取20个字节,直到读出的长度小于20,说
明接收缓冲已经空了。GPS_LineCheck这个函数是我写的处理函数,用来将所有收到的零散数据重新组合,并一行一行进行处理。   case MSG_ID_UART_READY_TO_READ_IND:   do   {    
        memset(szBuf, 0, 21);      iRead = UART_GetBytes(uart_port2,szBuf, 20, &status, MOD_CUSTOM2);      GPS_LineCheck(szBuf);    }while(iRead >= 20 );    Break; 

4、 发送数据时没有限制,可以直接调用 Uart_PutBytes 进行发送。我们暂时没有使用。


二、GPS模块电源控制 
对照原理图,直接查出模块对应的电源控制引脚,通过IO操作命今,置高置低。从而实现GPS电源开关控制。 
GPIO_InitIO(OUTPUT,43);  // 我们使用的是GPIO 43 GPIO_ModeSetup(43, 0); GPIO_WriteIO(0, 43);


三、GPS内容的提取。 
可以参考我们的代码。GPS采用的是NEMA协议。网上有详细针对该协议的说明文档,后面的第六条有详述。主要是以行为数据单位,以逗号为分隔符,将经纬度等数据以广播的方式发送。我们要做的,仅仅是根据头字段(即 $GPGGA 等),提取出相应的数据行,并从中解析出我们需要的数据。须要注意的是,存在一定的乱码错误,要注意捕捉各种异常。特别是在GPS模块刚启动的瞬间。


四、坐标数据的运算。 
GPS模块出来的数据有三种表示方式,度、度分、度分秒。 例如: 22.889652°度表示法         转换为度分 
    889652 × 0.6 = 533791     也就是 22°53.3791′   转换为度分秒     3791 × 0.6 = 2275     也就是 22°53′22.75″    而由度分秒的转换则是上述过程的相反,即 ÷ 0.6。  



五、GPS数据均衡 
目前采用了最简易的处理方法,可能还要进行改进。 假设当前坐标为 X0 ,GPS块新送出的坐标为X1 
则本次生成的坐标值为 ( 系数 × X0 + X1 ) ÷ ( 系数 + 1 ),目前系统数选择为3。 


六、【GPS】NEMA协议 
 
NMEA传输信号 
GM-270智能型卫星接收器,由美国瑟孚公司(SiRF)提供技术支持,采NMEA-0183标准输出格式。一般的NMEA默认值为:传输速率(Baud Rate) 4800 bps;资料位:8 bits,停止位(stopbit) 及无极性输出(no parity). 
 
NMEA 记录说明: 
1、GGA :定位后卫星定位信息 
2、GSA :一种偏差信息, 说明卫星定位信号的强弱状态 3、GSV :GNSS天空范围内的卫星 
4、RMC :为达定位目的而为最低度需求的GNSS信息  
6.1、定位后卫星定位信息(GGA) 输出范例:  
$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M, , , ,0000*18  
GGA 资料格式 名称实例单位叙述讯息代号$GPGGA GGA 规范表头 
标准定位时间161229.487 时时分分秒秒.秒秒秒 纬度3723.2475 度度分分.分分分分 
北/南半球指示器N 北半球(N)或南半球(S) 经度12158.3416 度度度分分.分分分分 
东/西半球指示器W 东半球(E)或西半球(W) 定位代号指示器1 参考表2-3 
使用中的卫星数目07 (范围00 to 12) 水平稀释精度1.0 (范围0.5 ~ 99.9米) 
海拔高度9.0 米(范围-9999.9至99999.9米) 单位M 米 
大地水准面分隔米 单位M 米 
差分修正秒0表非DGPS 基地台代码0000 总和检查码*18   讯息终点   
定位代号指示器 数值叙述 
0 未定位或无效的定位 1 GPS SPS格式, 己定位 
2 差分修正, SPS格式, 已定位 3 GPS PPS格式, 己定位


6.2、偏差信息(GNSS DOP) 及卫星状态(GSA) 输出范例: 
$GPGSA,A,3,07,02,26,27,09,04,15, , , , , ,1.8,1.0,1.5*33  
GSA 资料格式 名称实例单位叙述 
讯息代号$GPGSA GSA规范表头 模式1 A 参阅表2-5 模式2 3 参阅表2-6 
使用中的卫星数目07 Channel 1 使用中的卫星数目02 Channel 2 …… …. 
使用中的卫星数目Channel 12 位置精度稀释值1.8 0.5 ~ 99.9 水平精度稀释值1.0 0.5 ~ 99.9 垂直精度稀释值1.5 0.5 ~ 99.9 *33 
  讯息终点1. Satellite used in solution.  
数值叙述 
M 手动– 只能于二维定位或三维定位模式运作 A 自动– 允许自动切换二维定位或三维定位模式 表2-6 模式2 叙述 
1 未定位 2 二维定位 3 三维定位


6.3、GNSS 所在位置天空中的卫星(GSV) 输出范例: 
$GPGSV,2,1,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71 $GPGSV,2,2,07,09,23,313,42,04,19,159,41,15,12,041,42*41 表2-7 GSV 资料格式 名称实例单位叙述 
讯息代号$GPGSV GSV 规范表头 讯息总数2 1 至3 讯息号码1 1 至3 天空中卫星总数07 
卫星编号07 频道1 (01 到32) 
卫星仰角79 度频道1 (最大值90 度) 
卫星方位角048 度频道1 (000 至359 度. 实际值) 
信号噪声比(C/No) 42 dBHz 00 至99dB  0 表未接收到信号 .... .... 
卫星编号27 频道4 (01 到32) 
卫星仰角27 度频道4 (最大值90 度) 
卫星方位角138 度频道4 (000 至359 度. 实际值) 
信号噪声比(C/No) 42 dBHz 00 至99 dB  0 表未接收到信号 总和检查码*71   讯息终点 
注意! ,,和 项个别卫星会重复出现,每行最多有四颗卫星,其余卫星信息会于次 一行出现,若未使用这些字段会空白。




6.4、建议最基本的GNSS规格数据(RMC) 输出范例: 
$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598, ,*10 表2-8 RMC 资料格式 名称实例单位叙述
讯息代号$GPRMC RMC规范表头 
标准定位时间161229.487 时时分分秒秒.秒秒秒 定位状态A A= 资料有效; V = 资
料无效 纬度3723.2475 度度分分.分分分分 
北/南半球指示器N 北半球(N)或南半球(S) 经度12158.3416 度度度分分.分
分分分 
东/西半球指示器W 东半球(E)或西半球(W) 对地速度0.13 节 
对地方向309.62 度实际值 日期120598 日日月
月年年 
磁极变量度东半球(E)或西半球(W) 总和检查码*10 

























 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值