wenbo2005.online

学习记录 / STM32

GPS+BD

STM322025-07-17

https://blog.csdn.net/m0_48012049/article/details/107967387

https://baike.baidu.com/item/NMEA#5(推荐)

GN、GP、BD 分别代表双模模式、GPS 模式、北斗模式

例如:

1 ,    $GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48                    //   xxGGA(GPS 定位信息)

双模模式下,UTC时间: 08 : 48 : 52,北纬(N):2236.9453,东经(E):11408.4790 ;

    0->未定位,1->无差分,2->有差分,3->PPS ;

卫星数量:0~12

水平精度衰减因子:0.5~99.9 ;

海平面高度:-999.9~9999.9 ;

。。。

2 , $GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C                                //地理定位信息

3 , $GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E                                            //当前卫星信息

      $BDGSA,A,3,06,07,,,,,,,,,,,6.3,3.1,5.4*24  

4 ,   $GPGSV,3,1,09,10,78,325,24,12,36,064,,14,26,307,,18,67,146,27*71                         //可见卫星信息

    $GPGSV,3,2,09,21,15,188,,24,13,043,,25,55,119,,31,36,247,30*7F

    $GPGSV,3,3,09,32,42,334,*43

    $BDGSV,1,1,02,06,68,055,27,07,82,211,31*6A

5,  $GNRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*<13><CR><LF>

<1> UTC(Coordinated Universal Time)时间,hhmmss(时分秒)格式

<2> 定位状态,A=有效定位,V=无效定位

<3> Latitude,纬度ddmm.mmmm(度分)格式(前导位数不足则补0)

<4> 纬度半球N(北半球)或S(南半球)

<5> Longitude,经度dddmm.mmmm(度分)格式(前导位数不足则补0)

<6> 经度半球E(东经)或W(西经)

<7> 地面速率(000.0~999.9节,Knot,前导位数不足则补0)

<8> 地面航向(000.0~359.9度,以真北为参考基准,前导位数不足则补0)

<9> UTC日期,ddmmyy(日月年)格式

<10> Magnetic Variation,磁偏角(000.0~180.0度,前导位数不足则补0)

<11> Declination,磁偏角方向,E(东)或W(西)

<12> Mode Indicator,模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

<13> 校验和

6 ,   $GNVTG,,,,,,,,,M*2D                        //(地面速度信息)

7  ,  $GPTXT,01,01,01,ANTENNA OK*35            //天线状态输出,Ok 代表天线已经检测到,open 代表天线断开

//==============================================================================================================

(一),冷启动是指在一个陌生的环境下启动GPS 直到GPS 和周围卫星联系并且计算出坐标的启动过程。以下几种情况开机均属冷启动:

1、初次使用时;

2、电池耗尽导致星历信息丢失时;

3、关机状态下将接收机移动1000 公里以上距离。

(二),温启动是指距离上次定位时间超过2 个小时的启动,搜星定位时间介于冷启动和热启动之间。如果您前一日使用过GPS 定位,那么次日的第一次启动就属于温启

动,启动后会显示上次的位置信息。因为上次关机前的经纬度和高度已知,但由于关机时间过长,星历发生了变化,以前的卫星接受不到了,参数中的若干颗卫

星已经和GPS 接收机失去了联系,需要继续搜星补充位置信息,所以搜星的时间要长于热启动,短于冷启动。

(三),热启动是指在上次关机的地方没有过多移动启动GPS,但距离上次定位时间必须小于2小时。

//==============================================================================================================

指令合集:

波特率=4800bps:$PCAS01,0*1C

波特率=9600bps:$PCAS01,1*1D

波特率=19200bps:$PCAS01,2*1E

波特率=38400bps:$PCAS01,3*1F

波特率=57600bps:$PCAS01,4*18

波特率=115200bps:$PCAS01,5*19

重新上电会丢失配置,此时可以使用$PCAS00*01对配置进行保存

//=============================================================================================================

/*测试信息:

$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48 $GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C $GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E $BDGSA,A,3,06,07,,,,,,,,,,,6.3,3.1,5.4*24 $GPGSV,3,1,09,10,78,325,24,12,36,064,,14,26,307,,18,67,146,27*71 $GPGSV,3,2,09,21,15,188,,24,13,043,,25,55,119,,31,36,247,30*7F $GPGSV,3,3,09,32,42,334,*43 $BDGSV,1,1,02,06,68,055,27,07,82,211,31*6A $GNRMC,084852.000,A,2236.9453,N,11408.4790,E,0.53,292.44,141216,,,A*75 $GNVTG,292.44,T,,M,0.53,N,0.98,K,A*2D $GNZDA,084852.000,14,12,2016,00,00*48 $GPTXT,01,01,01,ANTENNA OK*35

*/

(一),添加GPS头文件;

(二),nmea_msg cs_str01; //定义结构体

(三),打印输出

NMEA_GNGGA_Analysis(&cs_str01,(uint8_t*)ReceiveBuff);
NMEA_GNRMC_Analysis(&cs_str01,(uint8_t*)ReceiveBuff);
printf("日期:%d-%d-%d\n",cs_str01.utc.year,cs_str01.utc.month,cs_str01.utc.date);
printf("时间:%d-%d-%d\n",cs_str01.utc.hour,cs_str01.utc.min,cs_str01.utc.sec);
printf("纬度:%f  经度:%f\n",cs_str01.latitude/100000.0f,cs_str01.longitude/100000.0f);
printf("%d-%d-%.1f\n",cs_str01.gpssta,cs_str01.posslnum,cs_str01.altitude/10.0f);

注意:冷启动,先显示时间,最后出现经纬度。如果搜星太少,则只有时间

//=============================================================================================================