Étape 22 : Appendice D: I2C / TWI Bus Basics
I2C est synonyme de Inter-Integrated Circuit. I2C bus sont également connu sous le nom TWI pour l’Interface de deux fils, car il utilise seulement deux fils.http://en.wikipedia.org/wiki/I%C2%B2C
Sur un bus de TWI, les deux fils de signal sont SDA et SCL, essentiellement les données et horloge. Ces signaux est ouverts drain (ce qui signifie que son niveau logique est une impédance élevée ou faible, il ne peut jamais être élevé), mais il doit y avoir une résistance pull-up sur chacun de ces signaux (nous utilisons les résistances de pull-up interne de l’AVR). Ceci est important car n’importe quel appareil sur un bus de TWI peut conduire les signaux faibles à tout moment, afin que le signal ne peut devenir élevé quand tous les périphériques permettent de devenir forte. Ceci permet aux périphériques de détecter lorsque le bus est occupé ("arbitrage à l’aide de SDA ») et permettent également un périphérique lent de dicter la vitesse de l’horloge ou même mettre en pause une transmission si le périphérique plus lent est trop occupé (cela s’appelle « horloge étirement ». Ces faits rend le bus TWI bon pour la communication entre un tas de copeaux à l’aide de seulement deux fils.
Chaque transaction est entre un maître (celui du signal d’horloge de conduite) et un périphérique esclave. Chaque transaction commence avec une « condition de démarrage » et se termine par une « condition de fin ». Une condition de départ est lorsque les disques maître de bus SDA bas tout d’abord, puis conduite SCL faible deuxième. Une condition de fin est quand le maître libère le bus TWI en relâchant SCL et SDA puis en le relâchant.
Après la condition de départ, le capitaine doit choisir quel périphérique lui parler en envoyant un octet d’adresse 7 bits. Le 8e (dernière envoyée) bit indique si oui ou non le capitaine souhaite lire (1) ou d’écrire (0) à l’esclave abordée. Si le maître est écrit, il sera alors envoyer plus de données. Si le maître est en train de lire, elle publiera la ligne SDA alors l’esclave envoie des données (mais le capitaine est toujours le moteur de l’horloge). Lorsque adressée
Tous les octets sont envoyés MSB tout d’abord (plus important peu tout d’abord). Chaque octet est éventuellement s’est terminée par un accusé de réception/nacknowledgement. Consultez la fiche technique du périphérique pour voir ce que l’appareil s’attendra ou renverra. Habituellement, pour citer Wikipedia: « si le maître souhaite écrire à l’esclave, il envoie à plusieurs reprises un octet avec l’esclave envoie un bit ACK. (Dans ce cas, le maître est dans le master mode émission et l’esclave est esclave mode réception.) Si le maître souhaite lire de l’esclave, alors qu’elle reçoit à plusieurs reprises un octet de l’esclave, le maître envoie un accusé de réception peu après chaque octet, mais le dernier d'entre eux. (Dans ce cas, le maître est dans le master mode de réception et de l’esclave est esclave mode émission.) »
Détails plus complexes sont généralement spécifiques à un périphérique spécifique, et ces informations viendront dans sa feuille de données.
Lorsque j’utilise I2C/TWI avec microcontrôleurs AVR, j’utilise la couche bas niveau de la bibliothèque « Fil » pour Arduino. La bibliothèque de fils est le wrapper C++ pour le niveau « twi.c » et « twi.h » module inférieur, que j’ai modifier légèrement et compiler dans mon propre code (puisque je n’utilise généralement pas C++). Il s’occupe de presque tout.
Pour certaines formes d’onde d’analyseur logique, s’il vous plaît voir l’étape sur le RTC DS1307