Retour à la première page
1. Où est le problème ?
2. Communication en série :
je vous en mets combien ?
3. L’accusé de réception : Tu m’entends ?
On sait comment Toto va s’y prendre pour transmettre tout plein d’informations
en série à Lili. Mais comment Toto fait-il pour savoir si Lili
a bien reçu les informations ? D’autant que les deux lignes sont
occupées par Toto. Mais Toto est poli et accorde à Lili la permission
de parler lorsqu’il le veut bien.
Le seul rôle de Lili est d’indiquer si oui ou non, elle a reçu
le dernier octet en entier. On dit dans ce cas que Lili est esclave et Toto
est maître.
Nous allons compliquer un peu notre chronogramme. Il va falloir
différencier ce que fait Toto, ce que fait Lili et ce qui en résulte
sur la ligne SDA. Dans ce cas simplifié, la ligne SCL est toujours contrôlée
par Toto.
Toto veut toujours envoyer l’octet 65. A la fin de son envoi, il va laisser
la parole à Lili.
SCL |
|||||||||||
SDA Toto |
|||||||||||
SDA Lili |
|||||||||||
SDA réel |
La transmission de l’octet est sans différence avec le chronogramme
3.
La nouveauté, c’est le signal ‘ack’, signifiant acknowledgement
ou signal d’acquittement.
Une fois transmis le huitième bit de l’octet, Toto laisse SDA inactif.
De son côté, Lili sait que c’est à elle de jouer et impose
SDA à l’état bas (actif). Toto rend SCL inactif et regarde sur
SDA réel si Lili l’a mis en activité. Dans le chronogramme 6,
Lili a bien reçu les 8 bits, elle transmet le signal d’acquittement.
Toto est rassuré, il abaisse SCL et pourra continuer à transmettre
ses données.
Lorsque Lili n’a pas reçu les informations correctement, elle ne produit pas le signal d’acquittement. Cela produit le chronogramme suivant :
SCL |
|||||||||||
SDA Toto |
|||||||||||
SDA Lili |
|||||||||||
SDA réel |
Le signal ‘nack’, signifiant no-acknowledgement, est une absence de signal d’acquittement. Dans ce cas, Toto sait que Lili n’a pas reçu correctement les 8 derniers bits transmis. Il y a donc une demande d’acquittement après chaque octet transmis.
Je suis sûr qu’une question te dévore l’esprit : comment Lili et Toto peuvent-ils contrôler tous les deux la ligne SDA ?
Là, c’est la super astuce du protocole I²C.
Imagine que Toto et Lili soient des personnages dans une pièce sombre. Ils ont tous les deux une lampe de poche. S’ils ne font rien, la pièce n’est pas éclairée (SDA inactif ou état haut). Si Lili allume sa lampe (SDA Lili actif ou à état bas), la pièce est éclairée (SDA réel actif ou à l’état bas), quelle que soit l’action de Toto. C’est comme cela que fonctionne chacune des deux lignes I²C.
Cette astuce permet aux deux composants (Toto et Lili) de transmettre des informations tous les deux sur les mêmes lignes.
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. |
4. Un réseau, des adresses : Qui cause à qui ?