Identification






Mot de passe oublié ?
Pas encore de compte ? Enregistrez-vous

Se maintenir à jour avec nos Newsletter maintenant!






le Bus I2C Convertir en PDF Version imprimable Suggérer par mail
II- 3    Le bus i2c … [3]

    Le bus I²C (Inter Integrated Circuit) fait partie des bus série : 3 fils pour faire tout passer. Il a été développé au début des années 1980, par Philips pour minimiser les liaisons entre les circuits intégrés numériques de ses produits (Téléviseurs, éléments Hi Fi, magnétoscopes,...).

    Aujourd'hui, Philips a dans son catalogue plus de 150 circuits intégrés CMOS et bipolaires qui sont compatibles I²C. D'autres fabricants ont aussi développé des circuits intégrés qui peuvent être connecté au bus I²C. Le protocole utilisé est simple et rapide.

II- 3.1    Caractéristiques

    Le bus I²C permet de faire communiquer entre eux des composants électroniques très divers grâce à seulement trois fils : un signal de données (SDA), un signal d'horloge (SCL), et un signal de référence électrique (masse).

    Il s'agit d'une liaison en mode série, ce qui signifie que la vitesse de transfert sera plus faible qu'avec un bus de type parallèle. Le bus I²C permet cependant des échanges à la vitesse de 100 K bits par seconde. Certes, la vitesse de transfert du bus I²C n'est pas fulgurante, mais dans bien des cas, la vitesse n'est pas l'élément prédominant.

    L'utilisation d'un bus I²C permet de réduire la complexité des circuits imprimés à réaliser. Par exemple, pour connecter une EEPROM ou une RAM à un microcontrôleur classique, il faut relier entre eux les bits de données et les bits d'adresses des différents composants.

    De nombreux fabricants ayant adopté le système, la variété des systèmes disponibles disposant d'un port I²C est énorme.

  • Microcontrôleurs
  • convertisseurs A/N et N/A
  • mémoires (RAM, EPROM, EEPROM, etc.)
  • récepteurs infrarouges (télécommande RC5)
  • capteurs de température
  • circuits audio (égaliseur, contrôle de volume, etc.)
  • décodeurs télétexte
  • chargeurs de batterie
  • etc.

II- 3.1.1    Le support physique utilisé

    Comme indiqué précédemment, pour se connecter à un bus I²C il faut une masse, et deux fils de communication. Le premier fil, SDA (Signal Data), est utilisé pour transmettre les données. L'autre fil, SCL (Signal CLock) est utilisé pour transmettre un signal d'horloge synchrone (signal qui indique le rythme d'évolution de la ligne SDA). Les tensions associées aux niveaux logiques vont dépendre de la technologie des circuits en présence (CMOS, TTL). Il faudra que tous les circuits connectés au bus I²C utilisent les mêmes potentiels pour définir les niveaux haut et bas en définitive, cela implique que tous les composants connectés à un même bus soient alimentés de façon identique.


II- 3.2    Le protocole I2C

    Le protocole du bus I²C définit la succession des états possibles sur les lignes SDA et SCL, et comment doivent réagir les circuits en cas de conflit.

II- 3.2.1    La prise de contrôle du bus

    Pour transmettre des données sur le bus I²C, il faut surveiller deux conditions    particulières : la condition de départ et la condition d'arrêt (voir figure 2.7).
 
Condition de départ et d'arrêt I2C
figure.2.7 Condition de départ et d'arrêt.
 
 Avant de tenter de prendre le contrôle du bus, un circuit doit vérifier que les lignes SDA et SCL sont au repos, c'est-à-dire à l'état haut. Si c'est le cas, le circuit indique qu'il prend le contrôle du bus en mettant la ligne SDA à 0. A partir de ce moment là, les autres circuits savent que le bus est occupé et ils ne devraient pas tenter d'en prendre contrôle. Le circuit qui vient de prendre le contrôle du bus en devient le maître (en anglais "master"). C'est lui qui génère le signal d'horloge, quel que soit le sens du transfert.

II- 3.2.2    La transmission d’un octet

    Avant de placer les bits qui forment l'octet à transmettre sur le bus, le maître doit placer la ligne d'horloge SCL à 0. Tant que la ligne SCL est au niveau haut, la ligne SDA ne doit pas changer d'état, sinon cette condition sera interprétée comme la condition d'arrêt. La condition arrêt peut survenir même au milieu de la transmission d'un octet, pour abandonner la transmission et libérer le bus pour les autres circuits. Pour transmettre correctement les bits sur la ligne SDA, le maître doit donc tout d'abord placer la ligne SCL à 0. Ensuite, le maître peut placer la ligne SDA au niveau correspondant au bit à transmettre et replacer la ligne SCL au niveau 1 pour indiquer que le bit est présent sur la ligne SDA. La même opération va se répéter autant de fois que nécessaire pour transmettre les 8 bits de donnée. Notez que c'est le bit de poids fort qui est transmis en premier.

    Une fois les 8 bits transmis, le circuit qui vient de recevoir les données doit imposer un bit d'acquittement ACK sur la ligne SDA. Pour cela, pendant que la ligne SCL est au niveau bas, le maître place sa propre sortie au niveau haut, tandis que le récepteur (aussi appelé l'esclave) place sa sortie au niveau bas. Puisque les sorties sont à collecteur ouvert, la ligne SDA restera au niveau bas à cause de l'esclave. Le maître relit ensuite la ligne SDA une fois qu'il a passé la ligne SCL au niveau haut. Si la valeur lue pour le bit ACK est 0, c'est que l'esclave s'est bien acquitté de l'octet reçu, sinon c'est qu'il y a une erreur et le maître doit générer la condition arrêt.



 
< Précédent   Suivant >

Scalinet.com