I2C: Inter Integrated Circuit a été développé au début des années 80 par Philips Semiconductor pour permettre de relier facilement à un microprocesseur les différents circuits d'un téléviseur moderne.
Son but est de faire communiquer entre eux des composants électroniques très divers grâce à seulement 3 fils:
- Signal de donnée: SDA
- Signal d'horloge: SCL
- Référence électrique: masse
rôle: éviter les conflits électriques.
Les lignes SDA et SCL peuvent uniquement être forcée au niveau bas.
On ne peut pas les forcer au niveau haut.
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érifier 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.
Le maître transmet le bit de poids fort D7 sur SDA
il valide la donnée en appliquant au niveau "1" sur SCL
Lorsque SCL retombe à "0", il poursuit avec D6, ect. jusqu'à ce que l'octet complet soit transmis.
Il envoie le bit ACK à "1" en scrutant l'état réel de SDA.
L'esclave doit imposer un niveau "0" pour signaler que la transmission s'est déroulée correctement.
Le maître voit le "0"(collecteur ouvert) et peut passer à la suite.
Le bus I2C est de conception destiné à accueillir plusieurs maîtres => problème commun à tous les réseaux utilisant un canal de transmission unique: comment arbitrer?
Chaque maître peut prendre possesion du bus dés que celui-ci est libre: possibilité que deux maîtres prennent la parole en même temps.
Pas de problème électrique => collecteur ouvert
Problème logique => éviter la corruption des données due à la collision des bits transmis.
Date de début: 04/11/2014 , dernière mise à jour le : 05/01/2015
Webm@ster:Nicolas MUSTIN; Dylan HACHIN: Nous contacter