← Back to blogEmbedded computing · 2 min

Comment fonctionne l’I2C ?

L'I2C (Inter-Integrated Circuit) est un protocole de communication série utilisé pour relier des composants électroniques sur une même carte ou au sein d'un système embarqué. Il fait dialoguer capteurs, actionneurs, microcontrôleurs et autres périphériques avec seulement deux fils : SDA (Serial Data) pour les données et SCL (Serial Clock) pour l'horloge. La communication est bidirectionnelle et sa vitesse s'adapte aux besoins du système, de quelques kilohertz à plusieurs mégahertz.

Maître, esclaves et deux lignes partagées

Un bus I2C comprend généralement un périphérique maître, qui initie et pilote les échanges, et des périphériques esclaves, qui répondent à ses commandes. Tous partagent les deux mêmes lignes. La ligne SDA transporte les données, et le maître comme les esclaves peuvent y émettre ou y recevoir. La ligne SCL synchronise la transmission : c'est le maître qui génère ce signal d'horloge et fixe ainsi le rythme des échanges. La vitesse du bus est directement déterminée par la fréquence du signal SCL.

Le déroulement d'un échange

Une communication commence toujours par un signal de démarrage (Start) envoyé par le maître sur le bus. Le maître transmet ensuite l'adresse de l'esclave avec lequel il veut dialoguer. Chaque esclave possède une adresse unique, ce qui permet de raccorder de nombreux composants sur les mêmes deux fils sans ligne de sélection dédiée.

Une fois l'esclave sélectionné, le maître peut soit lire des données depuis celui-ci, soit lui en écrire. Après chaque octet, le récepteur, qu'il s'agisse du maître ou de l'esclave, renvoie un acquittement (ACK) pour signaler que la réception s'est bien passée, ou un non-acquittement (NACK) en cas d'échec. Ce mécanisme permet de détecter immédiatement un périphérique absent ou qui ne répond pas. L'échange se termine lorsque le maître envoie un signal d'arrêt (Stop), qui libère le bus.

Plusieurs maîtres sur un même bus

L'I2C accepte plusieurs maîtres, mais un seul peut contrôler le bus à un instant donné. Si deux maîtres tentent d'y accéder simultanément, un mécanisme d'arbitrage tranche le conflit et désigne celui qui garde la main, sans corrompre l'échange en cours.

Simple, robuste et économe en broches, l'I2C est un excellent choix pour raccorder de nombreux périphériques sur un seul bus. Lorsque le débit devient prioritaire, le SPI peut être plus adapté : notre comparatif SPI vs I2C vous aide à trancher, et notre article sur la communication UART complète le panorama des liaisons série.

Sources

Comment fonctionne l’I2C ? | Tokhatec