← Volver al blog

I2C, SPI y UART: qué son y cuándo usar cada busI2C, SPI and UART: what they are and when to use each busI2C, SPI i UART: què són i quan fer servir cada busI2C, SPI et UART : ce qu'ils sont et quand utiliser chaque 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.

Inside almost any electronic product, chips need to talk to each other: the microcontroller reads a sensor, drives a display or stores data in a memory. That conversation happens over serial communication buses, and the three most common are UART, SPI and I2C. Choosing the right one affects pin count, speed, power and firmware complexity.

MCU UART · 2 wires (TX/RX) Peripheral SPI · 4 wires (MOSI/MISO/SCK/CS) Peripheral I2C · 2 wires (SDA/SCL) Peripheral
The three most used serial buses to connect a microcontroller with its peripherals.

UART: the simplest serial bus

UART (Universal Asynchronous Receiver-Transmitter) connects two devices point to point with just two lines: TX (transmit) and RX (receive). It's asynchronous: there's no clock line, so both ends must agree on the speed beforehand (the baud rate, e.g. 115200 bps).

  • Pros: very simple, only 2 wires, ideal for one-to-one links.
  • Limits: connects only two devices, moderate speed and error-prone if clocks don't match.
  • When to use it: debug console, GPS, Bluetooth/WiFi modules, communication with a PC.

SPI: the fastest

SPI (Serial Peripheral Interface) is a high-speed synchronous master-slave bus with four lines: MOSI, MISO, SCK (clock) and CS (chip select). It's full-duplex: it sends and receives at the same time. Each slave needs its own CS line, so more devices mean more pins.

  • Pros: very fast (tens of MHz), full-duplex, no addressing.
  • Limits: many pins (one CS per device), meant for short on-board distances.
  • When to use it: displays, flash memories, fast ADCs, SD cards, high-data-rate sensors.

I2C: many devices, only two wires

I2C (Inter-Integrated Circuit) is an addressable synchronous bus that connects many devices over just two shared lines: SDA (data) and SCL (clock). Each device has a unique address, and both lines need pull-up resistors.

  • Pros: only 2 wires for many devices, built-in addressing, saves pins.
  • Limits: slower than SPI, half-duplex, requires pull-ups and careful design on long buses.
  • When to use it: sensors (temperature, IMU, pressure), EEPROM, I/O expanders, RTC.

Comparison table: I2C vs SPI vs UART

FeatureUARTSPII2C
Wires2 (TX, RX)4 (MOSI, MISO, SCK, CS)2 (SDA, SCL)
ClockNo (asynchronous)Yes (synchronous)Yes (synchronous)
Typical speedLow-mediumVery high (tens of MHz)Medium (100k–3.4M)
Number of devices2 (point to point)Several (1 CS per slave)Many (by address)
DuplexFull-duplexFull-duplexHalf-duplex
Best for1-to-1 links, debuggingSpeed and data throughputMany sensors with few pins

How to choose and common mistakes

  • If you need speed (display, memory), pick SPI. If you need to connect many sensors while saving pins, pick I2C. For a simple one-to-one link or debugging, UART.
  • In I2C, don't forget the pull-up resistors on SDA and SCL: it's the most common mistake.
  • Watch out for voltage levels (3.3 V vs 5 V): a mismatch can damage the chip or break communication.
  • SPI and I2C are for short distances on the board; for long runs or between units, consider RS-485 or CAN.

Conclusion

UART, SPI and I2C solve different problems: simplicity, speed, or many devices with few pins. Choosing well from the start avoids board respins and firmware headaches. At Regular Solids we integrate and debug I2C, SPI, UART, CAN and RS-485 buses every day, between sensors, peripherals and embedded systems. If you have a product with several chips that must understand each other, let's talk.

Dins de gairebé qualsevol producte electrònic, els xips necessiten parlar entre ells: el microcontrolador llegeix un sensor, controla una pantalla o desa dades en una memòria. Per a aquesta conversa s'utilitzen busos de comunicació sèrie, i els tres més habituals són UART, SPI i I2C. Escollir l'adequat afecta el nombre de pins, la velocitat, el consum i la complexitat del firmware.

