ADPD105 Low Power Mode

Dear ADIer

My customer is designing ADPD105 in her smart band project. And it works well now.

And now she is working on on lowering the ADC read from 100Hz to 25Hz to minimize current consumption.

0x12 register setting is for lowering the sampling frequency from 800Hz to 200Hz.

And 0x31, 0x36 register setting is for reducing # of pulse from 6 to 3.

When register changing, there is a problem that the value of IR data (Slot A), Green data (Slot B) is correctly displayed once and the next time is read as zero. After that, this happened periodically.

Would you kindly let me know the way to reduce current consumption..


const struct HRS5030_regval_list HRS5030_config_Shinoh[] = {


    {0x00, 0x80FF}, //clear the FIFO content, Clear the    INT

    {0x01, 0x00FF}, //disable FIFO INT

    {0x02, 0x0000}, //PAD_IO_COntrol GPIO0 is disabled in no matter what INT configuration is

    {0x06, 0x0000}, //FIFO_Length


//    {0x11, 0x1131},// OP_Mode_Cfg //D174 Setting: Block Sum, New Data if FIFO is not full , 

    {0x11, 0x1021},// OP_Mode_Cfg //D174 Setting: Block Sum, New Data if FIFO is not full , 


    {0x12, 0x000A},// sampling frequency 800hz

//    {0x12, 0x0050},// sampling frequency 200Hz, SE

//    {0x12, 0x00A0},// sampling frequency 50Hz, SE

//    {0x12, 0x0140},// sampling frequency 25Hz, SE


    {0x14, 0x0559},// HRS5040 Slot A <- LEDX1 (IR), Slot B<- LEDX2(Green) //Mr.Yun is recommendation 0x0552

//    {0x14, 0x0009},// ¤·¤·PD floating...HRS5040 Slot A <- LEDX1 (IR), Slot B<- LEDX2(Green) //Mr.Yun is recommendation 0x0552

    {0x15, 0x0330},// sample sum average to 8 for both slot

//    {0x15, 0x0550},// sample sum average to 8->32 for both slot


    //    {0x18, 0x3FFF},//SlotA PD1 offset .. don't care

    //    {0x19, 0x3FFF},//SlotA PD2.. don't care

    {0x1A, 0x1FFF},//SlotA PD3

    {0x1B, 0x1FFF},//SlotA PD4


    //    {0x1E, 0x3FFF},//SlotB PD1.. don't care

    //    {0x1F, 0x3FFF},//SlotB PD2.. don't care

    {0x20, 0x1FFF},//SlotB PD3

    {0x21, 0x1FFF},//SlotB PD4



    {0x22, 0x303F}, // LEDX3 LED current strength, slew rate and coarse setting

    {0x23, 0x303F}, // LEDX1, IR

    {0x24, 0x303F}, // LEDX2, Green


    {0x25, 0x02CC},// ILed fine 


    {0x30, 0x0319}, // SlotA LED Pulse width and offset, width 0x03=3us, offset 0x19 =25 usec

    {0x31, 0x0813}, // LED1 SlotA pulse count =8 , Pulse period  =19 usec 

//    {0x31, 0x0613}, // LED1 SlotA pulse count =6 , Pulse period  =19 usec 

//    {0x31, 0x0113}, // LED1 SlotA pulse count =1 , Pulse period  =19 usec 

    {0x34, 0x0200}, // LED control // Disable the Green LED in SlotB for the start up.

//    {0x34, 0x0300}, // LED control // Disable IR LED in SlotB for the test.



  {0x35, 0x0319}, // SlotB LED pulse width[12:8]=3us and offset // See 0x3B

//    {0x35, 0x0619}, // SlotB LED pulse width[12:8]=6us and offset // See 0x3B

//    {0x35, 0x0819}, // SlotB LED pulse width[12:8]=8us and offset // See 0x3B

//    {0x35, 0x0919}, // SlotB LED pulse width[12:8]=9us and offset // See 0x3B //////////NG

//    {0x35, 0x0A19}, // SlotB LED pulse width[12:8]=10us and offset // See 0x3B //////////NG


//        {0x36, 0x0613}, // LED2 SlotB pulse count =6, Pulse period  =19 usec 

    {0x36, 0x0813}, // LED2 SlotB pulse count =8, Pulse period  =19 usec 

//    {0x36, 0x0C13}, // LED2 SlotB pulse count =12, Pulse period  =19 use

//    {0x36, 0x0F13}, // LED2 SlotB pulse count =16, Pulse period  =19 usec

//    {0x36, 0x1813}, // LED2 SlotB pulse count =24, Pulse period  =19 usec

//    {0x36, 0x2013}, // LED2 SlotB pulse count =32, Pulse period  =19 usec

//    {0x36, 0x2813}, // LED2 SlotB pulse count =40, Pulse period  =19 usec



    {0x39, 0x21F0}, // SlotA AFE Window width and offset

    {0x3B, 0x21F0}, // SlotB AFE Window width[15:11]=4us and offset //See 0x35. !!!Add 1us to the LED pulse width!!!

//    {0x3B, 0x39F0}, // SlotB AFE Window width[15:11]=7us  and offset

//    {0x3B, 0x49F0}, // SlotB AFE Window width[15:11]=9us  and offset

//    {0x3B, 0x51F0}, // SlotB AFE Window width[15:11]=10us  and offset ///////////NG

//    {0x3B, 0x59F0}, // SlotB AFE Window width[15:11]=11us  and offset ///////////NG


    {0x3C, 0x3006}, // V-Cathode= 1.3V, AFE channels power down selct =  keeps all power on

//    {0x42, 0x1C37}, // SlotA AFE setting for  normal mode, TIA Gain =25K ohm, D174 setting

    {0x42, 0x1C36}, // SlotA AFE setting for  normal mode, TIA Gain =50K ohm, D174 setting

//    {0x42, 0x1C31}, // SlotA AFE setting for the normal mode, TIA Gain =100K ohm

//    {0x42, 0x1C34}, // SlotA AFE setting for the normal mode, TIA Gain =200K ohm

    {0x43, 0xADA5}, // SlotA  in analog full path mode

//    {0x44, 0x1C34}, // Slot B AFE Setting for normal mode, TIA Gain = 200K ohm, D174 setting

    {0x44, 0x1C36}, // Slot B AFE Setting for normal mode, TIA Gain = 200K ohm, D174 setting

    {0x45, 0xADA5},// SlotB in anlog full path mode



    {0x4B, 0x2699}, // CLOCK 32K    adjust

    {0x4D, 0x426A}, // Clock 32M adjust

    {0x4E, 0x0040}, // ADC Timing

    {0x4F, 0x20D0}, // GPIO Input control


    {0x54, 0x0020}, // Photo Diode setting


    {0x58, 0x0000}, // Slot operation is set to normal mode, Digital Integration mode is disble

    {0x5A, 0x0000}, // double sample pair mode

    {0x5F, 0x0000}, // Allow to update register and disable the 32M    clock

    {0xff, 0xff},





  • Hello,

    When the register settings are changed, make sure to write 0x0001 to register 0x10 before making the configuration changes to put the device into "program mode". Then, once the register writes are complete, write 0x0002 into register 0x10 to put the device back into "run mode". It seems like it's possible that register writes are occuring asynchronously and then you are getting intermittent failures immediatley following the writes.