Quand le maître et ses esclaves prennent le bus... ou Initiation au protocole I²C

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 I²C (inter components communication) de Philips Composant.

A savoir : Tu n’es pas la seule ou le seul à (vouloir) utiliser le bus I²C. 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 I²C.

Pour commencer, nous allons voir ensemble, sans entrer dans les détails, l’origine du bus I²C. Ensuite, nous pourrons découvrir les principes du protocole. Enfin, nous pourrons nous attaquer gentiment à la compréhension et la construction de messages I²C 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 I²C, 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 I²C, 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 I²C 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 I²C plusieurs composants I²C maîtres en plus des composants I²C esclaves.

7. Avantages et inconvénients du bus I²C

Annexes