Référence Protocoles UART · SPI · I²C · CAN · Modbus · 18 min

Protocoles de
Communication
Embarqués

Vue d'ensemble des principaux bus de communication en embarqué — caractéristiques, schémas de câblage, chronogrammes, cas d'usage. Du UART point-à-point au CAN industriel multi-nœuds.

Tableau comparatif

ProtocoleFilsTopologieVitesse typiqueDistanceUsage
UART2 (+GND)Point-à-point9.6k – 921.6k bauds< 15 m (RS-232)Debug, modems, GPS
SPI4+ (SCK,MOSI,MISO,CS)Maître/multi-esclaves1 – 50 MHz< 10 cmMémoires, écrans, ADC rapides
I²C2 (SDA,SCL)Multi-maîtres/esclaves100k / 400k / 1M Hz< 1 mCapteurs, EEPROM
CAN2 (CAN-H,CAN-L)Multi-nœuds (bus)125k – 1M bps40 – 1000 mAutomobile, industriel
Modbus2/4 (RS-485)Maître/esclaves (RTU)9.6k – 115.2k baudsjusqu'à 1200 mAutomatisme, SCADA
USB4 (D+,D-,VBUS,GND)Host/devices1.5M / 480M / 5G+ bps< 5 mPC périphériques, debug
Ethernet4 paires (RJ45)Réseau switché10M / 100M / 1G+ bps100 m / brinIoT, supervision, OTA

UART — Asynchrone série

UART
Point-à-point Full-duplex Asynchrone
Fils
2 (TX / RX) + GND
Vitesse
9600 → 921600 bps
Format
8N1 (typique)
Distance
cm (TTL) / 15m (RS-232)

Communication série asynchrone : pas d'horloge partagée, les deux côtés doivent s'accorder sur le baud rate. Chaque octet est encadré par un start bit (0) et un stop bit (1).

CÂBLAGE MCU A TX ● RX ● MCU B ● RX ● TX TX → RX RX ← TX FRAME (8N1) — exemple 0x4A = 'J' START 0 1 0 1 0 1 0 0 STOP idle (HIGH)
// trame asynchrone : start (0) → 8 bits data LSB first → stop (1)
+ Avantages
Très simple, 2 fils, supporté partout, debug facile, faible coût
− Limites
Point-à-point uniquement, vitesse limitée, pas de détection collision

SPI — Série synchrone rapide

SPI
Maître/multi-esclaves Full-duplex Synchrone
Fils
4+ (SCK, MOSI, MISO, CS)
Vitesse
1 – 50 MHz
Modes
0 / 1 / 2 / 3
Distance
< 10 cm

Bus synchrone full-duplex : à chaque coup d'horloge SCK, un bit est envoyé sur MOSI et reçu sur MISO simultanément. Le CS (chip select) sélectionne l'esclave actif.

MASTER SCK ● MOSI ● MISO ● CS1 ● CS2 ● SLAVE 1 ● SCK ● MOSI · MISO ● ● CS SLAVE 2 ● SCK ● MOSI · MISO ● ● CS SCK (clock) MOSI MISO CS1 (slave 1 select) CS2 (slave 2 select)
// topologie multi-esclaves — un CS dédié par esclave
+ Avantages
Très rapide, full-duplex, simple à câbler, supporte multi-esclaves via CS
− Limites
Beaucoup de fils si nombreux esclaves, pas de standard d'adressage, courte distance

I²C — Multi-périphériques 2 fils

I²C
Multi-maîtres/esclaves Half-duplex Synchrone
Fils
2 (SDA, SCL)
Vitesse
100k / 400k / 1M Hz
Adressage
7 ou 10 bits
Pull-up
4.7 kΩ requis

Bus 2 fils où chaque esclave a une adresse unique. Le maître initie tout par une condition START, envoie l'adresse, puis lit/écrit. SDA et SCL sont en open-drain avec résistances de pull-up obligatoires.

