EEPROM: alles wat u moet weet oor hierdie geheue

EEPROM

As u 'n vervaardiger is en 'n paar DIY-projekte doen waarin u met geheue moet werk, weet u sekerlik al hoe die verskillende herinneringe wat Arduino integreer werk, soos flits (nie-vlugtig waar die skets en selflaaiprogram gestoor word), SRAM ('n vinnige en vlugtige geheue waar programveranderlikes tydens verwerking bly), en die EEPROM (nie wisselvallig nie en kan gebruik word om inligting oor herlaai te stoor).

Benewens die EEPROM wat in Arduino ingesluit is, kan u ook eksterne skyfies van gebruik hierdie soort geheueSoos nog een komponent. Dit is nie ingewikkeld om te verstaan ​​nie, en ook nie om daarmee te kommunikeer om toegang (skryf en lees) of opdaterings van die gestoorde inligting te genereer nie. Hier vind u alles wat u moet weet om met hierdie soort herinneringe te begin werk ...

Wat is EEPROM?

STMicroelectronics EEPROM

STMicroelectronics EEPROM

La EEPROM (elektries uitwisbare programmeerbare geheue met slegs rooi geheue) Dit is 'n soort ROM-geheue, dit wil sê, nie-vlugtige geheue waarin data permanent gestoor sal word, selfs al word die kragbron verwyder. Dit plaas hulle aan die ander kant van RAM's (Random Access Memory), wat al hul data verloor as hulle nie van krag is nie.

In die geval van EEPROM is dit nie 'n geheue soos ROM waarin data geskryf word en nie meer verander kan word nie. EEPROM, soos flits, erken dat dit verander is soos benodig. Sommige data kan gestoor en uitgevee word om verskillende data op te slaan.

Trouens, soos dit in akronieme aangedui word, is dit 'n elektriese uitwisbare geheue (elektries uitwisbaar) vir herprogrammering. Dit verskil van ander soorte ROM's, wat ook uitwisbaar is, soos EPROM's, maar in hierdie geval word elektrisiteit nie gebruik om die geheueselle uit te wis nie, maar 'n kwarts "venster" op die chip om 'n UV-lig te kon projekteer. waarmee dit uitgewis is.

Daardie kenmerk van EEPROM dit het hulle ietwat ongemaklik gemaak omdat hulle die strale moes projekteer om dit uit te wis. En die ergste van alles, hulle kan per ongeluk uitgewis word as hulle aan hierdie soort bestraling blootgestel word. In EEPROM's is dit toegelaat om dit op 'n gemakliker en veiliger manier deur middel van spanning te doen.

Interne struktuur

EEPROM-diagram

Bron: Researchgate.net

Om die EEPROM te laat werk, is baie spesifieke geheueselle nodig. Hulle is met behulp van MOS-tipe transistors gebou, maar het 'n drywende hek in vergelyking met tradisionele MOSFET's. Hierdie nuwe transistors volg 'n struktuur wat bekend staan ​​as SAMOS, en die normale toestand daarvan word afgesny en die uitset sal altyd 'n logiese 1 bied.

Hierdie EEPROM-selle kan 'n onbeperkte aantal kere gelees word, maar dit is beperk tot die aantal kere wat dit uitgewis en herprogrammeer kan word, soos dit met baie ander gebeur. Dit gebeur ook met flits, en daarom is daar soveel gepraat oor die duursaamheid van SSD-hardeskywe, penaandrywers, ens.

In die geval van SAMOS is hierdie limiet tussen die 100.000 1.000.000 en XNUMX XNUMX XNUMX keer. Daarna sal hulle misluk. Terloops, sommige strukture wat deur 'n ou bekende geskep is, een van die grotes: Dr. Fujio Masuoka van Toshiba (1984), wat ook ander belangrike herinneringe en halfgeleierstrukture geskep het ... Die eerste chip wat op die mark was Intel s'n vanaf 1988, 'n NOR-tipe EEPROM.

Daarbenewens moet u weet dat hierdie tipe geheue gewoonlik gekoppel is aan SVE's of beheerders bus met protokolle soos SPI, I2C, ens. In die geval van MCU's (mikrobeheerders) is dit gewoonlik binne, soos in sommige DSP's, geïntegreer om groter spoed te behaal.

Soos gesien kan word in die prentjie hierbo, is die SAMOS transistors wat die geheueselle vorm, word dan in pare gegroepeer. Een van die lyne wat aan die hekke van sommige transistors gekoppel is, dien as 'n keuse-lyn om die lyn vir toegang (lees en skryf) te merk of aan te dui, en die ander een is wat die informasiebit (0 of 1) stoor.

Die transistors is in lyn om die vereiste woordlengtes (4-bis, 8-bit, 16-bit, ...) en soveel woorde as kapasiteit u wil die EEPROM hê (bv. daar kan 64-bis woordlengtes hê en met 16 reëls = 1024 bisse, dit wil sê 1 kb).

Hoe werk 'n EERPOM?

Soos u aan die kant kan sien, om op te voer die verskillende take, die spanning van u hek, bron en afvoer moet konkreet wees:

  • Deur by 20v en dreineer by 20v = programmering (skryf) van die geheuesel om die gewenste bietjie op te slaan.
  • Deur by 0v en dreineer by 20v = maak die gestoorde bietjie skoon sodat dit met 'n ander waarde herprogrammeer kan word.
  • Hek by 5v en Dreineer by 5v = lees die gestoorde bietjie. Aangesien die hekspanning laer is as die van die skrif, sal die gestoorde waarde nie verander word nie. Dieselfde gebeur met die afvoerspanning, aangesien dit laer is, sal die gebergde bietjie nie uitgewis word nie.

Ten slotte gebruik EEPROM's 'n paar spannings 'Hoog' vir uitvee en skryf, terwyl laer spanning gebruik word om te lees ...

Koop EEPROM en werk daarmee

STMicroelectronics, die Franse vervaardiger van mikro-elektronika, is nommer een in hierdie tipe EEPROM-skyfies, hoewel daar baie ander vervaardigers is, soos Microchip. Hierdie skyfies is gewoonlik redelik goedkoop.

As u besluit om gebruik een van hierdie skyfies, u moet die vervaardiger en model sien en daarna kyk datablad om al die aanbevelings van die vervaardiger te sien, aangesien dit van die een na die ander kan wissel. Hulle sal byvoorbeeld die spannings waarmee dit werk spesifiseer, die pinout, ens. U kan dus u projek behoorlik instel.

Afhangend van die grootte en model, kan dit min of meer hê denne. Maar om u 'n idee te gee, kan 'n tipiese 24LC512 EEPROM IC-skyf bestaan ​​uit:

  • Spelde 1 (A0), 2 (A1) en 3 (A3) wat in die opset gebruik word, is die seleksiepenne.
  • Pen 4 (Vss / GND) gekoppel aan grond.
  • Speld 5 (SDA), vir seriële data vir I2C-kommunikasie.
  • Speld 6 (SCL), vir die klok vir I2C.
  • Speld 7 (WP), skryfbeskerming of skryfbeskerming. As dit aan GND gekoppel is, sal skryf geaktiveer word. As dit aan Vcc koppel, is dit uitgeskakel.
  • Speld 8 (Vcc), gekoppel aan krag.

As die Tegniese spesifikasies van hierdie skyfie:

  • 512K (64 × 8)
  • 128-byte buffer vir skryf
  • Bedryfspanning: 1.8 v tot 5.5 v
  • Leesstroom: 40uA
  • Kommunikasiebus: I2C
  • Skryf siklus: 5ms
  • Klokversoenbaarheid: 100-400 KHz
  • Duursaamheid: 10.000.000 siklusse
  • Kan tot 8 toestelle omhul word
  • Verpakking: 8-pen DIP, SOIJ, SOIC en TSSOP.

Donde comprar

om koop EEPROM-skyfies, kan u na hierdie aanbevelings kyk:

Gebruik die Arduino EEPROM

Kiekie van Arduino IDE

As u met die EEPROM wil begin werk, kan u ook die een op u bord probeer Arduino. Dit kan op 'n eenvoudige manier geprogrammeer word om op 'n logiese en programmeringsvlak te verstaan ​​hoe dit kan werk.

Voorbeeld om 'n veranderlike te stoor

//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
}

Voorbeeld om data van EEPROM te lees

//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()
{
}

Voorbeeld om waardes op te dateer, te herskeduleer

//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
}

Meer inligting - Gratis Arduino-kursus


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

Wees die eerste om te kommentaar lewer

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.