EEPROM: tout ce que vous devez savoir sur cette mémoire

EEPROM

Si vous êtes un créateur et que vous faites des projets de bricolage dans lesquels vous devez travailler avec de la mémoire, vous savez sûrement déjà comment fonctionnent les différentes mémoires qu'Arduino intègre, comme le flash (non volatile où le croquis et le chargeur de démarrage sont stockés), SRAM (une mémoire rapide et volatile où les variables de programme restent pendant le traitement), et le EEPROM (non volatile et peut être utilisé pour stocker des informations de redémarrage).

Eh bien, en plus de l'EEPROM incluse dans Arduino, vous pouvez également utiliser des puces externes de ce genre de souvenirComme un autre composant. Ils ne sont pas compliqués à comprendre, ni à interagir avec eux pour générer des accès (écriture et lecture) ou des mises à jour des informations stockées. Vous trouverez ici tout ce que vous devez savoir pour commencer à travailler avec ces types de souvenirs ...

Qu'est-ce que l'EEPROM?

EEPROM STMicroelectronics

EEPROM STMicroelectronics

La EEPROM (mémoire rouge programmable effaçable électriquement uniquement) C'est un type de mémoire ROM, c'est-à-dire une mémoire non volatile dans laquelle les données seront stockées en permanence, même si l'alimentation est coupée. Cela les met de l'autre côté des RAM (Random Access Memory), qui perdent toutes leurs données lorsqu'elles ne sont pas alimentées.

Dans le cas de l'EEPROM, ce n'est pas une mémoire comme la ROM, dans laquelle les données sont enregistrées et ne peuvent plus être modifiées. EEPROM, comme le flash, admet être altéré comme requis. En d'autres termes, certaines données peuvent être stockées et effacées pour en stocker différentes.

En fait, comme l'indiquent ses acronymes, il s'agit d'un mémoire effaçable électriquement (effaçable électriquement) pour la reprogrammation. Cela diffère des autres types de ROM, qui sont également effaçables comme les EPROM, mais dans ce cas, l'électricité n'est pas utilisée pour effacer les cellules mémoire, au lieu de cela, ils avaient une "fenêtre" de quartz sur la puce pour pouvoir projeter une lumière UV. Avec dont il a été effacé.

Cette caractéristique de EPROM cela les rendait quelque peu inconfortables, ayant à projeter ces rayons pour les effacer. Et, pire que tout, ils pourraient être accidentellement effacés s'ils étaient exposés à ce type de rayonnement. Dans les EEPROM, il est permis de le faire via des tensions, d'une manière plus confortable et plus sûre.

Structure interne

Diagramme EEPROM

Source: Researchgate.net

Pour que l'EEPROM fonctionne, des cellules de mémoire très particulières sont nécessaires. Ils sont construits à l'aide de transistors de type MOS, mais ont une grille flottante par rapport aux MOSFET traditionnels. Ces nouveaux transistors suivent une structure connue sous le nom de SAMOS, et son état normal est coupé et la sortie fournira toujours un 1 logique.

Ces cellules EEPROM peuvent être lues un nombre illimité de fois, mais elles sont limitées en le nombre de fois où ils peuvent être effacés et reprogrammés, comme cela arrive à beaucoup d’autres. Cela arrive également au flash, c'est pourquoi on a tant parlé de la durabilité des disques durs SSD, des clés USB, etc.

Dans le cas de SAMOS, cette limite se situe entre le 100.000 et 1.000.000 fois. Après cela, ils échoueront. À propos, certaines structures qui ont été créées par une vieille connaissance, l'un des plus grands: le Dr Fujio Masuoka de Toshiba (1984), qui a également créé d'autres mémoires et structures semi-conductrices importantes ... Cependant, la première puce lancée sur le marché était celui d'Intel de 1988, une EEPROM de type NOR.

De plus, il faut savoir que ce type de mémoire est généralement lié à des CPU ou des contrôleurs via bus avec des protocoles comme SPI, I2C, etc. Dans le cas des MCU (microcontrôleurs), il est généralement intégré à l'intérieur, comme dans certains DSP, pour atteindre une plus grande vitesse.

Comme on peut le voir dans l'image ci-dessus, le Transistors SAMOS qui forment les cellules de mémoire, sont regroupées dans ce cas par paires. L'une des lignes attachées aux grilles de certains transistors agit comme une ligne de choix, pour marquer ou signaler cette ligne pour l'accès (lecture et écriture), et l'autre sera celle qui stockera le bit d'information (0 ou 1).

Les transistors sont alignés pour former les longueurs de mot requises (4 bits, 8 bits, 16 bits, ...) et autant de mots que capacidad vous voulez avoir l'EEPROM (par exemple: il peut y avoir des longueurs de mot de 64 bits et avec 16 lignes = 1024 bits, soit 1 ko).

Comment fonctionne un EERPOM?

