dropLin преди 3 седмици
родител
ревизия
0fd424793a
променени са 5 файла, в които са добавени 92 реда и са изтрити 109 реда
  1. 73 1
      README.md
  2. 1 1
      keil_v5/adapterBoardDriver.uvoptx
  3. 2 5
      keil_v5/adapterBoardDriver.uvprojx
  4. 1 87
      project/main.c
  5. 15 15
      radio/navdata.h

+ 73 - 1
README.md

@@ -57,8 +57,80 @@ C99标准
 
 ## 二十二、软件开发
 
+### 软件说明
+
+- 头文件调用
+```c
+#include "nmeaparser.h"
+```
+
+- 解析库初始化
+```c
+    struct nmea_parser parser[1];
+    nmea_parser_init(parser);
+    parser->report_nav_status = display_navdata; 
+```
+
+- 解析完成回调
+```
+/*
+ * Print navigation data and wait for user's keystroke
+ * @navdata:    the navigation data
+ */
+void display_navdata(struct nav_data *navdata) {
+    printf("NAVDATA:\n");
+    printf("NAVDATA.FIX_VALID = %d\n", navdata->is_fixed);
+    printf("NAVDATA.DATE = %d-%02d-%02d\n", navdata->date.year, navdata->date.month, navdata->date.day);
+    printf("NAVDATA.TIME= %02d:%02d:%02d.%03d\n", navdata->time.hour, navdata->time.minute, navdata->time.second, navdata->time.ms);
+    printf("NAVDATA.LAT = %.6f\n", navdata->lat);
+    printf("NAVDATA.LON = %.6f\n", navdata->lon);
+    printf("NAVDATA.ALT = %.2f\n", navdata->alt);
+    printf("NAVDATA.HEADING = %.2f\n", navdata->heading);
+    printf("NAVDATA.SPEED = %.2f\n", navdata->speed);
+    printf("NAVDATA.HDOP = %.1f\n", navdata->hdop);
+    printf("NAVDATA.VDOP = %.1f\n", navdata->vdop);
+    printf("NAVDATA.PDOP = %.1f\n", navdata->pdop);
+    printf("NAVDATA.NUM_SV_FIX = %d\n", navdata->sv_inuse);
+    printf("NAVDATA.NUM_SV_VIEW = %d\n", navdata->sv_inview);
+}
+```
+
+- 解析串口数据
+解析完后需把串口接收缓存清空,以免影响下次数据的解析
+```
+                for (int i = 0; i < uart3Packet.len; i++)                     // parse nmea data
+                        nmea_parser_putchar(parser, uart3Packet.packet[i]);
+                uart3Packet.isValid = false;
+                uart3Packet.len = 0;
+                memset(uart3Packet.packet, 0, sizeof(uart3Packet.packet));
+```
+
+- 解析结果说明
+```
+struct nav_data {
+        struct gnss_date date;          // 日期
+        struct gnss_time time;          // 时间
+        bool    is_fixed;               // 定位状态
+        double  lat;                    // 纬度
+        double  lon;                    // 经度 
+        float   alt;                   // 海拔
+        float   speed;                  // 速度
+        float   heading;                // 航向角度
+        float   hdop;                   // 水平精度
+        float   vdop;                   // 垂直精度因子。反映高程(海拔)的精度。
+        float   pdop;                   // 位置精度因子。反映三维位置的综合精度。
+        int     sv_inuse;               // 参与定位的卫星数量。即在计算当前位置时,实际使用了多少颗卫星的数据。
+        int     sv_inview;              // 当前可视的卫星数量。即接收机天空中视野范围内一共搜到了多少颗卫星。
+        int     sv_count;               // 卫星总数(具体含义取决于上下文,有时等同于 sv_inview,或者是用于遍历卫星数组的计数器)。
+        struct sate sates[MAX_SVID];    // 用来存储每一颗具体卫星的详细数据(如卫星ID、信噪比、仰角、方位角等)。
+};
+```
+### 注意事项
+
+
+
 ### 版本更新
-#### V04
+#### V03
 
 ## 二十三、免责说明
 1、本工程驱动软件只提供做演示项目使用,未经过大批量项目验证,客户需谨慎使用,如果使用在正式项目中引发的所有问题,本司概不负责。使用过程若发现任何问题,可及时与本司相关人员联系。

+ 1 - 1
keil_v5/adapterBoardDriver.uvoptx

@@ -10,7 +10,7 @@
     <aExt>*.s*; *.src; *.a*</aExt>
     <oExt>*.obj; *.o</oExt>
     <lExt>*.lib</lExt>
-    <tExt>*.txt; *.h; *.inc</tExt>
+    <tExt>*.txt; *.h; *.inc; *.md</tExt>
     <pExt>*.plm</pExt>
     <CppX>*.cpp</CppX>
     <nMigrate>0</nMigrate>

+ 2 - 5
keil_v5/adapterBoardDriver.uvprojx

@@ -186,6 +186,7 @@
             <RvdsVP>0</RvdsVP>
             <RvdsMve>0</RvdsMve>
             <RvdsCdeCp>0</RvdsCdeCp>
+            <nBranchProt>0</nBranchProt>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>8</StupSel>
@@ -832,6 +833,7 @@
             <RvdsVP>0</RvdsVP>
             <RvdsMve>0</RvdsMve>
             <RvdsCdeCp>0</RvdsCdeCp>
+            <nBranchProt>0</nBranchProt>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>8</StupSel>
@@ -1310,11 +1312,6 @@
     <Layers>
       <Layer>
         <LayName>&lt;Project Info&gt;</LayName>
