Vous êtes sur la page 1sur 3

mémoires séries http://www.technologuepro.com/microcontroleur/Memoire_serie_24c04.

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

EEPROM 24C04 Algorithme de lecture et écriture

Présentation :
Le circuit 24C04 est une EEPROM série constituée de deux blocs de 256 Ko utilisant
le protocole I2C.

Eléments constitutifs de la trame :


Octet d'identification (devsel) :

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.

bit 1 : Permet l'accès à un des deux blocs de 256 Ko.


bit 0 : Sélectionne le mode lecture (1) ou écriture (0).

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 d'adresse (addr) :

Ce mot indique l'adresse à laquelle doivent s'effectuer les opérations.

Octet de donnée(data):

Ce mot indique la donnée à inscrire.

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 :

Start devsel (R/W = 0) ack addr ack data ack stop

1 sur 3 20/03/2016 00:17


mémoires séries http://www.technologuepro.com/microcontroleur/Memoire_serie_24c04.htm

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 :

Start $A0 ack $F9 ack stop

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

2 sur 3 20/03/2016 00:17


mémoires séries http://www.technologuepro.com/microcontroleur/Memoire_serie_24c04.htm

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.

devsel (R/W= devsel (R/W =


Start Start addr ack ack data1(out) ack=0 data2(out) ack=1 stop
0) 1)

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

Révisé le :15-01-2008| © www.technologuepro.com

3 sur 3 20/03/2016 00:17

Vous aimerez peut-être aussi