Académique Documents
Professionnel Documents
Culture Documents
htm
Tous les Cours | Les microcontrôleurs PIC | Les microcontrôleurs ATMEL AVR | Programmation en langage Pascal
(Mikropascal) |
Application en mikropascal : Porte automatique de garage | Programmation en langage C (Pic C Compiler PCWH) | Le
Bus I2C | Mémoires série 24C32 |
Tutorial Mikropascal | Tutorial Pic C Compiler | Tutorial Logipic | Tutorial Edit Algo | Tutorial IcProg |
Chapitre 5
Présentation :
Le circuit 24C04 est une EEPROM série constituée de deux blocs de 256 Ko utilisant
le protocole I2C.
C'est le premier octet émis par le maître, il permet de sélectionner le circuit ainsi que
la nature et le lieu des opérations à effectuer (R/W, bloc).
bits 7 à 2 : Identification du circuit constituée d'une partie fixe (bits 7 à 4) égale à 1010,
et d'une partie variable (bits 3 et 2) fixée par les états logiques imposés sur les
broches E2 et E1.
Exemple :
On désire écrire dans le bloc 0 d'un circuit 24C04 dont les pattes E2 et E1 sont
connectées respectivement à 1 et à 0. Le premier mot à envoyer sera 10101000.
Octet de donnée(data):
Algorithme d'écriture
Les octets devsel, addr, data sont insérés dans la trame I2C (consulter les pages I2c).
On distingue deux modes d'écriture.
mode direct :
La donnée est rangée à l'adresse spécifiée par l'octet addr, la trame envoyée par le
circuit maître est la suivante :
Exemple :
Soit un circuit 24C04 dont les broches E2 et E1 sont reliées à la masse, on désire
écrire la donnée $F9 à l'adresse $00 du bloc 0. La trame à envoyer sera la suivante :
mode séquentiel :
Une fois l'adresse spécifiée, les données sont inscrites aux adresses suivantes tant
que la condition de stop n'est pas envoyée.
Start devsel (R/W = 0) ack addr ack data1 ack data2 ack data3 ack stop
Exemple :
Soit un circuit 24C04 dont les broches E2 et E1 sont reliées à la masse, on désire
écrire les données $F9, $E0, $12 respectivement aux adresses $10, $11, $12 du bloc
1. La trame à envoyer sera la suivante :
Start $A2 ack $10 ack $F9 ack $E0 ack $12 ack stop
Remarque :
En mode écriture le maître positionne le bit ack à 1 et l'esclave répond par un 0 lui
signifiant qu'il peut continuer la transmission.
Algorithme de lecture :
Pour effectuer une lecture il faut préalablement envoyer l'adresse au circuit en mode
écriture. Puis repositionner le circuit en mode lecture afin d'obtenir la (les) donnée(s).
mode direct :
Start devsel(R/W = 0) ack addr ack Start devsel(R/W= 1) ack Data(out) ack=1 stop
Exemple :
Soit un circuit 24C04 dont les broches E2 et E1 sont reliées à la masse, on désire lire
la donnée présente à l'adresse $00 du bloc 0. La trame à envoyer sera la suivante :
Start $A0 ack $00 ack Start $A1 ack data(out) ack=1 stop
Remarque :
Dans ce cas le maître positionne le bit ack à 1 pour l'acquittement des données. En
fin de trame le maître positionne ack à 1 pour indiquer qu'il ne désire plus recevoir de
données. Cet état est aussi appelé non-acquittement.
mode séquentiel :
En mode séquentiel, après réception d'une donnée, le bit ack est positionné à 0 par le
maître lorsqu'il désire une nouvelle donnée.
Exemple :
Soit un circuit 24C04 dont les broches E2 et E1 sont reliées à la masse, on désire lire
les données présentes aux adresses $10 et $11 du bloc 1. La trame à envoyer sera la
suivante :
Start $A2 Start $10 ack $A3 ack data1(out) ack=0 data2(out) ack=1 stop