100% ont trouvé ce document utile (1 vote)
623 vues22 pages

Cours I2C

Le document décrit le bus de communication I2C. L'I2C permet la communication entre composants électroniques à l'aide de deux fils seulement. Un composant fait office de maître tandis que les autres sont des esclaves, identifiés par une adresse unique. Le transfert de données se fait de manière synchrone via le signal d'horloge SCL.

Transféré par

Marwen Sellami
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
623 vues22 pages

Cours I2C

Le document décrit le bus de communication I2C. L'I2C permet la communication entre composants électroniques à l'aide de deux fils seulement. Un composant fait office de maître tandis que les autres sont des esclaves, identifiés par une adresse unique. Le transfert de données se fait de manière synchrone via le signal d'horloge SCL.

Transféré par

Marwen Sellami
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Bus de communication

Inter Integrated
Circuit(I²C)
Introduction

Communication entre deux composants seulement

Une grande partie d’applications nécessite la communication entre plusieurs composants.

Composant1 Composant2 Composant3

 Plusieurs fils
 Programmation compliquée
 Si composant1 et composant6
veulent communiquer ?

Composant5 Composant6
Composant4

2
Introduction

Composant1 Composant2 Composant3

Composant5 Composant6
Composant4

 Communication à l’aide d’un seul bus de donnée


 Minimisation de la liaison entre plusieurs composants
 Parmi les bus de communication, on a l’I²C.

3
I2C: Généralités

I²C - Inter Integrated Circuit Bus

• Développé par Philips au début des années 1980 pour minimiser les liaisons entre les
circuits intégrés numériques de ses produits (Téléviseurs, éléments HiFi, magnétoscopes,
...).

• Le bus I²C (Inter Integrated Circuit) fait partie des bus série 3 fils

• Nommé parfois le nom de TWI (Two Wire Interface) chez certains constructeurs.
I2C: Composants

De nombreux fabricants ont opté pour I2C

La variété des composants disponibles disposant d'un port I²C est très importants :

 microcontrôleurs
 expandeurs de bus (entrée/sortie 8 bits)
 convertisseurs A/N et N/A
 mémoires (RAM, EPROM, EEPROM, etc.)
 récepteurs infra-rouge (télécommande RC5)
 capteurs de température
 circuits audio (égaliseur, contrôle de volume, etc.)
 drivers d'affichage LCD ou à LEDs
 décodeurs télétexte
 chargeurs de batterie
 PLL pour tuner HF
 etc…
Caractéristiques

Composant1 Composant2 Composant3

SDA

Composant4 Composant5 Composant6

 I²C utilise un seul fils de communication de données, nommé SDA :


• Ce fil est bidirectionnel, Il est utilisé pour lire et écrire. On ne peut donc pas
lire et écrire à la fois.
 I²C est série bidirectionnel et half-duplex.

6
Caractéristiques

Composant1 Composant2 Composant3


« Maitre » « Esclave » « Esclave »

SDA

Composant4 Composant5 Composant6


« Esclave » « Esclave » « Esclave »

 Un seul fil de communication de données :


 On peut avoir un conflit lors de la communication entre les composants
 L’I²C utilise la notion de « maitre-esclave » pour « orchestrer » ces
communications ,

7
Caractéristiques

 I²C est un bus synchrone; il utilise un signal d’horloge pour une synchronisation
bidirectionnelle aussi. Cette ligne s’appelle SCL,

Composant1 Composant2
Composant3
« Maitre » « Esclave »
« Esclave »

SDA
SCL

Composant4 Composant5
« Esclave » Composant6
« Esclave » « Esclave »

8
Caractéristiques

Le bus I²C permet de faire communiquer entre eux des composants


électroniques grâce trois fils :

• GND - masse
• SDA (Signal Data) transmet les données.
• SCL (Signal CLock) transmet un signal d'horloge synchrone (indique le rythme
d'évolution de la ligne SDA).

 Liaison en mode série


 100 kbits par seconde

 Simplifie la conception des cartes électroniques

Avec des composants prévus pour se connecter au bus I²C, il


suffit de les relier par deux pistes seulement
Caractéristiques

Physique

Les tensions associées aux niveaux logiques vont dépendre de la technologie des
circuits en présence (CMOS, TTL).

Il faudra que tous les circuits connectés au bus I²C utilisent les mêmes potentiels pour
définir les niveaux haut et bas.

Utiliser des sorties à collecteur ouvert (ou à drain ouvert pour des circuits CMOS). Le
niveau résultant sur la ligne est alors une fonction « ET » de toutes les sorties
connectées.
Caractéristiques

• Le bus I2C est contrôlé par un maître,

• Le bus I2C peut avoir plusieurs maîtres (on parle alors de mode
multi-maîtres).
 Deux Maitres ne peuvent pas communiquer ensemble
 Un seul maître qui prend le contrôle du bus.

• Le bus I2C possède un ou plusieurs esclaves


 Pour faire la distinction entre ces plusieurs esclaves I2C
utilise la notion d’adresse.
 Chaque esclave a une adresse unique.

11
Principes et Fonctionnement

1. Trame de donnée PIC 16F877 DS1307


DS1307
Maître Esclave
Esclave

• Bit d’ACK
• Bit d’acquittement • Par le maître
• @ de l’esclave • R/W bit (esclave) (Lecture)
• Sur 7bits ou 10 bits • 0: Ecriture • 0: OK • Par l’esclave
• 1: Lecture • 1: Erreur (écriture)

.…
SDA START A6 A5 A4 A3 A2 A1 A0 R/W Ack D7 D6 D5 D4 D3 D2 D1 D0 Ack D7 D6 Ack STOP
.…

: état imposé par le maitre


• Lecture ou écriture selon le
: état imposé par l’esclave bit R/W

12
Principes et Fonctionnement

Le protocole I²C

Le protocole du bus I²C définit la succession des états possibles sur les lignes SDA et SCL, et
comment doivent réagir les circuits en cas de conflit.

La prise de contrôle du bus :

Pour transmettre des données sur le bus I²C, il faut surveiller deux conditions particulières :
• La condition de départ et la condition d'arrêt.
Avant de tenter de prendre le contrôle du bus, un circuit doit vérifier que les lignes SDA et SCL
sont au repos, c'est-à-dire à l'état haut.
Si c'est le cas, le circuit indique qu'il prend le contrôle du bus en mettant la ligne SDA à 0.
A partir de ce moment là, les autres circuits savent que le bus est occupé. Le circuit qui vient de
prendre le contrôle du bus en devient le maître (master). C'est lui qui génère le signal d'horloge,
quel que soit le sens du transfert.
Principes et Fonctionnement

2. Conditions de début et d’arrêt

PIC 16F877 PIC 16F887 DS1307 DS1631


Maître Maître Esclave Esclave

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

SCL

Condition de Condition d’arrêt


début ( de Start) (de Stop) 14
Principes et Fonctionnement

La transmission de l’adresse :
Le maître doit pouvoir choisir quel esclave est censé recevoir les données.

Le premier octet que transmet le maître est l’adresse de l’esclave

Le bit D0 indique si le maître demande une lecture ou une écriture de l’esclave.

Chaque circuit connecté au bus I²C possède une adresse unique.


Lors de la conception d'un système, il faut donc veiller à l'unicité des adresses attribuées aux différents
composants.

Une fois l'adresse envoyée sur le bus, l'esclave concerné doit répondre en plaçant le bit ACK à 0. Si le
but ACK vaut 1, le maître comprend qu'il y a une erreur de sélection et il génère la condition arrêt. En
revanche, si le bit ACK vaut 0, le maître peut continuer les opérations.

Note : Les adresses 0000 0xxx et 1111 11xx sont réservées à des modes de
fonctionnement particuliers.
Principes et Fonctionnement

La transmission d'un octet


Le maître place la ligne d'horloge SCL à 0.

Tant que la ligne SCL est au niveau haut, la ligne SDA ne doit pas changer d'état, sinon cette condition
sera interprétée comme la condition d'arrêt. La condition arrêt peut survenir même au milieu de la
transmission d'un octet, pour abandonner la transmission et libérer le bus pour les autres circuits.

Une fois les 8 bits transmis, le circuit qui vient de recevoir les données doit imposer un bit
d'acquittement ACK sur la ligne SDA.

Pour cela, pendant que la ligne SCL est au niveau bas, le maître place sa propre sortie au niveau haut,
tandis que le récepteur (aussi appelé l'esclave) place sa sortie au niveau bas.

Le maître relit ensuite la ligne SDA une fois qu'il a passé la ligne SCL au niveau haut.

Si la valeur lue pour le bit ACK est 0, c'est que l'esclave s'est bien acquitté de l'octet reçu, sinon c'est
qu'il y a une erreur et le maître doit générer la condition arrêt
Principes et Fonctionnement

PIC 16F877 DS1307


DS1307
• Cas d’écriture de Données
Maître Esclave
Esclave

mis à 0 mis à 0
SDA
.…
START A6 A5 A4 A3 A2 A1 A0 w Ack D7 D6 D5 D4 D3 D2 D1 D0 Ack D7 D6 Ack STOP
.…

mis à 0 mis à 0
: état imposé par le maitre

: état imposé par l’esclave

• Le bit de R/W est égal à 0 le maître doit transmettre (écrire) un ou plusieurs


octets de données à l’esclave.
• Après chaque bit ACK valide (=0) par l’esclave, le maître peut continuer d'envoyer
des octets à l'esclave ou bien il peut décider de terminer le dialogue par une
condition d'arrêt.
• Un bit d’Ack = 1 veut dire que l’esclave n’a pas validé la transmission (erreur).

17
Principes et Fonctionnement
• Cas de Lecture de Données PIC 16F877 DS1307
DS1307
Maître Esclave
Esclave
mis à 0 mis à 0
SDA .…
START A6 A5 A4 A3 A2 A1 A0 R Ack D7 D6 D5 D4 D3 D2 D1 D0 Ack D7 D6 Ack STOP
.…
mis à 1 mis à 1
: état imposé par le maitre
: état imposé par l’esclave

• Le bit de R/W est égal à 1  Lire une ou plusieurs données de l’esclave. C'est toujours le
maître qui va générer le signal d'horloge SCL
• Après le bit d’Ack de l’adresse, c’est l’esclave qui va garder le contrôle de la ligne SDA. (Pour
cela, le maître va placer sa propre sortie SDA au niveau haut pour permettre à l'esclave de
prendre le contrôle de la ligne SDA. )
• Après que l'esclave a transmis les 8 bits de données, c'est le maître, cette fois-ci, qui va
générer un bit d'acquittement.
• Si le maître désire lire des octets supplémentaires, il placera le bit d'acquittement à 0. En
revanche, si le maître décide que la lecture est terminée, il placera le bit ACK au niveau 1.
• L'esclave comprendra alors que le transfert est terminé. Cette fois-ci, bien que le bit ACK soit
au niveau 1, cela ne correspond pas à une condition d'erreur mais à une fin de transfert.
18
Procédure d’arbitrage entre deux maîtres

La structure même du bus I²C a été conçue pour pouvoir y accueillir plusieurs maîtres.

Chaque maître pouvant prendre possession du bus dès que celui-ci est libre, c'est à dire tant que les
lignes SDA et SCL sont au niveau haut depuis suffisamment de temps, (4,7 µs), il existe le possibilité que
deux maîtres prennent le contrôle du bus en même temps.

Le circuit qui souhaite prendre le contrôle du bus place la ligne SDA à 0 puis il relit l'état réel de la ligne
SDA pour le comparer avec l'état qu'il souhaite imposer.

Tous les maîtres qui ont demandé un niveau haut, tandis que la ligne SDA reste à 0, vont perdre
immédiatement le contrôle du bus.

A partir de cet instant, le ou les maîtres qui viennent de perdre le contrôle du bus vont continuer à lire
les états successifs de la ligne SDA.
Procédure d’arbitrage entre deux maîtres

Si les différents maîtres en compétitions tentent d'adresser le même composant, la ligne SDA
sera toujours au bon niveau.

La procédure d'arbitration va alors continuer avec les données à transmettre. Si les différents
maîtres qui adressaient le même composant écrivent la même donnée, le conflit n'a pas lieu
d'exister puisque tout le monde veut faire la même chose.

La procédure d'arbitration va alors se poursuivre jusqu'à ce que l'un des maîtres demande un
niveau différent des autres.
Les nouvelles spécifications

Face à l'explosion du nombre de circuits I²C disponibles en très forte augmentation, Philips a
publié en 1993 les nouvelles spécifications de l'I²C :

compatibilité totale avec l'ancien I²C (qui date de 1982)

• vitesse de 400 kbit/s


• adressage étendu sur 10 bits (jusqu'à 1024 circuits) répartis dans deux octets de la
façon suivante :

• utilisation d'entrées à trigger de Schmitt afin de limiter la sensibilité au bruit


• diminution du temps entre une condition de stop et une condition de départ à 1,3 µs
• mise en haute impédance d'un circuit non alimenté afin d'éviter de bloquer le bus si
un circuit n'est pas alimenté
• récemment, Philips a introduit une nouvelle extension de la norme I²C qui étend la
vitesse à 3,4 Mbits/s.
22

Vous aimerez peut-être aussi