优化272心率突然掉0的情况 3051/1 3051/head 3053/target/1 3056/target/1
authorpenglei <1624952103@qq.com>
Thu, 8 Jan 2026 08:39:24 +0000 (16:39 +0800)
committerpenglei <1624952103@qq.com>
Thu, 8 Jan 2026 08:39:24 +0000 (16:39 +0800)
code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c

index 3a28e43..3ae5fc6 100644 (file)
@@ -372,14 +372,35 @@ uint16_t hx3695_read_fifo_data(ppg_sensor_data_t *ppg_sensor_dat)
     data_len_h = hx3695_read_reg(0x21);\r
     data_len_l = hx3695_read_reg(0x20);\r
     fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l);\r
+    // printf("111 fifo data length %d %d %d\n", data_len_h, data_len_l, fifo_data_length);\r
+               // DEBUG_PRINTF("fifo_data_length: %d\r\n", fifo_data_length);\r
 \r
-               DEBUG_PRINTF("fifo_data_length: %d\r\n", fifo_data_length);\r
-       \r
-               if (fifo_data_length>FIFO_DATA_LENGTH)\r
-               {\r
-                               fifo_data_length = FIFO_DATA_LENGTH;\r
-               }\r
-               \r
+    int threshold = 0;\r
+\r
+    if(work_mode_flag == WEAR_MODE)\r
+    {\r
+        threshold = (ppg_sensor_dat->led_activated)*(ppg_sensor_dat->fs/5)*40;\r
+    }\r
+    else\r
+    {\r
+        threshold = (ppg_sensor_dat->led_activated)*(ppg_sensor_dat->fs/5)*4;\r
+    }\r
+\r
+    // printf("threshold : %d\n",threshold);\r
+\r
+       if(fifo_data_length > threshold)\r
+       {\r
+               data_len_h = hx3695_read_reg(0x21);\r
+       data_len_l = hx3695_read_reg(0x20);\r
+       fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l);\r
+               // printf("222 fifo data length again %d %d %d\n", data_len_h, data_len_l, fifo_data_length);\r
+       }\r
+\r
+    if (fifo_data_length>FIFO_DATA_LENGTH)\r
+    {\r
+            fifo_data_length = FIFO_DATA_LENGTH;\r
+    }\r
+    \r
     if(fifo_data_length<2*ppg_sensor_dat->led_activated)\r
     {\r
         return 0;\r