-        <LayDesc></LayDesc>
-        <LayUrl></LayUrl>
-        <LayKeys></LayKeys>
-        <LayCat></LayCat>
-        <LayLic></LayLic>
         <LayTarg>0</LayTarg>
         <LayPrjMark>1</LayPrjMark>
       </Layer>

+ 1 - 87
project/main.c

@@ -40,92 +40,6 @@ static uint32_t rfTxAndGetAckTimeSet_ms = 3000;
 static uint32_t rfTxReTmCount = 0;
 static bool rfTxGetAckStatus = false;
 static uint8_t rfCtrlMode;
-const uint32_t rfBaseFreqList[44] = 
-{
-    /*"0"*/433000000,
-    /*"1"*/490000000,
-    /*"2"*/868000000,
-    /*"3"*/915000000,
-    /*"4"*/170000000,
-    /*"5"*/433000000,
-    /*"6"*/490000000,
-    /*"7"*/868000000,
-    /*"8"*/915000000,
-    /*"0"*/433000000,
-    /*"1"*/490000000,
-    /*"2"*/868000000,
-    /*"3"*/915000000,
-    /*"4"*/170000000,
-    /*"5"*/433000000,
-    /*"6"*/490000000,
-    /*"7"*/868000000,
-    /*"8"*/915000000,
-    /*"0"*/433000000,
-    /*"1"*/490000000,
-    /*"2"*/868000000,
-    /*"3"*/915000000,
-    /*"4"*/170000000,
-    /*"5"*/433000000,
-    /*"6"*/490000000,
-    /*"7"*/868000000,
-    /*"8"*/915000000,
-    /*"0"*/433000000,
-    /*"1"*/490000000,
-    /*"2"*/868000000,
-    /*"3"*/915000000,
-    /*"4"*/170000000,
-    /*"5"*/433000000,
-    /*"6"*/490000000,
-    /*"7"*/868000000,
-    /*"8"*/915000000,
-};
-const uint32_t rfBaudrateList[22] = 
-{
-    90, 610, 1220, 2441, 5022, 12500, 37500
-};
-const int8_t rfTxPowerList[33] = 
-{
-    -9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
-};
-static char deviceNameList[44][20] = 
-{
-    /*"0"*/"",
-    /*"1"*/"",
-    /*"2"*/"",
-    /*"3"*/"",
-    /*"4"*/"",
-    /*"5"*/"",
-    /*"6"*/"",
-    /*"7"*/"",
-    /*"8"*/"",
-    /*"0"*/"",
-    /*"1"*/"",
-    /*"2"*/"",
-    /*"3"*/"",
-    /*"4"*/"",
-    /*"5"*/"",
-    /*"6"*/"",
-    /*"7"*/"",
-    /*"8"*/"",
-    /*"0"*/"",
-    /*"1"*/"",
-    /*"2"*/"",
-    /*"3"*/"",
-    /*"4"*/"",
-    /*"5"*/"",
-    /*"6"*/"",
-    /*"7"*/"",
-    /*"8"*/"",
-    /*"0"*/"",
-    /*"1"*/"",
-    /*"2"*/"",
-    /*"3"*/"",
-    /*"4"*/"",
-    /*"5"*/"",
-    /*"6"*/"",
-    /*"7"*/"",
-    /*"8"*/"",
-};
 userParams_ts deviceInforDef = 
 {
     .deviceId = 1,
@@ -526,7 +440,7 @@ int main(void)
 
     // LCD显示屏初始化界面显示
     myDisplay_init(uiEnterCallback);
-    myDisplay_ui_firstUi_setDeviceName(deviceNameList[deviceInfor.chipType]);
+    myDisplay_ui_firstUi_setDeviceName("GNSS");
 
     //上电长想一声
     beep_longBeep();

+ 15 - 15
radio/navdata.h

@@ -66,21 +66,21 @@ struct gnss_time {
  * Navigation data
  */
 struct nav_data {
-        struct gnss_date date;
-        struct gnss_time time;
-        bool    is_fixed;
-        double  lat;
-        double  lon;
-        float   alt;
-        float   speed;
-        float   heading;
-        float   hdop;
-        float   vdop;
-        float   pdop;
-        int     sv_inuse;
-        int     sv_inview;
-        int     sv_count;
-        struct sate sates[MAX_SVID];
+        struct gnss_date date;          // 日期
+        struct gnss_time time;          // 时间
+        bool    is_fixed;               // 定位状态
+        double  lat;                    // 纬度
+        double  lon;                    // 经度 
+        float   alt;                   // 海拔
+        float   speed;                  // 速度
+        float   heading;                // 航向角度
+        float   hdop;                   // 水平精度
+        float   vdop;                   // 垂直精度因子。反映高程(海拔)的精度。
+        float   pdop;                   // 位置精度因子。反映三维位置的综合精度。
+        int     sv_inuse;               // 参与定位的卫星数量。即在计算当前位置时,实际使用了多少颗卫星的数据。
+        int     sv_inview;              // 当前可视的卫星数量。即接收机天空中视野范围内一共搜到了多少颗卫星。
+        int     sv_count;               // 卫星总数(具体含义取决于上下文,有时等同于 sv_inview,或者是用于遍历卫星数组的计数器)。
+        struct sate sates[MAX_SVID];    // 用来存储每一颗具体卫星的详细数据(如卫星ID、信噪比、仰角、方位角等)。
 };
 
 int prn2svid(int prn, int constell);    // convert @prn and @constell to SVID