Vous êtes sur la page 1sur 33

I2C

Introduction au
bus I2C

Camille Diou
Docteur en microlectronique

LABORATOIRE INTERFACES UNIVERSIT


CAPTEURS & MICROLECTRONIQUE DE METZ

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 1


Introduction au bus I2C

Prsentation du bus I2C

Le protocole I2C

Les conflits

Spcificits et volutions

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 2


Laboratoire Interfaces
Capteurs & Microlectronique

Camille Diou
Docteur en microlectronique

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 3


Introduction
Prsentation du bus I2C

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 4


Prsentation

I2C : Inter Integrated Circuit


dvelopp au dbut des annes 80 par Philips
Semiconductor pour permettre de relier facilement un
microprocesseur les diffrents circuits dun tlviseur
moderne.
But :
faire communiquer entre eux des composants
lectronique trs divers grce seulement 3 fils :
Signal de donne : SDA
Signal dhorloge : SCL
Signal de rfrence lectrique : masse

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 5


Caractristiques du bus I2C

Deux lignes uniquement (SDA et SCL) + masse


1 adresse unique pour chaque priphrique
Bus multi-matre, dtection des collisions et arbitrage
Bus srie, 8 bits, bi-directionnel 100 kbps (standard mode),
400 kbps (fast mode), 3,2 Mbps (high-speed mode)
Filtrage intgr : rjection des pics parasites
Nombre de circuits uniquement limit par la capacitance
maximale du bus : 400 pF

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 6


Principe du bus I2C

Entres-sorties de type collecteur ouvert


rle : viter les conflits lectriques
Vcc Vcc

SDA

SCL
L.SCL L.SDA

E.SCL E.SDA

Les lignes SDA et SCL peuvent uniquement tre force au niveau bas.
On ne peut pas les forcer au niveau haut.

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 7


Protocole
Gestion du bus I2C

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 8


Prise de contrle du bus

Le bus doit tre au repos avant la prise de contrle


SDA et SCL 1
Pour transmettre des donnes, il faut surveiller :
La condition de dpart : SDA passe 0, SCL reste 1
La condition darrt : SDA passe 1, SCL reste 1
Aprs avoir vrifi que le bus est libre, puis pris le contrle de
celui-ci, le circuit en devient le matre : cest lui qui gnre le
signal dhorloge
dpart arrt

SDA
D7 D6 D5 D4 D3 D2 D1 D0 ACK

SCL

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 9


Prise de contrle du bus
Bit Start Bit Stop

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 10


Transmission dun octet

Le matre transmet le bit de poids fort D7 sur SDA


Il valide la donne en appliquant un niveau 1 sur SCL
Lorsque SCL retombe 0, il poursuit avec D6, etc. jusqu ce
que loctet complet soit transmis
Il envoie le bit ACK 1 en scrutant ltat rel de SDA
Lesclave doit imposer un niveau 0 pour signaler que la
transmission sest droule correctement
Le matre voit le 0 (collecteur ouvert) et peut passer la suite

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 11


Transmission dun octet

SDAM
D7 D6 D5 D4 D3 D2 D1 D0 ACK

SDAE
ACK

SDAR
D7 D6 D5 D4 D3 D2 D1 D0 ACK

SCL : Horloge impose par le matre


SDAM : Niveaux de SDA imposs par le matre
SDAE : Niveaux de SDA imposs par lesclave
SDAR : Niveaux de SDA rels rsultants

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 12


Transmission dun octet
Lacquittement :
ACKNOWLEDGE

Le matre libre la ligne SDA


Lesclave force la ligne SDA
au niveau bas (trait gras)
Le matre envoie une
impulsion sur lhorloge SCL
Lorsque limpulsion retombe
zro, lesclave libre SDA

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 13


Transmission dune adresse

Nombre de composants important : ncessit de dfinir pour


chacun une adresse unique
Adresse code sur 7 bits, dfinie par :
Son type
Ltat appliqu un certain nombre de ces broches
Adresse transmise sous la forme dun octet au format
particulier :
D7 D1 : 7 bits dadresse A6 A0
D0 : bit R/W qui dtermine si le matre veut lire ou crire

SDA
A6 A5 A4 A3 A2 A1 A0 R/W ACK

SCL

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 14


Transmission dune adresse

Cas particulier : les mmoires


Espace adressable plus grand que les autres circuits : adresses
codes sur 2 octets ou plus :
Premier octet : adresse du circuit
Octets suivants : adresse interne de la mmoire
Adresses rserves
00000XXX et 111111XX rserves des modes de fonctionnement
particuliers

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 15


