Click here to load reader
Upload
doanthuy
View
212
Download
0
Embed Size (px)
Citation preview
Le BUS I2C D. MENESPLIER ENAC/ELE Nov 2002
1
LE BUS I2C Il est constitué de deux fils. La transmission se fait en série de manière synchrone par rapport à une horloge. La fréquence max est de 100Khz soit 100 K/bits par seconde. La transmission d’un octet est suivi d’un 9eme bit d’accusé de réception : ACK. SCL : Horloge série fournie par le maître. SDA : Données dans les deux sens. Du maître vers l’esclave ou de l’esclave vers le maître.
Etat repos pour SDA et SCL = HIGH. - Les data sur SDA ne changent que quand SCL est « LOW ». Si elles sont stables quand SCL est
« HIGH » elles sont prises en compte. - START : data sur SDA change ( passage de 1 à 0 ) quand SCL est « HIGH ». - STOP : data sur SDA change ( passage de 0 à 1 ) quand SCL est « HIGH ».
ACK : Le récepteur fait passer SDA de « High » à « Low » pendant la 9eme impulsion SCL. TRANSMISSION : Le maître envoi le bit « START » et ensuite les 8 bits d’adressage sur SDA :
- Les 4 premiers bits déterminent le type de circuit et sont fixés par le fabriquant. - Les 3 bits suivants dépendent du câblage de 3 pattes du CI et constituent l’adresse. - Le dernier bit est le R/W. Avec « 0 » on écrit dans le CI et un « 1 » permet la lecture.
L’esclave prend alors la ligne SDA qui est au repos donc à « 1 » et la fait passer à « 0 » pour un ACK.
SCL
SDA Bit stable Bit stable
Changementde données
SDA
SCL
START STOP
SCL8 91 à 7 1 à 7 8 9 1 à 7 8 9
SDAACKR/W
7 bits adresse
START
ACK ACK
8 bits data 8 bits data
STOP
Le BUS I2C D. MENESPLIER ENAC/ELE Nov 2002
2
EXEMPLE DE TRANSMISSION : DEFINITIONS:
- Un circuit qui génère un message est un EMETTEUR, et le circuit qui le reçoit est un RECEPTEUR. - Le circuit qui contrôle l'échange est le MAITRE et celui qui est contrôlé est l'ESCLAVE. - Un ESCLAVE RECEPTEUR qui est adressé doit générer un ACK après réception de chaque octet. - De même un MAITRE doit générer un ACK après réception de chaque octet venant de l'ESCLAVE. - Un ACK est une mise à "0" de la ligne SDA pendant un pulse de la ligne SCL. - Un MAITRE RECEPTEUR doit signaler la fin du transfert à l'ESCLAVE EMETTEUR en ne générant pas de ACK, c'est à dire en générant un NOACK qui est une mise à "1" de SDA pendant un pulse de SCL. Dans ce cas l'ESCLAVE doit laisser SDA libre pour permettre au MAITRE de générer ensuite un STOP
SDA
Bit 7 Bit 6 Bit 5 Bit 4
stable non stable
SCL
Start 10 µs 10 µs 10 µs 10 µs
Top 1 Top 2 Top 3 Top 4
ACK
Top 9
10 µs
Top 8
10 µs
Bit 0
NO ACK
Stop
Le BUS I2C D. MENESPLIER ENAC/ELE Nov 2002
3
DIALOGUE :
ECRITURE du maître dans un esclave
MAITRE ESCLAVE START OCTET de CONTROLE ( R/W=0) ACK OCTET de COMMANDE ou OCTET ADRESSE
ACK
OCTET DATA
ACK
STOP
Le BUS I2C D. MENESPLIER ENAC/ELE Nov 2002
4
LECTURE de l'esclave par le maître
MAITRE ESCLAVE
START
OCTET de CONTROLE ( R/W=0) ACK OCTET de COMMANDE ou OCTET ADRESSE
ACK
RESTART
OCTET de CONTROLE ( R/W=1)
ACK
OCTET DATA
ACK OCTET DATA
NO ACK STOP