Vous êtes sur la page 1sur 14

LE BUS I2C

1.

Bref historique du bus I2C.


Ce bus a t labor au dbut des annes 80 et fait partie de la grande famille
des L.A.N. (Local Aera Networks - rseaux locaux) avec pour cible privilgie le
march grand public.
Depuis des millions de tlviseurs, rcepteurs de radio, autoradios utilisent ce
moyen de communication interne leurs propres systmes. Aprs tre entr
par les synthses de frquences, les commandes clavier, les tages petits
signaux l'I2C est maintenant utilis dans la totalit des fonctions prsentes dans
les autoradio, les Compacts Discs, et les tlviseurs (bases de temps
comprises).
videmment, lorsqu'un tel concept est utilis dans de tels marchs, c'est que
l'intrt conomique est fond et de ce fait, des industries produisant de mmes
volumes, et fonctionnant par consquent elles aussi cot serr, se dclarent
intresses.
Ce fut notamment le cas de l'industrie automobile qui depuis quelques annes
utilise aussi le bus I2C pour grer la plupart des quipements de bord des
vhicules.
Malgr de nombreuses similitudes, les fonctionnalits remplir par les circuits
n'taient pas les mmes, et de nouvelles gammes de produits (citons par
exemple les convertisseurs AID-DIA, les RAM...) furent ajoutes aux catalogues
des nombreux fabricants, qui avaient adhr au bus I2C grce l'achat de
licences d'exploitation garantissant de ce fait une vraie compatibilit au bus
indpendamment des marques.
Un autre march demandeur de nombreuses fonctions faible cot est celui de
la tlphonie moderne, c'est--dire celle qui possde des mmoires, des
gnrateurs de frquences vocales, des afficheurs LCD...
Dans l'intervalle de temps, le march professionnel a t un peu "chahut" par
des soucis conomiques et, lors de l'optimisation des cots, de nombreuses
PME/PMI et de Grands Groupes ont redcouvert ce fameux bus I2C. D'autres
questions ont donc surgi et des complments de famille sont apparus (interface
I2C/C).

2.

Le protocole du bus I2C en mode standard.


Comme dans tout protocole structur, il comprend :
des dfinitions des niveaux lectriques haut et bas,
des conditions de fonctionnement,

Le BUS I2C.doc / FJ

des conditions de changement d'tats,


des conditions de validit des donnes,
des conditions de dpart START et d'arrt STOP,
des formats de mots,
des formats de transmissions,
des procdures d'acquittement,
des procdures de synchronisation,
des procdures d'arbitrage.

2.1.

Terminologie du bus I2C.


On appelle :
Emetteur : le composant qui envoie des donnes sur le bus.
Rcepteur : le composant qui reoit les donnes prsentes sur le bus.
Matre : le composant qui initialise un transfert, gnre le signal d'horloge
et termine le transfert. Un matre peut tre soit rcepteur soit metteur.
Esclave : le composant adress par un matre. Un esclave peut tre soit
rcepteur soit metteur.
Multimatre : plus d'un matre peut tenter de commander le bus en mme
temps sans en altrer le message.
Arbitrage : procdure ralise afin de s'assurer que si plus d'un matre
essaie simultanment de prendre la commande du bus, un seul sera
autoris le faire.
Synchronisation : procdure ralise afin de synchroniser les signaux
d'horloge fournis par deux ou plusieurs matres.
SDA : ligne des signaux de donnes (Serial DAta).
SCL : ligne des signaux d'horloge (Serial CLock).

2.2.

Terminologie d'un transfert sur le bus I2C.


F (FREE) LIBRE : le bus est libre ; la ligne de donnes SDA et la ligne
d'horloge SCL sont toutes deux l'tat haut.
S (START) DPART : le transfert de donnes commence avec une
condition de start (ne pas confondre avec un bit de start) qui fait que le
niveau de la ligne de donnes SDA change de haut bas tandis que la
ligne d'horloge SCL reste l'tat haut.
Le bus est alors dit occup.
C (CHANGE) CHANGEMENT : pendant que la ligne d'horloge SCL est
l'tat bas, le bit de donne transmettre peut tre appliqu la ligne de
donne SDA et il peut changer de niveau.
D (DATA) DONNE : un bit d'information (haut ou bas sur la ligne de donnes SDA) est considr comme mis pendant le niveau haut de la ligne
d'horloge SCL. Ce niveau doit tre maintenu stable pendant toute la dure
de la priode haute de la ligne d'horloge afin d'viter d'tre interprt
comme une condition de START ou de STOP.
P (STOP) ARRET : un transfert de donnes se conclut par une condition
d'arrt stop (ne pas confondre avec un bit de stop). Ceci se produit

