Samedi 18 novembre 2006
Introduction
Le bus de communication I2C est souvent utilisé pour communiquer dans un périmètre restreint d'une carte ou de plusieurs cartes électroniques : voici une introduction au bus I2C pour en comprendre son mécanisme général. L'I2C c'est la solution de communication bas niveau "inside the box" ( dans la boîte ). Le nom I2C est l'abréviation pour bus de communication Inter - inter IC ( Integrated circuit ou circuit intégré ).
I2C pour Inter - Inter IC
L'I2C constitue le bon support pour la communication entre différents périphériques lents sur une même carte, qui sont consultés par intermittence, nécessitant peu de ressources matérielles pour être mis en oeuvre. Le bus I2C est simple, avec une bande passante faible et un protocole "courte distance". La plupart des circuits I2C disponibles fonctionnent à 400 Kbps et certains atteignent le MHz. Contrairement au bus SPI le bus I2C est un bus "half duplex" ou l'émission et la réception ne peuvent être simultanées. Il est facile d'utiliser l'I2C pour relier plusieurs périphériques suivant un schéma d'adressage intégré.
Philips à l'origine de l'I2C, à développé ce moyen de communication pour interconnecter à faible coût les différents sous ensembles des télévisions. Les circuits compatibles I2C sont nombreux sur le marché : EEproms, sondes thermiques, horloge temps réel + RAM, afficheurs etc ... L'I2C est également employé comme interface de commande aux dispositifs de traitement des signaux qui ont les interfaces séparées et spécifiques à l'application : mutimédia, tuner, encodeur / décodeur, processeur audio et vidéo. Philips, National Semiconductors, Xicor, Siemens et d'autres fabricants offrent des centaines de circuits compatibles I2C.
Dans la boîte
L'I2C est approprié pour connecter différents périphériques sur une même carte, et peut être étendu à travers plusieur cartes au sein d'un même système. Un exemple : un système de contrôle avec une carte unité centrale, qui utilise le bus I2C pour l'interface opérateur ( écran / clavier ). Un autre exemple : la SDRAM, qui peut comporter une EEprom I2C contenant les paramètres requis pour configurer correctement un contrôleur de mémoire dynamique.
Le bus I2C est un bus série synchrone à deux fils seulement. Il n'y a pas besoin de fils pour la sélection des périphériques ( comme SPI ) ou un système d'arbitration complexe, le rendant bon marché et simple à mettre en oeuvre au niveau matériel.
Les deux signaux I2C sont les données série ( SDA ) et l'horloge ( SCL ) ; ensemble ces signaux permettent de soutenir la transmission de données sur 8 bits, avec un adressage sur 7 bits et un bit de contrôle, sur seulement deux fils. Le circuit qui lance une transaction sur le bus I2C s'appelle le maître. Celui-ci commande normalement le signal d'horloge SCL. Le circuit adressé par le maître s'appelle l'esclave. Tout comme le bus SPI le bus I2C supporte le mode "multi-maîtres", mais la plupart des applications sont mono-maître. Il peut y avoir un ou plusieurs esclaves sur le bus. Le maître et les esclaves peuvent recevoir et transmettre des octets de données.
Chacun des circuits compatibles I2C à une adresse prédéfinie, dont les bits de poids faibles peuvent être configurables pour pouvoir adresser des circuits identiques sur le même bus. Le maître transmet l'adresse du circuit esclave au début de chaque échanges? Chaque esclave est responsable de surveiller le bus et de répondre seulement à sa propre adresse. Ce système d'adressage limite le nombre de circuits esclaves identiques qui peuvent co-exister sur un bus I2C sans conflits d'accès.
Communication
Le maître commence la communication en établissant une condition de départ ( start bit ). Le maître continu en envoyant les 7 bits d'adresse de l'esclave, avec le bit de poids fort ( MSB ) en premier ; le huitième bit suivant les 7 bits d'adresse ( bit R/W ), indique si l'esclave doit maintenant recevoir ( 0 ) ou transmettre ( 1 ). Cela est suivi d'un bit d'acquittement ( ACK ) publié par l'esclave en accusant réception de l'octet précédent ( adresse + R/W ).
Alors l'émetteur ( esclave ou maître ) transmet un octet de donnée en commençant toujours par le MSB. A la fin de cet octet, le récepteur de cet octet ( maître ou esclave ) publie un nouveau ACK. Ce modèle 9 bits ( octet + ACK ) est répété tant qu'il y a des données à transmettre.
Dans une transaction d'écriture ( réception esclave ), quand le maître a fini de transmettre tous les octets qu'il devait envoyer, il surveille le dernier ACK et déclare l'état d'arrêt ( P - stop condition ). Dans une transaction de lecture ( écriture esclave , le maître n'accuse pas réception du dernier octet qu'il reçoit : ceci indique à l'esclave que sa transmission est terminée. Le maître déclare alors l'état d'arrêt.
Un bus simple
Comme on viens de le voir, le protocole I2C fournit un adressage esclave, un bit de lecture / écriture et un mécanisme simple d'accusé réception ( ACK ). Il existe aussi quelques éléments suplémentaires au protocole I2C tels que la diffusion générale ( broadcast ) et l'adressage sur 10 bits au lieu de 7.
Les circuits I2C standards fonctionnent à 100 Kbps, les circuits plus rapides montent à 400 Kbps. Une révision de 1998 de la la norme I2C ( V 2.0 ) ajoute le mode haute vitesse qui peut atteindre 3,4 Mbps ; la plupart des circuits sur le marché fonctionnent à 400 Kbps.
Le plus souvent le maître I2C fait partie intégrante d'un microcontrôleur sous la forme d'un module d'interface contrôleur. On peut aussi implémenter le protocole I2C par logiciel, très simplement, en utilisant seulement 2 fils d'entrée / sortie pour SDA et SCL.
Conclusion
L'I2C offre une bonne solution d'interconnexion entre des périphériques sur une ou plusieurs cartes, avec des échanges occasionnels. L'avantage de l'I2C par rapport à ses concurrents ( SPI et Microwire ) est que le coût et la complexité ne croît pas en même temps que le nombre de circuits connectés au bus augmente.
Le bus de communication I2C est souvent utilisé pour communiquer dans un périmètre restreint d'une carte ou de plusieurs cartes électroniques : voici une introduction au bus I2C pour en comprendre son mécanisme général. L'I2C c'est la solution de communication bas niveau "inside the box" ( dans la boîte ). Le nom I2C est l'abréviation pour bus de communication Inter - inter IC ( Integrated circuit ou circuit intégré ).
I2C pour Inter - Inter IC
L'I2C constitue le bon support pour la communication entre différents périphériques lents sur une même carte, qui sont consultés par intermittence, nécessitant peu de ressources matérielles pour être mis en oeuvre. Le bus I2C est simple, avec une bande passante faible et un protocole "courte distance". La plupart des circuits I2C disponibles fonctionnent à 400 Kbps et certains atteignent le MHz. Contrairement au bus SPI le bus I2C est un bus "half duplex" ou l'émission et la réception ne peuvent être simultanées. Il est facile d'utiliser l'I2C pour relier plusieurs périphériques suivant un schéma d'adressage intégré.
Philips à l'origine de l'I2C, à développé ce moyen de communication pour interconnecter à faible coût les différents sous ensembles des télévisions. Les circuits compatibles I2C sont nombreux sur le marché : EEproms, sondes thermiques, horloge temps réel + RAM, afficheurs etc ... L'I2C est également employé comme interface de commande aux dispositifs de traitement des signaux qui ont les interfaces séparées et spécifiques à l'application : mutimédia, tuner, encodeur / décodeur, processeur audio et vidéo. Philips, National Semiconductors, Xicor, Siemens et d'autres fabricants offrent des centaines de circuits compatibles I2C.
Dans la boîte
L'I2C est approprié pour connecter différents périphériques sur une même carte, et peut être étendu à travers plusieur cartes au sein d'un même système. Un exemple : un système de contrôle avec une carte unité centrale, qui utilise le bus I2C pour l'interface opérateur ( écran / clavier ). Un autre exemple : la SDRAM, qui peut comporter une EEprom I2C contenant les paramètres requis pour configurer correctement un contrôleur de mémoire dynamique.
Le bus I2C est un bus série synchrone à deux fils seulement. Il n'y a pas besoin de fils pour la sélection des périphériques ( comme SPI ) ou un système d'arbitration complexe, le rendant bon marché et simple à mettre en oeuvre au niveau matériel.
Les deux signaux I2C sont les données série ( SDA ) et l'horloge ( SCL ) ; ensemble ces signaux permettent de soutenir la transmission de données sur 8 bits, avec un adressage sur 7 bits et un bit de contrôle, sur seulement deux fils. Le circuit qui lance une transaction sur le bus I2C s'appelle le maître. Celui-ci commande normalement le signal d'horloge SCL. Le circuit adressé par le maître s'appelle l'esclave. Tout comme le bus SPI le bus I2C supporte le mode "multi-maîtres", mais la plupart des applications sont mono-maître. Il peut y avoir un ou plusieurs esclaves sur le bus. Le maître et les esclaves peuvent recevoir et transmettre des octets de données.
Chacun des circuits compatibles I2C à une adresse prédéfinie, dont les bits de poids faibles peuvent être configurables pour pouvoir adresser des circuits identiques sur le même bus. Le maître transmet l'adresse du circuit esclave au début de chaque échanges? Chaque esclave est responsable de surveiller le bus et de répondre seulement à sa propre adresse. Ce système d'adressage limite le nombre de circuits esclaves identiques qui peuvent co-exister sur un bus I2C sans conflits d'accès.
Communication
Le maître commence la communication en établissant une condition de départ ( start bit ). Le maître continu en envoyant les 7 bits d'adresse de l'esclave, avec le bit de poids fort ( MSB ) en premier ; le huitième bit suivant les 7 bits d'adresse ( bit R/W ), indique si l'esclave doit maintenant recevoir ( 0 ) ou transmettre ( 1 ). Cela est suivi d'un bit d'acquittement ( ACK ) publié par l'esclave en accusant réception de l'octet précédent ( adresse + R/W ).
Alors l'émetteur ( esclave ou maître ) transmet un octet de donnée en commençant toujours par le MSB. A la fin de cet octet, le récepteur de cet octet ( maître ou esclave ) publie un nouveau ACK. Ce modèle 9 bits ( octet + ACK ) est répété tant qu'il y a des données à transmettre.
Dans une transaction d'écriture ( réception esclave ), quand le maître a fini de transmettre tous les octets qu'il devait envoyer, il surveille le dernier ACK et déclare l'état d'arrêt ( P - stop condition ). Dans une transaction de lecture ( écriture esclave , le maître n'accuse pas réception du dernier octet qu'il reçoit : ceci indique à l'esclave que sa transmission est terminée. Le maître déclare alors l'état d'arrêt.
Un bus simple
Comme on viens de le voir, le protocole I2C fournit un adressage esclave, un bit de lecture / écriture et un mécanisme simple d'accusé réception ( ACK ). Il existe aussi quelques éléments suplémentaires au protocole I2C tels que la diffusion générale ( broadcast ) et l'adressage sur 10 bits au lieu de 7.
Les circuits I2C standards fonctionnent à 100 Kbps, les circuits plus rapides montent à 400 Kbps. Une révision de 1998 de la la norme I2C ( V 2.0 ) ajoute le mode haute vitesse qui peut atteindre 3,4 Mbps ; la plupart des circuits sur le marché fonctionnent à 400 Kbps.
Le plus souvent le maître I2C fait partie intégrante d'un microcontrôleur sous la forme d'un module d'interface contrôleur. On peut aussi implémenter le protocole I2C par logiciel, très simplement, en utilisant seulement 2 fils d'entrée / sortie pour SDA et SCL.
Conclusion
L'I2C offre une bonne solution d'interconnexion entre des périphériques sur une ou plusieurs cartes, avec des échanges occasionnels. L'avantage de l'I2C par rapport à ses concurrents ( SPI et Microwire ) est que le coût et la complexité ne croît pas en même temps que le nombre de circuits connectés au bus augmente.

En matière de modules processeurs on connaissait déjà le format
Un grand pas est franchi avec le nouveau cœur