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.
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ística | UART | SPI | I2C |
|---|---|---|---|
| Hilos | 2 (TX, RX) | 4 (MOSI, MISO, SCK, CS) | 2 (SDA, SCL) |
| Reloj | No (asíncrono) | Sí (síncrono) | Sí (síncrono) |
| Velocidad típica | Baja-media | Muy alta (decenas de MHz) | Media (100k–3,4M) |
| Nº de dispositivos | 2 (punto a punto) | Varios (1 CS por esclavo) | Muchos (por dirección) |
| Dúplex | Full-duplex | Full-duplex | Half-duplex |
| Mejor para | Enlaces 1 a 1, depuración | Velocidad y caudal de datos | Muchos 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.
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
| Feature | UART | SPI | I2C |
|---|---|---|---|
| Wires | 2 (TX, RX) | 4 (MOSI, MISO, SCK, CS) | 2 (SDA, SCL) |
| Clock | No (asynchronous) | Yes (synchronous) | Yes (synchronous) |
| Typical speed | Low-medium | Very high (tens of MHz) | Medium (100k–3.4M) |
| Number of devices | 2 (point to point) | Several (1 CS per slave) | Many (by address) |
| Duplex | Full-duplex | Full-duplex | Half-duplex |
| Best for | 1-to-1 links, debugging | Speed and data throughput | Many 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.
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ística | UART | SPI | I2C |
|---|---|---|---|
| Fils | 2 (TX, RX) | 4 (MOSI, MISO, SCK, CS) | 2 (SDA, SCL) |
| Rellotge | No (asíncron) | Sí (síncron) | Sí (síncron) |
| Velocitat típica | Baixa-mitjana | Molt alta (desenes de MHz) | Mitjana (100k–3,4M) |
| Nre. de dispositius | 2 (punt a punt) | Diversos (1 CS per esclau) | Molts (per adreça) |
| Dúplex | Full-duplex | Full-duplex | Half-duplex |
| Millor per a | Enllaços 1 a 1, depuració | Velocitat i cabal de dades | Molts 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.
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éristique | UART | SPI | I2C |
|---|---|---|---|
| Fils | 2 (TX, RX) | 4 (MOSI, MISO, SCK, CS) | 2 (SDA, SCL) |
| Horloge | Non (asynchrone) | Oui (synchrone) | Oui (synchrone) |
| Vitesse typique | Basse-moyenne | Très élevée (des dizaines de MHz) | Moyenne (100k–3,4M) |
| Nbre de dispositifs | 2 (point à point) | Plusieurs (1 CS par esclave) | Nombreux (par adresse) |
| Duplex | Full-duplex | Full-duplex | Half-duplex |
| Idéal pour | Liaisons 1 à 1, débogage | Vitesse et débit de données | Beaucoup 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.