MCU UART · 2 fils (TX/RX) Perifèric SPI · 4 fils (MOSI/MISO/SCK/CS) Perifèric I2C · 2 fils (SDA/SCL) Perifèric
Els tres busos sèrie més utilitzats per connectar un microcontrolador amb els seus perifèrics.

UART: el bus sèrie més senzill

UART (Universal Asynchronous Receiver-Transmitter) comunica dos dispositius punt a punt amb només dues línies: TX (transmissió) i RX (recepció). És asíncron: no hi ha línia de rellotge, així que tots dos extrems han d'acordar prèviament la velocitat (el baud rate, p. ex. 115200 bps).

  • Avantatges: molt simple, només 2 fils, ideal per a connexions un a un.
  • Límits: només connecta dos dispositius, velocitat moderada i sensible a errors si els rellotges no coincideixen.
  • Quan fer-lo servir: consola de depuració, GPS, mòduls Bluetooth/WiFi, comunicació amb un PC.

SPI: el més ràpid

SPI (Serial Peripheral Interface) és un bus síncron mestre-esclau d'alta velocitat amb quatre línies: MOSI, MISO, SCK (rellotge) i CS (selecció de xip). És full-duplex: envia i rep alhora. Cada esclau necessita la seva pròpia línia CS, així que més dispositius signifiquen més pins.

  • Avantatges: molt ràpid (desenes de MHz), full-duplex, sense adreces.
  • Límits: molts pins (una CS per dispositiu), pensat per a distàncies curtes dins de la placa.
  • Quan fer-lo servir: pantalles, memòries flash, ADC ràpids, targetes SD, sensors d'alta taxa de dades.

I2C: molts dispositius, només dos fils

I2C (Inter-Integrated Circuit) és un bus síncron adreçable que connecta molts dispositius amb només dues línies compartides: SDA (dades) i SCL (rellotge). Cada dispositiu té una adreça única, i les dues línies necessiten resistències de pull-up.

  • Avantatges: només 2 fils per a molts dispositius, adreçament integrat, estalvia pins.
  • Límits: més lent que SPI, half-duplex, requereix pull-ups i bon disseny si el bus és llarg.
  • Quan fer-lo servir: sensors (temperatura, IMU, pressió), EEPROM, expansors d'E/S, RTC.

Taula comparativa: I2C vs SPI vs UART

CaracterísticaUARTSPII2C
Fils2 (TX, RX)4 (MOSI, MISO, SCK, CS)2 (SDA, SCL)
RellotgeNo (asíncron)Sí (síncron)Sí (síncron)
Velocitat típicaBaixa-mitjanaMolt alta (desenes de MHz)Mitjana (100k–3,4M)
Nre. de dispositius2 (punt a punt)Diversos (1 CS per esclau)Molts (per adreça)
DúplexFull-duplexFull-duplexHalf-duplex
Millor per aEnllaços 1 a 1, depuracióVelocitat i cabal de dadesMolts sensors amb pocs pins

Com escollir i errors comuns

  • Si necessites velocitat (pantalla, memòria), tria SPI. Si necessites connectar molts sensors estalviant pins, tria I2C. Per a un enllaç simple un a un o depuració, UART.
  • En I2C, no oblidis les resistències de pull-up a SDA i SCL: és el fallada més típica.
  • Compte amb els nivells de tensió (3,3 V vs 5 V): un desajust pot malmetre el xip o impedir la comunicació.
  • SPI i I2C són per a distàncies curtes dins de la placa; per a trams llargs o entre equips, valora RS-485 o CAN.

Conclusió

UART, SPI i I2C resolen problemes diferents: simplicitat, velocitat o molts dispositius amb pocs pins. Escollir bé des del principi evita redissenys de placa i mals de cap en el firmware. A Regular Solids integrem i depurem cada dia busos I2C, SPI, UART, CAN i RS-485 entre sensors, perifèrics i sistemes encastats. Si tens un producte amb diversos xips que s'han d'entendre, parlem-ne.

À l'intérieur de presque n'importe quel produit électronique, les puces doivent communiquer entre elles : le microcontrôleur lit un capteur, pilote un écran ou enregistre des données dans une mémoire. Pour cette conversation, on utilise des bus de communication série, et les trois plus courants sont UART, SPI et I2C. Choisir le bon a une incidence sur le nombre de broches, la vitesse, la consommation et la complexité du firmware.

