解决指南针校准不过的问题 258/2 258/head
authorpenglei <1624952103@qq.com>
Tue, 11 Jun 2024 09:53:04 +0000 (17:53 +0800)
committerpenglei <1624952103@qq.com>
Tue, 11 Jun 2024 09:53:04 +0000 (17:53 +0800)
code/sdk/drivers/peripheral/cywee/src/board_yh601s.c
code/sdk/drivers/peripheral/mag/mmc5603/mmc5603_main.c

index cda4297..28bab83 100644 (file)
@@ -262,7 +262,7 @@ int CWM_OS_dbgPrintf(const char * format,...)
     CWM_OS_dbgOutput(InputBuff);
     return 0;
 }
-#define CWM_DATA_PATH "/system/cyweedata"
+#define CWM_DATA_PATH "/user/userdata/sport/stepcount"
 void CWM_OS_saveData(int* data, uint32_t len){
     
     FILE * fp = fopen(CWM_DATA_PATH,"wb");
index 81da814..3a3751a 100644 (file)
@@ -86,12 +86,19 @@ int mmc5603_start(void)
         * If there is no parameter saved, ReadPara() should return -1, else return 1;\r
         * If there is no para saved, pass the default value to the algorithm library\r
         */\r
-       if(ReadPara(saveData)==1){      \r
-               for(i=0;i<4;i++){\r
+       // if(ReadPara(saveData)==1){   \r
+       //      for(i=0;i<4;i++){\r
+       //              mag_hmm[i] = saveData[i]; \r
+       //      }\r
+       // }    \r
+       \r
+       if(ReadPara_infile(saveData,4)==1)\r
+       {       \r
+               for(i=0;i<4;i++)\r
+               {\r
                        mag_hmm[i] = saveData[i]; \r
                }\r
-       }       \r
-       \r
+       }\r
        /* Initial the acc, mag, and calibrated parameters \r
         * if already saved the calibrated offset and radius last time, read it out and init the magOffset and magRadius\r
         */\r
@@ -262,6 +269,47 @@ int SavePara(float *p)
        return 1;\r
 }\r
 \r
+#define MMC_DATA_PATH "/user/userdata/mmc_para"\r
+\r
+int SavePara_infile(float *p,uint32_t len)\r
+{      \r
+       FILE * fp = fopen(MMC_DATA_PATH,"wb");\r
+       int ret = 0;\r
+    if(fp==NULL)\r
+    {\r
+        PRINT("open %s failed\n",MMC_DATA_PATH);\r
+        return -1;\r
+    }\r
+\r
+       ret = fwrite(p,1,len,fp);\r
+       if(ret==0)\r
+       {\r
+               PRINT("fwrite failed %d\n",ret);\r
+               return -1;\r
+       }\r
+\r
+    fclose(fp);\r
+       return 1;\r
+}\r
+\r
+int ReadPara_infile(float *p,uint32_t len)\r
+{\r
+       FILE * fp = fopen(MMC_DATA_PATH,"rb");\r
+    if(fp==NULL)\r
+    {\r
+        PRINT("open %s failed\n",MMC_DATA_PATH);\r
+\r
+        return -1;\r
+    }\r
+    int ret =fread(p,1,len,fp);\r
+    if(ret==0)\r
+    {\r
+        PRINT("fread failed %d\n",ret);\r
+               return -1;\r
+    }\r
+    fclose(fp);\r
+       return 1;\r
+}\r
 /* Convert the sensor coordinate to right-front-up coordinate system;\r
  */\r
 void acc_coordinate_raw_to_real(int layout, float *in, float *out)\r
@@ -388,6 +436,7 @@ int mag_service_get_iAccuracy(void)
 \r
 int mmc5603_stop(void)\r
 {\r
+       SavePara_infile(saveData,4);\r
        MMC5603_Disable();\r
        return 0;\r
 }\r