Comme vous pouvez le voir sur le côté, pour performer les différentes tâches, la tension de votre grille, source et drain doit être concrète:

  • Porte à 20v et vidange à 20v = programmation (écriture) de la cellule mémoire pour stocker le bit souhaité.
  • Porte à 0v et vidange à 20v = efface le bit stocké pour qu'il puisse être reprogrammé avec une autre valeur.
  • Porte à 5v et vidange à 5v = lire le bit stocké. La tension de grille étant inférieure à celle de l'écriture, la valeur mémorisée ne sera pas modifiée. La même chose se produit avec la tension de drain, étant inférieure, le bit stocké ne sera pas effacé.

Conclusion, les EEPROM en utilisent quelques les tensions "High" pour l'effacement et l'écriture, tout en utilisant des tensions inférieures pour la lecture ...

Achetez EEPROM et travaillez avec

STMicroelectronics, le fabricant français de microélectronique, est numéro un dans ce type de puces EEPROM, bien qu'il existe de nombreux autres fabricants, comme Microchip. Ces puces sont généralement assez bon marché.

Si vous décidez de utilisez une de ces puces, vous devriez voir le fabricant et le modèle et rechercher son Fiche technique pour voir toutes les recommandations du fabricant, car elles peuvent varier de l'une à l'autre. Par exemple, ils préciseront les tensions avec lesquelles il fonctionne, le brochage, etc. Ainsi, vous pouvez configurer correctement votre projet.

Selon la taille et le modèle, il peut avoir plus ou moins pins. Mais pour vous donner une idée, une puce IC EEPROM 24LC512 typique pourrait être composée de:

  • Les broches 1 (A0), 2 (A1) et 3 (A3) utilisées dans la configuration sont les broches de sélection.
  • Broche 4 (Vss / GND) connectée à la terre.
  • Broche 5 (SDA), pour les données série pour la communication I2C.
  • Broche 6 (SCL), pour l'horloge pour I2C.
  • Pin 7 (WP), protection en écriture ou protection en écriture. S'il est connecté à GND, l'écriture sera activée. S'il se connecte à Vcc, il est désactivé.
  • Pin 8 (Vcc), connecté à l'alimentation.

Quant à la Spécifications techniques de cette puce:

  • 512K (64 × 8)
  • Tampon de 128 octets pour l'écriture
  • Tension de fonctionnement: 1.8 v à 5.5 v
  • Courant de lecture: 40uA
  • Bus de communication: I2C
  • Cycle d'écriture: 5 ms
  • Compatibilité d'horloge: 100-400Khz
  • Durabilité: 10.000.000 XNUMX XNUMX cycles
  • Peut être mis en cascade jusqu'à 8 appareils
  • Emballage: DIP 8 broches, SOIJ, SOIC et TSSOP.

Où acheter

Pour acheter des puces EEPROM, vous pouvez consulter ces recommandations:

Utilisation de l'EEPROM Arduino

Capture d'écran Arduino IDE

Si vous souhaitez commencer à travailler avec l'EEPROM, vous pouvez également essayer celui de votre carte Arduino. Il peut être programmé de manière simple pour comprendre à un niveau logique et de programmation comment il peut fonctionner.

Exemple pour enregistrer une variable

//Almacenar un valor en la EEPROM
#include <EEPROM.h>
 
float sensorValue;
int eepromaddress = 0;
 
//Función para simular lectura de un sensor o pin
float ReadSensor()
{
  return 10.0f;
}
 
void setup()
{
}
 
void loop()
{
  sensorValue = ReadSensor(); //Lectura simulada del valor
  EEPROM.put( eepromaddress, sensorValue );  //Escritura del valor en la EEPROM
  eepromaddress += sizeof(float);  //Apuntar a la siguiente posición a escribir
  if(eepromaddress >= EEPROM.length()) eepromaddress = 0;  //Comprueba que no existe desbordamiento 
 
  delay(30000); //Espera 30s
}

Exemple de lecture de données depuis l'EEPROM

//Leer una variable de coma flotante
#include <EEPROM.h>
 
struct MyStruct{
  float field1;
  byte field2;
  char name[10];
};
 
void setup(){
  
  float f;
  int eepromaddress = 0; //La lectura comienza desde la dirección 0 de la EEPROM    
  EEPROM.get( eepromaddress, f );
  Serial.print( "Dato leído: " );
  Serial.println( f, 3 );  
 
  eepromaddress += sizeof(float);
}
 
void loop()
{
}

Exemple de mise à jour des valeurs, replanification

//Actualizar valor de la EEPROM escribiendo el dato entrante por la A0
#include <EEPROM.h>
 
int eepromaddress = 0;
 
void setup()
{
}
 
void loop()
{
   int val = analogRead(0) / 4;
   EEPROM.update(eepromaddress, val);
  
  eepromaddress += sizeof(int);
  if(address == EEPROM.length()) eepromaddress = 0;
 
  delay(10000);  //Espera de 10 segundos
}

Plus d'informations - Cours Arduino gratuit


Soyez le premier à commenter

Laisser un commentaire

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

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.