Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use Adafruit TCA9548A: Examples, Pinouts, and Specs

Image of Adafruit TCA9548A
Cirkit Designer LogoDesign with Adafruit TCA9548A in Cirkit Designer

Introduction

The Adafruit TCA9548A is an I2C multiplexer that enables a single microcontroller to communicate with up to eight separate I2C devices using the same I2C bus. This is particularly useful in scenarios where multiple I2C devices with the same address need to operate on the same bus. The TCA9548A can be used in a variety of applications, including sensor networks, complex I2C device interfacing, and situations where bus address conflicts need to be resolved.

Explore Projects Built with Adafruit TCA9548A

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
ESP32-Based I2C Multiplexer Interface
Image of 8 light sensors: A project utilizing Adafruit TCA9548A in a practical application
This circuit utilizes an ESP32 microcontroller to interface with multiple I2C devices through an Adafruit TCA9548A I2C multiplexer. The ESP32 communicates with the TCA9548A via I2C, and the multiplexer allows for up to eight separate I2C buses, each connected to a 5-pin relimate connector. This setup enables the ESP32 to manage multiple I2C devices that may share the same address, by selecting which bus is active at any given time.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Based I2C Communication Hub with Multiplexer and Expander
Image of Lights: A project utilizing Adafruit TCA9548A in a practical application
This circuit features an Olimex ESP32-EVB microcontroller unit (MCU) for processing and connectivity, interfaced with an MCP23017 I/O expander and an Adafruit TCA9548A I2C multiplexer to expand the number of I/O lines and allow multiple I2C devices to communicate with the MCU over the same bus. Pull-up resistors are connected to the I2C lines for proper bus operation, and both the MCP23017 and TCA9548A have their reset lines pulled high, likely for normal operation without external reset control.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Based Environmental Monitoring System with I2C Multiplexing
Image of test: A project utilizing Adafruit TCA9548A in a practical application
This circuit features an ESP32 microcontroller connected to an MQ-5 gas sensor and a DHT11 temperature and humidity sensor. The ESP32 reads analog data from the MQ-5 sensor and digital data from the DHT11 sensor. An Adafruit TCA9548A I2C multiplexer is used to potentially expand the number of I2C devices that can be connected, with multiple 5-pin relimate connectors interfaced to the multiplexer for additional sensors or peripherals.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Based Motion Tracking System with ICM20948 Sensor
Image of ICM20948: A project utilizing Adafruit TCA9548A in a practical application
This circuit features a SparkFun ESP32 Thing Plus microcontroller interfaced with an Adafruit ICM20948 9-axis motion sensor via an Adafruit TXB0104 4-channel bi-directional level shifter. The ESP32 reads data from the ICM20948 sensor, calculates orientation angles such as pitch, roll, yaw, and azimuth, and outputs these values to the serial monitor. The level shifter ensures compatibility between the 3.3V logic levels of the ESP32 and the 1.8V logic levels required by the ICM20948.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with Adafruit TCA9548A

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of 8 light sensors: A project utilizing Adafruit TCA9548A in a practical application
ESP32-Based I2C Multiplexer Interface
This circuit utilizes an ESP32 microcontroller to interface with multiple I2C devices through an Adafruit TCA9548A I2C multiplexer. The ESP32 communicates with the TCA9548A via I2C, and the multiplexer allows for up to eight separate I2C buses, each connected to a 5-pin relimate connector. This setup enables the ESP32 to manage multiple I2C devices that may share the same address, by selecting which bus is active at any given time.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Lights: A project utilizing Adafruit TCA9548A in a practical application
ESP32-Based I2C Communication Hub with Multiplexer and Expander
This circuit features an Olimex ESP32-EVB microcontroller unit (MCU) for processing and connectivity, interfaced with an MCP23017 I/O expander and an Adafruit TCA9548A I2C multiplexer to expand the number of I/O lines and allow multiple I2C devices to communicate with the MCU over the same bus. Pull-up resistors are connected to the I2C lines for proper bus operation, and both the MCP23017 and TCA9548A have their reset lines pulled high, likely for normal operation without external reset control.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of test: A project utilizing Adafruit TCA9548A in a practical application
ESP32-Based Environmental Monitoring System with I2C Multiplexing
This circuit features an ESP32 microcontroller connected to an MQ-5 gas sensor and a DHT11 temperature and humidity sensor. The ESP32 reads analog data from the MQ-5 sensor and digital data from the DHT11 sensor. An Adafruit TCA9548A I2C multiplexer is used to potentially expand the number of I2C devices that can be connected, with multiple 5-pin relimate connectors interfaced to the multiplexer for additional sensors or peripherals.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of ICM20948: A project utilizing Adafruit TCA9548A in a practical application
ESP32-Based Motion Tracking System with ICM20948 Sensor
This circuit features a SparkFun ESP32 Thing Plus microcontroller interfaced with an Adafruit ICM20948 9-axis motion sensor via an Adafruit TXB0104 4-channel bi-directional level shifter. The ESP32 reads data from the ICM20948 sensor, calculates orientation angles such as pitch, roll, yaw, and azimuth, and outputs these values to the serial monitor. The level shifter ensures compatibility between the 3.3V logic levels of the ESP32 and the 1.8V logic levels required by the ICM20948.
Cirkit Designer LogoOpen Project in Cirkit Designer

