Licence I
BUS I2C
Réalisé par : Encadré par :
NGOYO MAPESSI M.Hugues EBOUE
Lauriane
2019-2020
Table des Matières
Introduction.........................................................................................................................................3
I-Généralité..........................................................................................................................................4
II- schema fonctionnel du bus I2C.....................................................................................................4
2.1- Schema I2C...............................................................................................................................4
Figure 1: schema bus I2C.............................................................................................................4
2.2-Definition....................................................................................................................................4
Figure 2: schema fonctionnel........................................................................................................5
III-Mode de fonctionnement du bus I2C..........................................................................................5
3.1- Protocole I2C............................................................................................................................5
a. Les 2 modes de fonctionnement.........................................................................................5
b. Transmission des données...................................................................................................6
Figure 3 : transmission des données..............................................................................................6
c. Les conditions de depart et d’arret.....................................................................................6
Figure 4 : les conditions d’arrêt et de départ................................................................................6
3.2-La gestion des conflits...............................................................................................................7
a. Mise en situation..................................................................................................................7
b. Le principe...........................................................................................................................7
Figure 5: chronogramme des données...........................................................................................8
c. La Synchronisation..............................................................................................................8
Figure 6: Synchronisation des données.........................................................................................9
3.3-L’adressage des composants.....................................................................................................9
a. L’adresse 0000 0000 :..........................................................................................................9
b. Adressage sur 7 bits...........................................................................................................10
c. Adressage sur 10 bits.........................................................................................................10
Figure 7: Adressage des données...............................................................................................10
Figure 8: Adressage 10 bits des données.....................................................................................11
IV- PROGRAMMATION DU BUS I2C..........................................................................................11
V-CONCLUSION..............................................................................................................................13
ANNEXE............................................................................................................................................14
BIBLIOGRAPHIE............................................................................................................................15
2
Introduction
Le bus I2C (inter internet grated bus) est le bus historique, dévéloppé
par philipo pour les applications domestique et élèctronique domestique
au début des années 80 notament pour permetre de relief facilement à un
microprocesseur. C'est le bus qui a émergé de la guerre des standards
lancée partout Les acteurs du monde élèctronique. Ainsi votre teléviseur,
à tous ces ensembles sont sur un bus I2C ( recpteur, télé commande,
réglages ampliBF, tuner, horloge, gestion peritiel). IL existe d'innombrale
péripherique exploitant ce bus, il est même implantable par logiciel dans
n'importe lequel des mocrocontrôleur. Mais comment ce déroule la
communication I2C?
Dans ce tutoriel, nous allons d'écrire dans un premier temps le principe du
bus I2C, dans un deuxieme temps donner le fonctionnement du bus I2C.
3
I-Généralité
Le bus I2C est un bus multi maître, qui permet de rélier facilement à un
microprocesseur ,les différents circuits d’un téléviseur moderne.
Dans sa version initial, il a débit maximal de 100kbits/s. Il est multi
maitre. L'adresse des esclaves est de 7bits maximal la distance entre
chaque élément est relativement reduite(quelque meters). Son aspect
materiel est tres simple. Il exists une liaison trifilaire bidirectionnelle
pour l'ensemble des signaux. Le signal SDA (signal Data) transmet Les
données entre le maître et l'esclave ou inversement. Le signal SCL
( signal clock) est le signal horloge emis par le maître. Il reste le signal
GRD ( GrounD) qui est la masse des deux signaux. C'est à dire que le
signal est constamment à “1” said en cour de transmissions. De maniere
plus technique un signal est à “1”si on a +5v sur la ligne et à “0” si la
ligne est à 0.
II- schema fonctionnel du bus I2C
2.1- Schema I2C
Figure 1: schema bus I2C
2.2-Definition
Definition les moms du schema
o SDA (signal Data) permet de transmettre les données.
4
o SCL (signal clock), pour transmettre un signal d'horloge
synchrone.
(Ce signal permet de synchroniser les échanges entre maître et esclaves).
o GND signifies terrain commun.
Figure 2: schema fonctionnel
III-Mode de fonctionnement du bus I2C
3.1- Protocole I2C
a. Les 2 modes de fonctionnement
Le protocole i2c definit la succession des etats logiques possibles sur SDA et
SCL, et la façon dont doivent reagir les circuits en cas de conflits
Il existe deux modes d’utilisation du bus :
Le mode Maitre-Esclave : le seul circuit dirige la communication /
le maitre.Dans ce cas le maitre devient tour à tour emetteur ou
recepteur selon l’operation effectuée
Le mode Multi-Maitres: plusieurs circuits peuvent prendre la main
sur le bus et decider des operations.Un seul maitre est actif à un
moment donné.
La distinction entre maitre et esclave est importante et n’a rien à voir avec le fait
que le composant emet ou reçoit des données.Le maitre est celui qui prend
L’initiative du transfert , decide du sens de ce transfert et règle la
communication en emettant les impulsions d’horloge sur la ligne SCL,les
données sur SDA etant générées par le maitre ou par l’esclave, Un maitre peut
5
donc etre recepteur ou emetteur.Un composant qui prend part à la
communication apres avoir été appelé par le maitre s’appelle esclave.
Le protocole i2c gere la liaison et les conflits eventuels grace à la fonction
logique ET entre les lignes et à une procedure d’arbitrage du bus.
b. Transmission des données
La transmission étant de type série, les données sont transmises bit par bit, avec
pour chaque bit transmis, un coup d’horloge.
Une donnée est valide que si la ligne d’horloge SCL est à un niveau haut et que
la ligne de donnée SDA est stable. Les changements d’état de la ligne SDA
doivent être effectués lors d’un état bas sur la ligne SCL.
Figure 3 : transmission des données
c. Les conditions de depart et d’arret
Les conditions d’arrêt et de départ de la transmission des données se présente
comme suit :
Condition de départ : un front descendant sur SDA quand SCL est à l’état haut.
Condition d’arrêt : un front montant sur SDA quand SCL est à l’état haut.
Figure 4 : les conditions d’arrêt et de départ
Remarque : les conditions de départ et d’arrêt sont toujours générées par le
maître du bus.
6
La condition de départ est immédiatement suivie par l'adresse du composant
appelé par le maître. Chaque composant possède une adresse unique codée sur
sept bits. Le huitième bit émis indique la direction du transfert
(0 = écriture, 1 = lecture).
3.2-La gestion des conflits
a. Mise en situation
La structure même du bus I2C a été conçu pour pouvoir y accueillir plusieurs
maîtres. Se pose alors le problème commun à tout les réseaux utilisant un canal
de communication unique : la prise de parole. En effet, chaque maître pouvant
prendre possession du bus dès que celui-ci est libre, il existe la possibilité de
que deux maîtres prennent la parole en même temps. Si cela ne pose pas de
problème sur le plan électrique grace l'utilisation de collecteurs ouverts, il faut
pouvoir détecter cet état de fait pour éviter la corruption des données
transmises.
b. Le principe
Comme nous l'avons vu précédemment, pour prendre le contrôle du bus, un
maître potentiel doit d'abord vérifier que celui-ci soit libre, et qu'une condition
d'arrêt ait bien été envoyée depuis au moins 4,7µs. Mais il reste la possibilité
que plusieurs maîtres prennent le contrôle du bus simultanément.
Chaque circuit vérifie en permanence l'état des lignes SDA et SCL, y compris
lorsqu'ils sont eux même en train d'envoyer des données. On distingue alors
plusieurs cas :
(1) Les différents maîtres envoient les mêmes données au même moment : Les
données ne sont pas corrompues, la transmission s'effectue normalement,
comme si un seul maître avait parlé. Ce cas est rare.
(2) Un maître impose un '0' sur le bus :
Il relira forcément '0' et continuera à transmettre. Il ne peut pas alors détecter un
éventuel conflit.
(3) Un maitre cherche à appliquer un '1' sur le bus :
S’il ne relit pas un niveau '1', c'est qu'un autre maître a pris la parole en même
temps. Le premier perd alors immédiatement le contrôle du bus, pour ne pas
perturber la transmission du second. Il continue néanmoins à lire les données au
cas celles-ci lui auraient été destinée.
7
Exemple :
Soit le chronogramme suivant :
Figure 5: chronogramme des données
Dans cet exemple :
SCLR : Horloge résultante.
SDA1 : Niveaux de SDA imposés par le maître n°1.
SDA2 : Niveaux de SDA imposés par le maître n°2.
SDAR : Niveaux de SDA réels résultants lus par les deux
maîtres.
Analyse : Le premier octet est transmis normalement car les deux maîtres
imposent les mêmes données. (Cas n°1). Le bit ACK est mis à '0' par l'esclave.
Lors du deuxième octet, le maître n°2 cherche à imposer un '1' (SDA2), mais
relit un '0' (SDAR), il perd alors le contrôle du bus et devient esclave (Cas n°3).
Il reprendra le contrôle du bus, lorsque celui-ci sera de nouveau libre.
Le maître n°1 ne voit pas le conflit et continue à transmettre normalement.
(Cas n°2)
Au total, l'esclave a reçu les données du maître n°1 sans erreurs et le conflit est
passé inaperçu.
c. La Synchronisation
Si un périphérique lent est connecté sur le réseau
L’esclave force la ligne au niveau bas immédiatement après le 8ème bit,
avant l’impulsion d’acquittement émise par le maître.
L’utilisation de la ligne SCL pour conserver la main pour faire une bonne
synchronisation.
– Après avoir mis SDA au niveau bas, l’esclave doit le relâcher dès
que le maître relâche SCL
– Si l’esclave force SCL au niveau bas, le maître ne peut
plus émettre d’impulsion d’horloge puisqu’il ne peut plus
remettre SCL au niveau haut
Méthode :
– Après avoir reçu le 8ème bit, l’esclave force SDA au niveau bas
8
(acquittement).
En même temps, il démarre la conversion et force
SCL au niveau bas également.
– Le maître démarre la phase d’attente d’acquittement : il relâche
SDA puis relâche SCL : lorsqu’il teste le niveau de SCL, il
constate qu’il est toujours bas, forcé par l’esclave. Il entre alors
dans une boucle en attendant que SCL repasse au niveau haut.
– Dès que le maître détecte que SCL est au niveau haut, il teste
SDA : il trouve un niveau bas (acquittement valide). Il peut
alors lire le résultat de la conversion.
Figure 6: Synchronisation des données
3.3-L’adressage des composants
a. L’adresse 0000 0000 :
Les adresses 0000 0xxx ne sont pas utilisées pour l’adressage des composants.
– Adresse d’appel général : les circuits ayant la capacité de
traiter ce type d’appel émettent un acquittement. Le
deuxième octet définit le contenu de l’appel
– 0000 0110 : RESET. Remet tous les registres des circuits
connectés dans leur état initial. Les circuits qui le permettent
rechargent leur adresse d’esclave.
– 0000 0010 : Les circuits qui le permettent rechargent leur adresse
d’esclave.
– 0000 0100 : Les circuits définissant leur adresse de
façon matérielle réinitialisent leur adresse d’esclave.
– 0000 0000 : interdit
– xxxx xxx1 : joue le rôle d’interruption. xxxx xxx peut être
l’adresse du circuit qui a généré l’interruption.
9
b. Adressage sur 7 bits
L'octet d'adressage peut être scindé en deux parties :
les sept premiers bits correspondent à l'adresse proprement dite,
le dernier bit est nommé R/W :
o s'il est à 0, le maître signale qu'il va envoyer des octets, et donc que
l'esclave doit les lire,
o s'il est à 1, le maître indique qu'il veut recevoir des octets, et donc
que l'esclave doit les fournir.
On peut également considérer que l'adresse est codée sur les 8 bits, chaque
esclave a alors deux adresses, l'adresse paire qui sert à lui envoyer des données,
l'adresse impaire pour lui demander d'en envoyer.
Plusieurs adresses sont réservées :
« 00000000 » : utilisée pour adresser tous les esclaves (« broadcast »),
« 0000001X » : utilisée pour accéder aux composants CBUS (ancêtre de
l’I²C),
« 0000010X » : réservée pour d’autres systèmes de bus,
« 0000011X » : réservée pour des utilisations futures,
« 00001XXX » : pour les composants haute-vitesse,
« 11111XXX » : réservée pour des utilisations futures,
« 11110yzX » : permet de préciser une adresse sur 10 bits.
c. Adressage sur 10 bits
Dans le cas d'un adressage sur 10 bits, il faut utiliser deux octets.Le premier est
l'octet « 11110yz0 » (comme précisé ci-dessus), les bits « yz » sont les 2 bits de
poids forts de l'adresse, le bit R/W est toujours placé à 0.Le deuxième octet est
utilisé pour les 8 bits de poids faibles de l'adresse, il n'y a pas de bit R/W.
Figure 7: Adressage des données
À la suite de l'émission du premier octet, plusieurs esclaves parmi ceux ayant
une adresse sur 10 bits peuvent répondre par un ACK (ceux qui ont les mêmes
10
2 bits de poids fort). Peu importe, à l'issue du 2e octet, seul l'esclave auquel on
s'est adressé répondra.
Le bit R/W étant toujours placé à 0, pour demander à un esclave d'écrire, à la
suite de l'émission des 2 octets précédents, il faut renvoyer une condition de
RESTART suivie de l'octet « 11110yz1 » (avec le bit R/W à 1), pour que
l'esclave sache qu'il s'agit d'une commande de lecture.
Figure 8: Adressage 10 bits des données
IV- PROGRAMMATION DU BUS I2C
Programme I2C (Exemple):
11
12
V-CONCLUSION
I2C est un protocole de communication. Il permet de créer does bus contenant
plusieurs maîtres et esclaves. Ce protocole prévoit LA gestion automatique des
conflit entre composants. Ce sont les composants eux même quo s'en occupent.
Nous travaillons eh mode mono-maître, nous n'avons pas à nous préocuper de la
gestion des conflits. Em revanche le protocole me prévoit aucune verification
des données transmises. Il est aloes difficile De savoir si mes valeurs
receptionnées sont exactes. Les reponses des composants sont parfois un peu
tardive, il faut donc ajuster les délais d'attente en reception.
13
ANNEXE
Suite programmation
14
BIBLIOGRAPHIE
http://www.licm.sciences.univ-metz.fr
http://www.aurel32.net/elec/i2c
http://www.infoindustrielle.free.fr/ls-reseaux/reseaux-htm/22N-
I2C.htm
http://www.semiconductorphillipo.com
15