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.

ADS122C04: ADC Count Value Issue

Part Number: ADS122C04
Other Parts Discussed in Thread: MSP430FR2311,

Hello All,

I'm using ADS122C04 24-bit ADC with MSP430FR2311. 

The issue is I'm not getting ADC Count Properly. 

I have a configure ADS122C04 through MSP430FR2311 Micontroller on I2C.

following ADS122C04's Register configuration I have done:

a. Register 0 (0x40) = 0x81;

b. Register 1 (0x44) = 0x00;

c. Register 2 (0x48) = 0x00;

d. Regoster 3 (0x4C) = 0x00;

Can anyone help me to figure out this problem ??

Please be needful.

Regards,

Kelvin

  • Hi Kelvin,

    When you say 'ADC Count' are you referring to the actual conversion result?  Or are you talking about the conversion counter that gives the number associated with which conversion has recently completed?

    If it is the conversion counter, then this must be enabled first  in Register 2.  Also, because you are using single-shot conversion mode, you must issue a START command each time you want a conversion to take place.

    Best regards,

    Bob B

  • Hi Bob,

    I'm taking about Actual conversation result not conversation counter.
    Also, sending every time start command and waiting for falling edge of the DRDY pin.

    Regards,
    Kelvin
  • Hi Kelvin,

    Have you read back the register settings and verified that this communication is working properly?  As to the actual conversion result, what is your input voltage?  And what value is being returned?  Do you have scope or logic analyzer shots of the communication that you can share?

    Best regards,

    Bob B

  • Hi Bob,

    I have checked register setting and communication working properly.
    I applied 1.1v to AIN0 Channel.
    I got Three set of values [127,255,255] for single channel input voltage.
    Please let me suggest the value I m getting is correct or not?
    And also help me how to convert its equivalent 24 bit value ???
    Actually, I gone through the Topic No. 8.5.2 from the datasheet but I'm not clearly understand. Can you give me one example for same ?? how to convert this raw data to the original Data.


    Regards,
    Kelvin

  • Hi Kelvin,

    Based on your last post regarding the 'checked register setting' I will assume that you actually read back the registers after writing to them as verification.  I will also assume that you have issued the START command to take a conversion and you have waited until the conversion has completed.  The values you show as decimal are easier to interpret as hex. 127 is 0x7F and 255 is 0xFF.  Assembling the bytes in order you get 0x7FFFFF which is positive full-scale.  When capturing the data returned you need to store in a signed 32-bit integer.

    long DataByte;

    //transfer MSB of data 127 (0x7F)

    DataByte = MSB;

    //transfer MID of data 255 (0xFF)

    DataByte = (DataByte << 8)  |  MID;

    //transfer LSB of data 255 (0xFF)

    DataByte = (DataByte << 8)  |  LSB;

    When you connect single ended (where your signal source is connected to AIN0 = signal (+) (or 1.1V) and AVSS (AGND) is connected to signal ( -) you will only see positive codes in the range of 0x000000 to 0x7FFFFF.  The value of 1 code is given in equation 8 of the ADS122C04 datasheet.  The internal reference was selected which is 2.048V at a gain of 1, so the value of 1 code (LSB) is equal to 2.048V / 2^23.  To convert the value of codes to volts you would multiply the number of codes times the value of 1 code.  In this example you would take:

    DataByte * 2.048V / 2^23

    Which ends up being 2.048V, so for some reason the input is being seen as equal to or greater than 2.048V.  Most likely you have a connection issue.  Make sure your signal (-) is connected to AGND on the ADS122C04.

    Your expected code would be somewhere near 1.1V / 2.048V * 2^23.

    Best regards,

    Bob B  

  • Hi Bob,

    Thanks for Providing good Enough Information.
    I got expected output by selecting Analog Supply AVDD and AVSS as a Reference Voltage.

    Regards,
    Kelvin Kalariya