← Volver al blog

I2C, SPI y UART: qué son y cuándo usar cada bus

Dentro de casi cualquier producto electrónico, los chips necesitan hablar entre sí: el microcontrolador lee un sensor, controla una pantalla o guarda datos en una memoria. Para esa conversación se usan buses de comunicación serie, y los tres más habituales son UART, SPI e I2C. Elegir el adecuado afecta al número de pines, a la velocidad, al consumo y a la complejidad del firmware.

MCU UART · 2 hilos (TX/RX) Periférico SPI · 4 hilos (MOSI/MISO/SCK/CS) Periférico I2C · 2 hilos (SDA/SCL) Periférico
Los tres buses serie más usados para conectar un microcontrolador con sus periféricos.

UART: el bus serie más sencillo

UART (Universal Asynchronous Receiver-Transmitter) comunica dos dispositivos punto a punto con solo dos líneas: TX (transmisión) y RX (recepción). Es asíncrono: no hay línea de reloj, así que ambos extremos deben acordar de antemano la velocidad (el baud rate, p. ej. 115200 bps).

  • Ventajas: muy simple, solo 2 hilos, ideal para conexiones uno a uno.
  • Límites: solo conecta dos dispositivos, velocidad moderada y sensible a errores si los relojes no coinciden.
  • Cuándo usarlo: consola de depuración, GPS, módulos Bluetooth/WiFi, comunicación con un PC.

SPI: el más rápido

SPI (Serial Peripheral Interface) es un bus síncrono maestro-esclavo de alta velocidad con cuatro líneas: MOSI, MISO, SCK (reloj) y CS (selección de chip). Es full-duplex: envía y recibe a la vez. Cada esclavo necesita su propia línea CS, así que más dispositivos significan más pines.

  • Ventajas: muy rápido (decenas de MHz), full-duplex, sin direcciones.
  • Límites: muchos pines (una CS por dispositivo), pensado para distancias cortas dentro de la placa.
  • Cuándo usarlo: pantallas, memorias flash, ADC rápidos, tarjetas SD, sensores de alta tasa de datos.

I2C: muchos dispositivos, solo dos hilos

I2C (Inter-Integrated Circuit) es un bus síncrono direccionable que conecta muchos dispositivos con solo dos líneas compartidas: SDA (datos) y SCL (reloj). Cada dispositivo tiene una dirección única, y las dos líneas necesitan resistencias de pull-up.

  • Ventajas: solo 2 hilos para muchos dispositivos, direccionamiento integrado, ahorra pines.
  • Límites: más lento que SPI, half-duplex, requiere pull-ups y buen diseño si el bus es largo.
  • Cuándo usarlo: sensores (temperatura, IMU, presión), EEPROM, expansores de E/S, RTC.

Tabla comparativa: I2C vs SPI vs UART

CaracterísticaUARTSPII2C
Hilos2 (TX, RX)4 (MOSI, MISO, SCK, CS)2 (SDA, SCL)
RelojNo (asíncrono)Sí (síncrono)Sí (síncrono)
Velocidad típicaBaja-mediaMuy alta (decenas de MHz)Media (100k–3,4M)
Nº de dispositivos2 (punto a punto)Varios (1 CS por esclavo)Muchos (por dirección)
DúplexFull-duplexFull-duplexHalf-duplex
Mejor paraEnlaces 1 a 1, depuraciónVelocidad y caudal de datosMuchos sensores con pocos pines

Cómo elegir y errores comunes

  • Si necesitas velocidad (pantalla, memoria), elige SPI. Si necesitas conectar muchos sensores ahorrando pines, elige I2C. Para un enlace simple uno a uno o depuración, UART.
  • En I2C, no olvides las resistencias de pull-up en SDA y SCL: es el fallo más típico.
  • Cuidado con los niveles de tensión (3,3 V vs 5 V): un desajuste puede dañar el chip o impedir la comunicación.
  • SPI e I2C son para distancias cortas dentro de la placa; para tiradas largas o entre equipos, valora RS-485 o CAN.

Conclusión

UART, SPI e I2C resuelven problemas distintos: simplicidad, velocidad o muchos dispositivos con pocos pines. Elegir bien desde el principio evita rediseños de placa y dolores de cabeza en el firmware. En Regular Solids integramos y depuramos a diario buses I2C, SPI, UART, CAN y RS-485 entre sensores, periféricos y sistemas embebidos. Si tienes un producto con varios chips que deben entenderse, hablemos.