娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月02日(星期日)

2020年02月02日 | 基于STM32的GPS模塊驅(qū)動(dòng)(AIR530)

發(fā)布者:cangart 來(lái)源: eefocus關(guān)鍵字:STM32  GPS  模塊驅(qū)動(dòng)  AIR530 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

一、概述

由于做項(xiàng)目要用到GPS定位,于是在某寶購(gòu)買(mǎi)了這款GPS模塊。項(xiàng)目采用的MCU是STM32。廢話(huà)少說(shuō),進(jìn)入正題。


二、GPS模塊簡(jiǎn)介

Air530 模塊是一款高性能、高集成度的多模衛(wèi)星定位導(dǎo)航模塊。體積小、功耗低,可用于車(chē)載導(dǎo) 航、智能穿戴、無(wú)人機(jī)等 GNSS 定位的應(yīng)用中。而且提供了和其他模塊廠商兼容的軟、硬件接口,大幅 減少了用戶(hù)的開(kāi)發(fā)周期。 模塊支持GPS/Beidou/GLONASS/Galileo/QZSS/SBAS。采用了射頻基帶一體化設(shè)計(jì),集成了 DC/DC、 LDO、 LNA、射頻前端、基帶處理、32 位 RISC CPU、RAM、FLASH 存儲(chǔ)、RTC 和電源管理等功能。提供 超高的性能,即使在弱信號(hào)的地方,也能快速、準(zhǔn)確的定位。

這個(gè)模塊有五個(gè)引腳。如果只是簡(jiǎn)單的定位玩一下的話(huà),那個(gè)1pps引腳不用也可以。


VDD       供電電源,電壓輸入 范圍 3.3V-5.5V


TXD       GPS 串口數(shù)據(jù)輸出, 2.8V--5V 自適應(yīng)


RXD       GPS 串口數(shù)據(jù)輸入, 2.8V--5V 自適應(yīng)


1PPS      One plus per second(2.8V)


GND      接地


三、STM32驅(qū)動(dòng)程序編寫(xiě)

1.NMEA協(xié)議

在編寫(xiě)驅(qū)動(dòng)程序前一定要知道NMEA協(xié)議。NMEA是(National Marine Electronics Association )為海用電子設(shè)備制定的標(biāo)準(zhǔn)格式。NMEA縮寫(xiě),同時(shí)也是數(shù)據(jù)傳輸標(biāo)準(zhǔn)工業(yè)協(xié)會(huì),在這里,實(shí)際上應(yīng)為NMEA 0183。它是一套定義接收機(jī)輸出的標(biāo)準(zhǔn)信息,有幾種不同的格式,每種都是獨(dú)立相關(guān)的ASCII格式,逗點(diǎn)隔開(kāi)數(shù)據(jù)流,數(shù)據(jù)流長(zhǎng)度從30-100字符不等,通常以每秒間隔選擇輸出,最常用的格式為"GGA",它包含了定位時(shí)間,緯度,經(jīng)度,高度,定位所用的衛(wèi)星數(shù),DOP值,差分狀態(tài)和校正時(shí)段等,其他的有速度,跟蹤,日期等。NMEA實(shí)際上已成為所有的GPS接收機(jī)和最通用的數(shù)據(jù)輸出格式,同時(shí)它也被用于與GPS接收機(jī)接口的大多數(shù)的軟件包里。NMEA-0183協(xié)議定義的語(yǔ)句非常多,但是常用的或者說(shuō)兼容性最廣的語(yǔ)句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。


AIR530 模塊支持 NMEA 0183 V4.1 協(xié)議并兼容以前版本,關(guān)于 NMEA 0183 V4.1 的詳細(xì)信息請(qǐng)參照 NMEA 0183 V4.1 官方文檔。


        GGA:時(shí)間、位置、衛(wèi)星數(shù)量


        GLL:經(jīng)度、緯度、 UTC 時(shí)間


        GSA:GPS 接收機(jī)操作模式,定位使用的衛(wèi)星,DOP 值,定位狀態(tài)


        GSV:可見(jiàn) GPS 衛(wèi)星信息、仰角、方位角、信噪比


        RMC:時(shí)間、日期、位置、速度 VTG:地面速度信息


2.驅(qū)動(dòng)開(kāi)發(fā)

gps頭文件


/*****************************************************

消息 :$GPRMC,100646.000,A,3109.9704,N,12123.4219,E,0.257,335.62,291216,,,A*59

ID :            $GPRMC RMC                  協(xié)議頭

UTC時(shí)間:         100646.000                  hhmmss.sss

狀態(tài):            A                           A=數(shù)據(jù)有效;V=數(shù)據(jù)無(wú)效

緯度 :           2109.9704                   ddmm.mmmm

N/S:              N                          N=北,S=南

經(jīng)度:           11123.4219                   dddmm.mmmm

E/W :             E                          W=西,E=東

地面速度:        0.257                        Knot(節(jié))

方位:           335.62                        度

日期            291216                        ddmmyy

磁變量           無(wú)

校驗(yàn)和           *59

                                     消息結(jié)束

******************************************************/

#ifndef __GPS__H

#define __GPS__H

#include "sys.h"

#include "usart.h"

#include "stdint.h"

#include "string.h"

#include "stdlib.h"

//啟動(dòng)命令

 

#define  HotStart     "$PGKC030,1,1*2Crn"      //Gps系統(tǒng)熱啟動(dòng)

#define  WarmStart    "$PGKC030,2,1*2Frn"      //Gps系統(tǒng)溫啟動(dòng)

#define  ColdStart    "$PGKC030,3,1*2Ern"      //Gps系統(tǒng)冷啟動(dòng)

