← Tornar al blog

I2C, SPI i UART: què són i quan fer servir cada bus

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.