Le bus I2C - La gestion des conflits

La gestion des conflits


La structure même du bus I²C ayant été conçue pour accueillir plusieurs maîtres, se pose alors le problème de la prise de parole.

Comme il a été vu précédemment, chaque maître test le bus pendant une période de 4,7 µs avant de l’utiliser.

Cependant, il n’est pas impossible que deux maîtres prennent la parole en même temps.

Si cela ne pose pas de problème au niveau électronique (collecteur ouvert), il faut quand même pouvoir détecter cette collision afin d’éviter toutes corruptions de données.

La solution réside dans le fait que chaque composant doit relire ce qu’il a envoyé et comparer.

Lors d’un conflit potentiel, trois cas se présentent :

  • Les deux maîtres parlent tous deux de façon identique, il n’y a donc aucun problème, mais ce cas ne se présente que très rarement.

  • Un des maîtres impose un ‘0’ sur le bus alors que l’autre maître impose un ‘1’, la résultante en sera 0, le maître premier ne pourra pas alors détecter le conflit, les données résultantes du bus seront correctes pour lui.

  • Un des maîtres impose un ‘1’ sur le bus alors que l’autre maître impose un ‘0’, la résultante étant ‘0’, les données du bus lui paraîtrons corrompu, il devra donc cesser sa discussion sur le bus.

 

Image

Exemple d’un conflit

Le maître qui doit s’arrêter après détection de la collision n’est pas forcément celui qui a commencé en second, il s’agit avant tout du maître qui a envoyé un ‘1’ en premier alors que le second a envoyé un ‘0’.

La communication du maître ayant été perturbée s’arrête, l’autre maître peut quant à lui continuer sans problèmes à transmettre ces données.

La donnée ‘1’ s’effaçant devant la donnée ‘0’, cette différence lors d’un conflit, fait apparaître des priorités sur le bus.

C’est ainsi que l’on peut dire que si deux maîtres prennent la parole en même temps, leur adresse va faire la différence.

Les adresses les plus basses seront donc prioritaires.

La puissance de transfert de ce bus réside donc dans le fait qu’un maître qui entre en collision avec un autre continuera ou laissera l’autre maître terminer sa trame, contrairement à d’autres protocoles où les deux maîtres se seraient arrêtés pour reprendre après.

Joomla 1.6 Templates designed by Joomla Hosting Reviews