← All parts

TCA9548A I2C Multiplexer

TCA9548A

Texas Instrumentsinterface io display

The TCA9548A is a low-voltage 1-to-8 bidirectional I2C switch that fans an upstream bus out to eight selectable channels. It resolves target address conflicts and supports voltage-level translation between 1.8V and 5V buses.

In stock

Specifications

10
Operating Voltage
1.65 to 5.5 V
Supply Current
50 µA
Standby Current Max
2 µA
Channels
8
Interface
I2C
I2c Clock Speed Max
400 kHz
Switch On Resistance
10 Ω
I2c Address Pins
3
Operating Temperature Range
-40 to 125 °C
Package Types
TSSOP-24, VQFN-24, VSSOP-24

Pinout

24
PinNameFunctionsNotes
1A0
Address input 0. Connect directly to VCC or ground
2A1
Address input 1. Connect directly to VCC or ground
3RESET
Active-low reset input. Pull up to VCC if not used
4SD0
I2C
Serial data channel 0
5SC0
I2C
Serial clock channel 0
6SD1
I2C
Serial data channel 1
7SC1
I2C
Serial clock channel 1
8SD2
I2C
Serial data channel 2
9SC2
I2C
Serial clock channel 2
10SD3
I2C
Serial data channel 3
11SC3
I2C
Serial clock channel 3
12GND
GND
Ground
13SD4
I2C
Serial data channel 4
14SC4
I2C
Serial clock channel 4
15SD5
I2C
Serial data channel 5
16SC5
I2C
Serial clock channel 5
17SD6
I2C
Serial data channel 6
18SC6
I2C
Serial clock channel 6
19SD7
I2C
Serial data channel 7
20SC7
I2C
Serial clock channel 7
21A2
Address input 2. Connect directly to VCC or ground
22SCL
I2C
Upstream serial clock bus
23SDA
I2C
Upstream serial data bus
24VCC
POWER
Supply voltage

Interactive pinout

Highlight:
TCA9548A

Click a pin to copy its name · tap a tag above to spotlight a bus.

Starter code

Community starter examples — minimal, unofficial, and provided to get you wiring fast. Verify against the manufacturer datasheet before relying on them.

Arduino (C++)

arduino
// TCA9548A 8-channel I2C multiplexer — community starter example
// No library needed: write a bitmask to the mux to pick channel(s).
#include <Wire.h>

const byte MUX = 0x70;   // A2..A0 = 000

void selectChannel(uint8_t ch) {       // ch 0..7
  Wire.beginTransmission(MUX);
  Wire.write(1 << ch);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(115200);
  Wire.begin();
}

void loop() {
  selectChannel(0);     // now talk to the device on channel 0
  // ... your sensor.read() here ...
  delay(1000);
}

MicroPython

python
# TCA9548A I2C mux (ESP32) — community starter example
# No driver needed: write 1<<channel to the mux address
from machine import Pin, I2C
import time

i2c = I2C(0, scl=Pin(22), sda=Pin(21))
MUX = 0x70

def select(ch):
    i2c.writeto(MUX, bytes([1 << ch]))

while True:
    select(0)          # talk to channel 0's device
    time.sleep(1)

Wiring

PinArduino Uno R3ESP32 DevKitC (WROOM-32)Notes
VCC+5V3V31.65-5.5 V
GNDGNDGND
SCLA5/SCLGPIO22I2C clock
SDAA4/SDAGPIO21I2C data
SD0..SC7--8 downstream I2C buses (SDn/SCn) to your sensors
A0/A1/A2--Address select -> 0x70-0x77

Typical uses

  • Putting many same-address I2C devices on one bus
  • Expanding past I2C address conflicts

Related parts

6