#define  ReColdStart  "$PGKC030,4,1*29rn"      //Gps系統(tǒng)重置冷啟動(dòng)

 

// 衛(wèi)星定位模式設(shè)置

#define  SingleGps    "$PGKC115,1,0,0,0*2Brn"      //單 GPS

#define  GPSandBEIDOU   "$PGKC115,1,0,1,0*2Arn"      //GPS+BEIDOU

#define  GPSandGLONASS  "$PGKC115,1,1,0,0*2Arn"      //GPS+GLONASS

 

// 低功耗模式設(shè)置       

#define  LPsleep  "$PGKC051,1*36rn"    //  sleep 模式     

#define  LPstop   "$PGKC051,0*37rn"    //  stop 模式 

 

/******************************************

//配置輸出 NMEA 消息的間隔(ms 單位)  

Arg1: 200-10000

******************************************/

#define  delay1sNMEA  "$PGKC101,1000*02rn" // 間隔1ms

 

 

/******************************************

//開(kāi)啟或關(guān)閉 QZSS NMEA格式輸出  

Arg1: “0”,關(guān)閉

      “1”,開(kāi)啟

******************************************/

#define  OpenNMEA    "$PGKC113,1*31rn"

#define  CloseNMEA   "$PGKC113,0*30rn"

 

 

//設(shè)置 NMEA 輸出波特率

#define  SetBps115200   "$PGKC147,115200*06rn"

//加速定位信息

#define  MoreFast   "$PGKC639,34.093145,108.542323,0,2019,05,04,02,43,54*05rn"

 

/*******************************************

設(shè)置 NMEA 語(yǔ)句輸出使能

Arg1: GLL “0”,關(guān)閉; “1”,打開(kāi)

Arg2: RMC “0”,關(guān)閉; “1”,打開(kāi)

Arg3: VTG “0”,關(guān)閉; “1”,打開(kāi)

Arg4: GGA “0”,關(guān)閉; “1”,打開(kāi)

Arg5: GSA “0”,關(guān)閉; “1”,打開(kāi)

Arg6: GSV “0”,關(guān)閉; “1”,打開(kāi)

Arg7: GRS “0”,關(guān)閉; “1”,打開(kāi)

Arg8: GST “0”,關(guān)閉; “1”,打開(kāi)

Arg9~ Arg19: 保留

*******************************************/

#define  EnableRMC   "$PGKC242,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*36rn"

 

 

//擦除 flash 中的輔助定位數(shù)據(jù)

#define  DeleteFlash   "$PGKC040*2Brn"

 

 

//開(kāi)啟或關(guān)閉 SBAS 功能

#define  CloseSBAS   "$PGKC239,1*3Arn"http://關(guān)閉SBAS 功能

#define  OpenSBAS   "$PGKC239,0*3Brn"http://開(kāi)啟SBAS 功能

 

//RMC_DATA結(jié)構(gòu)體

typedef struct RMC_DATA{

char    time[12];  //UTC時(shí)間

char    state[12]; //狀態(tài) 

  char   lat[12];  //緯度

char    NS[2];    //N/S指示

char    WE[2];     //W/E指示

char   lng[12];  //經(jīng)度

char    date[12];  //日期

}rmc_data;

//錯(cuò)誤信息上傳數(shù)據(jù)幀

typedef struct WARNING{

char start;//幀頭

u8 WarningFlag;//從最低位到最高為分別表示:電池電量警告,GPS定位失敗警告,電子圍欄越界警告,跌倒警告,其他暫時(shí)預(yù)留。

char end;//結(jié)束標(biāo)志

}Warning;

//定位信息上傳數(shù)據(jù)幀

typedef struct OPSITIONDATA{

  char    start;

char    time[12];  //UTC時(shí)間

char    state[12]; //狀態(tài) 

  char   lat[12];  //緯度

char    NS[2];    //N/S指示

char   lng[12];  //經(jīng)度

char    WE[2];     //W/E指示

char    date[12];  //日期

  char     end;

}OpsitionData;

//心率信息上傳數(shù)據(jù)幀

typedef struct HEARTRATEDATA{

char start;

  u8   HeartRate;//心率次數(shù)

char end;

}HeartRateData;

 

extern rmc_data  RecRMC; 

extern rmc_data * const pRecRMC; //RMC解析輸出緩存區(qū),該指針指向固定的地址

void SendAtToGps(u8 *cmd);

u8   GpsAckChack(u8 *str);

void Gps_Init(void);

void AnalysisRMC(rmc_data *pRecRMC);

void GpsRMCdataShow(void);

u8 OverStepArea(rmc_data *pRecRMC);

void mixGpsdate(char * ULdate,rmc_data *pRecRMC);

#endif

GPS驅(qū)動(dòng)函數(shù)


#include "gps.h"

/*************************************

功能:發(fā)送數(shù)據(jù)到Gps模塊

作者:賀遠(yuǎn)

日期:2019.03.05

參數(shù):cmd  AT命令

返回值:無(wú)

**************************************/

void SendAtToGps(u8 *cmd)

{

while(*cmd!='

主站蜘蛛池模板: 古交市| 西畴县| 临安市| 鄂伦春自治旗| 民权县| 嘉义县| 顺昌县| 赞皇县| 德兴市| 玉林市| 芷江| 绩溪县| 邵阳县| 措勤县| 洮南市| 威海市| 拜城县| 扶沟县| 定结县| 东乌珠穆沁旗| 桓台县| 瓦房店市| 洛隆县| 三河市| 磐石市| 潜山县| 武城县| 沭阳县| 南靖县| 青田县| 寿光市| 铜陵市| 莒南县| 肃宁县| 康马县| 南澳县| 保康县| 鄂尔多斯市| 闸北区| 玉环县| 苗栗县|