← Back to blogEmbedded computing · 3 min

SPI vs I2C : Choisir le bon protocole de communication

Dans un système embarqué, le choix du bus de communication entre le processeur et ses périphériques compte autant que le choix des composants eux-mêmes. SPI (Serial Peripheral Interface) et I2C (Inter-Integrated Circuit) sont les deux bus série les plus répandus. Ils ont chacun leurs forces, et les connaître évite bien des compromis subis en fin de conception.

Deux bus, deux philosophies

Le SPI a été développé par Motorola. C'est un bus série synchrone conçu pour la communication à courte distance, principalement dans les systèmes embarqués. Il fonctionne en full-duplex : les données circulent simultanément dans les deux sens. Il est simple à mettre en œuvre, mais chaque périphérique supplémentaire réclame sa propre ligne de sélection, donc des broches en plus.

L'I2C a été développé par Philips Semiconductor, aujourd'hui NXP. C'est un bus série multi-maîtres, utilisé pour relier des périphériques lents à des cartes mères, des systèmes embarqués ou des smartphones. Il fonctionne en half-duplex sur deux fils seulement, les périphériques étant adressés sur le bus partagé. Son protocole est plus complexe à implémenter, mais il économise des broches. Nous détaillons son fonctionnement dans l'article comment fonctionne l'I2C.

Comparaison point par point

  • Mode de transfert : SPI en full-duplex ; I2C en half-duplex
  • Vitesse : SPI généralement plus rapide, plusieurs MHz ; I2C plus lent, jusqu'à 5 Mbit/s en Ultra Fast-mode, un mode unidirectionnel
  • Nombre de fils : SPI 4 fils (MOSI, MISO, SCLK, SS) ; I2C 2 fils (SDA, SCL)
  • Mise en œuvre : SPI simple mais gourmand en broches ; I2C plus complexe mais économe en broches
  • Topologie : SPI adapté à un nombre limité de périphériques ; I2C multi-maîtres, adapté à de nombreux périphériques

Quel bus pour quel projet

Le SPI s'impose lorsque le débit est prioritaire, que l'application tire parti du full-duplex et que le nombre de périphériques reste limité. Sa simplicité en fait aussi un choix confortable lorsque le microcontrôleur dispose de broches en quantité suffisante.

L'I2C est préférable lorsque les broches du microcontrôleur sont comptées ou que de nombreux périphériques doivent partager le même bus, ce qui est fréquent avec des capteurs. Il est aussi réputé plus sobre en énergie et peut couvrir des distances légèrement plus longues.

Les deux bus continuent d'évoluer. Le QSPI (Quad SPI) étend le SPI pour gagner en débit, et l'I3C prolonge l'I2C avec des vitesses plus élevées tout en restant compatible avec les systèmes existants. Ces protocoles s'adaptent aussi aux besoins de l'Internet des objets, notamment en matière de consommation et de sécurité, et les efforts de standardisation se poursuivent pour améliorer l'interopérabilité entre fabricants.

Au final, le choix se fait sur quelques critères simples : débit requis, nombre de périphériques, broches disponibles, encombrement et consommation. Ces critères pèsent aussi dans le choix du microcontrôleur, et nos équipes peuvent vous aider à les arbitrer pour votre carte.

Sources

SPI vs I2C : Choisir le bon protocole de communication | Tokhatec