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.

ADS114S08: AIN8-AIN11 large offset

Part Number: ADS114S08
Other Parts Discussed in Thread: ADS114S06,

Tool/software:

Hi. I have. 12 input configuration. I connect externally all inputs to AINCOM.

Internal 2.5V reference

I switch PMUX between 0 and 0x0B. Also Activate 500uA IDAC for the channel.

For inputs AIN0 - AIN7 I get ADC reading between 0 - 12. This is OK.

For inputs AIN8-AIN11 I get around 330. This is the problem.  

If I don't activate IDAC, I get 0-12 ADC reading. 

If I measure mV between input and AINCOM, it is 6mV when the channel is activated. All channels have 6mV, even the "good" channels. Doesn't seem to be the problem.  

AIN8-AIN11 also happen to be optional GPIO, but it is in default state (analog input)

I checked SPI communication with logic analyzer and it is correct. Also made registers readback and registers as expected.  

Could you help me understand, what is wrong with channels 8-11? I have 6 such boards and all behave the same. I seems to be some configuration issue.

Initial configuration:

const uint8_t ADS114_S08B_init_commands[] = {
0x03, //starting address
ADS_DELAY_14 + ADS_PGA_BYPASS + ADS_GAIN_1, //must be delay 14 for xx08B chip
ADS_FILTERTYPE_LL + ADS_DR_50, //bit7 must be 0 and bit 4 1 for xx08B chip
ADS_REFP_BYP_ENABLE + ADS_REFN_BYP_ENABLE + ADS_REFSEL_INT + ADS_REFINT_ON_ALWAYS,
ADS_IDACMAG_500, //7:4 must be zero for xB chip
ADS_IDAC2_OFF + ADS_IDAC1_OFF,
0, //VBIAS control
0, //Sys control. 1:0 must be 0 for xB chip
};

Channel switching commands:

SPI1_ByteWrite(0x40 + INPMUX_ADDR_MASK); //WREG command with starting address
SPI1_ByteWrite(6); //data length minus 1
SPI1_ByteWrite((Ch_no << 4) + ADS_N_AINCOM);
SPI1_ByteWrite(ADS_DELAY_14 + ADS_PGA_BYPASS + ADS_GAIN_1); //must be delay 14 for xx08B chip
SPI1_ByteWrite(ADS_FILTERTYPE_LL + ADS_DR_50); //bit7 must be 0 and bit 4 1 for xx08B chip
SPI1_ByteWrite(ADS_REFP_BYP_ENABLE + ADS_REFN_BYP_ENABLE + ADS_REFSEL_INT + ADS_REFINT_ON_ALWAYS);
SPI1_ByteWrite(ADS_IDACMAG_500); //7:4 must be zero for xB chip
SPI1_ByteWrite(ADS_IDAC2_OFF + Ch_no); //
SPI1_ByteWrite(ADS_VBIAS_LVL_DIV2 + 0); //Vbias

  • Edit: 6 mV between positive input and AINCOM I get if I but around 12-ohm resistor between them. If connected by wire, it is 0mV. 

  • Hi Erki Leitaru,

    I am having trouble following what you are doing, can you draw a picture?

    It sounds like you are measuring 12 inputs (what are you measuring? RTDs?), and each sensor is connected to AINCOM, which is connected to ground (so all of your measurements are single-ended)

    Then you apply the IDAC to each input, and you are getting different readings? A "0-12 ADC reading" indicates you aren't really measuring anything, so can you be more clear about what you are actually doing? Are you shorting the analog input to ground, then forcing the IDAC through the analog input and measuring the ADC code between the analog input and AINCOM?

    There will be some mux resistance that you will measure by applying the IDAC to the same channel you select as the analog input (AINP). The mux resistance is probably different on channels AIN8-AIN11 because of the added GPIO functionality.

    Let me know if you can provide more info, or if this answers your questions

    -Bryan

  • Hi. Now similar topic popped up on side bar. https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/947023/ads114s08-ain0-7-gets-different-results-than-ain8-11

    I think it must be the case. AIN8-AIN11 are internally different. Unfortunately this is not mentioned and warned in datasheet.

    I was trying to make 12 single-ended PT1000 measurements. Like you described - select inputs one by one and apply exitation current directly to input pin internally.

  • Hi Erki Leitaru,

    Thanks for explaining in more detail, now I understand

    Typically the IDAC and the analog input are separate pins, otherwise you will be subject to the errors you are seeing. You also generally need an anti-aliasing filter on the ADC inputs (you don't currently have this), which is the RC filter between AIN1/AIN2 shown in the image below. Because of this, you cannot route the IDAC current through the inputs, and rather need to connect on the other side of the filter resistor (as shown). This is why the mux resistance would not be an issue for typical RTD measurement systems

    You might consider adding an external mux for the analog inputs and one for the IDACs, then use the ADC GPIOs to control this mux. This will give you a better result, and is the preferred method. You could also probably use the ADS114S06 in this case, since you would not need so many analog inputs. The ADS114S06 is a slightly lower cost version of the ADS114S08, and might offset the cost of adding 2 muxes

    -Bryan