![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Mode1 Optical Validation
Diff: main.cpp
- Revision:
- 47:346a13fbdc0f
- Parent:
- 46:553559610878
- Child:
- 48:6b93b56bb22e
--- a/main.cpp Fri Apr 29 17:13:58 2022 +0000 +++ b/main.cpp Fri Apr 29 21:04:46 2022 +0000 @@ -85,10 +85,11 @@ /*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*/ // comment the three below if you want raw sensor+algo data -#define ALGO_ONLY 1 // define this if you only want algo data +//#define ALGO_ONLY 1 // define this if you only want algo data //#define RAW // define this if you want AFE+accel data, no algorithm, tested on 33.13.31 #define RAW_HZ 256 // Raw data rate //#define RAW_HZ 100 // Raw data rate +#define SPO2_CAL_RPT 1 // Comment out both of the below for Normal Algorithm Samples Format //#define EXTENDED_ALGO 1 // define this if you want the extended algo samples report format @@ -261,8 +262,11 @@ ppg[4] = (rsp[ptr+12] << 16) | (rsp[ptr+13] << 8) | (rsp[ptr+14]); ppg[5] = (rsp[ptr+15] << 16) | (rsp[ptr+16] << 8) | (rsp[ptr+17]); pc.printf("%d,%d,%d,%d,", ppg[0], ppg[1], ppg[2], ppg[3]); +#if defined(RAW) || defined(SPO2_CAL_RPT) + pc.printf("%d,%d,", ppg[4], ppg[5]); +#endif #ifdef MAXM86146_CFG -#ifdef RAW +#if defined(RAW) || defined(SPO2_CAL_RPT) pc.printf("%d,%d,", ppg[4], ppg[5]); ppg[6] = (rsp[ptr+18] << 16) | (rsp[ptr+19] << 8) | (rsp[ptr+20]); ppg[7] = (rsp[ptr+21] << 16) | (rsp[ptr+22] << 8) | (rsp[ptr+23]); @@ -542,30 +546,10 @@ #ifdef MAXREFDES103_CFG init_max20303_pmic(); #endif -#if 0 // 1.5s is ok for 33.13.12 - thread_sleep_for(250); -#endif +// 33.13.31 needs at least 1.6s +// thread_sleep_for(100); mfio = 0; wait_us(300); -#if 0 -//write SpO2 coefficients 0x00000000 FFD7FBDD 00AB61FE - cmd[0] = 0x50; cmd[1] = 0x07; cmd[2] = 0x00; - cmd[3] = 0x00; cmd[4] = 0x00; cmd[5] = 0x00; cmd[6] = 0x00; - cmd[7] = 0xFF; cmd[8] = 0xD7; cmd[9] = 0xFB; cmd[10] = 0xDD; - cmd[11] = 0x00; cmd[12] = 0xAB; cmd[13] = 0x61; cmd[14] = 0xFE; - sh_i2c.write(SH_ADDR, cmd, 15); - mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); - sh_i2c.read(SH_ADDR, rsp, 1); - mfio = 1; mfio = 0; wait_us(300); - pc.printf("Wr Spo2 Coeff %x\n\r", rsp[0]); -#endif -//1.1 rd SpO2 Coefficients - cmd[0] = 0x51; cmd[1] = 0x07; cmd[2] = 0x00; - sh_i2c.write(SH_ADDR, cmd, 3); - mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); - sh_i2c.read(SH_ADDR, rsp, 13); - mfio = 1; mfio = 0; wait_us(300); - pc.printf("%x SpO2 Coeff %2X%2X%2X%2X %2X%2X%2X%2X %2X%2X%2X%2X\n\r", rsp[0], rsp[1], rsp[2], rsp[3], rsp[4], rsp[5], rsp[6], rsp[7], rsp[8], rsp[9], rsp[10], rsp[11], rsp[12]); #ifdef REDUCE_RPT_PERIOD //Change report period to 25 cmd[0] = 0x10; cmd[1] = 0x02; cmd[2] = REDUCE_RPT_PERIOD; @@ -659,7 +643,11 @@ mfio = 1; mfio = 0; wait_us(300); pc.printf("1.2 Status: %x\n\r", rsp[0]); // 1.5 cont hr, spo2 +#ifdef SPO2_CAL_RPT + cmd[0] = 0x50; cmd[1] = 0x07; cmd[2] = 0x0A; cmd[3] = 0x06; +#else cmd[0] = 0x50; cmd[1] = 0x07; cmd[2] = 0x0A; cmd[3] = 0x00; +#endif sh_i2c.write(SH_ADDR, cmd, 4); mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); sh_i2c.read(SH_ADDR, rsp, 1); @@ -802,6 +790,25 @@ pc.printf("\n\r gpio en %x\n\r", rsp[0]); mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); #endif +#if 0 +//write SpO2 coefficients 0x00000000 FFD7FBDD 00AB61FE + cmd[0] = 0x50; cmd[1] = 0x07; cmd[2] = 0x00; + cmd[3] = 0x00; cmd[4] = 0x00; cmd[5] = 0x00; cmd[6] = 0x00; + cmd[7] = 0xFF; cmd[8] = 0xD7; cmd[9] = 0xFB; cmd[10] = 0xDD; + cmd[11] = 0x00; cmd[12] = 0xAB; cmd[13] = 0x61; cmd[14] = 0xFE; + sh_i2c.write(SH_ADDR, cmd, 15); + mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); + sh_i2c.read(SH_ADDR, rsp, 1); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("Wr Spo2 Coeff %x\n\r", rsp[0]); +#endif +//1.1 rd SpO2 Coefficients + cmd[0] = 0x51; cmd[1] = 0x07; cmd[2] = 0x00; + sh_i2c.write(SH_ADDR, cmd, 3); + mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); + sh_i2c.read(SH_ADDR, rsp, 13); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("%x SpO2 Coeff %2X%2X%2X%2X %2X%2X%2X%2X %2X%2X%2X%2X\n\r", rsp[0], rsp[1], rsp[2], rsp[3], rsp[4], rsp[5], rsp[6], rsp[7], rsp[8], rsp[9], rsp[10], rsp[11], rsp[12]); // 1.30 Enable HR, SpO2 algo #ifdef EXTENDED_ALGO