Technical Specifications

Key Technical Details

  • Supply Voltage (VCC): 1.8V to 5.5V
  • Logic Voltage (VDD): 1.8V to 5.5V
  • Current Rating: 30 mA (max)
  • Number of Channels: 8
  • I2C Bus Speed: Up to 400 kHz
  • Address Range: 0x70 to 0x77 (configurable with jumpers)

Pin Configuration and Descriptions

Pin Number Pin Name Description
1 VDD Logic power supply (1.8V to 5.5V)
2 GND Ground connection
3 SCL I2C clock input from the master device
4 SDA I2C data input/output from/to the master device
5-12 SC0-SC7 I2C clock lines for channels 0-7
13-20 SD0-SD7 I2C data lines for channels 0-7
21-28 A0-A2 Address select pins (used to set the I2C address of the TCA9548A)
29 RESET Reset input (active low)

Usage Instructions

How to Use the Component in a Circuit

  1. Powering the Module: Connect the VDD pin to your microcontroller's logic level power output, and the GND pin to the ground.

  2. Connecting I2C Lines: Connect the SCL and SDA pins to the I2C clock and data lines on your microcontroller.

  3. Setting the Address: Use the A0, A1, and A2 pins to set the address of the TCA9548A. By connecting these pins to either VDD or GND, you can configure the address from 0x70 to 0x77.

  4. Connecting I2C Devices: Connect the I2C devices to the SC0-SC7 and SD0-SD7 pins, ensuring that each device is connected to a separate channel.

  5. Resetting the Module: If necessary, the RESET pin can be used to reset the TCA9548A by pulling it low.

Important Considerations and Best Practices

  • Ensure that the power supply voltage matches the logic level voltage to avoid damaging the module.
  • When setting the address, make sure that it does not conflict with other I2C devices on the bus.
  • Use pull-up resistors on the SCL and SDA lines if they are not already present on the I2C devices or microcontroller.
  • Avoid using long wires for I2C connections to minimize signal degradation.

Example Code for Arduino UNO

#include <Wire.h>

// Define the I2C address for the TCA9548A
#define TCAADDR 0x70

// Function to select the desired I2C bus on the TCA9548A
void tcaSelect(uint8_t i2cBus) {
  if (i2cBus > 7) return; // Invalid bus selection, do nothing

  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i2cBus); // Send byte to select bus
  Wire.endTransmission();
}

void setup() {
  Wire.begin(); // Start the I2C interface
}

void loop() {
  // Select each I2C bus and communicate with devices as needed
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i);
    // Add code here to interact with devices on the selected I2C bus
  }
  delay(1000); // Wait a second before scanning again
}

Troubleshooting and FAQs

Common Issues

  • I2C Communication Failure: Ensure that the TCA9548A is properly powered and that the I2C address is correctly set. Check the connections and pull-up resistors on the SCL and SDA lines.
  • Device Address Conflict: Make sure that no two devices on the same I2C bus have the same address.
  • Intermittent Connectivity: Long wires or loose connections can cause unreliable communication. Keep connections secure and as short as possible.

Solutions and Tips for Troubleshooting

  • Use a multimeter to verify that the power supply is within the specified range and that all connections are secure.
  • Use an oscilloscope to check the integrity of the I2C signals if you suspect signal degradation.
  • If you are unable to communicate with a device, try isolating the issue by communicating with it directly, bypassing the TCA9548A.

FAQs

Q: Can I use the TCA9548A with devices that have different I2C speeds? A: Yes, the TCA9548A can work with devices that operate at different I2C speeds, but the speed of the bus will be limited to the slowest device.

Q: How do I change the I2C address of the TCA9548A? A: The I2C address can be changed by adjusting the A0, A1, and A2 pins. Connect these pins to either VDD or GND to set the desired address.

Q: Can I use more than one TCA9548A on the same I2C bus? A: Yes, you can use multiple TCA9548A modules on the same bus by setting each to a unique address using the A0, A1, and A2 pins.