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.

CCS/ADS1220: What is the best way of performing cold junction compensation in case of having multiple ads1220 on a single SSI bus.

Part Number: ADS1220
Other Parts Discussed in Thread: SN74LVC244A

Tool/software: Code Composer Studio

Hi, I do plan to perform TC measurement using ADS1220. I have 8 ADS1220s that will communicate with the TIVA through SSI. I am looking for the best sequence without affecting the accuracy of my measurements. Initially, I was planning to start the ADC conversion on each ADS1220 and then for the next sweep I was planning to start the internal temp. conversion on each to perform CJC and get the final result. But, not sure this is best way because of the delay between ADC and int. temp sensor readings on each ADS1220. Would that delay effect the accuracy of my readings ? Thanks...

  • Hi Fatih,

    This could be achieved in several ways. The accuracy will depend on the desired data rate and the stability of the cold junction. Usually thermal mass does not change very fast. Instead of thinking of capturing data as a group of 8(x1), you could think of taking the measurement in groups of 2(x4) or 4(x2).

    For maximum measurement speed, you could gate the DOUT/DRDY pin (to prevent output driver contention) and command all devices to Start at the same time. You could also configure all of the ADS1220 at the same time. You would just need to read the conversion data individually.

    Best regards,
    Bob B
  • Hi Bob,

    The lower data gives better accuracy right? Our data rate will be set to 20 SPS.

    If I understood correctly, you are suggesting the following sequence for taking the measurement in group of 2(x4):

    1- Set CS1 low, set config reg, start ADC conversion, set CS1 high

    2- Set CS2 low, set config reg, start ADC conversion, set CS2 high

    3- Delay (1/SPS + margin)

    4- Set CS1 low, read  ADC data, set config reg, start internal temp. conversion, set CS1 high

    5- Set CS2 low, read ADC data, set config reg, start internal temp. conversion, set CS2 high

    6- Delay (1/SPS + margin)

    7- Set CS1 low, read int. temp data , set config reg, start ADC conversion, set CS1 high

    8- Set CS2 low, read int. temp data, set config reg, start ADC conversion, set CS2 high

    9- Repeat starting at #3

    This is only for the first group. That will be performed for all groups... Please correct me if there is anything missing.

    Regarding the maximum measurement speed, how can I start all devices at the same time. I should first set the associated CS pin low and send the START command and repeat that for each individually. Could you please elaborate how can I configure all of the ADS1220 at the same time?? 

    THANKS...

  • Hi Fatih,

    I was suggesting two different possibilities. The first one is to take measurements in groups so that the cold junction measurement is taken closer to the thermocouple measurement. This is similar to your steps 1 through 9 in your last post.

    The second possibility is to do group register writes and start/sync command to all devices at once.
    1- Set CS low for all devices (and buffer OE to high)
    2- Send WREG command for setting AIN0/AIN1 on ADS1220 mux
    3- Send START command
    4- Set CS high for all devices (and buffer OE to low)
    5- Wait for conversion to end
    6- Loop through all devices reading the data
    a. Set CS low
    b. Send RDATA command and read the conversion result
    c. Set CS high
    d. Loop back to 6 reading next device until all data are read from the 8 devices
    7- Set CS low for all devices (and buffer OE to high)
    8- SEND WREG command for internal temperature sensor measurement
    9- Send START command
    10- Set CS high for all devices (and buffer OE to low)
    11- Loop through all devices reading the data
    a. Set CS low
    b. Send RDATA command and read the conversion result
    c. Set CS high
    d. Loop back to 6 reading next device until all data are read
    If you also have a thermocouple connected to AIN2/AIN3, you would follow the same steps as above except step 2 would be WREG to set mux to AIN2/AIN3.

    As I stated in my previous post, you cannot set CS low for all devices at the same time without preventing DOUT/DRDY from driving the output at the same time as some devices may have a logic low while others will have a logic high. This driver will cause excessive current and could damage the ADS1220. To prevent the output driver contention, you can isolate the outputs using logic. One possible method would be to use an SN74LVC244A. Using this device you would tie the 'Y' designated outputs together along with a weak pullup (100k) to DVDD to prevent the GPIO input from floating (or you could set the Tiva GPIO to use the weak pullup on the pin). Each of the 'A' inputs would connect to one of the ADS1220 DOUT/DRDY outputs. You would also need to tie both of the OE enables together on the 244A and connect to an additional GPIO pin on the micro. When setting the CS low for all devices, you would also set OE high to disable the outputs. When using the CS for reading the data, you would need to make sure that OE is pulled low to enable the desired DOUT/DRDY signal.

    Best regards,
    Bob B