Mode daccs lesclave

Demande de lecture ou dcriture ?


Le 8me bit dadresse spcifie le mode daccs : R/W
Le nombre maximal de circuits est de 128
Les adresses PAIRES sont des adresses dCRITURE, et les adresses
IMPAIRES sont des adresses de LECTURE.

Exemple : PCF8574 (General purpose 8 BIT I/O port)


Adresse esclave dcriture : (01000000)b = 64d
Adresse esclave de lecture : (01000001)b = 65d

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 16


criture dune donne

1. Envoi de ladresse de destination


2. Slection du mode criture (R/W 0)
3. Envoi de la donne
Note : il peut tre ncessaire dattendre ACK avant de
poursuivre (criture dans des mmoire, etc.)
SCL

SDAM
A6 A5 A4 A3 A2 A1 A0 R/W ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK

SDAE
ACK ACK

SDAR
A6 A5 A4 A3 A2 A1 A0 R/W ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 17


Lecture dune donne

1. Le matre envoie ladresse puis attend lACK


2. LACK est positionn par lesclave, puis celui-ci met les
donnes sur SDA
3. Ensuite, le matre positionne ACK 0 pour continuer la
lecture, ou 1 pour stopper la transmission

SCL

SDAM
A6 A5 A4 A3 A2 A1 A0 R/W ACK ACK

SDAE
ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK

SDAR
A6 A5 A4 A3 A2 A1 A0 R/W ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 18


Conflits
Que le meilleur gagne !

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 19


Problme

Le bus I2C est de conception destin accueillir plusieurs


matres  problme commun tous les rseaux utilisant un
canal de transmission unique : comment arbitrer ?

Chaque matre peut prendre possession du bus ds que celui-


ci est libre : possibilit que deux matres prennent la parole en
mme temps

Pas de problme lectrique  collecteur ouvert

Problme logique  viter la corruption des donnes due la


collision des bits transmis

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 20


Principe

Prise de contrle du bus


Vrifier que le bus est libre
Condition darrt envoye depuis au moins 4,7 s
Prise de contrle effectif, mais vrification de ltat des lignes SDA et
SCL. Plusieurs cas :
Diffrents matres envoient les mmes donnes en mme temps : aucun
conflit, cas rare
Un matre impose un 0 : il relire obligatoirement un 0 et continuera
transmettre
Un matre cherche appliquer un 1 sur le bus
Sil lit 1, il continue transmettre
Sil lit 0, un autre matre a pris la parole en mme temps : il perd larbitrage,
arrte dmettre, mais continue lire

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 21


Exemple

SDA1

SDA2

SDAR

SCLR : Horloge rsultante


SDA1 : Niveaux de SDA imposs par le matre n1
SDA2 : Niveaux de SDA imposs par le matre n2
SDAR : Niveaux de SDA rels rsultants lus par les deux matres

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 22


Exemple

SDA1
ACK ACK
SDA2
ACK
SDAR
ACK ACK

Premier octet transmis normalement : les 2 matres imposent


les mmes donnes
Deuxime octet : n2 impose 1 mais relit 0 ; il perd le
contrle du bus et devient esclave
Le matre n1 ne voit pas le conflit et continue dmettre
normalement, et lesclave reoit les donnes sans erreurs

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 23


Synchronisation

Problme : si un priphrique lent est connect sur le rseau


Fonctionnement normal de lacquittement :
Lesclave force la ligne au niveau bas immdiatement aprs le 8me bit, avant
limpulsion dacquittement mise par le matre.
Exemple dun CAN (convertisseur analogique numrique) :
Dtection de son adresse
Dmarrage de la conversion
Attente de la fin de
conversion puis SCL
acquittement aprs t
SDAM
Le matre a considr ACK
que lesclave ntait SDAE
pas prsent ACK Time-out
(rponse aprs t) SDAR
ACK

t arrt

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 24


Synchronisation

Solution : utilisation de la ligne SCL pour conserver la main


