Aziz Bench

Dirección I²C del TCA9548A

El TCA9548A (multiplexor I²C de 8 canales) puede responder en 0x70–0x77: más abajo verás cómo elegir.

Dirección I²C (7 bits)
0x70–0x77
8 direcciones posibles
Escritura / lectura (8 bits)
0xE0 / 0xE1
Binario
1110000
Comparte dirección con
12 dispositivos
Dónde está en el bus sus direcciones reservadas
0123456789ABCDEF
00000102030405060708090A0B0C0D0E0F
10101112131415161718191A1B1C1D1E1F
20202122232425262728292A2B2C2D2E2F
30303132333435363738393A3B3C3D3E3F
40404142434445464748494A4B4C4D4E4F
50505152535455565758595A5B5C5D5E5F
60606162636465666768696A6B6C6D6E6F
70707172737475767778797A7B7C7D7E7F

Cómo fijar la dirección

Conecta los pines de dirección así:

A2 A1 A0 → 0x70–0x77

Dispositivos que usan las mismas direcciones

Dos dispositivos del mismo bus no pueden responder en la misma dirección. Estos módulos de nuestra lista usan al menos una de estas direcciones:

DispositivoQué esDirección compartida
HT16K33controlador de matrices LED 16×8 con lectura de teclado0x70–0x77 (8)
PCA9685controlador PWM / servos de 16 canales, 12 bits0x70–0x77 (8)
SHTC3sensor de temperatura y humedad0x70
SX1509expansor de E/S de 16 canales con driver de LED y controlador de teclado0x70, 0x71
IP5306SoC para power bank (cargador + elevador), versión I²C0x75
BME280sensor de temperatura, humedad y presión0x76, 0x77
BME680sensor de gas (VOC), temperatura, humedad y presión0x76, 0x77
BME688sensor de gas con IA, temperatura, humedad y presión0x76, 0x77
BMP280sensor de presión y temperatura0x76, 0x77
BMP388sensor de presión y temperatura0x76, 0x77
MS5611-01BAsensor de presión barométrica (altímetro)0x76, 0x77
BMP180sensor de presión y temperatura0x77

Si dos acaban en la misma dirección, mueve uno con su pin de dirección, pon uno detrás de un multiplexor TCA9548A (0x70–0x77) o usa un segundo bus I²C: el ESP32, el ESP32-S3 y el RP2040 tienen dos controladores I²C (el ESP32-C3 tiene uno).

Comprobar todo el bus →Añade el TCA9548A y el resto de tus módulos: la herramienta encuentra los conflictos, propone direcciones libres y calcula las pull-ups.

Dirección de 7 y de 8 bits

Las direcciones I²C tienen 7 bits. Algunas hojas de datos y bibliotecas las escriben como números de 8 bits, con el bit de lectura/escritura añadido a la derecha: por eso el mismo chip puede aparecer como 0x70 o como 0xE0. La biblioteca Wire de Arduino y ESPHome usan la forma de 7 bits.

7 bitsBinarioEscritura 8 bitsLectura 8 bits
0x7011100000xE00xE1
0x7111100010xE20xE3
0x7211100100xE40xE5
0x7311100110xE60xE7
0x7411101000xE80xE9
0x7511101010xEA0xEB
0x7611101100xEC0xED
0x7711101110xEE0xEF

Comprueba que responde

Sube este sketch con el TCA9548A conectado a SDA y SCL: prueba todas las direcciones que puede usar el chip y muestra en el monitor serie la que responde. En el ESP32 los pines por defecto son GPIO21 (SDA) y GPIO22 (SCL); en un Arduino Uno, A4 y A5.

#include <Wire.h>

const byte ADDRS[] = {0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77};

void setup() {
  Serial.begin(115200);
  Wire.begin();
  for (byte a : ADDRS) {
    Wire.beginTransmission(a);
    if (Wire.endTransmission() == 0) {
      Serial.print("TCA9548A responde en 0x");
      if (a < 0x10) Serial.print('0');
      Serial.println(a, HEX);
      return;
    }
  }
  Serial.println("Sin respuesta: revisa el cableado");
}

void loop() {}

En ESPHome el bus se escanea al arrancar (scan: true es el valor por defecto): el log muestra todas las direcciones que responden.

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

Resistencias de pull-up

SDA y SCL necesitan resistencias de pull-up a la alimentación. Muchos módulos ya las llevan, a menudo de 4,7 kΩ o 10 kΩ, y con varios módulos en el bus se suman en paralelo. La herramienta de direcciones I²C calcula el rango admitido para la tensión y la velocidad de tu bus.

Preguntas frecuentes

¿Cuál es la dirección I2C del TCA9548A?

0x70–0x77, según el cableado: A2 A1 A0 → 0x70–0x77.

¿Puedo usar más de un TCA9548A en el mismo bus?

Sí, hasta 8, cada uno con una dirección distinta.

¿Por qué el TCA9548A no aparece al escanear el bus I2C?

Revisa, por este orden: que SDA y SCL no estén intercambiados; que las placas compartan masa; que haya resistencias de pull-up en SDA y SCL; que el módulo esté alimentado a la tensión que le corresponde; que ningún pin de dirección quede sin conectar; y que tu código use la dirección de 7 bits (0x70), no la de 8 bits (0xE0).

Dispositivos similares

Direcciones comprobadas en la hoja de datos del TCA9548A.