EEPROM: всичко, което трябва да знаете за тази памет

EEPROM

Ако сте производител и правите някои проекти за „направи си сам“, в които трябва да работите с памет, със сигурност вече знаете как работят различните спомени, които Arduino интегрира, като flash (енергонезависима, където се съхраняват скицата и буутлоудъра), SRAM (бърза и променлива памет, където програмните променливи остават по време на обработката), и EEPROM (нелетлив и може да се използва за съхраняване на информация за рестартиране).

Е, в допълнение към EEPROM, включен в Arduino, можете да използвате и външни чипове на този вид паметКато още един компонент. Те не са сложни за разбиране, нито за взаимодействие с тях за генериране на достъп (писане и четене) или актуализации на съхранената информация. Тук ще намерите всичко, което трябва да знаете, за да започнете да работите с тези видове спомени ...

Какво е EEPROM?

STMicroelectronics EEPROM

STMicroelectronics EEPROM

La EEPROM (Електрически изтриваем програмируем червен само памет) Това е тип ROM памет, т.е. енергонезависима памет, в която данните ще се съхраняват постоянно, дори ако захранването е премахнато. Това ги поставя от другата страна на RAM (памет с произволен достъп), които губят всичките си данни, когато не се захранват.

В случай на EEPROM, това не е памет като ROM, в която данните се записват и вече не могат да бъдат променяни. EEPROM, като флаш, признава, че е променен колкото е необходимо. С други думи, някои данни могат да се съхраняват и изтриват, за да съхраняват различни.

Всъщност, както сочат неговите съкращения, това е a електрически изтриваема памет (електрически изтриваем) за препрограмиране. Това се различава от другите видове ROM, които също могат да се изтрият като EPROM, но в този случай електричеството не се използва за изтриване на клетките на паметта, вместо това те имат кварцов "прозорец" на чипа, за да могат да прожектират UV светлина. което беше изтрито.

Тази характеристика на EPROM това ги караше донякъде да се чувстват неудобно, като трябваше да проектират тези лъчи, за да ги изтрият. И най-лошото от всичко е, че те могат да бъдат случайно изтрити, ако бъдат изложени на този тип радиация. В EEPROM е позволено да се прави чрез напрежения, по по-удобен и безопасен начин.

Вътрешна структура

EEPROM диаграма

Източник: Researchgate.net

За да работи EEPROM, са необходими много конкретни клетки с памет. Те са изградени с помощта на транзистори от тип MOS, но имат плаващ порта в сравнение с традиционните MOSFET. Тези нови транзистори следват структура, известна като Самос, а нормалното му състояние е отсечено и изходът винаги ще предоставя логическа 1.

Тези EEPROM клетки могат да бъдат прочетени неограничен брой пъти, но е ограничен в колко пъти те могат да бъдат изтрити и препрограмирани, както се случва с много други. Това също се случва да мига, поради което толкова много се говори за издръжливостта на SSD твърдите дискове, писалките и т.н.

В случая на SAMOS тази граница е между 100.000 1.000.000 и XNUMX XNUMX XNUMX пъти. След това те ще се провалят. Между другото, някои структури, създадени от стар познат, един от великите: д-р Фуджио Масуока от Toshiba (1984), който е създал и други важни спомени и полупроводникови структури ... Първият чип, пуснат на Пазарът беше на Intel от 1988 г., NOR тип EEPROM.

Освен това трябва да знаете, че този тип памет обикновено е свързана с процесори или контролери автобус с протоколи като SPI, I2Cи т.н. В случая на MCU (микроконтролери) той обикновено е интегриран вътре, както при някои DSP, за постигане на по-голяма скорост.

Както може да се види на изображението по-горе, Транзистори SAMOS които образуват клетките на паметта, са групирани в този случай по двойки. Едната от линиите, прикрепени към портите на някои транзистори, действа като линия за избор, за да маркира или сигнализира тази линия за достъп (четене и запис), а другата ще бъде тази, която съхранява информационния бит (0 или 1).

Транзисторите са подравнени, за да образуват необходимите дължини на думи (4-битова, 8-битова, 16-битова, ...) и толкова думи, колкото капацитет искате да имате EEPROM (например: може да има 64-битови дължини на думи и с 16 реда = 1024 бита, т.е. 1kb).

Как работи EERPOM?

Както можете да видите отстрани, за изпълнение различните задачи, напрежението на вашата порта, източника и канализацията трябва да е конкретно:

  • Врата при 20v и източване при 20v = програмиране (запис) на клетката в паметта за съхраняване на желания бит.
  • Врата при 0v и източване при 20v = изчистете съхранения бит, за да може да се препрограмира с друга стойност.
  • Затвор при 5v и източване при 5v = прочетете съхранения бит. Тъй като напрежението на порта е по-ниско от това на записването, запаметената стойност няма да бъде променена. Същото се случва и с източващото напрежение, тъй като е по-ниско, съхраненият бит няма да бъде изтрит.

Заключение, EEPROM използват няколко напрежения "Високо" за изтриване и запис, докато се използват по-ниски напрежения за четене ...

Купете EEPROM и работете с него

STMicroelectronics, френският производител на микроелектроника, е номер едно в този тип EEPROM чипове, въпреки че има много други производители, като Microchip. Тези чипове обикновено са доста евтини.

Ако решите използвайте един от тези чипове, трябва да видите производителя и модела и да потърсите неговите фиш за да видите всички препоръки на производителя, тъй като те могат да се различават при различните. Например, те ще определят напреженията, с които работи, пиноути т.н. Така че можете да конфигурирате проекта си правилно.

В зависимост от размера и модела може да има повече или по-малко борове. Но за да ви дадем представа, типичен 24LC512 EEPROM IC чип може да се състои от:

  • Пиновете 1 (A0), 2 (A1) и 3 (A3), използвани в конфигурацията, са щифтовете за избор.
  • Пин 4 (Vss / GND), свързан към земята.
  • Пин 5 (SDA), за серийни данни за I2C комуникация.
  • Pin 6 (SCL), за часовника за I2C.
  • Pin 7 (WP), защита срещу запис или защита от запис. Ако е свързано с GND, записването ще бъде активирано. Ако се свърже с Vcc, той е деактивиран.
  • Pin 8 (Vcc), свързан към захранването.

Относно Технически спецификации от този чип:

  • 512K (64 × 8)
  • 128-байтов буфер за запис
  • Работно напрежение: 1.8v до 5.5v
  • Ток на четене: 40uA
  • Комуникационна шина: I2C
  • Цикъл на запис: 5ms
  • Съвместимост на часовника: 100-400Khz
  • Трайност: 10.000.000 XNUMX XNUMX цикъла
  • Може да се каскадира до 8 устройства
  • Опаковка: 8-пинов DIP, SOIJ, SOIC и TSSOP.

Donde comprar

за купувайте EEPROM чипове, можете да разгледате тези препоръки:

Използване на Arduino EEPROM

Екранна снимка на Arduino IDE

Ако искате да започнете да работите с EEPROM, можете също да изпробвате този на дъската Arduino. Той може да бъде програмиран по прост начин, за да се разбере на логическо и програмно ниво как може да работи.

Пример за запазване на променлива

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

Пример за четене на данни от 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()
{
}

Пример за актуализиране на стойности, разсрочване

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

Повече информация - Безплатен курс Arduino


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.