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.

ADS1259: ADS1259 doesn't produce zero code output

Part Number: ADS1259
Other Parts Discussed in Thread: OPA376, TINA-TI

ADS1259 doesn't produce zero code output. As datasheet says, if (AINP - AINN) == 0, IDEAL OUTPUT CODE is 000000h. I connect AINP and AINN to GND, but get almost 0xff 0xff in MSB and MID. Vref is 2.5 V. configuration registers is:
10100001
01010000
01000111
00000000
00000000
00000000
00000000
00000000
01000000
is this does produced by GAIN and OFFSET errors? it's too much.ADS1259.pdf

  • Hi Pavel,

    Welcome to the TI E2E Forums!

    The ideal 0 code output is just that...ideal. It doesn't account for any offset errors as you mentioned.

    Keep in mind that the ADS1259's output code is in two's compliment format, so 0xFFFFFF would correspond to "-1" in decimal. Also the LSB size of a 24-bit converter is REALLY small (for the ADS1259 with the 2.5V internal reference, the LSB size is 2*Vref / 2^24 = 298 nV / code).

     

    What values do you see for the LSB?
    Chances are the offset you are observing is around the +/-40uV typical ADC offset as specified by the ADS1259's datasheet. Performing an offset calibration will significantly reduce the offset and get you closer to the ideal output code; however, with a differential ADC that is capable of measuring negative voltages your software will always need to be able to handle negative values for very small input voltages around 0V.

     

    Best regards,
    Chris

  • Thanks a lot for fast reply. It's much clearer now. i written function which convert value from adc as follow: func(0x7fffff) -> 8388607, func(0xffffff) -> -1, func(0x0) -> 0, func(0x800000) -> -8388608. lsb is 2.5/(2^23-1). When i connect a AINP ans AINN to GND i get mean value is -0.00031636482115048476 V and standard deviation is 3.08254161480825e-06. I think it is normal result. But, when i connect AINP to GND and AINN to AVDD/AVSS i get -0.45/0.45. I expect get -2.5/2.5 or  -1.25/1.25, isn't it?

  • Hi Pavel,

    FYI: If you concatenate the ADC data into a 32-bit signed integer, then another way of handling the 2's compliment values is to simply sign-extend the 24-bit ADC code into the 32-bit signed data type. So for example, any output code where the most significant bit is set to 1 ("1xxxxxxx xxxxxxxx xxxxxxxx" in binary), would get OR'ed with "0xFF000000" to make the 32-bit number a negative number with the same value.

    pavel panteluk said:
    But, when i connect AINP to GND and AINN to AVDD/AVSS i get -0.45/0.45. I expect get -2.5/2.5 or  -1.25/1.25, isn't it?

    I'm not quite sure what you mean when you say you connect "AIN to AVDD/AVSS". Are these two different cases?

    Also, do you connect your AVSS pin to -2.5V or to GND?

    The ADC output code should correspond with the differential input voltage (AINP - AINN), so long as the input voltages do not exceed the analog supply rails and as long as the differential voltage does not exceed VREF.

    Best regards,
    Chris

  • Hi Christopher.
    I attached full schematic to my first message. So, on AVDD +2.5V, on AVSS -2.5V, on VREFN -2.5V, on VREFP small positive voltage (fractions of millivolts). When i said connect "AIN to AVDD/AVSS" i mean connect for a short time to get measured value from ADC, two different cases (i used it as known signal source +2.5 and -2.5 V), So, i expected to see almost the same results afters ADC conversion.
  • Hi Pavel,

    I simulated your OPA376 circuit and was able to reproduce the same result:

    Notice that the "VINN" input voltage is about -450mV due to the resistor divider on the input of the opamp.

    TINA-TI File: OPA376 Circuit.TSC

    Best regards,
    Chris

  • Thank you very much, Christopher, your help is awesome and very important for me. Now all goes as i expect. Best regards.