

The ADS1220 is a high-performance, 24-bit analog-to-digital converter (ADC) manufactured by Texas Instruments (TI). It is designed for precision measurement applications, offering a low-noise, low-drift architecture. The ADS1220 integrates programmable gain amplifiers (PGAs), a multiplexer, and an internal oscillator, making it an ideal choice for sensor interfacing and data acquisition systems.








| Parameter | Value |
|---|---|
| Resolution | 24-bit |
| Input Channels | 4 single-ended or 2 differential |
| Programmable Gain Amplifier | 1x to 128x |
| Data Rates | 20 SPS to 2000 SPS |
| Supply Voltage | 2.3 V to 5.5 V |
| Input Voltage Range | ±VREF / Gain |
| Reference Voltage | Internal or external (up to 5 V) |
| Interface | SPI |
| Operating Temperature Range | -40°C to +125°C |
| Package Options | TSSOP-16 |
The ADS1220 is available in a 16-pin TSSOP package. Below is the pinout and description:
| Pin No. | Name | Type | Description |
|---|---|---|---|
| 1 | AVDD | Power | Analog supply voltage (2.3 V to 5.5 V) |
| 2 | DVDD | Power | Digital supply voltage (1.65 V to 3.6 V) |
| 3 | GND | Ground | Ground reference for analog and digital circuits |
| 4 | AIN0 | Analog In | Analog input channel 0 |
| 5 | AIN1 | Analog In | Analog input channel 1 |
| 6 | AIN2 | Analog In | Analog input channel 2 |
| 7 | AIN3 | Analog In | Analog input channel 3 |
| 8 | REFP | Analog In | Positive reference input |
| 9 | REFN | Analog In | Negative reference input |
| 10 | DRDY/DOUT | Digital Out | Data ready output / SPI data output |
| 11 | SCLK | Digital In | SPI clock input |
| 12 | CS | Digital In | Chip select (active low) |
| 13 | DIN | Digital In | SPI data input |
| 14 | START | Digital In | Start conversion (active high) |
| 15 | RESET | Digital In | Reset input (active low) |
| 16 | NC | - | No connection |
Below is an example of interfacing the ADS1220 with an Arduino UNO via SPI:
#include <SPI.h>
// Pin definitions
#define CS_PIN 10 // Chip select pin
#define DRDY_PIN 9 // Data ready pin
#define START_PIN 8 // Start conversion pin
void setup() {
// Initialize SPI
SPI.begin();
SPI.setDataMode(SPI_MODE1); // CPOL = 0, CPHA = 1
SPI.setClockDivider(SPI_CLOCK_DIV16); // Adjust as needed for your setup
// Configure pins
pinMode(CS_PIN, OUTPUT);
pinMode(DRDY_PIN, INPUT);
pinMode(START_PIN, OUTPUT);
// Set initial states
digitalWrite(CS_PIN, HIGH); // Deselect ADS1220
digitalWrite(START_PIN, LOW); // Ensure conversion is stopped
// Start conversion
digitalWrite(START_PIN, HIGH);
}
void loop() {
// Wait for data ready signal
if (digitalRead(DRDY_PIN) == LOW) {
digitalWrite(CS_PIN, LOW); // Select ADS1220
// Read 3 bytes of data (24-bit result)
byte data1 = SPI.transfer(0x00);
byte data2 = SPI.transfer(0x00);
byte data3 = SPI.transfer(0x00);
digitalWrite(CS_PIN, HIGH); // Deselect ADS1220
// Combine bytes into a 24-bit result
long result = ((long)data1 << 16) | ((long)data2 << 8) | data3;
// Print result to serial monitor
Serial.println(result);
}
}
No Data Output:
Incorrect Conversion Results:
High Noise in Measurements:
Device Not Responding: