优化获取血压接口
author1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Mon, 15 Jun 2026 09:48:18 +0000 (17:48 +0800)
committer1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Mon, 15 Jun 2026 09:48:18 +0000 (17:48 +0800)
code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h
code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.c
code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h
code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c

index 736c87c..ada3617 100644 (file)
@@ -40,6 +40,7 @@ extern "C" {
 
 #define PPG_ECG_BP_STATUS_MEASURING    0  /* 测量中 */
 #define PPG_ECG_BP_STATUS_WEAK_SIGNAL  1  /* ECG已停止,疑似信号弱,请重新测试 */
+#define PPG_ECG_BP_STATUS_SUCCESS      2  /* 测量已完成(首次出值) */
 
 #define PPG_ECG_AFIB_STATUS_IDLE       0  /* 未开始测量 */
 #define PPG_ECG_AFIB_STATUS_MEASURING  1  /* 测量中 */
@@ -105,7 +106,7 @@ void ppg_get_ecg_afib(uint8_t *ecg_hr, uint8_t *afib_result, uint8_t *status, ui
 
 /* 获取 ECG 血压测量结果。
  * sbp/dbp: 收缩压/舒张压,未出结果时为 0;
- * status: 0 测量中  1 ECG已停止(疑似信号弱,请重新测试)
+ * status: 0 测量中  1 ECG已停止(疑似信号弱,请重新测试)  2 测量已完成(首次出值)
  * touch_flag: 电极触摸标志 0 未触摸  1 已触摸 */
 void ppg_get_ecg_bp(int *sbp, int *dbp, uint8_t *status, uint8_t *ecg_touch_flag);
 
index 7ffcd84..3b74b0c 100644 (file)
@@ -499,6 +499,9 @@ uint8_t pah_ecg_bp_get_status(void)
     if (_state.has_time_out) {\r
         return PAH_ECG_BP_STATUS_WEAK_SIGNAL;\r
     }\r
+    if (_state.has_got_BP >= 1) {\r
+        return PAH_ECG_BP_STATUS_SUCCESS;\r
+    }\r
     return PAH_ECG_BP_STATUS_MEASURING;\r
 #else\r
     return PAH_ECG_BP_STATUS_MEASURING;\r
index 6cf4a94..cf4f81a 100644 (file)
@@ -56,6 +56,7 @@ bool get_bp_cal_data(int* cal_data);
 \r
 #define PAH_ECG_BP_STATUS_MEASURING    0  /* 测量中 */\r
 #define PAH_ECG_BP_STATUS_WEAK_SIGNAL  1  /* ECG已停止,疑似信号弱,请重新测试 */\r
+#define PAH_ECG_BP_STATUS_SUCCESS      2  /* 测量已完成(首次出值) */\r
 \r
 uint8_t pah_ecg_bp_get_status(void);\r
 void pah_ecg_bp_get_bp(int *sbp, int *dbp);\r
index 94d79d0..ec30d62 100644 (file)
@@ -1145,7 +1145,9 @@ static void pah831x_hr_timer_handler(void)
             acc_data[i]   = (int16_t)(x * 2048 / 10);\r
             acc_data[i+1] = (int16_t)(y * 2048 / 10);\r
             acc_data[i+2] = (int16_t)(z * 2048 / 10);\r
-            \r
+          \r
+            // printf("acc_data[%d][%d]:%d,acc_data[%d][%d]:%d,acc_data[%d][%d]:%d\n",j,i,acc_data[i],j,i+1,acc_data[i+1],j,i+2,acc_data[i+2]);\r
+\r
             i += 3;\r
         }\r
     #endif\r