Reading data register from ADPD4100


I am using EVAL-ADPD4100Z-PPG evaluation board which I am interfacing with other microcontroller IC.
In the circuit I have set
IOVDD = 3.3V
Vboost = 4.2V
AVDD_1.8V = 1.8V

I am using the following configuration commands. Using these commands I could see the LEDs are getting ON.

Address Data
0x000F 0x8000 # RESET
0x0010 0x0000 # Stanby Mode
0x000F 0x0006 # LFO Internal
0x00B4 0x0000 # IOVDD 3.3V
0x0009 0x0080 # 32MHz HF Clock
0x000B 0x02B2 # 1Mhz Low Freq Clock
0x000C 0x0012 # 32KHz Low Freq Calibration
0x000D 0x2710 # 100Hz Sampling frequency Time Slot frequency
0x000F 0x0006 # 1MHz LFO Internal
0x0020 0x0004 # IN1 to VC1 connection
0x0021 0x0000 # All Inputs Single Ended

0x0100 0x0000 # TimeSlot Configuration Timeslot A
0x0101 0x40DA # Timeslot Path = TIA+BPF+INT+ADC
0x0102 0x0001 # IN1 to CH1 others Disconnected
0x0103 0x5002 # Precondition Inputs to TIA_ref
0x0104 0x03C0 # Rf = 200K Rint = 400k
0x0105 0x0F0F # Current Setting on LED 2A, 1A
0x0106 0x1919 # Current Setting on LED 3B, 4B
0x0107 0x010A # 10 Pulses
0x0108 0x0000 # Period set by automatic period of continuous connect mode
0x0109 0x0210 # LED width:2us, Led offset: 16us
0x010A 0x0003 # Integration width: 3us
0x010B 0x0210 # Integrator offset = 16.5us - ADJUST FINE OFFSET
0x010C 0x0001 # no modulation
0x0110 0x0003 # signal size 3bytes
0x010D 0x0099 # -++- pattern
0x0112 0x0000 # no decimation
0x0007 0x0001 # Time Slot A interrupt autoclear enable
0x0010 0x0001 # SET OPMODE: GO MODE

For reading the Data, I am reading 'Interrupt Status and Control Register' '0x0001' (INT_DATA_A bit) once it is set, I am reading the Data Register directly using the 'Output Data Register' 0x0030 and 0x0031. Sampling frequency is 100Hz.

Before reading I am making 'HOLD_REGS_A' bit to '1' and after reading the Data Register I am making the 'HOLD_REGS_A' bit '0'.

But the data which I am receiving does not look like a PPG Signal.

Please let me know where I am going wrong.

Thank you.

  • Hi there,

    Your LED current setting in registers 0x0105 and 0x0106 needs to be revised. Either LED1A/2A/3A/4A or LED1B/2B/3B/4B, not the mixture of group A and group B, can work at the same time. Your LED current can be too high (LED1A  0x0F or 23 mA, LED2A 0x0F or 23 mA, 46 mA in total) and the TIA is saturated, depending on where you tried on your body.

    You might want to start from low LED current (such as 0x0202 for register 0x0105 and 0x0002 for register 0x0106 for 9 mA in total, or even lower such as 0 current for LED3A with 0x0000 for register 0x0106) on finger to make sure your kit works as expected.


    Glen B.