This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS8344: Reading of a channel is affected by previously read channels (Ghosting?)

Part Number: ADS8344

Hello there,

I would appreciate if someone could help me with an issue I have. I am using ADS8344 to sense several signals from photodiodes. The signal is coming from a standard photodiode amplifier based on an OPAMP. At the OPAMP output I have a voltage divider (1000 and 220 Ohm) and a capacitor (10 nF) to ground for filtering. I use ADC in single-ended scenario and read-out channels one by one in a for loop. ADC is powered by 3.3 V and receives 2.5 V reference from MAX6102EUR+T IC.

The issue is that all successive channels are affected by signal of the previously read ones. For example if I read channel 1 then 2 then 3 and then 4 I see that output of channel 2 to some extend depends on the signal I have on channel 1. Channel 3 is affected by signal of channel 2 etc. If I flip the read out sequence and read channel 4, then 3, 2 and 1, then channel 3 is affected by 4 and channel 2 is affected by 3 in turn.

I have googled for the problem and found that the reason is probably a ghosting effect that appears due to the fact that ADS8344 muxes 8 channels to 1 converter and there is 25pF capacitor in this converter that apparently does not have enough time to discharge. To solve this I tried to decrease SPI frequency and to introduce a delay after read outs, but it did not help. The only way I could remove (but not fully) this effect is to read out the same channel 10 times in a row. If I read it less than 10 times i see the ghosting. I think I am missing something here and would appreciate any help.

Another small and not related question is: this is 16 bit ADC, but the maximum readout counts that I get is 32 800 so 15 bit. I did not do research on this so far, but what am I doing wrong here? Slight smile

Many thanks for your help!

Rinat.

  • Hi Rinat!

    Welcome to our e2e Forum!  Some call it ghosting, we tend to refer to it as memory effect.  Can you send a schematic showing the inputs up to the ADS8344 and also how you have the COM pin connected?  My assumption is that you are commanding SE inputs and not differential, is that correct?  Have you looked over 'Driving SAR ADC's' in our TI Precision ADC Lab training series?  Please take a look at '8.1 Introduction to SAR ADC front-end component selection' which can be found here.

  • Hello :) Thank you for your reply.

    This is how we are connecting the ADC:

     

    The op-amp that we are using is ADA4062

  • Thank you for the additional detail Rinat! 

    Can you try a little experiment for us and see if you can tap off one of your inputs through a unity gain buffer and small RC.  Feed that into one of your unused channels and see if you get better conversion results.  Something along the lines of this:

  • Hi Tom,

    Thank you for fast replies! We have tried the unity gain buffer solution and it seems to work!
    Could I still bother you with the second small question? ADS8344 is a 16 bit converter, but the maximum amount of counts that I get when read channels is 32 768 so 15 bit. I guess that I am doing somethin wrong in low level code for reading out the ADC but I cant figure out what it is. May be you have an idea where it might come from and point me in a direction I have to look?

    A big thank you for your help! Much appreciated.

    Best,

    Rinat.

  • Hi Rinat,

    Happy to hear that the buffer is working for you!  For the 32768 MAX thingy, are you accounting for the 'null' bit on DOUT?  Figures 5 and 6 show the difference between internal and external clock mode.  After the control byte is sent, there is one 'zero' shifted out before the MSB.  If all of your conversion results seem to be half of the expected result, that would be the most likely cause.