I2C - Le bus de circuit intégré (Inter-Integrated Circuit Bus)

Le bus I2C est très couramment utilisé dans le domaine de l'embarqué. Nous vous expliquons comment il fonctionne et comment le configurer sur le Raspberry Pi à l'aide d'un exemple.

Caractéristiques I2C

Le bus à circuits intégrés est un bus de communication série synchrone. C'est à Philips Semiconductors que l'on doit son invention en 1982, mais l'interface a rapidement gagné en popularité.

Caractéristiques I2C
Caractéristiques I2C

Les synonymes couramment utilisés sont I2C, I2C ou IIC. L'interface utilise une architecture contrôleur-cible et permet au contrôleur de communiquer avec jusqu'à 112 dispositifs avec seulement deux fils.

Le contrôleur peut adapter le débit binaire pour répondre aux besoins spécifiques de la cible. Par conséquent, I2C est compatible avec de nombreux dispositifs tels que les capteurs, les dispositifs EEPROM, les horloges, les pilotes de moteur et plus encore.

Câblage

Le câblage du bus I2C ne pourrait vraiment pas être plus simple, puisque vous n'avez besoin que de deux fils. Connectez la broche d'horloge série (SCL) du contrôleur aux broches d'horloge série des cibles et connectez également leurs broches de données série (SDA). Le logiciel I2C fera le reste.

Câblage I2C
Câblage

Si vous devez fournir de l'énergie à votre dispositif I2C, vous pouvez utiliser les broches 3V3, 5V et GROUND de votre Raspberry Pi.

Certains appareils, comme notre BME688 Breakout Board ont une tête I2C de sorte que vous n'avez pas besoin de fils pour les connecter.

Communication I2C

Le bus à circuit intégré peut connecter 128 appareils avec seulement deux fils. Cela est possible grâce à un principe de communication ingénieux.

Les fils (SDA et SCL) ne sont jamais activement pilotés vers le haut. Si un dispositif veut envoyer un 1 logique, il laisse le fil flottant. Pour envoyer un zéro logique, il tire le fil à la masse.

Le contrôleur initie la communication. N'importe quel appareil du réseau peut servir de contrôleur et de cible.

Le graphique ci-dessous montre les différents bits.

Communication I2C
Communication I2C

Pour démarrer la communication, le contrôleur envoie un bit de départ suivi de l'adresse I2C de la cible et du mode de fonctionnement souhaité (R - lecture ou W - écriture).

Dans la communication I2C, la cible doit renvoyer un bit ACK tous les 8 bits (après chaque octet). L'espace d'adressage étant généralement de 7 bits, il existe 128 adresses (0 à 127). 16 d'entre elles sont réservées. Il reste donc 112 adresses possibles pour les périphériques.

L'adresse de la cible et le mode de fonctionnement sont d'un octet, la cible doit donc renvoyer un bit ACK. Ensuite, le contrôleur envoie l'adresse du registre (8 bits), que la cible acquitte à nouveau. À partir de là, la communication en lecture et en écriture diffère.

Pour l'écriture, le contrôleur envoie simplement les données par blocs de 8 bits. La cible accuse réception de chaque bloc. Une fois que le contrôleur a fini d'écrire, il envoie le bit d'arrêt.

Pour la lecture, le contrôleur envoie à nouveau le bit de départ, suivi de l'adresse de la cible. La cible acquitte et commence à envoyer les données par blocs de 8 bits. Cette fois, le contrôleur doit acquitter chaque octet. Pour arrêter la lecture, le contrôleur envoie le bit NACK et enfin le bit Stop.

Avantages, inconvénients et applications

Avantages

Les avantages du bus I2C sont assez clairs. Vous pouvez connecter 128 appareils avec seulement deux fils et deux broches chacun. C'est très puissant. De plus, vous disposez de vitesses flexibles. La mise en place du matériel peut difficilement être plus simple. Contrairement à SPI, le contrôleur sait si la cible a reçu les données correctement.

Avantages
Avantages

Inconvénients

Le bus de circuit d'intégration nécessite plus d'espace et d'énergie car il utilise des résistances d'excursion haute. Il est plus lent que le SPI. Vous pouvez rencontrer des problèmes si deux dispositifs utilisent la même adresse I2C. L'adresse est stockée directement sur le dispositif. Certains appareils vous permettent de choisir entre deux adresses possibles en soudant un cavalier à un endroit spécifique de l'appareil.

Inconvénients
Inconvénients

Applications

Si vous cherchez Capteur Dans notre boutique, vous remarquerez que presque tous les capteurs qui ne sont pas analogiques utilisent l'interface I2C. Elle est très courante dans l'espace embarqué. Il y a des choses comme la mémoire I2C. Souvent, les micro-contrôleurs utilisent ce bus pour communiquer. En plus de cela, de nombreux DACs (Digital Analog Convertisseur) et des ADC (Analog Digital Converter) sont compatibles avec l'interface.

I2C sur le Raspberry Pi

Notre site vidéo montre comment configurer le bus de circuits intégrés sur votre Raspberry Pi.

Laissez un commentaire