MASTER SDA · SCL ● SLAVE 0x48 temp sensor SLAVE 0x3C OLED SLAVE 0x50 EEPROM SDA SCL 4.7 kΩ +VCC TRAME : START | ADDR (7b) | R/W | ACK | DATA (8b) | ACK | STOP START ADDR + R/W ACK DATA (8 bits) ACK STOP
// bus partagé multi-esclaves avec adressage 7 bits
+ Avantages
2 fils seulement, multi-esclaves natif, adressage standardisé, faible coût
− Limites
Plus lent que SPI, sensible au bruit, pull-up critique, courte distance

CAN — Bus différentiel multi-nœuds

CAN
Multi-nœuds Différentiel Arbitrage par priorité
Fils
2 (CAN-H, CAN-L)
Vitesse
125k – 1M (CAN), 5M (FD)
Terminaison
120 Ω aux 2 extrémités
Distance
40 m @ 1Mbps, 1km @ 50k

Bus différentiel très robuste (immunité au bruit), conçu pour l'automobile. Pas de maître : chaque nœud peut émettre, et l'arbitrage par identifiant garantit que le message le plus prioritaire passe sans collision.

ECU 1 moteur ECU 2 freins ECU 3 airbag ECU N ... CAN-H CAN-L 120 Ω 120 Ω // terminaisons obligatoires aux deux extrémités physiques du bus
// bus différentiel multi-maîtres — chaque ECU peut émettre indépendamment
+ Avantages
Très robuste (différentiel), multi-maîtres, arbitrage automatique, détection d'erreur intégrée
− Limites
Bande passante limitée (vs Ethernet), nécessite transceiver dédié, vitesse vs distance compromis

Modbus — Standard industriel

MODBUS
RTU / TCP / ASCII Maître/esclaves Application layer
Couche
RS-485 (RTU) / Ethernet (TCP)
Vitesse
9.6k – 115.2k bauds (RTU)
Adresses
1 – 247 esclaves
Distance
jusqu'à 1200 m (RS-485)

Protocole applicatif standard de l'industrie : automates programmables, SCADA, capteurs industriels. Le maître interroge tour à tour les esclaves par leur ID. 4 types de registres : Coils (bits R/W), Discrete Inputs (bits R), Input Registers (16-bit R), Holding Registers (16-bit R/W).

MASTER PLC / SCADA RS-485 RS-485 (A, B, GND) SLAVE 1 variateur SLAVE 2 capteur T° SLAVE 3 automate // le maître interroge chaque esclave à tour de rôle (polling)
// topologie maître/esclaves sur RS-485 — Modbus RTU
+ Avantages
Standard industriel universel, très simple, longue distance via RS-485, supports nombreux outils
− Limites
Maître unique (polling), pas de notification push, latence cumulative, pas chiffré

Autres protocoles à connaître

ProtocoleCaractéristiqueUsage typique
RS-485Différentiel, multipoint, jusqu'à 1200 mCouche physique Modbus, automatisme
RS-232Single-ended, point-à-point, ±12VConsole legacy, modems série
LINBus 1 fil 20 kbps maître/esclavesSous-bus automobile (lève-vitres, sièges)
FlexRay2 canaux 10 Mbps déterministeX-by-wire automobile critique
USBDifférentiel host/device 480 Mbps+Connexion PC, debug, mass storage
EthernetRéseau switché 100M–10G bpsIoT, supervision, mise à jour OTA
PROFIBUSRS-485 industriel, déterministeAutomatisme Siemens, instrumentation
PROFINETEthernet temps-réel industrielSuccesseur PROFIBUS, automation moderne
EtherCATEthernet maître/esclaves très rapideServo-drive, robotique, motion control
BLESans-fil basse conso 2.4 GHzWearables, beacons, IoT mobile
LoRa / LoRaWANSans-fil longue portée (km)Compteurs intelligents, agriculture, ville
ZigbeeMesh sans-fil 2.4 GHzDomotique, smart home
1-Wire1 seul fil (alimentation comprise)Capteurs DS18B20, identification
// règle de choix

Courte distance, haute vitesse → SPI (mémoires, écrans) · Multi-capteurs simples → I²C · Multi-MCU/ECU robuste → CAN · Industrie/automatisme → Modbus sur RS-485 · Debug/console → UART · Sans-fil basse conso → BLE ou LoRa · Performance temps-réel industriel → EtherCAT