Le BUS I2C.doc / FJ

lorsque le niveau sur la ligne de donnes SDA passe de l'tat bas l'tat
haut tandis que la ligne d'horloge SCL reste l'tat haut.
Le bus est nouveau dit libre.
2.3.

Configuration matrielle des tages relis au bus.


Des exemples de schmas lectriques de configuration des tages
d'entres / sorties runis physiquement au bus sont donns sur la figure
suivante :

Aussi surprenant que cela puisse paratre une trs grande partie de la
force de ce type de bus rside dans le choix de cette configuration. Elle
est trs simple et pourtant...
Les deux lignes SDA, SCL sont chacune bidirectionnelles (entrante et
sortante) et sont connectes la ligne positive d'alimentation au travers
de rsistances ayant pour mission d'assurer une double fonction de
charge et de rappel (dites de pull-up).
Au repos, lorsque les transistors ne sont pas conducteurs le bus est dit
libre et ces deux lignes sont relches l'tat haut via les rsistances de
rappel.
Le choix de cette configuration de sortie (collecteur ou drain ouvert selon
les technologies) permet (et tous autres composants relis au bus doivent
le permettre) de raliser la fonction ET cbl pour les broches de mme
nom.
Le fait que l'on ralise simultanment sur une broche unique l'entre et la
sortie d'une information (SDA ou SCL) permet au circuit lui-mme de
s'auto-espionner, c'est--dire de pouvoir vrifier si sur sa propre sortie il y
a bien l'information lectrique que lui-mme voulait y voir afficher.
C'est grce ce type de subterfuge qu'il est possible de russir la
synchronisation et l'arbitrage entre diffrents matres.

Le BUS I2C.doc / FJ

2.4.

Consquences de la configuration.
En ce qui concerne la chargeabilit ou encore le nombre de circuits que
l'on peut relier simultanment au bus de nombreuses questions peuvent
se poser.
Chargeabilit statique.
Ne sachant combien, comment, quand seront lectriquement
oprationnels les diffrents circuits relis au bus, il faut tenir compte de
l'ventualit du cas le plus dfavorable du systme.
Celui-ci correspond en fait la chargeabilit maximale de courant que
peut supporter le transistor de sortie toute technologie confondue
bipolaire, CMOS... (valeur maximale de la spcification : 3 mA). Ceci
permet de dfinir, dans le cas d'une tension d'alimentation de 5 V, la
valeur minimale des rsistances de rappel (se trouvant toutes en parallle)
environ 1,5 k (la valeur maximale ntant pas critique).
Chargeabilit dynamique.
Diffrents paramtres sont en effet prendre en considration pour dfinir
la chargeabilit dynamique :
la valeur maximale du temps de monte (1 s) que peuvent prendre
les signaux sur SDA et SCL (cette valeur est principalement lie la
valeur maximale du dbit - 100 kbits/s, mais elle est totalement
indpendante du dbit utilis) ;
le fait qu'il pourrait y avoir, connect sur le bus, un (des) matre(s)
fonctionnant au dbit le plus lev;
la valeur maximale de la capacit de sortie d'un circuit lmentaire
(20 pF).
Si l'on prend uniquement en compte la valeur maximale du temps de
monte, il est ais de dfinir quelle serait la valeur maximale de la
capacit de charge quivalente du bus.
Le rsultat de ces calculs est donn par la courbe de la figure suivante.

Le BUS I2C.doc / FJ

On peut donc conclure que 400 pF reprsentent une chargeabilit


maximale de 19 (+ 1, le matre) circuits capacit maximale de 20 pF ou
que l'on peut dporter un circuit (de 20 pF max) 3,6 m en le reliant avec
du cble 100pF/m.
Toutefois, les performances sont meilleurs car :
tous les circuits ne sont pas la valeur maximale de 20 pF ;
il est facile de rduire les temps de monte quand on en a envie en
buffrisant les sorties, diminuant ainsi les valeurs apparentes des
rsistances de sortie.
2.5.

Les niveaux haut et bas.


Du fait qu'une grande varit de composants de diffrentes technologies
(NMOS, CMOS, bipolaire...) peuvent tre connects sur le bus, les
niveaux logiques O (bas) et 1 (haut) ont d tre dtermins de faon ne
pnaliser aucune possibilit d'emploi. C'est pour cette raison que les
valeurs suivantes ont t retenues.
Sous 5 V d'alimentation :
Vil max = 1,5 V et Vih min = 3,0 V
et pour des circuits de type CMOS supportant de grandes plages de
tension d'alimentation :
Vil max = 0,3 VDD et Vih min = 0,7 VDD
et quelle que soit la valeur de l'alimentation :
Vol max =0,4 V 3 mA de courant extrait
Toutefois, il nest pas recommand de connecter sur un mme bus des
composants ayant diffrentes tensions dalimentation.

2.6.

Transfert des donnes sur le bus.


Le transfert des informations est trs spcifique au protocole du bus I2C.
Conditions de fonctionnement des transferts.
Principe de base : une impulsion d'horloge est gnre chaque fois
qu'un bit est transfr.
Conditions de changement d'tat et de validit des donnes.
Ces deux conditions sont intimement lies et il est raisonnable de prendre
la ligne d'horloge SCL pour rfrence.
Dans ce cas on dfinit :
La validit d'une donne: Une donne est considre comme
valable lorsque la ligne de donne SDA est stable (haute ou basse)
pendant que la ligne d'horloge SCL est son tat haut.

Le BUS I2C.doc / FJ

Le changement d'tat: Quel que soit le niveau (haut ou bas) de la


ligne de donnes SDA sa valeur ne pourra changer que lorsque la
ligne d'horloge SCL sera l'tat BAS.

Conditions de dpart start et d'arrt stop.


l'intrieur du protocole de dfinition de l'I2C les situations qui rgissent
ces conditions sont uniques. Il est noter que ce sont des conditions de
dpart et de stop et non des bits de dpart et de stop.

Condition de start : Cette situation a lieu et uniquement lieu lorsque la


ligne de donnes SDA passe de l'tat haut l'tat bas tandis que la ligne
d'horloge reste l'tat haut.
Condition de stop : Cette situation a lieu et uniquement lieu lorsque la
ligne de donnes SDA passe de l'tat bas l'tat haut tandis que la ligne
d'horloge reste l'tat haut.
tout cela il faut ajouter les complments suivants :
les conditions de start et de stop sont toujours cres par le matre,
le bus est dit occup aprs la condition de dpart,
le bus sera considr comme libre aprs un certain temps (bien
dfini) aprs la condition de stop.
2.7.

Les formats de transmission.


2.7.1. Format des mots.
Examinons maintenant les formats des mots et des transferts des
donnes.
Chaque mot transmis sur la ligne de donne SDA doit avoir une
longueur de 8 bits. Jusque l rien de particulier et ceci permettra de

Le BUS I2C.doc / FJ

traiter directement les mots reus l'aide d'un microcontrleur


