I²C (1/3) : Introduction


Sommaire

  1. Cablage de la ligne
  2. Schéma d'une trame I²C

Câblage de la ligne

D'un point de vue électrique, une ligne IC ressemble à ceci :



Il apparaît qu'un troisième fil est nécéssaire au montage : la référence commune du potentiel électrique (GND). On remarque aussi la présence de deux résistances pull-ups qui fixent le niveau de la ligne au repos à +Vcc. Ainsi, pour communiquer, un périphérique n'aura qu'à court-curcuiter la ligne pour la ramener au niveau logique 0. Les résisatances pull-ups limitent l'intensité du court-circuit à Vcc/1500 soit environ 3mA pour Vcc = 5 Volts.

Schéma d'une trame

 

Une trame I²C est le tracé de SDA et SDL en fonction du temps. 
 
 
Comme indiqué sur le schéma, cette tramme peut être décomposée en 7 morceaux :
 
  1. La start-condition : Celle-ci est générée par le maitre. Elle a deux impacts différents sur les autres périphériques de la ligne selon leur nature : pour les autres maîtres, elle dissuade de prendre la ligne (pour empêcher la collision) et pour les esclave, elle met tout le monde aux aguets car elle sous-entend qu'une adresse va être communiquer et qu'un des eclaves va devoir répondre.
  2. L'adresse codée sur 7 bits : Permet à l'esclave concerné de savoir que la suite de la trame le concerne, et dit aux autres qu'ils n'ont pas à se préoccuper de la suite
  3. Le bit R/W : indique à l'esclave concerné si il s'agit d'une lecture ou d'une écriture. C'est ce bit qui peut autoriser l'esclave à répondre. Voyons les deux cas possibles : R/W = 0, alors il s'agit d'une écriture du maître vers l'esclave, ce dernier a juste à enregistrer les octets qui vont suivre. Si R/W = 1, alors il s'agit d'une lecture : l'esclave sera - dans ce cas seulement - autorisé à répondre, il devra éventuellement enregistrer le début de la trame envoyée par le maitre pour savoir quelle donnée il va devoir renvoyer. Ces deux cas seront traités dans les parties 3 et 4.
  4. Un acknowledge : il s'agit d'une condition qui est génrée sur la ligne par l'esclave. C'est la seule initiative (et devoir) qu'à un esclave. Cette condition est génrée par l'esclave tous les 8 bits et permet au maitre de savoir si les données envoyées ont bien étées reçues. Si l'esclave ne renvoi pas d'acknowledge on dit que c'est une condition de NO-acknowledge qui est génée, le maitre met alors fin à la communication. 
  5. Le premier byte de données
  6. Un nouvel acknowledge : dans le cas de l'envoi d'une chaine de caractères, il y aura alternance octet/acknowledge...
  7. La stop condition : indique à l'esclave que le maître a relâche la ligne : soit parce qu'il a fini d'envoyer les données, soit parce qu'il n'a pas recu d'acknowledge.
 
 
Ces conditions on étées définies par Philips lorsque celui-ci a développé l'I²C. Il faut connaitre ce qu'elles signifient, mais il n'est pas fondamental de savoir à quoi elles correspondent physiquement (sur le chronogramme), d'ailleurs je n'en parle pas ici. En effet, lorsque l'on mettra en oeuvre la liaison I²C, ces conditions seront générée matériellement par les périphériques (que l'on choisira judicieusement).
 
A titre d'exemple - qui arrive un peu tôt dans le document - il faut faire la différence entre la gestion du bus I²C grace à un PIC16F84 et un PIC18F2550 : en effet contrairement au 18F2550, le 16F84 (bien moins récent) ne prend pas en charge matériellement le protocole I²C, il serait donc à votre charge de développer toutes les fonction qui permettraient de générer les conditions énoncées précedemment. Bien que trés instructif, ce travail serait laborieux et démodé. On préfererait (et c'est ce qu'on fera dans la suite de ce document) utiliser le 18f2550 qui intègre matériellement un module qui génère automatiquement ces conditions. Par exemple, en mode maitre, lorque l'on décide d'écrire un octet vers un esclave, il suffit de le préciser quel est cet octet et l'adresse de l'esclave pour que le PIC18f2550 génère la trame complète est s'assure de que l'esclave renvoie des acknowledge. De même, si le 18f2550 est configuré en esclave, il générera automatiquement un acknowledge après avoir reçu un octet.
 


 

Venez nous dévouvrir !

Vous pouvez en apprendre un peu plus sur nous grâce à ce site, contactez-nous avec la page dédiée
ou venez nous voir à l'ENSEEIHT dans la fameuse Tour Radio (3ème étage)