4

Click here to load reader

LE BUS I2C - daniel.menesplier.free.frdaniel.menesplier.free.fr/Doc/LE BUS I2C.pdf · Microsoft Word - LE BUS I2C.doc Author: menespda Created Date: 11/10/2004 8:58:01 AM

Embed Size (px)

Citation preview

Page 1: LE BUS I2C - daniel.menesplier.free.frdaniel.menesplier.free.fr/Doc/LE BUS I2C.pdf · Microsoft Word - LE BUS I2C.doc Author: menespda Created Date: 11/10/2004 8:58:01 AM

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

Page 2: LE BUS I2C - daniel.menesplier.free.frdaniel.menesplier.free.fr/Doc/LE BUS I2C.pdf · Microsoft Word - LE BUS I2C.doc Author: menespda Created Date: 11/10/2004 8:58:01 AM

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

Page 3: LE BUS I2C - daniel.menesplier.free.frdaniel.menesplier.free.fr/Doc/LE BUS I2C.pdf · Microsoft Word - LE BUS I2C.doc Author: menespda Created Date: 11/10/2004 8:58:01 AM

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

Page 4: LE BUS I2C - daniel.menesplier.free.frdaniel.menesplier.free.fr/Doc/LE BUS I2C.pdf · Microsoft Word - LE BUS I2C.doc Author: menespda Created Date: 11/10/2004 8:58:01 AM

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