Aller au contenu

L’EEPROM Série 24CXX

    Les EEPROM séries sont des composants très courants sur les cartes électroniques actuelles. Beaucoup d’entre elles ont besoin de stocker durablement des valeurs, que ce soit des paramètres utilisateur, une configuration ou plus largement des données de travail. C’est la qu’interviennent les EEPROM séries de type 24CXX ou 25CXX.

    Les types d’EEPROM série.

    Il existe deux principaux types de mémoires série, les I2C et les SPI.

    Les mémoires I2C.

    La référence des mémoires I2C commence généralement par « 24C ». Elles se connectent sur 2 fils pour la transmission de données SCL et SDA. La patte SCL est une patte horloge et la patte SDA est la patte d’émission et de réception de donnée. Ce composant est généralement adressable ce qui permet a l’utilisateur d’utiliser son bus I2C pour plusieurs composants. Sur ces mémoires on trouve également un WP qui permet d’interdire l’écriture de donnée ou de l’autoriser.

     

     

     

     

    Les mémoires SPI

    La référence de la mémoire SPI commence habituellement par « 25C« . La transmission des données se passent sur 3 fils SO, SI, SCK . SO est la sortie des données, SI l’entrée des données, SCK l’horloge. On trouve un CS plutôt qu’une adresse sur ces composants mais l’un n’empêche pas l’autre. Avec le CS ( Chip Select ), ça sera a vous d’agencer l’adressage des différents éléments que vous mettrez sur votre bus SPI.

    Le constructeur nous propose d’ailleurs une solution pour le faire :

    Il m’est même arrivé de voir la patte SO et SI connectées ensemble pour faire un pilotage sur 2 fils. Il est possible que la mémoire ne fasse jamais d’entrée et de sortie en même temps, je vous déconseillerai quand même de le faire.

     

     

    La vulnérabilité.

    Les mémoires de ce type sont vulnérables, je vous déconseille d’y mettre des données sensible car elles pourront être lue de l’extérieur. C’est d’ailleurs ce que j’ai fait sur un automate MODICON de chez Schneider électrique. Pour la petite histoire , un client a moi était coincé avec un automate Modicon, la société qui avait crée le programme refusant d’intervenir et même de donner le mot de passe pour que quelqu’un d’autre puisse le faire. J’ai récupéré l’automate, en le démontant j’ai repéré une mémoire SPI « 25C » que j’ai extrait puis lu avec un programmateur externe. Toute les données du programme s’y trouvaient même le mot de passe, en clair lisible avec un éditeur hexadécimal ascii. J’ai donc pu débloquer facilement mon client grâce au faible niveau de protection de l’électronique.

    La lecture et l’écriture sur une mémoire 24CXX.

    Je vais vous expliquer un peu plus en détail comment lire et écrire sur une mémoire I2C 24CXX. Voici ce que nous propose le constructeur pour la lecture.

    La lecture de la 24CXX.

    Le « salve address » est l’adresse que vous aurez câblé physiquement sur le circuit avec les pattes A0,A1,A2. Par exemple si ces 3 pattes sont a 0 la valeur sera « 0xA0 »

    Comme vous le voyez les 4 premiers bytes ne changent pas et valent « A » en hexadécimale, ensuite les 3  bits d’adresse puis le read/write que l’on va passer a 0 également étant donnée que l’on souhaite écrire l’adresse de la donnée que l’on veut lire, ce qui donne « 0XA0 ». Vous voyez d’ailleurs sur le schéma ci contre qu’il est au niveau bas.

    On écrit ensuite l’adresse de la donnée que l’on souhaite lire, puis on repasse en lecture en mettant « A1 » cette fois. Ensuite on attend la réponse du circuit qui revoit la valeur présente a cette adresse.

     L’écriture de la 24CXX.

    Voici le diagramme d’écriture qui est encore plus simple que la lecture. Comme tout a l’heure si toutes les pattes d’adressage sont a 0 on écrit donc « 0xA0 ». Ensuite l’adresse ou on souhaite écrire, puis les données que l’on souhaite écrire.

     

     

     

    Il faut noter que certaines mémoires sont beaucoup plus grandes et ne peuvent s’adresser sur 8 bits comme c’est le cas au dessus. Dans ce cas la il faudra envoyer deux fois l’adresse sur 16 bits ( ou plus si besoin) afin d’avoir accès a toute la mémoire. Pensez a mettre des temps de pause entre l’envoi de vos données pour laisser le temps au circuit de comprendre ce que vous venez d’envoyer.

     

    J’espère que cet article vous sera utile , inscrivez vous !

    Sylvain Altmayer

     

     

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *