EEPROM 24C04

Algorithme de lecture et écriture

page gérée par : N.Midoux


Cette page est un résumé de la documentation du circuit 24C04. Pour plus de précision, consulter la doc!

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 :

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.

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

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 distinge deux modes d'écriture.

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 stop

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 $00   ack  $F9 stop

 

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 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 stop

remarque :

En mode écriture le maitre positionne le bit ack à 1 et l'esclave répond par un 0 lui signifiant qu'il peut continuer la transmision.

 

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).

Start devsel (R/W = 0) Start addr ack devsel (R/W = 1) ack data(out) ack 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 Start $A1 ack data(out) ack stop

 

remarque :

Dans ce cas le maître positionne le bit ack à 1 pour l'acquitement 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.Cette état est aussi appelé non-acquitement.

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.

Start devsel (R/W = 0) Start addr ack devsel (R/W = 1) ack data1(out) ack=0 data2(out) ack=1 stop

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

 

Retour à la page d'accueil Exercice interactif