standard.
Les donnes contenues dans le mot sont transfres avec le bit de
poids fort (MSB) en tte.
La signification de chacun des mots transmis sera dfinie lors de la
dfinition du format de transmission.
2.7.2. Formats des transferts.
Principe de base d'un transfert.
Chaque transfert commence par une condition de START.
Chaque mot transmis doit tre suivi d'un bit dacquittement. Le
systme rcepteur peut, s'il le dsire, forcer l'metteur interrompre
momentanment son mission entre deux mots successifs afin
d'effectuer une tche juge par lui instantanment plus prioritaire.
Pour indiquer cela l'metteur le rcepteur doit forcer (maintenir) au
niveau BAS la ligne d'horloge SCL. Ds qu'il relchera la ligne
d'horloge celle-ci remontera et indiquera l'metteur qu'il peut
continuer son transfert, s'il le dsire.
Le nombre de mots transmis lors d'un transfert est illimit.
Chaque transfert se termine par une condition de STOP gnre par
le matre.
Le premier mot transmis est l'adresse de l'esclave que le matre
souhaite slectionner.
Cette adresse a une longueur de 7 bits.
Le huitime bit (LSB) de ce premier mot a une signification
particulire. Il est baptis R/W bit (bit lecture / criture). Il sert
indiquer la direction que vont prendre les donnes circulant sur le
bus :
zro indique une transmission d'criture du matre vers
l'esclave,
un indique une demande de donnes (ce qui revient en fait
vouloir effectuer une lecture des donnes que dtient
l'esclave).
Lorsqu'une adresse est envoye, tous les composants prsents
physiquement sur le bus comparent les sept premiers bits qui suivent
la condition de start leur propre adresse. Si celle-ci correspond
exactement la sienne, il se considre comme adress. Il attend
alors la transmission du huitime bit (R/W) pour savoir s'il doit se
considrer comme un esclave rcepteur (o l'on va crire), ou
comme un esclave metteur ( qui l'on va demander de lire et
d'envoyer son contenu).

Le BUS I2C.doc / FJ

Examinons maintenant avec dtails comment sont constitus les bits


d'adresse.
videmment n'importe qui pourrait faire n'importe quoi (tel
constructeur, telle fonction, tel circuit, telle adresse !) et l'on se
retrouverait dans le commerce avec un rpertoire d'adresses
totalement anarchique. Afin d'viter cela un I2C Committee
coordonne les allocations aux diffrents fabricants (voir un exemple
sur le tableau suivant).

Le BUS I2C.doc / FJ

TYPE
CCR921
NE5751
PCA1070
PCA8516
PCA8581/C
PCB2421
PCD3311C
PCD3312C
PCD444O
PCD5OO2
PCD5096
PCE84C467/8
PCE84C882
PCE84C886
PCF2116
PCF8522/4
PCF8566
PCF8568
PCF8569
PCF8570
PCF8573
PCF8574
PCF8574A
PCF8576C
PCF8577C
PCF8578/9
PCF8582/A
PCF8583
PCF8584
PCF8591
PCF8593
PCX8594
PCX8598
PDIUSB11
SAA1O64
SAA1300
SAA1770
SAA2502
SAA2510
SAA2530
SAA4700/T
SAA5233
SAA5243
SAA5244
SAA5245
SAA5246A
SAA5249
SAA5252
SAA5301
SAA6750
SAA7110A
SAA7140B
SAA7151B
SAA7165
SAA7186
SAA7l 91B
SAA7192
SAA7199B
SAA7370
Le BUS I2C.doc / FJ

DESCRIPTION
General call address
Reserved addresses
Reserved addresses
RDS/RBDS decoder
Audio processor for RF communication
Programmable speech transmission IC
Stand-alone 0SD IC
128 x 8-bit EEPROM
1K dual mode serial EEPROM
DTMF/modem/musical tone generator
DTMF/modern/musicai tone generator
Voice scrambler/descrambler for mobile telephones
Pager decoder
Universal codec
8-bit CMOS auto-sync monitor controller
8-bit microcontroller for monitor applications
8-bit microconfroller for monitor applications
LCD controller/driver
512 x 8-bit CMOS EEPROM
96-segment LCD driver 1:1 - 1:4 Mux rates
LCD rom driver for dot matrix displays
LCD column driver for dot matrix displays
256 x 8-bit static RAM
Clock/calendar
2
8-bit remote I/O port (I C-bus to parallel converter)
2
8-bit remote I/O port (I C-bus to parallel converter)
16-segment LCD driver 1:1 - 1:4 Mux rates
32/64-segment LCD display driver
Row/column LCD dot matrix driver/display
256 x 8-bit EEPROM
256 x 8-bit RAM/cIock/calendar
2
I C-bus controller
4-channel, 8-bit Mux ADC and one DAC
Low-power clock calender
512x8-bit CMOS EEPROM
1024 x 8-bit CMOS EEPROM
Universal serial bus
4-digit LED driver
Tuner switch circuit
D2MAC decoder for satellite and cable TV
MPEG audio source decoder
Video-CD MPEG-audio/video decoder
ADR/DMX digital receiver
VPS dataline processor
Dual standard PDC decoder
Computer controlled teletext circuit
lntegrated VIP and teletext
525-fine teletext decoder/controller
lntegrated VIP and teletext
VIP and teletext controller
Line 21 decoder
MOJI processor for Japan/China
MPEG2 encoder for Desk Top Video (=SAA7137>
Digital multistandard decoder
High performance video scaler
8-bit digital multistandard TV decoder
Video enhancement D/A processor
Digital video scaler
Digital multistandard TV decoder
Digital colour space-converter
Digital multistandard encoder
CD-decoder plus digital servo processor

A6
0
0
1
0
1
0
1
1
1
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
0
1
1
x
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0

I C ADRESSE ESCLAVE
A5 A4 A3 A2 A1
0
0
0
0
0
0
0
0
X
X
1
1
1
X
X
0
1
0
0
A
0
0
0
0
0
1
0
0
0
0
0
1
1
1
0
0
1
0
A
A
0
1
0
0
0
1
0
0
1
0
1
0
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
0
A
1
1
0
0
1
1
1
0
0
1
1
1
0
0
1
1
1
1
0
1
0
1
0
A
A
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
0
1
0
A
A
1
0
1
0
A
1
0
0
A
A
1
1
1
A
A
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
0
1
0
A
A
0
1
0
0
0
x
x
x
x
x
0
0
1
A
A
0
1
0
0
0
0
1
0
A
A
0
1
0
A
P
0
1
1
0
1
1
1
1
0
A
1
0
0
0
A
0
1
1
1
1
0
1
1
1
0
0
1
1
0
1
0
0
1
1
A
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
1
0
1
1
0
0
0
1
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
0
1
A
0
1
1
1
1
0
1
1
1
A
0
0
0
1
A
1
1
0
0
0
0
1
1
0
0
0
1
1
0
0

A0
0
X
X
A
A
A
1
A
0
A
A
A
1
A
1
1
1
A
A
A
A
A
A
A
A
A
A
0
A
A
A
x
A
1
P
P
1
A
A
A
1
A
A
A
A
1
1
1
1
1
0
0
0
A
A
1
1
0
1
A
A
A

SAA9056
SAA9065
SAB9075H
SAF1135
TDA1551Q
TDA4670/1/2
TDA4680/5/7/8
TDA4780
TDA4845
TDA4885
TDA8043
TDA8045
TDA4853/4
TDA8366
TDA8373
TDA8374
TDA8375/A
TDA8376/A
TDA8415
TDA8416
TDA8417
TDA8421
TDA8424/5/6
TDA8433
TDA8440
TDA8442
TDA8443A
TDA8444
TDA848OT
TDA8540
TDA8722
TDA8735
TDA8745
TDA8752
TDA9141/3/4
TDA9150B
TDA9151B
TDA9160
TDA9161A
TDA9162
TDA917O
TDA9177
TDA9178
TDA9610
TDA9614H
TDA9840
TDA9850
TDA9852
TDA9855
TDA9860
TEA6100
TEA6300
TEA6320/1/2/3
TEA6330
TEA6360
TEA6821/2
TEA6824T
TSA5511/2/4
TSA5522/3M
TSA6O57
TSA6O60
UMA1000T
UMA1014

Digital SCAM colour decoder


Video enhancement and D/A processor
PlP controller for NTSC
Dataline 16 decoder for VPS (call array)
2 x 22W BTL audio power amplifier
Picture signal improvement (PSI) circuit
Video processor
Video control with gamma control
Vector processor for TV-pictures tubes
150 MHz video controller
QPSK demodulator and decoder
QAM-64 demodulator
{Autosync detlection processor
Multistandard one-chip video processor
NTSC one-chip video processor
Multistandard one-chip vdeo processor
Multistandard one-chip video processor
Multistandard one-chip video processor
TV/VCR stereo/dual sound processor
TV/VCR stereo/dual sound processor
TV/VCR atereo/dual aound processor
Audio processor
Audio processor
TV deflection processor
Video/audio switch
Interface for colour decoder
YUV/RGB matrix switch
Octuple 6-bit DAC
RGB gamma-correction processor
4 x 4 video switch matrx
Negative video modulator with FM sound
150 MHz PLL frequency synthesiser
Satellite sound decoder
Triple fast ADC for LCD
Alignment-free multistandard decoder
Deflection processor
Programmable deflection processor
Multistandard decoder/sync. processor
Bus-controlled decoder/sync. Processor
Multistandard decoder/sync. processor
YUV processor with picture improvement
2nd address for LTI (1st is '40')
YUV transient improvement processor
Audio FM processor for VHS
Audio processor for VHS
TV stereo/dual sound processor
BTSC stereo/SAP decoder
BTSC stereo/SAP decoder
BTSC stereo/SAP decoder
Hi-fi audio processor
FM/IF for computer-controlled radio
Sound fader control and preamplifier/source selector
Sound fader control circuit
Tone/volume controller
5-band equalizer
Car radio AM
Car radio IF IC
1.3GHz PLL frequency synthesizer for TV
1.4GHz PLL trequency synthesizer for TV
Radio tuning PLL trequency synthesizer
Radio tuning PLL trequency synthesizer
Data processor for mobile telephones
Frequency synthesizer for mobile telephones

1
1
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

0
0
0
0
1
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
1
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
1
1
1
1
1

0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
1
0
0
1
0
0
0
1
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
1
1
0
0
0
0
0
0
1
0
0
1
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0

1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
1
1
1
0
0
0
0
0
1
A
1
A
A
0
A
1
0
0
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0

A
1
1
A
0
0
0
0
A
0
0
A
1
0
0
0
0
0
1
1
1
0
0
1
A
0
A
A
1
A
0
1
1
A
A
1
1
A
0
A
0
0
0
0
0
1
1
1
1
0
0
0
0
0
1
1
1
A
A
1
1
A
1

X = Don't care, A = Programmable address bit, P = Page selection bit.


Le BUS I2C.doc / FJ

10

1
1
A
A
0
0
0
0
A
0
A
A
0
1
1
1
1
1
0
0
0
A
1
A
A
0
A
A
A
A
0
A
A
A
1
0
0
1
1
1
A
0
0
0
0
0
A
1
A
A
1
0
0
0
A
0
0
A
A
A
A
A
A

Partant du principe qu'il est toujours bon de laisser des portes de


secours un systme, on se rend vite compte que souvent dans un
mme systme on est appel utiliser plusieurs fois le mme type
de circuit (exemple : RAM, ...). Il devient alors ncessaire d'avoir des
adresses diffrentes pour des circuits de mme type afin de pouvoir
accder particulirement l'un d'entre eux. C'est notamment dans ce
but qu'il a t dcid qu'une partie des sept bits d'adresses serait fixe
(les 4, 5,... bits de poids forts) et que les autres seraient modifiables.
Remarquez bien que rien n'est dit sur la manire de les modifier. Ces
bits peuvent tre modifiables, par exemple, soit par hardware
(logique ou analogique) soit par logiciel soit... par n'importe quoi. Le
nombre de ces bits variables dpend en fait plus du nombre de
broches disponibles sur le botier du circuit que d'autre chose.
Par exemple, un circuit qui aurait quatre bits fixes d'adresses et trois
bits configurables permettrait un concepteur de disposer sur un
mme bus sept petits frres d'un mme circuit.
Remarques :
Avec sept bits d'adresse, on peut adresser 128 circuits dont
les adresses sont diffrentes avec ce protocole.
Avec trois bits programmables on peut disposer de huit
circuits d'un mme type sur le bus. Mais il existe de
nombreuse astuces pour en mettre bien plus, par exemple en
multiplexant temporellement ces fameux bits configurables.
Certains schmas simples permettent d'adresser plus de 300
circuits d'un mme type.
II existe aussi dans ce premier octet transmis des valeurs bien
dfinies correspondant des fonctionnalits particulires ayant trait
aux protocoles du multimatre, des adresses concernant l'appel
gnral, au mot de start.
Les mots suivant l'adresse n'ont pas de signification particulire. Ils
sont cods sur 8 bits.
On peut rsumer globalement leurs fonctions en disant qu'ils
transportent des donnes.
Trs souvent les donnes qui sont prsentes dans les mots qui
suivent immdiatement l'adresse ont un sens plus orient vers
l'organisation interne du circuit command (mot de sous-adresse, de
statuts, de commande ...), mais il n'y a pas de rgles gnrales et
ces agrments sont dfinis types types de circuits intgrs.
Puis viennent ensuite les mots qui contiennent des donnes, des
valeurs au sens strict.
Le nombre de mots transmis n'est pas (sur son principe) limit. Il
dpend, d'une part, du type de circuit auquel on s'adresse et, d'autre
part, du fait qu'en pratique on est bien oblig de se limiter car si l'on
ne faisait que transmettre des donnes un rcepteur particulier on
ne ferait rien d'autre...
Le BUS I2C.doc / FJ

11

2.8.

Acquittement.
Comme vous pouvez le remarquer sur la figure suivante, entre chaque
mot transmis il y a une procdure d'acquittement.
Pour bien comprendre cette fonction et la puissance qu'elle possde, il est
ncessaire de bien analyser son principe.

Conditions de fonctionnement :
Le transfert de donnes avec acquittement est obligatoire.
Un acquittement doit avoir lieu aprs chaque mot transmis.
L'impulsion d'horloge (la neuvime) pendant laquelle le composant
rcepteur devra renvoyer l'metteur son acquittement est gnre
par le matre qui a lui-mme le contrle du bus.
Pendant le neuvime coup d'horloge le composant metteur devra
laisser libre sa ligne de donnes SDA pralablement relche
l'tat haut.
Condition d'acquittement :
Ceci tant, pour qu'il y ait acquittement, il faut que le composant rcepteur
mette l'tat bas la ligne de donnes SDA pendant que la ligne d'horloge
SCL est l'tat haut et dite stable.
Non-acquittement :
Dans tous les autres cas de figures de non-acquittement il faut dfinir des
procdures d'actions bien rpertories.
Voici deux exemples prcis de non-acquittement :
Le rcepteur tant en train de terminer une tche ralise en temps
rel (criture d'une EEPROM par exemple) ne peut ou ne veut
accepter la donne qui se prsente et, pour le signifier l'metteur,
fait exprs de laisser la ligne de donnes SDA telle que l'on vient de
la lui prsenter, c'est--dire l'tat haut. Le matre, comprenant ce
refus (non-acquittement), a tout loisir de gnrer une condition de
stop pour abandonner ce rcepteur rcalcitrant et en profiter pour
s'occuper d'un autre laccueil plus sympathique. videmment ces
petites fcheries n'tant que de courtes dures, il pourra essayer
nouveau de temps en temps de savoir dans quelles dispositions se
trouve ce rcepteur pour continuer ou reprendre le transfert.
Le BUS I2C.doc / FJ

12

2.9.

Deuxime cas de figure plus dlicat, mais d'usage frquent. Le


matre (celui qui gnre l'horloge) est rcepteur (il vient de
demander par exemple une mmoire de lui faire parvenir son
contenu). De part son travail spcifique (gestion d'une interruption...)
il se peut que le matre veuille faire comprendre l'esclave metteur
qu'il dsire arrter le transfert. Pour cela, volontairement, en
n'acquittant pas le dernier mot transmis par l'esclave il signifie ce
dernier de bien vouloir relcher la ligne de donnes SDA afin que le
matre puisse gnrer une condition de stop.

Exemple : circuit daffichage LED.


Le circuit SAA1064 commande quatre digits (sept segments + point
dcimal) LED. Il est simple d'emploi, sa fonction tant principalement
passive car sa fonction rside, dans 99% des cas, en un esclave
rcepteur o l'on ne fera qu'crire.
Pour le 1% restant, un circuit d'affichage peut avoir, sous certaines
conditions, un soupon d'intelligence. C'est peut-tre beaucoup dire, mais
il peut avoir t conu de faon prvenir lorsque par hasard quelqu'un a
sournoisement coup son alimentation et indiquer de ce fait (en devenant
un esclave metteur) qu'il ne dtient plus aucune information valable
afficher.
La famille des SAA1O64 (car ils peuvent tre plusieurs dans un montage)
rpond au nom charmant de : 01110 XX (.).
Son adresse comporte trois parties :
01110
partie fixe de la famille gnrique SA 1064
XX
partie configurable choisi par exemple gale 10
(.)
bit reprsentant R/W (R=1; W=0). Dans ce cas d'criture,
ce bit sera 0.
on a donc:
adresse spcifique :
+ condition d'criture :
octet transmettre :

0111 010.
+
0
0111 0100

soit 76 (en hexadcimal)

La spcification du circuit SAA1064 (voir figure suivante) indique que les


octets suivants reprsentent d'abord un mot d'instruction puis un mot de
commande.

Le BUS I2C.doc / FJ

13

Le mot d'instruction correspond, pour ce circuit, une sous-adresse. Pour


simplifier, ce mot est gal 0.
Le mot de commande dcrit l'aspect visuel souhait par l'utilisateur. Par
exemple, dans le cas d'un affichage dynamique (multiplex) et au courant
maximal circulant dans les afficheurs, ce mot doit avoir pour valeur
X1110111 soit 77 en hexadcimal.
Les quatre mots suivants reprsentent le contenu des valeurs que chaque
digit doit afficher.
Le contenu de la squence de transmission sera donc le suivant :

Le BUS I2C.doc / FJ

14

Vous aimerez peut-être aussi