ublox社製GPSモジュール NEO-7Mから、SPI経由でGPSデータをUBXプロトコルで読み出すライブラリです SPI経由ではGPSの出力設定が出来ないので、予めUART接続でPCから出力データを変更する必要があります。ここら辺の詳細については https://ameblo.jp/tsukuba-step/entry-12282936077.html を参考にして下さい。 出力設定は、 NAV-POSLLH,NAV-TIMEUTC,NAV-VELNED のみを出力して下さい
Diff: ubloxUBX.h
- Revision:
- 1:2457089ca195
- Parent:
- 0:956653b6d3ad
- Child:
- 2:5992db47f3c3
diff -r 956653b6d3ad -r 2457089ca195 ubloxUBX.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ubloxUBX.h Tue Feb 13 04:25:54 2018 +0000 @@ -0,0 +1,90 @@ +#ifndef UBLOX_NAV_H +#define UBLOX_NAV_H + +#include "mbed.h" +#include "obsvdStruct.h" + +#define TIMEUTC_LEN 20 +#define POSLLH_LEN 28 +#define VELNED_LEN 36 + +typedef union{ + unsigned char Raw[TIMEUTC_LEN]; + struct{ + unsigned int iTOW; + unsigned int tAcc; + int nano; + unsigned short year; + unsigned char month; + unsigned char day; + unsigned char hour; + unsigned char min; + unsigned char sec; + unsigned char valid; + }Data; +} bufToTIMEUTC; + +typedef union{ + unsigned char Raw[POSLLH_LEN]; + struct{ + unsigned int iTOW; + int lon; //1e-7 + int lat; //1e-7 + int height; + int hMSL; + unsigned int hAcc; + unsigned int vAcc; + }Data; +} bufToPOSLLH; + +typedef union{ + unsigned char Raw[VELNED_LEN]; + + struct{ + unsigned int iTOW; + int velN; + int velE; + int velD; + unsigned int speed; + unsigned int gspeed; + int heading; + unsigned int sAcc; + unsigned int cAcc; + + }Data; + +} bufToVELNED; + + + +class GPS { + +public: + + GPS(PinName mosi,PinName miso,PinName sck,PinName _cs); + + bool updateData(); + + void chkData(obsvdData* obs); + + void chkTime(timData* t); + + + +private: + SPI _gps; + DigitalOut cs; + + bufToTIMEUTC timeData; + bufToPOSLLH posData; + bufToVELNED velData; + unsigned char buf0[50]; + unsigned char buf1[50]; + unsigned char buf2[50]; + +}; + + + + +#endif \ No newline at end of file