Un bus de communication est un ensemble de lignes et de règles qui permet à deux composants numériques d’échanger des données — typiquement un microcontrôleur et ses capteurs, mémoires ou écrans. Cette fiche est le hub d’entrée vers les trois protocoles les plus courants en projet : l’UART, l’I2C et le SPI. Elle les situe les uns par rapport aux autres et donne la méthode pour choisir, sans détailler chacun (c’est le rôle des fiches filles).

Trois topologies de bus. UART : liaison point-à-point sur deux fils croisés (TX vers RX). I2C : deux fils partagés (SDA, SCL) reliant un maître à plusieurs esclaves adressés, avec résistances de tirage. SPI : trois fils partagés (MOSI, MISO, SCK) plus une ligne de sélection CS dédiée par esclave.

À quoi ça sert ?

Un microcontrôleur travaille rarement seul : il lit des capteurs, écrit sur un écran, stocke sur une carte mémoire, parfois dialogue avec un autre contrôleur. Plutôt qu’un fil dédié par information, un bus standardise la façon dont les données circulent sur quelques fils, ce qui économise des broches et rend les composants interchangeables.

Choisir un bus, c’est arbitrer entre plusieurs paramètres :

  • le nombre de fils mobilisés, donc de broches occupées sur le contrôleur ;
  • le débit atteignable ;
  • la distance sur laquelle la liaison reste fiable ;
  • le nombre de composants qu’on peut brancher sur les mêmes fils ;
  • la complexité de mise en œuvre, côté câblage et côté code.

Ce choix se fait en phase de concept (au moment de définir l’architecture) et se fige en dossier technique (au câblage et au routage).

Comment choisir un bus ?

Quatre distinctions structurent le paysage. Un bus est série (les bits passent l’un après l’autre, sur peu de fils, le cas en embarqué) ou parallèle. Il est synchrone quand une ligne d’horloge cadence les échanges, asynchrone quand les deux côtés doivent s’accorder à l’avance sur un débit. Il est point-à-point (deux composants seulement) ou multi-nœuds (plusieurs composants sur les mêmes fils). Enfin, il échange dans un seul sens à la fois ou en full-duplex (les deux sens simultanément).

Les trois protocoles courants se rangent ainsi :

ProtocoleFilsHorlogeComposantsDébitDistanceUsage typique
UART2 (TX/RX)non (asynchrone)2 (point-à-point)modéréquelques mètresconsole de debug, GPS, modules série
I2C2 (SDA/SCL)oui (synchrone)plusieurs (adresses)modérésur la carte (< 1 m)capteurs, écrans, horloge temps réel
SPI4 (MOSI/MISO/SCK/CS)oui (synchrone)plusieurs (1 CS par esclave)élevétrès courtécran rapide, carte SD, convertisseur

Trois réflexes pour trancher. Pour une liaison simple vers un seul périphérique, une console de mise au point ou un module série, l’UART suffit. Pour brancher plusieurs capteurs sans multiplier les fils, l’I2C les regroupe sur deux lignes grâce à l’adressage. Pour un périphérique rapide (écran graphique, carte SD, convertisseur), le SPI offre le débit, au prix d’un fil de sélection par composant ajouté.

Sur n’importe lequel de ces bus, la compatibilité des niveaux de tension (3,3 V / 5 V) entre les composants reste à vérifier avant de câbler. Et pour voir ce qui circule réellement sur les fils — et décoder les échanges trame par trame — l’instrument dédié est l’analyseur logique.

Au-delà de ces trois protocoles, les bus de terrain — le RS-485 (liaison série robuste, multi-nœuds, des dizaines de mètres) et surtout le CAN (le bus de l’automobile et de l’industrie, omniprésent en robotique) — prolongent les mêmes principes sur des distances et des exigences de fiabilité d’un autre ordre.

Voir aussi

  • UART — liaison asynchrone, 2 fils, point-à-point
  • I2C — bus synchrone, 2 fils, plusieurs composants par adresse
  • SPI — bus synchrone rapide, 4 fils, sélection par CS
  • Microcontrôleur — le bus relie le contrôleur à ses périphériques
  • Niveaux de tension — la compatibilité des niveaux se pose sur chaque bus
  • Analyseur logique — voir et décoder ce qui circule sur un bus