Table Des Matières:
La spécification complète du bus I2C est disponible gratuitement sur le site de Phillips semiconducteur.
Une lacune technique, un trou de mémoire vite le site de Xavier COTTON et sa librairie de cours sur l'électronique !!!! |
![]() |
HistoriqueLe bus I2C pour Inter-IC a été inventé dans les années 1980 par Philips afin de relier simplement plusieurs circuits intégrés entre eux. Le taux de transfert sur le bus peut atteindre 100kbits/s (soit 750ko/mn). En 1992, la spécification du bus (disponible sur le site de Philips Semiconductor) a été modifiée afin d'atteindre un taux de transfert de 400kbits/s (c'est le mode fast) tout en conservant une compatibilité ascendante avec la version précédente. L'enjeu de cette compatibilité est importante puisque l'offre Philips est de 150 produits différents et il a été adopté par une cinquantaine de fabricants qui proposent près de 1000 référence différentes. La dernière évolution de la spécification date de 1998, pour implémenter un taux de transfert de 3,4Mbits/s c'est le mode hight speed. On obtient ainsi un bus dont les débits peuvent varier de 0 à 3.4Mbits/s, cette grande souplesse est très appréciable. PrésentationL'I2C est un bus de liaison électronique ne nécessitant que 2 fils (une horloge et un fil de données) c'est ce qui fait toute sa force. On peut ainsi relier et faire communiquer entre eux des microcontroleurs, des mémoires, des convertisseurs de tension (analogique/digital et digital/analogique), des ports d'entrées sortie logique, des composants de gestion d'alimentation, des sondes de température... Je m'arrête là la liste est longue ...On a la possibilité de réaliser un système numérique complet avec seulement 2 fils et pas un de plus. Quand on sait qu'un système numérique de base comporte 16 fils d'adresse, 8 fils de données et presque'autant de contrôle, c'est une vraie aubaine pour l'électronicien amateur. Cela donne aussi des systèmes très modulaires, en effet, il devient très facile d'y ajouter un port d'E/S ou un convertisseur AD/DA. C'est un bus série, c'est-à-dire que les données binaires - ou bit - sont transmises les unes derrières les autres ce qui constitue une trame série. Une des principale caractéristique de ce bus est le format de la trame qui est constituée par une condition de start suivi d'un octet d'adresse lui même terminé par un bit d'accusé de réception (tout octet transmis sur le bus est terminé par un bit d'accusé de réception, acknoledge en anglais) viennent ensuite les octets de données en nombre variable. La fin des données est marquée par la condition stop. C'est qui plus est un bus multi-maître avec système de détection de collision et d'arbitrage. Caractéristiques électriques du busTous les composants peuvent être connecté en emmetteur/récepteur sur le seul et unique fil de données SDA grâce à leurs sorties en collecteur ou drain ouvert, d'où la présence sur la lignes d'une résitance de tirage à la borne positive de l'alimentation. La valeur de Rp dépend de:
|
||||||||||||||||||||||||||||
![]() |
Voici la carcatéristique de Rpmin en fonction de la tension d'alimentation:
Une caractéristique électrique intéressante du bus est la spécification de la fréquence d'horloge: En effet, la fréquence de l'horloge peut être 0 (très lente). Concrètement c'est le maître du bus qui impose la vitesse du bus. Les niveaux logiques électriques sur le bus en mode standard (100Kbits/s):
|
||||||||||||||||||||||||||||
![]() |
Protocole de communication I2CLa spécification du bus I2C prévoit un mécanisme d'arbitrage du bus ainsi qu'un autre de synchronisation de l'horloge par insertion de wait state (voir la dite spec).
|
Voici une figure qui résume bien les propos ci-dessus:
... à suivre