Bus I2C Multi

publicité
Cours 243-648 Communications Numériques
Le bus I2C en mode multi-maître
Claude Barbaud
A-08
5 septembre 2008
1. Mode multi-maître
De plus en plus de circuits comprennent plusieurs processeurs capables
d’accéder, par le bus I2C, aux mêmes interfaces. Le protocole I2C est
capable de travailler en mode multi-maître :


écoute de la ligne pour savoir si elle est occupée.
synchronisation assurée par le maître qui à le contrôle.
Notons que le mode multi-maître n’est possibles qu’avec des processeurs qui
possèdent tous le mode multi-maître. Si un processeur ne possède pas ce
mode, il ne respecte pas la procédure et risque de prendre contrôle
inopinément du bus.
2. Synchronisation
Tous les maîtres génèrent leur propre horloge sur la broche SCL pour
transmettre des messages sur le bus I2C. Les données sont transférées
pendant la partie haute de l’horloge.
Le fait que les broches de tous les circuits I2C (SCL et SDA) soient en
collecteur ouvert ou en drain ouvert, avec des résistances de Pull-Up
détermine un branchement en ET câblé : dès qu’un circuit place sa sortie à 0,
toutes sont à 0.
I2C multi-maître
Page 1
Si les maîtres ont des horloges différentes, le timing ressemble à celui de la
figure 8.
D’abord, une horloge (CLK1 ou CLK2) place son SCL à 0. Ce changement,
vu par les autres, les oblige à changer aussi.
Ensuite, le circuit ayant l’horloge plus lente(CLK2 dans notre cas) maintient la
ligne SCL à 0. Le plus rapide(CLK1 dans notre cas) doit attendre.
Enfin, le plus rapide place son horloge à 0, obligeant les plus lents à le suivre.
C’est donc le circuit qui possède l’horloge plus rapide qui synchronise le bus.
3. Arbitrage
Normalement, un maître ne décide de parler sur le bus que si le celui-ci est
libre(il « écoute » la ligne et ne parle que si les SDA et SCL sont à 1).
Cependant, deux ou plusieurs maîtres peuvent décider de communiquer en
même temps (à l’intérieur du temps « accepté » par la norme). Plusieurs cas
peuvent arriver :

Si les deux maitres n’adressent pas le même périphérique (1 er byte de
donnée = adresse), le gagnant est désigné comme celui qui est le plus
rapide à placer un niveau bas sur la ligne SDA pendant que le perdant
place un niveau haut sur cette ligne. Dans l’exemple de la figure 9, DATA
2 gagne en ayant deux 0 consécutifs pendant que DATA 1 revient à 1.(le
premier front descendant a servi à la synchronisation.
On doit noter que le gagnant peut continuer son transfert comme s’il ne
s’était rien passé : il n’y a pas de perte de données.
I2C multi-maître
Page 2

Évidemment, les deux(ou plus) maîtres peuvent adresser le même
périphérique. L’arbitrage continue alors sur le byte suivant, selon le même
principe.

Si le gagnant est en train d’adresser le perdant, celui-ci doit se mettre
immédiatement en mode esclave.
Il n’y a donc pas de « super-maître » dans ce bus, ni de procédure de gestion
des priorités.
4. Utilisation du mécanisme de synchronisation pour
créer un « hand-shake »
Un périphérique lent peut profiter du Et-câblé et du mécanisme de
synchronisation pour éviter de se faire inonder de données. Il lui suffit de
garder son SCL au niveau 0 après réception et acquittement.
Le maître est alors obligé d’attendre que l’esclave remette son SCL à 1 pour
reprendre le transfert de données.
I2C multi-maître
Page 3
Téléchargement