EEPROM: wszystko, co musisz wiedzieć o tej pamięci

EEPROM

Jeśli jesteś producentem i wykonujesz projekty DIY, w których musisz pracować z pamięcią, na pewno wiesz już, jak działają różne wspomnienia, które integruje Arduino, takie jak flash (nieulotny, gdzie przechowywany jest szkic i bootloader), SRAM (szybka i ulotna pamięć, w której zmienne programu pozostają podczas przetwarzania) i EEPROM (nieulotna i może być używana do przechowywania informacji o ponownym uruchomieniu).

Cóż, oprócz EEPROM-u zawartej w Arduino, można również użyć zewnętrznych chipów ten rodzaj pamięciJak jeszcze jeden składnik. Nie są one skomplikowane do zrozumienia ani do interakcji z nimi w celu uzyskania dostępu (zapisu i odczytu) lub aktualizacji przechowywanych informacji. Tutaj znajdziesz wszystko, co musisz wiedzieć, aby rozpocząć pracę z tego typu wspomnieniami ...

Co to jest EEPROM?

EEPROM firmy STMicroelectronics

EEPROM firmy STMicroelectronics

La EEPROM (elektrycznie kasowalna, programowalna pamięć tylko w kolorze czerwonym) Jest to rodzaj pamięci ROM, czyli pamięci nieulotnej, w której dane będą przechowywane na stałe, nawet po odłączeniu zasilania. To stawia je po drugiej stronie pamięci RAM (pamięć o dostępie swobodnym), które tracą wszystkie dane, gdy nie są zasilane.

W przypadku EEPROM nie jest to pamięć taka jak ROM, w której zapisywane są dane i nie można ich już zmieniać. EEPROM, podobnie jak flash, przyznaje się do zmiany w razie potrzeby. Oznacza to, że niektóre dane można przechowywać i usuwać w celu przechowywania innych.

W rzeczywistości, jak wskazują jego akronimy, jest to plik pamięć kasowana elektrycznie (kasowalny elektrycznie) do przeprogramowania. Różni się to od innych typów pamięci ROM, które są również kasowalne jak EPROM, ale w tym przypadku do wymazywania komórek pamięci nie jest wykorzystywana energia elektryczna, zamiast tego miały one kwarcowe „okienko” na chipie, aby móc rzutować światło UV. który został usunięty.

Ta cecha EPROM sprawiało, że czuli się trochę nieswojo, musieli rzucać te promienie, aby je usunąć. A co najgorsze, mogą zostać przypadkowo usunięte, jeśli zostaną wystawione na tego typu promieniowanie. W EEPROM-ach można to robić przez napięcia, w wygodniejszy i bezpieczniejszy sposób.

Struktura wewnętrzna

Schemat EEPROM

Źródło: Researchgate.net

Aby EEPROM mógł działać, potrzebne są bardzo szczególne komórki pamięci. Są zbudowane przy użyciu tranzystorów typu MOS, ale mają pływającą bramkę w porównaniu z tradycyjnymi tranzystorami MOSFET. Te nowe tranzystory mają strukturę znaną jako Samos, a jego normalny stan jest odcięty, a wyjście zawsze będzie wskazywać logiczne 1.

Te komórki EEPROM można odczytywać nieograniczoną liczbę razy, ale jest to ograniczone ile razy można je usunąć i przeprogramować, jak to się dzieje w przypadku wielu innych. Dzieje się tak również z pamięcią flash, dlatego tak dużo mówi się o trwałości dysków SSD, pendrive'ów itp.

W przypadku SAMOS ten limit znajduje się między 100.000 1.000.000 i XNUMX XNUMX XNUMX razy. Potem zawiodą. Nawiasem mówiąc, niektóre struktury, które zostały stworzone przez starego znajomego, jednego z największych: dr Fujio Masuoka z firmy Toshiba (1984), który stworzył również inne ważne pamięci i struktury półprzewodnikowe ... Jednak pierwszy chip został uruchomiony na rynkiem był Intel od 1988 roku, EEPROM typu NOR.

Ponadto musisz wiedzieć, że ten typ pamięci jest zwykle połączony z procesorami lub kontrolerami za pośrednictwem autobus z protokołami takimi jak SPI, I2Citp. W przypadku MCU (mikrokontrolerów) jest zwykle zintegrowany wewnątrz, jak w niektórych DSP, aby uzyskać większą prędkość.

