Présentation et avantages du bus I2C
Développé par Philips dans les années 1980, je2C (autrement orthographié I2C) est devenu l'un des protocoles de communication série les plus couramment utilisés en électronique. I2C facilite la communication entre les composants électroniques ou intégrés circuits, si les composants sont sur le même PCB ou connecté avec un câble.
Qu'est-ce que le protocole I2C?
I2C est un protocole de communication série qui ne nécessite que deux lignes de signal. Il a été conçu pour la communication entre les puces sur une carte de circuit imprimé (PCB). I2C a été conçu à l'origine pour 100 Kbps la communication. Cependant, des modes de transmission de données plus rapides ont été développés au fil des ans pour atteindre des vitesses allant jusqu'à 3,4 Mbit.
La principale caractéristique d'I2C est la possibilité d'avoir de nombreux composants sur un seul bus de communication avec seulement deux fils, ce qui rend I2C parfait pour des applications simples. Le protocole I2C a été établi en tant que norme officielle, permettant une compatibilité descendante entre les implémentations I2C.
Signaux I2C
Le protocole I2C utilise deux lignes de signaux bidirectionnelles pour communiquer avec les appareils sur le bus de communication. Les deux signaux utilisés sont:
- Ligne de données série (SDL)
- Horloge de données série (SDC)
La raison pour laquelle I2C ne peut utiliser que deux signaux pour communiquer avec plusieurs périphériques réside dans la manière dont la communication le long du bus est gérée. Chaque communication I2C commence par un 7-bit (ou 10 bits) qui appelle l'adresse du périphérique.
Cela permet à plusieurs périphériques sur le bus I2C de jouer le rôle de périphérique principal selon les besoins du système. Pour éviter les collisions de communication, le protocole I2C inclut des capacités d'arbitrage et de détection de collision, qui permettent une communication fluide le long du bus.
Avantages de l'I2C
En tant que protocole de communication, I2C présente les avantages suivants:
- Taux de transmission de données flexibles.
- Communication à plus longue distance que SPI.
- Chaque périphérique sur le bus est adressable indépendamment.
- Les appareils ont une relation primaire/secondaire simple.
- Il ne nécessite que deux lignes de signal.
- Il est capable de gérer plusieurs communications primaires en fournissant un arbitrage et une détection de collision de communication.
Limites d'I2C
Avec tous ces avantages, I2C a également quelques limitations qui peuvent devoir être conçues autour. Les limitations I2C les plus importantes incluent:
- Étant donné que seuls 7 bits (ou 10 bits) sont disponibles pour l'adressage des appareils, les appareils sur le même bus peuvent partager la même adresse. Certains appareils peuvent configurer les derniers bits de l'adresse, mais cela impose une limitation des appareils sur le même bus.
- Seules quelques vitesses de communication limitées sont disponibles et de nombreux appareils ne prennent pas en charge la transmission à des vitesses plus élevées. Une prise en charge partielle de chaque vitesse sur le bus est requise pour empêcher les périphériques plus lents d'attraper des transmissions partielles pouvant entraîner des problèmes de fonctionnement.
- La nature partagée du bus I2C peut entraîner le blocage de tout le bus lorsqu'un seul périphérique du bus cesse de fonctionner. La mise sous tension du bus peut rétablir le bon fonctionnement.
- Étant donné que les appareils définissent leur propre vitesse de communication, les appareils opérationnels plus lents peuvent retarder le fonctionnement des appareils plus rapides.
- I2C consomme plus d'énergie que les autres bus de communication série en raison de la topologie à drain ouvert des lignes de communication.
- Les limitations du bus I2C limitent généralement le nombre d'appareils sur un bus à environ une douzaine.
Applications I2C
I2C est une excellente option pour les applications qui nécessitent une mise en œuvre simple et à faible coût plutôt qu'une vitesse élevée. Par exemple, les utilisations courantes du protocole de communication I2C incluent:
- Lecture de certains circuits intégrés de mémoire.
- Accéder aux DAC et aux ADC.
- Transmettre et contrôler les actions dirigées par l'utilisateur.
- Lecture des capteurs matériels.
- Communication avec plusieurs micro-contrôleurs.