From 4adc78553c8d48ff122506195fa33641134bd7b1 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期六, 13 十二月 2025 18:55:14 +0800
Subject: [PATCH] 路径点不重复的控制算法测试通了,但是好像不如之前路径点重复的版本好。增加了蓝牙接口部分。准备移植外包的MQTT。
---
STM32H743/FML/GPS.h | 120 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 99 insertions(+), 21 deletions(-)
diff --git a/STM32H743/FML/GPS.h b/STM32H743/FML/GPS.h
index f3ef219..c3b37d9 100644
--- a/STM32H743/FML/GPS.h
+++ b/STM32H743/FML/GPS.h
@@ -16,6 +16,25 @@
/*******************************************************************************
* Macro *
*******************************************************************************/
+/* IM23A NAVI 鏁版嵁 STATUS 鐘舵�佸瓧瀹氫箟 */
+#define IM23A_STATUS_FINIT (0x00000001U) // 1 婊ゆ尝鍣ㄦ湭鍒濆鍖栨爣蹇�
+#define IM23A_STATUS_READY (0x00000002U) // 2 婊ゆ尝鍣ㄦ敹鏁涘畬鎴愭爣蹇�
+#define IM23A_STATUS_INACCURATE (0x00000004U) // 3 婊ゆ尝鍣ㄦ敹鏁涜繃绋嬩腑
+#define IM23A_STATUS_TILT_REJECT (0x00000008U) // 4 鍊捐杩囧ぇ鏍囧織浣�
+#define IM23A_STATUS_GNSS_REJECT (0x00000010U) // 5 GNSS 瀹氫綅鏁版嵁宸爣蹇椾綅
+#define IM23A_STATUS_FRESET (0x00000020U) // 6 婊ゆ尝鍣ㄩ噸缃爣蹇椾綅
+#define IM23A_STATUS_FIX_RLS1 (0x00000040U) // 7 鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 1
+#define IM23A_STATUS_FIX_RLS2 (0x00000080U) // 8 鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 2
+#define IM23A_STATUS_FIX_RLS3 (0x00000100U) // 9 鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 3
+#define IM23A_STATUS_FIX_RLS4 (0x00000200U) // 10 鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 4
+#define IM23A_STATUS_FIX_RLS_OK (0x00000400U) // 11 鍊炬枩娴嬮噺瀹夎瑙掍及璁″畬鎴�
+#define IM23A_STATUS_DIR1 (0x00002000U) // 12 鍒濆鍖栨檭鍔ㄦ柟鍚� 1
+#define IM23A_STATUS_DIR2 (0x00004000U) // 13 鍒濆鍖栨檭鍔ㄦ柟鍚� 2
+#define IM23A_STATUS_GNSS_LOST (0x00010000U) // 14 婊ゆ尝鍣ㄥ垽瀹� GNSS 鏁版嵁鏃犳晥
+#define IM23A_STATUS_FINIT_OK (0x00020000U) // 15 鍒濆鍖栧畬鎴愭爣蹇�
+#define IM23A_STATUS_PPS_READY (0x00040000U) // 16 鏀跺埌 PPS 淇″彿
+#define IM23A_STATUS_SYNC_READY (0x00080000U) // 17 妯″潡鏃堕棿鍚屾鎴愬姛
+#define IM23A_STATUS_GNSS_CONNECT (0x00100000U) // 18 妯″潡瑙f瀽鍒� RTK 鏁版嵁
/*******************************************************************************
* Type Definition *
@@ -64,30 +83,40 @@
/* GPRMI鏁版嵁鍖呯粨鏋� */
typedef struct
{
- HIDO_UINT32 m_u32UTCTime; // <1> UTC鏃堕棿, hhmmss.ss鏍煎紡
- HIDO_UINT16 m_u16WeekNumber; // <2> Week number, 鍛ㄦ暟
- HIDO_UINT32 m_u32TimeOfWeek; // <3> Time of week, 鍛ㄥ唴绉�, 鏍煎紡涓�(ss.mmm)
+ HIDO_UINT32 m_u32UTCTime; // <1> UTC鏃堕棿, hhmmss.ss鏍煎紡 (centisecond)
+ HIDO_UINT16 m_u16WeekNumber; // <2> 鍛ㄦ暟 (IM23A鏃犳瀛楁, 榛樿0)
+ HIDO_UINT32 m_u32TimeOfWeek; // <3> 鍛ㄥ唴绉� (IM23A鏃犳瀛楁, 榛樿0)
HIDO_DOUBLE m_dLatitude; // <4> 绾害(掳), 姝f暟涓哄寳绾�
- HIDO_DOUBLE m_dLongitude; // <5> 缁忓害(掳), 姝f暟涓鸿タ缁�
+ HIDO_DOUBLE m_dLongitude; // <5> 缁忓害(掳), 姝f暟涓轰笢缁�
HIDO_FLOAT m_fAltitude; // <6> 楂樼▼(m)
- HIDO_FLOAT m_fEastStdDev; // <7> 绾害鏍囧噯宸�(m)
- HIDO_FLOAT m_fNorthStdDev; // <8> 缁忓害鏍囧噯宸�(m)
- HIDO_FLOAT m_fAltStdDev; // <9> 楂樼▼鏍囧噯宸�(m)
- HIDO_FLOAT m_fEastVelocity; // <10> 涓滄柟鍚戜笂鐨勯�熷害(m/s)
- HIDO_FLOAT m_fNorthVelocity; // <11> 鍖楁柟鍚戜笂鐨勯�熷害(m/s)
- HIDO_FLOAT m_fUpVelocity; // <12> 澶╅《鏂瑰悜鐨勯�熷害(m/s)
- HIDO_FLOAT m_fEastVelStdDev; // <13> 姘村钩閫熷害鏍囧噯宸�(m/s)
- HIDO_FLOAT m_fNorthVelStdDev; // <14> 淇话瑙�(掳)
- HIDO_FLOAT m_fUpVelStdDev; // <15> 渚у�捐(掳)
- HIDO_FLOAT m_fRollAngle; // <16> 缈绘粴瑙�(掳)
- HIDO_FLOAT m_fPitchAngleStdDev; // <17> 淇话瑙掓爣鍑嗗樊(掳)
- HIDO_FLOAT m_fRollAngleStdDev; // <18> 渚у�捐鏍囧噯宸�(掳)
- HIDO_FLOAT m_fHeadingAngleStdDev; // <19> 缈绘粴瑙掓爣鍑嗗樊(掳)
- HIDO_FLOAT m_fBaselineDistance; // <20> 鍩虹嚎璺濈(m)
- HIDO_UINT8 m_u8SatelliteCount; // <21> 澶╃嚎鍙鍗槦鏁伴噺
- HIDO_UINT8 m_u8ReservedFlags; // <22> 杞芥尝鏁村懆鍥哄畾妯$硦鍊间釜鏁帮紝浠呭鍥哄畾瀹氭暣鎰忎箟
- HIDO_UINT8 m_u8PositionQuality; // <23> 瀹氫綅璐ㄩ噺鎸囩ず锛�0=鏃犳晥锛�1=鍗曠偣锛�2=宸垎锛�4=鍥哄畾锛�5=娴偣
+ HIDO_FLOAT m_fLatStdDev; // <7> 绾害鏍囧噯宸�(m) / 棰勭暀
+ HIDO_FLOAT m_fLonStdDev; // <8> 缁忓害鏍囧噯宸�(m) / 棰勭暀
+ HIDO_FLOAT m_fAltStdDev; // <9> 楂樼▼鏍囧噯宸�(m) / 棰勭暀
+ HIDO_FLOAT m_fEastVelocity; // <10> 涓滄柟鍚戦�熷害(m/s)
+ HIDO_FLOAT m_fNorthVelocity; // <11> 鍖楁柟鍚戦�熷害(m/s)
+ HIDO_FLOAT m_fUpVelocity; // <12> 澶╅《鏂瑰悜閫熷害(m/s)
+ HIDO_FLOAT m_fHorizontalVelStdDev; // <13> 瀹氫綅绮惧害(鏉ヨ嚜IM23A瀛楁11)
+ HIDO_FLOAT m_fHeadingAngle; // <14> 鑸悜瑙�(掳) [IM23A鍘熷涓哄姬搴︼紝宸茶浆鎹负0-360掳]
+ HIDO_FLOAT m_fPitchAngle; // <15> 淇话瑙�(掳) [IM23A鍘熷涓哄姬搴︼紝宸茶浆鎹
+ HIDO_FLOAT m_fRollAngle; // <16> 妯粴瑙�(掳) [IM23A鍘熷涓哄姬搴︼紝宸茶浆鎹
+ HIDO_FLOAT m_fHeadingAngleStdDev; // <17> 鑸悜瑙掓爣鍑嗗樊(掳) / 棰勭暀
+ HIDO_FLOAT m_fPitchAngleStdDev; // <18> 淇话瑙掓爣鍑嗗樊(掳) / 棰勭暀
+ HIDO_FLOAT m_fRollAngleStdDev; // <19> 妯粴瑙掓爣鍑嗗樊(掳) / 棰勭暀
+ HIDO_FLOAT m_fBaselineDistance; // <20> 鍩虹嚎璺濈(m) / 棰勭暀
+ HIDO_UINT8 m_u8SatelliteCount; // <21> 鍗槦鏁伴噺(濡傚崗璁己鐪佸垯杩斿洖0)
+ HIDO_UINT8 m_u8FixedAmbiguityCount; // <22> 杞芥尝鏁村懆鍥哄畾瑙傛祴閲忎釜鏁�(榛樿0)
+ HIDO_UINT8 m_u8PositionQuality; // <23> 瀹氫綅璐ㄩ噺鎸囩ず(鏉ヨ嚜鐘舵�佸瓧浣�8浣�)
HIDO_BOOL m_bValid; // 鏁版嵁鏈夋晥鏍囧織
+
+ /* IM23A鎵╁睍瀛楁 */
+ HIDO_FLOAT m_fAccelBiasX; // 鍔犻�熷害璁� X 闆跺亸
+ HIDO_FLOAT m_fAccelBiasY; // 鍔犻�熷害璁� Y 闆跺亸
+ HIDO_FLOAT m_fAccelBiasZ; // 鍔犻�熷害璁� Z 闆跺亸
+ HIDO_FLOAT m_fGyroBiasX; // 闄�铻轰华 X 闆跺亸
+ HIDO_FLOAT m_fGyroBiasY; // 闄�铻轰华 Y 闆跺亸
+ HIDO_FLOAT m_fGyroBiasZ; // 闄�铻轰华 Z 闆跺亸
+ HIDO_FLOAT m_fImuTemperature; // 浼犳劅鍣ㄦ俯搴�(掳C)
+ HIDO_UINT32 m_u32StatusFlags; // 鐘舵�佸瓧娈�(鍙傝IM23A_STATUS_xxx瀹忓畾涔�)
}ST_GPRMI;
/* GPIMU鏁版嵁鍖呯粨鏋� */
@@ -105,6 +134,22 @@
HIDO_BOOL m_bValid; // 鏁版嵁鏈夋晥鏍囧織
}ST_GPIMU;
+/* GPGIG鏁版嵁鍖呯粨鏋� (fmig鎶ユ枃锛屽寘鍚綅缃俊鎭�佽В鐘舵�佸拰宸垎榫勬湡) */
+typedef struct
+{
+ HIDO_UINT32 m_u32UTCTime; // UTC鏃堕棿
+ HIDO_DOUBLE m_dLatitude; // 绾害(掳), 姝f暟涓哄寳绾�
+ HIDO_DOUBLE m_dLongitude; // 缁忓害(掳), 姝f暟涓轰笢缁�
+ HIDO_UINT8 m_u8SatelliteCount; // 鍗槦鏁伴噺
+ HIDO_UINT8 m_u8SolutionStatus; // 瑙g姸鎬� (0=鏃犳晥, 1=鍗曠偣, 2=浼窛宸垎, 4=RTK鍥哄畾瑙�, 5=RTK娴偣瑙�)
+ HIDO_UINT8 m_u8DifferentialAge; // 宸垎榫勬湡(绉�)
+ HIDO_FLOAT m_fHRMS; // 姘村钩绮惧害HRMS
+ HIDO_FLOAT m_fVRMS; // 鍨傜洿绮惧害VRMS
+ HIDO_FLOAT m_fHDOP; // 姘村钩绮惧害鍥犲瓙
+ HIDO_FLOAT m_fVDOP; // 鍨傜洿绮惧害鍥犲瓙
+ HIDO_BOOL m_bValid; // 鏁版嵁鏈夋晥鏍囧織
+}ST_GPGIG;
+
/*******************************************************************************
* Global Function *
*******************************************************************************/
@@ -177,4 +222,37 @@
*******************************************************************************/
HIDO_INT32 GPS_GetGPIMU(ST_GPIMU *_pstGPIMU);
+/*******************************************************************************
+ * Function Name : GPS_GetCurrentENU
+ * Description : 鑾峰彇褰撳墠ENU鍧愭爣锛堢浉瀵逛簬寮�鏈哄悗绗竴涓浐瀹氳В锛�
+ * Input : _enu - 瀛樺偍ENU鍧愭爣鐨勬暟缁勬寚閽� [涓�, 鍖�, 澶
+ * Output : None
+ * Return : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触鎴栧師鐐规湭鍒濆鍖�
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�12鏈�3鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetCurrentENU(float _enu[3]);
+
+/*******************************************************************************
+ * Function Name : GPS_GetGPGIG
+ * Description : 鑾峰彇鏈�鏂扮殑GPGIG鏁版嵁锛坒mig鎶ユ枃锛屽寘鍚綅缃俊鎭�佽В鐘舵�佸拰宸垎榫勬湡锛�
+ * Input : _pstGPGIG - 瀛樺偍GPGIG鏁版嵁鐨勭粨鏋勪綋鎸囬拡
+ * Output : None
+ * Return : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触鎴栨暟鎹棤鏁�
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�12鏈�4鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetGPGIG(ST_GPGIG *_pstGPGIG);
+
+/*******************************************************************************
+ * Function Name : GPS_UploadGGA
+ * Description : 姣忕涓婁紶涓�娆GA鎶ユ枃鍒�4G锛堟嫾鎺min鍜宖mig鏁版嵁锛岀粡绾害鏉ヨ嚜fmig锛�
+ * Input : None
+ * Output : None
+ * Return : None
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�12鏈�4鏃�
+ *******************************************************************************/
+HIDO_VOID GPS_UploadGGA(HIDO_VOID);
+
#endif /* _GPS_H_ */
--
Gitblit v1.10.0