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.

ADS7044: Sample result

Part Number: ADS7044

Hi,

I try to read data from the IC but I never get the expected value.

I supply the device with 3,1V and both Inputs have the same voltage 1,5V.

The clock is around 1,1MHz and I thought that I will get a value about "0", calibration I do after every measurement.

The master send 16 clock cycles and if I get  the result 0x7EBC -> 0111 1110 1011 1100.

What is my mistake ?

regards

  • Hi Christoph,

    I am looking into this and will get back to you. What is the value of each input (AINP and AINM)?
  • Christoph,

    Disregard my question, I missed it in your initial post.
  • Hi Christoph,

    To help me narrow down the solution, I have several questions for you:

    - Is the result you are seeing (0x7EBC) the first result after power-up? If you perform multiple conversions, is the result consistent (always 0x7EBC)?
    - Are you shorting the inputs together when providing both with 1.5V?
    - You mention performing a calibration after every measurement, are you providing the full 32 clocks when performing the calibration?

    If possible, can you please capture the CS, SCLK and SDO waveforms using an oscilloscope and send it to me?
  • Pink : #CS, Green : AINP, Yellow AINM, you find the rms-value at the bottom of the picture

    Pink : #CS, Blue : CLK, Yellow : SDO, this are 2 screenshots with the values you see at the first picture.

    Hi Evan,

    attached you will find the waveforms.

    After the 16 clocks for the measurement I do the next 16 clocks to calibrate the AD.

    I didn't shorted the inputs, but the voltage is nearly the same, I didn't expected the value I got.

    I get the same result if I do the calibration after power up, only one time.

    regards Christoph

  • Hi Christoph,

    Thank you for sending the scope captures. From what I see you are getting the correct output based on your inputs and SPI configuration. Here's the process I used to arrive that that conclusion:

    1) Voltage Input:

    AINP = 1.5V

    AINM = 1.56

    Input = AINP - AINM = 1.5 - 1.56 = -60mV

    2) LSB to Voltage Conversion:

    ADS7044 LSB = FSR/(2^N) = (3.1*2)/(2^12) = 6.2/4096 = 1.51 mV/LSB

    3) Expected Decimal/Binary Output:

    Input/LSB = -60/1.51 = -40 LSB

    In binary (2's compliment) = 1111 1101 1000

    The datasheet specifies that the first two bits are zeros and should be ignored, but this depends on the SPI configuration. In your case you are using CPOL=1 (SCLK is idle high). With this configuration the first falling edge of your clock is actually clocking in the second 0. Thus the first 1 that you receive is your first bit of data, and the last three bits can all be ignored (they are not data).

    For the first data capture image that you sent, your clocked data is:

    0111 1110 1100 0000

    Applying what was previously stated, the actual data bits are:

    x111 1110 1100 0xxx = 1111 1101 1000

    Comparing this to the expected output calculated above, you can see that you received the expected output. If you calculate the output from the image, it comes out to -41 LSB which is reasonable considering the resolution of the measured values of 1.5V and 1.56V from your oscilloscope.

    To confirm all of this, I recommend two tests:

    1) Short both of your inputs to the same voltage (can be ground or a single 1.5V input signal). Your output should now be mid code, or all 0's.

    2) Configure your MCU with the SPI polarity of 0. Now the output should behave as described in the datasheet, with the first two bits being zeros and your first data bit occurring at the third rising edge of SCLK.

  • Hi Evan,
    thanks a lot for your hints, I try both tests.
    Now I got the etimated values over the complete range.

    Kind regards,
    Christoph
  • Hi Christoph,

    I'm happy to have helped. Please reach out if there is anything else we can do.