Aprs avoir mis SDA au niveau bas, lesclave doit le relcher ds que le matre
relche SCL
Si lesclave force SCL au niveau bas, le matre ne peut plus mettre
dimpulsion dhorloge puisquil ne peut plus remettre SCL au niveau haut
Mthode :
aprs avoir reu le 8me bit, lesclave force SDA au niveau bas (acquittement).
En mme temps, il dmarre la conversion et force SCL au niveau bas
galement.
Le matre dmarre la phase dattente dacquittement : il relche SDA puis
relche SCL : lorsquil teste le niveau de SCL, il constate quil est toujours bas,
forc par lesclave. Il entre alors dans une boucle en attendant que SCL
repasse au niveau haut.
Ds que le matre dtecte que SCL est au niveau haut, il teste SDA : il trouve
un niveau bas (acquittement valide). Il peut alors lire le rsultat de la
conversion.

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 25


Synchronisation
SCL

SDAM
Conversion

SDAE
ACK

SDAR
ACK

arrt

Technique utilise par les mmoires EEPROMs I2C


Paralysie du bus pendant SCL=0 : si le temps de calcul est long, la perte
de temps influe sur les performances de manire importante
En cas de problme lectrique, le bus peut se trouver bloqu

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 26


Synchronisation

Seconde mthode de synchronisation :


Premier change pour la demande de conversion, second change
pour la lecture du rsultat :
Le matre envoie un message avec ladresse du CAN
Lesclave (CAN) met lacquittement et dmarre la nouvelle conversion
Le matre lit un octet et envoie le bit de stop : rsultat de la conversion
Entre les deux accs, le bus et libre pour un autre change.
Si le convertisseur na pas fini la conversion, il nmet pas de bit ACK. Le
matre doit alors retenter plus tard une nouvelle lecture
Problme : communication multi-matre
M1 tablit la communication avec M2. Pendant ACK, M2 sert une
interruption et garde SCL au niveau bas. M1 attend SCL : time-out. M1
achve la transaction et ressaie dtablir la communication. Entre temps
M2 redevient actif et relche SCL, tout en gardant SDA bas : M1 ne peut
pas redmarrer une transaction, car SDA est bas, et M2 ne peut pas
achever la communication en cours, car SCL ne tombe pas
Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 27
Synchronisation
SCLM1

SDAM1

SCLM2

SDAM2

SCLR

SDAR

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 28


Spcificit
Caractristiques diverses du bus I2C

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 29


Les adresses rserves

Les adresses 0000 0xxx ne sont pas utilises pour


ladressage des composants :
Ladresse 0000 0000 :
Adresse dappel gnral : les circuits ayant la capacit de traiter ce type
dappel mettent un acquittement. Le deuxime octet dfinit le contenu de
lappel
0000 0110 : RESET. Remet tous les registres des circuits connects dans
leur tat initial. Les circuits qui le permettent rechargent leur adresse desclave.
0000 0010 : Les circuits qui le permettent rechargent leur adresse desclave.
0000 0100 : Les circuits dfinissant leur adresse de faon matrielle
rinitialisent leur adresse desclave.
0000 0000 : interdit
xxxx xxx1 : joue le rle dinterruption. xxxx xxx peut tre ladresse du circuit
qui a gnr linterruption

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 30


Les adresses rserves

Les adresses 0000 0xxx ne sont pas utilises pour


ladressage des composants
Adresse 0000 0001 :
Octet de start : utilis pour synchroniser les priphriques lents avec
les priphriques rapide
Adresse 0000 001x :
Permet de rendre sourds tous les circuits I2C prsents sur le bus : on
peut donc changer le protocole de transmission sans gnrer derreurs
au niveau des circuits I2C
Le bus repasse en mode normal lors de la rception dune condition
darrt
Adresses 0000 0110 0000 1111 :
Non dfinies et ignores par les circuits I2C : peuvent tre utilises
pour debugger un rseau multimasters par exemple
Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 31
I2C tendu

I2C Fast Mode :


400 kbits/s, Adressage sur 10 bits
Paramtres physiques inchangs : protocole, niveaux, capacitance
identiques : changement uniquement au niveau timing
Abandon de la compatibilit CBUS
Entres trigger de Schmitt
Sorties haute impdance lorsque le priphrique nest pas aliment
La rsistance de tirage doit tre adapte
Jusqu 200pF : rsistance suffit
De 200pF 400pF : source de courant prfrable

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 32


I2C tendu

Adressage tendu :
Espace dadressage trop restreint en mode standard
2 octets dadressage :

1 1 1 1 1 A9 A8 R/W ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK Donnes

1er octet 2me octet

Compatibilit assure avec le mode standard


R/W et ACK la mme position,
11111 permet de faire la diffrence entre mode standard et mode fast

Camille Diou, LICM, Universit de Metz, diou@sciences.univ-metz.fr, http://www.licm.sciences.univ-metz.fr 33