Étape 2: I2C Communications
Communication I2C est réalisées en utilisant seulement deux câbles : un pour les données (SDA) et l’autre pour une horloge (SCL). La ligne de données est définie comme étant bidirectionnelle, donc il faut un appareil « maître » sur le bus pour contrôler les choses. Chaque appareil « esclave » aura sa propre adresse unique. Comme le montre le schéma ci-dessus, la séquence de base a le capitaine le début d’un transfert de données de signalisation. Après que le capitaine signale le début de transfert, il retourne l’adresse de l’esclave, qu'il veut parler. L’esclave prendra alors momentanément le contrôle de la ligne de données à reconnaître la demande. Le capitaine envoie ensuite un ou plusieurs octets de données avec l’esclave accusant réception de chaque octet. Quand c’est fait envoie des données, le capitaine signale la fin de la séquence de transfert avec un bit d’arrêt. Le maître contrôle le mouvement des bits de données avec la ligne d’horloge. Les données sont réputées pour être valide alors que la ligne d’horloge est élevée et devrait être verrouillée lorsque l’horloge passe retour faible.
Dans notre application actuelle avec l’écran LCD le maître fait toutes les données d’envoi, mais ce n’est pas une limitation du protocole I2C. Par exemple, le module horloge en temps réel, que j’ai sur commande nécessite des données du maître, mais il possède également des données qui le maître souhaite récupérer. Qui sera le sujet d’un futur épisode, mais je me contenterai de dire que le maître détermine le sens de la transmission de données en définissant ou en désactivant le bit le moins significatif de l’octet d’adresse pour indiquer une lecture ou une écriture. Comme peut être vu dans le logiciel, l’I2C adresse est sept bits et obtient déplacé gauche d’un bit à faire de la place pour le bit R/W.