Quand le maître et ses esclaves prennent le bus... ou Initiation au protocole I2C

Initiation disponible au format PDF - 446Ko

Chère lectrice, cher lecteur,

On est entre nous, alors on va se tutoyer.L'objet de ce document est de te faire comprendre comment des composants électroniques arrivent à communiquer entre eux gr'ce à la norme I2C (inter components communication) de Philips Composant.

A savoir : Tu n'est pas la seule ou le seul à (vouloir) utiliser le bus I2C. D'autres y ont pensé avant toi. C'est ainsi que si tu démontes ton répondeur, ton téléphone, ton magnétoscope, ta télévision, ta récente voiture ou ta chaîne HIFI, tu as toutes les chances d'y trouver des composants I2C.

Pour commencer, nous allons voir ensemble, sans entrer dans les détails, l'origine du bus I2C. Ensuite, nous pourrons découvrir les principes du protocole. Enfin, nous pourrons nous attaquer gentiment à la compréhension et la construction de messages I2C selon la norme.

1. Où est le problème ?

Les informations complexes transitent sur le bus de manière sérielle, en combinant des informations élémentaires (par groupe de 8 bits).
A chaque fois que la ligne SCL est à l'état haut, un bit est disponible sur SDA.

2. L'accusé de réception : Tu m'entends ?

Lorsqu'un composant contrôle le bus I2C, il est maître. Il observe, après l'envoi de chaque octet, la présence d'un signal d'acquittement. Ce signal est produit par un esclave qui confirme par là qu'il a bien reçu l'octet en entier.
Un esclave ne prend jamais d'initiative. Il répond seulement à des demandes d'un maître.

3. Tu m'entends ?

Lorsqu'un composant contrôle le bus I2C, il est maître. Il observe, après l'envoi de chaque octet, la présence d'un signal d'acquittement. Ce signal est produit par un esclave qui confirme par là qu'il a bien reçu l'octet en entier.
Un esclave ne prend jamais d'initiative. Il répond seulement à des demandes d'un maître.

4. Un réseau, des adresses : Qui cause à qui ?

Chaque composant I2C a une adresse. Lorsqu'un maître envoie un message, il commence par transmettre l'adresse du composant auquel il veut s'adresser puis le sens de la transmission (écriture ou lecture).

5. Les conditions de départ et de fin

Dans le cas d'une lecture, un esclave cesse d'envoyer des données lorsque le maître n'a pas envoyé de signal d'acquittement.
Une trame débute par une condition de départ (start) et se termine par une condition de stop. Un maître peut enchaîner plusieurs trames en renvoyant une condition de départ (restart) à la suite d'une première trame.

6. Politesse et multi-maîtres

Il est possible de connecter sur une même ligne I2C plusieurs composants I2C maîtres en plus des composants I2C esclaves.

7. Avantages et inconvénients du bus I2C

Annexes