MCU UART · 2 fils (TX/RX) Périphérique SPI · 4 fils (MOSI/MISO/SCK/CS) Périphérique I2C · 2 fils (SDA/SCL) Périphérique
Les trois bus série les plus utilisés pour connecter un microcontrôleur à ses périphériques.

UART : le bus série le plus simple

UART (Universal Asynchronous Receiver-Transmitter) relie deux dispositifs point à point avec seulement deux lignes : TX (transmission) et RX (réception). Il est asynchrone : il n'y a pas de ligne d'horloge, donc les deux extrémités doivent convenir à l'avance de la vitesse (le baud rate, p. ex. 115200 bps).

  • Avantages : très simple, seulement 2 fils, idéal pour des liaisons un à un.
  • Limites : ne connecte que deux dispositifs, vitesse modérée et sensible aux erreurs si les horloges ne concordent pas.
  • Quand l'utiliser : console de débogage, GPS, modules Bluetooth/WiFi, communication avec un PC.

SPI : le plus rapide

SPI (Serial Peripheral Interface) est un bus synchrone maître-esclave à haute vitesse avec quatre lignes : MOSI, MISO, SCK (horloge) et CS (sélection de puce). Il est full-duplex : il envoie et reçoit en même temps. Chaque esclave a besoin de sa propre ligne CS, donc plus de dispositifs signifie plus de broches.

  • Avantages : très rapide (des dizaines de MHz), full-duplex, sans adressage.
  • Limites : beaucoup de broches (une CS par dispositif), conçu pour de courtes distances sur la carte.
  • Quand l'utiliser : écrans, mémoires flash, ADC rapides, cartes SD, capteurs à haut débit de données.

I2C : beaucoup de dispositifs, seulement deux fils

I2C (Inter-Integrated Circuit) est un bus synchrone adressable qui connecte de nombreux dispositifs avec seulement deux lignes partagées : SDA (données) et SCL (horloge). Chaque dispositif possède une adresse unique, et les deux lignes nécessitent des résistances de pull-up.

  • Avantages : seulement 2 fils pour de nombreux dispositifs, adressage intégré, économise des broches.
  • Limites : plus lent que SPI, half-duplex, nécessite des pull-ups et une bonne conception si le bus est long.
  • Quand l'utiliser : capteurs (température, IMU, pression), EEPROM, expandeurs d'E/S, RTC.

Tableau comparatif : I2C vs SPI vs UART

CaractéristiqueUARTSPII2C
Fils2 (TX, RX)4 (MOSI, MISO, SCK, CS)2 (SDA, SCL)
HorlogeNon (asynchrone)Oui (synchrone)Oui (synchrone)
Vitesse typiqueBasse-moyenneTrès élevée (des dizaines de MHz)Moyenne (100k–3,4M)
Nbre de dispositifs2 (point à point)Plusieurs (1 CS par esclave)Nombreux (par adresse)
DuplexFull-duplexFull-duplexHalf-duplex
Idéal pourLiaisons 1 à 1, débogageVitesse et débit de donnéesBeaucoup de capteurs avec peu de broches

Comment choisir et erreurs courantes

  • Si tu as besoin de vitesse (écran, mémoire), choisis SPI. Si tu dois connecter beaucoup de capteurs en économisant des broches, choisis I2C. Pour une liaison simple un à un ou du débogage, UART.
  • En I2C, n'oublie pas les résistances de pull-up sur SDA et SCL : c'est l'erreur la plus courante.
  • Attention aux niveaux de tension (3,3 V vs 5 V) : une incompatibilité peut endommager la puce ou empêcher la communication.
  • SPI et I2C sont prévus pour de courtes distances sur la carte ; pour de longs trajets ou entre équipements, envisage RS-485 ou CAN.

Conclusion

UART, SPI et I2C résolvent des problèmes différents : simplicité, vitesse, ou de nombreux dispositifs avec peu de broches. Bien choisir dès le départ évite les reconceptions de carte et les maux de tête côté firmware. Chez Regular Solids, nous intégrons et déboguons chaque jour des bus I2C, SPI, UART, CAN et RS-485 entre capteurs, périphériques et systèmes embarqués. Si tu as un produit avec plusieurs puces qui doivent se comprendre, parlons-en.