Jak widać na powyższym obrazku, plik Tranzystory SAMOS które tworzą komórki pamięci, są zgrupowane w tym przypadku parami. Jedna z linii dołączonych do bramek niektórych tranzystorów działa jako linia z wyboru, aby zaznaczyć lub zasygnalizować tę linię w celu uzyskania dostępu (odczytu i zapisu), a druga będzie tą, która przechowuje bit informacji (0 lub 1).

Tranzystory są wyrównane, aby utworzyć wymagane długości słów (4-bitowe, 8-bitowe, 16-bitowe, ...) i tyle słów, ile capacidad chcesz mieć EEPROM (np .: może być 64-bitowa długość słowa i przy 16 liniach = 1024 bity, czyli 1kb).

Jak działa EERPOM?

Jak widać z boku, do wykonania różne zadania, napięcie twojej bramy, źródła i odpływu musi być konkretne:

  • Drzwi przy 20v i opróżnianie przy 20v = programowanie (zapisywanie) komórki pamięci do przechowywania żądanego bitu.
  • Drzwi przy 0v i opróżnianie przy 20v = wyczyść przechowywany bit, aby można go było przeprogramować inną wartością.
  • Bramka przy 5v i opróżnianie przy 5v = przeczytaj przechowywany bit. Ponieważ napięcie bramki jest niższe niż napięcie zapisu, przechowywana wartość nie zostanie zmieniona. To samo dzieje się z napięciem drenu, ponieważ jest niższe, przechowywany bit nie zostanie usunięty.

Wniosek, EEPROM używają kilku napięcia „Wysoki” do wymazywania i zapisywania, przy użyciu niższych napięć do odczytu ...

Kup EEPROM i pracuj z nim

STMicroelectronics, francuski producent mikroelektroniki, jest numerem jeden w tego typu układach EEPROM, chociaż istnieje wielu innych producentów, takich jak Microchip. Te żetony są zwykle dość tanie.

Jeśli zdecydujesz użyj jednego z tych chipów, powinieneś zobaczyć producenta i model i poszukać jego datasheet aby zapoznać się ze wszystkimi zaleceniami producenta, ponieważ mogą się one różnić między sobą. Na przykład określą napięcia, z którymi działa, pinoutitp. Możesz więc poprawnie skonfigurować swój projekt.

W zależności od rozmiaru i modelu może mieć mniej lub więcej sosny. Ale żeby dać ci pomysł, typowy układ scalony 24LC512 EEPROM IC może składać się z:

  • Piny 1 (A0), 2 (A1) i 3 (A3) użyte w konfiguracji to piny wyboru.
  • Pin 4 (Vss / GND) podłączony do masy.
  • Pin 5 (SDA), dla danych szeregowych do komunikacji I2C.
  • Pin 6 (SCL), dla zegara dla I2C.
  • Pin 7 (WP), ochrona przed zapisem lub ochrona przed zapisem. Jeśli jest podłączony do GND, zapis będzie włączony. Jeśli łączy się z Vcc, jest wyłączone.
  • Pin 8 (Vcc), podłączony do zasilania.

W Specyfikacja techniczna tego chipa:

  • 512K (64 × 8)
  • 128-bajtowy bufor do zapisu
  • Napięcie robocze: 1.8 V do 5.5 V.
  • Prąd odczytu: 40uA
  • Magistrala komunikacyjna: I2C
  • Cykl zapisu: 5 ms
  • Zgodność zegara: 100-400 kHz
  • Trwałość: 10.000.000 cykli
  • Można połączyć kaskadowo do 8 urządzeń
  • Opakowanie: 8-pinowy DIP, SOIJ, SOIC i TSSOP.

Gdzie kupić

do kup chipy EEPROM, możesz zapoznać się z tymi zaleceniami:

Korzystanie z Arduino EEPROM

Zrzut ekranu Arduino IDE

Jeśli chcesz rozpocząć pracę z pamięcią EEPROM, możesz również wypróbować tę na swojej płycie Arduino. Można go zaprogramować w prosty sposób, aby zrozumieć na poziomie logicznym i programowania, jak to działa.

Przykład zapisywania zmiennej

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

Przykład odczytu danych z 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()
{
}

Przykład aktualizacji wartości, zmiany harmonogramu

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

Więcej informacji - Darmowy kurs Arduino


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.