Post Go back to editing

Ad7699 unipolar mode working abnormally


   I am using  ad7699 adc . I want to acquire data from IN0 channel in unipolar mode with respect to COM =gnd. I am doing it in the RAC ( read after convertion process. My SPI is working in 3MBPS speed

I have set CFG register = 0x3879 

My program proces

  • Set CNV low.
  • Write the CFG register and receive dummy data
  • Set CNV high
  • Have a tconv delay
  • Repeat the process two times and get dummy data then again Set CNV low
  • Write CFG register and receive real data
  • Set CNV high

I have also tried to set CFG register = ( 0x 3879<<2 i: e 0xe1e4)

As it is written in the datasheet the CFG is updated in first 14 cycle 

I need a guide where  I am going wrong in the process as I am getting abnormal data ( like garbage ) . May I know the right process 


  • Hi,

    We will look into this, I'll contact the product owner and get back to you.



  • Apta,

    Based on your original setup I would have suggested that you left shift the data to align the MSB of the configuration with the MSB of the transmission but I see you've already done this.   I would leave the communication configured in this way.

    Next I would modify your sequence slightly to see if we can't correct the problem.



    Please do send visual confirmation of the timing you're implementing as this will make debug easier.

    In your schematic I'm sure this is just coincidence but the CNV Connection to CS_1 appears to be floating.

    Also you mentioned selecting COM to ground by COM is left floating.   Connect pin 10 to ground to see if this corrects your problem.

    Finally, before you start your data capture loop please make sure the external voltage reference has had time to settle to it's final value.  You may need to add an external buffer before the 10uF to deal with the reference load but that will be dependent upon the impedance looking back into your 5V supply.   If it is fairly low it may not be necessary.

    To verify the configuration portion you may try a sequence with the RB enabled (RB =0) and then extend the number of clocks transmitted by 16 to see if the part returns your desired configuration.  If so you at least know the interface is working correctly and then we can address the remaining performance problems by examining the remainder of your circuit.

    In future updates if the problem is not alleviated please also indicate how you are driving IN0-IN7during testing and what the drive circuit looks like


  • Skowalik,

    Thanks a lot. I have rectified my process according to your recommendation . 

    Now I have configured my adc ic .

    CFG = (0x3C78 <<2)

    * As com is floating  so, I have referenced all channels with respect to GND.

    Now I am reading back the CFG  & I got the correct value back.

    But still the input analog voltage is show abnormal values ,even if I have connected the input signal with gnd still I am getting inappropriate and garbage adc codes.

    Please throw some light on it.

  • Apta,

    The next step is to look at how you are connecting things to the ADC and the amount of settling time between conversions.   Can you please share any additional circuits you are using to condition the signal(s) you are attempting to measure.   In fact if you can share your input stimulus and the data for the response that may also shed some light on things. 

    One thing you can try (If it doesn't exist in your setup already) is adding a series 20Ohms between your source and IN0 and then a shunt capacitor of 2.7nF from IN0 to ground.   This will create an input filter that will help manage any charge kick from the ADC as well as limit source noise.  


  • Hello,

    I resoled the issue ,the issue was in the filters circuit before the adc aquisition chhanel, great to have your support and guidance special thanks to @skowalik.