![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Mode1 Optical Validation
Diff: main.cpp
- Revision:
- 57:51feeb984d0b
- Parent:
- 56:60b61d5c8154
- Child:
- 58:33af4ccb8220
--- a/main.cpp Fri May 20 00:44:49 2022 +0000 +++ b/main.cpp Fri May 20 02:09:50 2022 +0000 @@ -96,6 +96,7 @@ //#define MAXM86161_OPT_VALIDATION_RED 1 // Optical validatation //#define MAXM86161_OPT_VALIDATION_IR 1 // Optical validatation #define MAXM86161_OPT_VALIDATION_GRN 1 // Optical validatation +//#define MAXM86161_OPT_VALIDATION_XTALK 1 // Optical validatation #define SENSOR_ONLY 1 // Comment out both of the below for Normal Algorithm Samples Format @@ -142,7 +143,7 @@ #endif #endif -#if defined(MAXM86161_OPT_VALIDATION_GRN) || defined(MAXM86161_OPT_VALIDATION_RED) || defined(MAXM86161_OPT_VALIDATION_IR) +#if defined(MAXM86161_OPT_VALIDATION_GRN) || defined(MAXM86161_OPT_VALIDATION_RED) || defined(MAXM86161_OPT_VALIDATION_IR) || defined(MAXM86161_OPT_VALIDATION_XTALK) #define TTL_SZ (PPG_SZ) #else #ifdef ALGO_ONLY @@ -1079,26 +1080,8 @@ } -void set_seq_green(void) { - char cmd[16]; - char rsp[32]; - // Set Sequence to ambient, LED1 - cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x20; cmd[3] = 0x91; - 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); - mfio = 1; mfio = 0; wait_us(300); -// pc.printf("wr afe reg Status: %x\n\r", rsp[0]); - // Set Sequence to LED4, LED3 to ambient, ambient - cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x21; cmd[3] = 0x99; - 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); - mfio = 1; mfio = 0; wait_us(300); -// pc.printf("wr afe reg Status: %x\n\r", rsp[0]); -} -void set_green_reg(void) { +void set_reg_opt_validation(void) { char cmd[16]; char rsp[32]; @@ -1147,6 +1130,7 @@ mfio = 1; mfio = 0; wait_us(300); pc.printf("wr afe reg Status: %x\n\r", rsp[0]); #endif + // always set seq3 reg to none cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x22; cmd[3] = 0x00; sh_i2c.write(SH_ADDR, cmd, 4); mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); @@ -1161,7 +1145,16 @@ mfio = 1; mfio = 0; wait_us(300); pc.printf("wr afe reg Status: %x\n\r", rsp[0]); - // Set Green, current + // configure LED Range + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x2A; cmd[3] = 0x3F; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + +#if defined(MAXM86161_OPT_VALIDATION_GRN) + // Set Green current to 1uA, 10uA or 30uA cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x23; cmd[3] = 0xA7; sh_i2c.write(SH_ADDR, cmd, 4); mfio = 1; thread_sleep_for(2); mfio = 0; wait_us(300); @@ -1184,20 +1177,91 @@ sh_i2c.read(SH_ADDR, rsp, 1); mfio = 1; mfio = 0; wait_us(300); pc.printf("wr afe reg Status: %x\n\r", rsp[0]); +#endif +#if defined(MAXM86161_OPT_VALIDATION_IR) + // Set Green current + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x23; cmd[3] = 0x0; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); - cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x2A; cmd[3] = 0x3F; + // Set IR current to 1uA, 10uA or 30uA + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x24; cmd[3] = 0xA7; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + + // Set Red current + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x25; cmd[3] = 0x0; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); +#endif + +#if defined(MAXM86161_OPT_VALIDATION_RED) + // Set Green current + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x23; cmd[3] = 0x0; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + + // Set IR current + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x24; cmd[3] = 0x0; 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); mfio = 1; mfio = 0; wait_us(300); pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + + // Set Red current to 1uA, 10uA or 30uA + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x25; cmd[3] = 0xA7; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + +#endif +#if defined(MAXM86161_OPT_VALIDATION_XTALK) + // Set Green current + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x23; cmd[3] = 0xFF; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + + // Set IR current to 1uA, 10uA or 30uA + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x24; cmd[3] = 0xFF; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); + + // Set Red current + cmd[0] = 0x40; cmd[1] = 0x00; cmd[2] = 0x25; cmd[3] = 0xFF; + 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); + mfio = 1; mfio = 0; wait_us(300); + pc.printf("wr afe reg Status: %x\n\r", rsp[0]); +#endif } /*****************************************************************************/ -// init_sh_opt Mode1 optical validation for MAXM86161 +// init_sh_opt_validation Mode1 optical validation for MAXM86161 /*****************************************************************************/ -void init_sh_opt(void) { +void init_sh_opt_validation(void) { char cmd[16]; char rsp[32]; @@ -1282,7 +1346,7 @@ pc.printf("1.32 who accel %x %x\n\r", rsp[0], rsp[1]); #endif - set_green_reg(); + set_reg_opt_validation(); mfio = 1; } @@ -1291,6 +1355,8 @@ /*****************************************************************************/ int main() { + char cmd[16]; + char rsp[32]; sh_i2c.frequency(400000); int32_t ledcnt = 0; rLED = LED_OFF; gLED = LED_ON; bLED = LED_OFF; @@ -1314,7 +1380,7 @@ #ifdef RAW init_sh_raw(); #elif defined(MAXM86161_OPT_VALIDATION_RED) || defined(MAXM86161_OPT_VALIDATION_IR) || defined(MAXM86161_OPT_VALIDATION_GRN) - init_sh_opt(); + init_sh_opt_validation(); #else init_sh_algo(); #endif @@ -1354,10 +1420,6 @@ tmr1.reset(); read_sh_fifo(); -#if defined(MAXM86161_OPT_VALIDATION_GRN) -// set_seq_green(); -#endif - if ((ledcnt++ % 50) == 0) gLED = !gLED; }