I2C – Bus de communication série synchrone
Aujourd’hui on va voir en détail le bus I2C, un protocole de communication série très répandu dans les systèmes embarqués et l’électronique industrielle. I2C signifie « Inter-Integrated Circuit » et permet à plusieurs composants électroniques de dialoguer facilement via seulement deux fils.
Principes fondamentaux du bus I2C
Le bus I2C fonctionne sur un modèle maître-esclave où un seul maître contrôle la communication et plusieurs esclaves peuvent être connectés sur les mêmes lignes. Ce protocole utilise deux lignes principales :
- SDA (Serial Data) : ligne de données bidirectionnelle
- SCL (Serial Clock) : ligne d’horloge générée par le maître
Ces deux lignes sont en « open-drain » ou « open-collector », ce qui signifie que les dispositifs ne peuvent que tirer la ligne vers le bas (niveau bas) et nécessitent des résistances de tirage (« pull-up ») vers la tension d’alimentation pour revenir à l’état haut.
Fonctionnement du protocole I2C
Le maître génère un signal d’horloge sur SCL et envoie des données bit par bit sur SDA. La communication suit une séquence stricte :
- Start condition : passage de SDA de haut à bas alors que SCL est haut, indiquant le début d’une transmission.
- Adresse du périphérique : le maître envoie l’adresse 7 bits du périphérique ciblé plus un bit de lecture/écriture.
- Acknowledge (ACK) : l’esclave répond par un bit d’accusé de réception.
- Transmission des données : octets envoyés dans une direction ou l’autre selon le bit R/W.
- Stop condition : passage de SDA de bas à haut alors que SCL est haut, marquant la fin de la communication.
Ce protocole garantit un échange synchronisé et simple à implémenter matériellement.
Caractéristiques techniques et limitations
Paramètre | Description | Valeurs typiques |
---|---|---|
Nombre de lignes | Deux lignes partagées (SDA, SCL) | 2 |
Vitesse | Différents modes selon la vitesse de communication | Standard (100 kHz), Fast (400 kHz), Fast Plus (1 MHz), High-Speed (3.4 MHz) |
Adresses | Adresse 7 bits ou 10 bits | 128 adresses (7 bits), 1024 (10 bits) |
Topologie | Bus multi-maîtres possible | Oui, avec arbitration |
Applications courantes du bus I2C
Le bus I2C est utilisé pour connecter des capteurs, des mémoires EEPROM, des convertisseurs analogique-numérique, des afficheurs LCD, et bien d’autres périphériques à des microcontrôleurs. Sa simplicité matérielle en fait un choix idéal pour les applications nécessitant un grand nombre de périphériques sur un seul bus.
Par exemple, dans un microcontrôleur embarqué, un capteur de température peut envoyer ses mesures via I2C au processeur central, qui commande aussi un écran LCD via le même bus, en économisant les broches d’E/S.
Conseils pour une utilisation efficace
- Utiliser des résistances de pull-up adaptées à la longueur et capacité du bus (en général entre 2.2 kΩ et 10 kΩ).
- Éviter les câbles trop longs pour limiter les effets parasites et les pertes de signal.
- Respecter la séquence start/stop pour garantir la bonne synchronisation des échanges.
- Gérer l’arbitrage et la détection de collision en cas de multi-maîtres.
Pour aller plus loin, vous pourrez découvrir comment fonctionne le protocole SPI, une autre méthode de communication série souvent comparée à I2C pour sa rapidité et sa simplicité de conception.
Related Posts
- ESD – Décharge électrostatique : Comprendre et prévenir
- CT – Transformateur de courant : principe et applications
- AFR – Régulation Automatique de Fréquence : Principe et Fonctionnement
- SDRAM – Mémoire vive synchrone
- JST – Connecteur JST : guide technique complet
- SAR – Registre à Approximation Successive : Principe et Fonctionnement