Other Parts Discussed in Thread: AFE4460
I am attempting to get the dynamic range extension feature of the AFE4460 working, but I am observing a DC offset drift that I did not expect. Please let me know if this is expected or if I have the device incorrectly configured.
As a first step to implementing DRE, I have enabled Automatic LED DC cancellation. This is working as I expect. I am running a simple loop that reads a red LED phase from the FIFO and then reads register 0x9B to get the offset determined by the DC cancellation loop. When I set 100 mA LED current, 250 kOhm Rf in the TIA, the IOFFDAC_LED_DC_READ returns a value in the 170-200 range, depending on my placement of my finger on the sensor. If I scale the LED current or Rf, the value I see in the IOFFDAC_LED_DC_READ scales accordingly, so this is all as I expect.
For the next step, I enable the DRE with a dynamic range setting of 32x (5 bits). When I place my finger on the sensor, I see the same 170-200 range of reading in IOFFDAC_LED_DC_READ. I also see the reading from the FIFO in the 1,000,000 - 1,200,000 range. If I set 64x DRE, this FIFO ADC value cuts in half as I would expect, and if I reduce the dynamic range, I see increased values out of the FIFO, saturating at 2^21. So the DRE dynamic range is changing as I would expect.
Here is my problem, however: I am finding that if I repeatedly place my finger on the sensor and then remove it, the values with both my finger on and finger off drift (although the difference between finger on reading and finger off reading remains approximately constant.) It appears that a DC offset is being introduced into my ADC readings. If my finger is either on or off, there does not appear to be much drift, but if I set and then remove my finger, driving the photodiode signal with alternating high and low values, this usually introduces a DC offset.
Is this expected behavior? Is there a technique or setting that I can use to remove the DC offset?
Thanks in advance for your help,