R É A L I S É PA R : E N C A D R É PA R :
M E RY E M Z O U B I R M.ABOUDRAR IMAD
GHIZLANE LAAMECH
1
5
I2C est un bus de donnée série , synchrone, bidirectionnel et Half-duplex.
Certains fabricants de composants électriques utilise le nom
TWI (two-wire-interface) ; en français (interface à deux fils).
Le fabricant de composant électronique ATMEL qui est la fabricant du µC,
Arduino utilise le bus TWI au lieu de I2C.
Le bus I2C est un bus de communication permettant à plusieurs composants
électroniques d’échanger des données entre eux .
Pour pouvoir utiliser ce bus les composants doit se conformer à cette spécification
notamment du point de vue physique au niveau des connexions électriques et au
niveau protocolaire quels signaux électriques doivent être générées et dans quel
ordre , théoriquement il est possible de connecter sur le bus I2C autant de
composants qu’on le souhaite.
Le bus I2C est un bus série ne peut donc contenir qu’une seule information
à la fois , il y a 5 informations différentes qui peuvent être mis sur le bus I2C
On peut mettre: Le signal START ou de RESTART (début)
Le signal STOP (fin)
Un bit de donnée soit 1 soit 0
Le signal IDLE (inactif)
Pour pouvoir transférer plusieurs informations sur le bus, les composants
doivent les envoyer les unes à la suite des autres autrement dit il faut les
envoyer en série. Half-duplex
Les composants sur le bus I2C devra voir un rôle spécifique , ils peuvent agir
soit en tant que maitre soit en tant qu’esclave.
Un maitre sur le bus I2C peut prendre contrôle du bus afin de l'utiliser
pour envoyer des requêtes aux esclaves.
Un esclave sur le bus I2C ne peut pas prendre contrôle du bus , il ne
fait que répondre aux requêtes des maitres.
Généralement les composants esclaves sont des composants qui génère de
l’information comme un capteur de température ou des composants qui
peuvent recevoir des consignes comme un composant utilisé pour contrôler
un moteur électrique.
Les composants agissant en tant que maitres sont généralement des
microcontrôleurs qui vont récupérer et traiter les informations des
esclaves et leur envoyer des consignes.
Sur le bus I2c il peut y avoir plusieurs esclaves et plusieurs maitres.
Pour communiquer sur le bus I2C les maitres doivent utiliser des requêtes qui ont une structure
spécifique .
Sur le bus I2C il n’y a que2 types de requêtes:
Requêtes d’écritures d’une ou plusieurs données
Une requête d’écriture est une requête ou le maitre va envoyer un ou plusieurs données
envoyées à une esclave.
Requêtes de lectures d’une ou plusieurs données
Une requête de lecture est une requête ou le maitre va recevoir un ou plusieurs données
envoyées par une esclave.
Une requête commence toujours par :
Signal START
Indiquer l’esclave par l’envoie des 7 bits de l’adresse de l’esclave.
Indiquer le type de requête par un bit de donnée 0 ou 1
Signal d’acquittement se fait par mettre la donnée 0 sur le bus
Le maitre a envoie ensuite une donnée de 8 bits que l’esclave doit acquitter
Si le maitre va envoyer une autre donnée de 8 bits , il envoie et l’esclave acquitte
Lorsque le maitre est envoyée la dernière donnée qu’il souhaitait il doit après
l’acquittement de l’esclave mettre le signal STOP sur le bus .
Apres que le maitre est envoyé l’adresse de l’esclave , le type de requête et que
l'esclave est acquittée ,l’esclave là envoie au maitre une donnée de 8 bits
Si le maitre veut recevoir encore une donnée de 8 bits , il doit acquitter la donnée
en mettant 0 sur le bus , l'esclave envoie ensuite une autre donnée , le maitre
peut ainsi recevoir plusieurs données à la suite .
Lorsque le maitre ne souhaite plus recevoir de donnée au lieu d’acquitter la
dernière donnée reçue , il va là non acquitter avec le signal NACK (en mettant 1
sur le bus)
Le maitre indique ainsi à l’esclave que ce dernière doit arrêter l’envoi des
données .
Le maitre termine ensuite la requête en libérant le bus avec le signal STOP
Le niveau physique
• Le niveau physique du bus I2ique C’est-à-dire au niveau du signaux
électriques
Le bus I2C contient de deux signaux :
• SDA (Serial Data Line): ligne de données bidirectionnelle,
• SCL (Serial Clock Line) : ligne d'horloge de synchronisation
bidirectionnelle.
PRINCIPE
Afin de d'éviter les conflits électriques les Entrées/Sorties SDA et SCL
sont de type "Collecteur Ouvert". Cela permet ainsi la présence de
plusieurs maîtres sur le bus.
• architecture du collecteur ouvert
Pour assurer la transmission des données dans le bus il faut respecter les deux
conditions:
Condition électrique du dépare: START
Condition d’arret : STOP
Protocole I2C : gestion du bus
prise de contrôle du bus
Le bus doit être au repos avant la prise de contrôle SDA et
SCL à 1
Pour transmettre des données, il faut surveiller :
• – La condition de départ : SDA passe à 0,
• SCL reste à 1 –
• La condition d’arrêt : SDA passe à 1, SCL reste à 1
Après avoir vérifié que le bus est libre, puis pris le contrôle
de celui-ci, le circuit en devient le maître : c’est lui qui génère
le signal d’horloge
Transmission d’un octet
transmission d’un octet
Donnée Adresse
Ecrire une donnée Ecrire une adresse
Lire une donnée Lire une adresse
TRANSMISSION D’UN OCTE
START DATA ACK STOP
Format globale d’une donnée
Conflit
principe
Principe Prise de contrôle du bus
• – Vérifier que le bus est libre
• – Condition d’arrêt envoyée depuis au moins 4,7 µs
• – Prise de contrôle effectif, mais vérification de l’état des lignes SDA et
SCL. Plusieurs cas :
• • Différents maîtres envoient les mêmes données en même temps : aucun
conflit, cas rare
• • Un maître impose un ‘0’ : il relire obligatoirement un ‘0’ et continuera à
transmettre
• • Un maître cherche à appliquer un ‘1’ sur le bus
• – S’il lit ‘1’, il continue à transmettre
• – S’il lit ‘0’, un autre maître a pris la parole en même temps : il perd
l’arbitrage, arrête d’émettre, mais continue à lire
CONCLUSION