

The Adafruit LTC4311 is an I2C bus extender designed to improve signal integrity and enable longer distances between I2C devices. It works by actively boosting the I2C signals, reducing signal degradation over extended cable lengths. This makes it an excellent choice for applications where I2C devices are distributed across a large area or connected via long cables.








The Adafruit LTC4311 is a compact and efficient solution for extending I2C communication. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 2.9V to 5.5V |
| I2C Speed Support | Standard (100 kHz) and Fast (400 kHz) |
| Maximum Bus Capacitance | Up to 4000 pF |
| Operating Temperature Range | -40°C to +85°C |
| Dimensions | 20mm x 18mm x 2mm |
| Current Consumption | ~1 mA |
The Adafruit LTC4311 has a simple pinout for easy integration into your circuit. Below is the pin configuration:
| Pin | Name | Description |
|---|---|---|
| 1 | VIN | Power input (2.9V to 5.5V). Connect to your system's power supply. |
| 2 | GND | Ground. Connect to the ground of your system. |
| 3 | SDA_IN | I2C data input. Connect to the SDA line of the I2C master or upstream device. |
| 4 | SCL_IN | I2C clock input. Connect to the SCL line of the I2C master or upstream device. |
| 5 | SDA_OUT | I2C data output. Connect to the SDA line of the I2C slave or downstream device. |
| 6 | SCL_OUT | I2C clock output. Connect to the SCL line of the I2C slave or downstream device. |
VIN pin to a power supply (2.9V to 5.5V) and the GND pin to the ground of your system.SDA_IN and SCL_IN pins to the I2C master or upstream device.SDA_OUT and SCL_OUT pins to the I2C slave or downstream device.Below is an example of how to use the Adafruit LTC4311 to extend I2C communication between an Arduino UNO and a remote I2C sensor:
VIN pin of the LTC4311 to the 5V pin of the Arduino.GND pin of the LTC4311 to the GND pin of the Arduino.SDA_IN and SCL_IN pins of the LTC4311 to the Arduino's A4 (SDA) and A5 (SCL) pins, respectively.SDA_OUT and SCL_OUT pins of the LTC4311 to the remote I2C sensor's SDA and SCL lines.#include <Wire.h>
// I2C address of the remote sensor (replace with your sensor's address)
#define SENSOR_ADDRESS 0x40
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
// Test communication with the sensor
Wire.beginTransmission(SENSOR_ADDRESS);
if (Wire.endTransmission() == 0) {
Serial.println("Sensor detected successfully!");
} else {
Serial.println("Failed to detect sensor. Check connections.");
}
}
void loop() {
// Example: Read data from the sensor
Wire.requestFrom(SENSOR_ADDRESS, 2); // Request 2 bytes from the sensor
if (Wire.available() == 2) {
int data = Wire.read() << 8 | Wire.read(); // Combine two bytes into one value
Serial.print("Sensor Data: ");
Serial.println(data);
} else {
Serial.println("Failed to read data from sensor.");
}
delay(1000); // Wait 1 second before the next read
}
No Communication Between Devices:
VIN and GND pins are properly connected.Signal Degradation Over Long Cables:
Intermittent Communication Errors:
Device Not Detected:
Q: Can the LTC4311 work with 3.3V systems?
A: Yes, the LTC4311 supports operating voltages from 2.9V to 5.5V, making it compatible with both 3.3V and 5V systems.
Q: Do I need to add pull-up resistors if my microcontroller already has them?
A: If your microcontroller includes internal pull-ups, you may not need additional resistors. However, ensure the total pull-up resistance is appropriate for your bus capacitance.
Q: How far can I extend the I2C bus with the LTC4311?
A: The exact distance depends on factors like cable quality, speed, and noise. In ideal conditions, distances of 10 meters or more are achievable.
Q: Can I use multiple LTC4311 modules in the same system?
A: Yes, you can use multiple LTC4311 modules to extend different segments of the I2C bus. Ensure proper wiring and avoid address conflicts among connected devices.