Post Go back to editing

ADPD105 TIA ADC mode ,ADC output code rang is small

I have an EVAL-ADPD105Z-GEN kit with me.

I would like to use the TIA ADC MODE of the ADPD105 with the input to the trans-impedance amplifier as a sine wave.


The connections that I made are:

--> Function generator positive to PD2 pin with a 51 kilo ohm resistor in series to prevent the TIA from saturating

--> Function generator negative to GND

--> I am giving a 1.8V peak-to-peak sine wave as the function generator output.

--> To bypass the band-pass filter, I am using the ADPD OpenMarket Wavetool to write the values 0xAE65 to the register 0x43 and 0x45 (register values have been taken according to the datasheet's specifications).

--> I am also writing 0x1CB6 to the registers 0x42 and 0x44 in order to configure the integrator as an inverting buffer TIA      I would using the 0.9V   VBIAS setting (0x42[5:4] = 0x44[5:4] = 0x2)


ADC output  is  8100-8300 codes,why 1.8V peak-to-peak sine wave input, but output is small rang,can i config the TIA to get 0-16384 codes?

  • Hello,

    It's possible that you have register 0x14 setup in such a way that the device is not configured to bring PD2 to the output. I'd recommend setting bits [11:4] = 0x55 so that PD2 is brought out on channel 2 for both timeslots A and B. You should also look at how you have the ADC offset registers set (0x18-0x1B for timeslot A, and 0x1E-0x21 for timeslot B). The ADC offset for the channel of interest should be set to 0x0000 in order to center the output of the ADC at mid-scale for zero input current. For the register 0x14 setting I recommended above, set register 0x19 and 0x1F = 0x0000. Also, in the data view of the wavetool, make sure that you are not summing all the outputs so that you can see the output of channel 2 by itself.

    Regarding registers 0x42 and 0x44, set them to 0x1CA6 in order to set the TIA_VREF = 0.9V. Having it set to 0x1CB6, as you mentioned, will set the TIA_VREF=1.3V. This wouldn't cause the issue you're seeing, however, you should set it to 0.9V in order to center the output for a bidirectional input signal.



  • hi,Buckley

    i think this is possible LED WIDTH and  AFE WIDTH set .  when i set AFE WIDTH = LED WIDTH+1us,adc code is 8100-8300,when i set AFE WIDTH= LED WIDTH, adc code is 7800-8500。can not reach 0-16384.    i want SLOTA collect ecg signal in TIA mode use PD2,but in TIA mode ,how i set the AFE WIDTH and AFE OFFSET?  and slotb collect ppg signal in normal mode use PD1。slotb is correct.

  • Hello,

    The ADPD device doesn't really care what the AFE_WIDTH and LED_WIDTH are set to in TIA ADC mode if you're just measuring an ECG signal since an integration is not occurring and the LED is not being used.  Can you please send me a register dump that I can look at? That will probably help me identify your problem.



  • hi,Buckley

    thanks!  when i change the AFE OFFSET in TIA mode ,adc code is changed, this set ,adc code can reach 7800-8900.  this is my register set.

    14--- 554





    30--- 319

    31--- 118

    34---   0

    35--- 320

    36--- 118

    37---   0


    54---  20

    58---   0

    5a---   0




    55--- f40

    5a---   0




     0---  40

     1--- 1bf

     2---   4

     6---   0

     8--- 516

     9---  c8

     a--- 7d0

     b---   1

     d---   0

     f---   0

    10---   2

    11---  21

    38---   0


    4d---  85

    4e---  60


    50---   0

    5f---   0

    12---  50

    15---   0

    18---   0

    19---   0

    1a---   0

    1b---   0

    1e---   0

    1f---   0

    20---   0

    21---   0

  • Hello,

    With register 0x14[1:0] =0 it puts the device into a different mode in timeslot A where the input switch is modulated based on the AFE timing. In this mode, the AFE timing would need to be precise in order for the ADC to sample the signal correctly in TIA_ADC mode. This isn't what you want to do here. Since you're just trying to sample whatever is at the input in an asynchronous manner, then you want to configure this register so that the switch to the input is always closed. It's not intuitively obvious from the register description, but you want to set register 0x14 up by selecting one of the LEDs for that timeslot. You should select one that you're not using on the board so it doesn't draw any actual current. You can also disable that LED for timeslot A using register 0x34[8]. It looks like you're using LED1 for your PPG measurement in timeslot B. So just set register 0x14[1:0] = 2 to select LED2. As I said, this actually does more than just select LED2. It also ensures that the input switch to the input pin stays connected so that you can asynchronously sample the input when you're in TIA_ADC mode.