EEPROM: все, что вам нужно знать об этой памяти

EEPROM

Если вы производитель и выполняете несколько проектов DIY, в которых вам нужно работать с памятью, наверняка вы уже знаете, как работают разные воспоминания, которые объединяет Arduino, например, флэш-память (энергонезависимая, где хранятся эскиз и загрузчик), SRAM (быстрая и энергозависимая память, в которой программные переменные остаются во время обработки), и EEPROM (энергонезависимый и может использоваться для хранения информации о перезагрузке).

Ну, в дополнение к EEPROM, включенному в Arduino, вы также можете использовать внешние чипы такая памятьКак еще один компонент. Их нетрудно понять, как и взаимодействовать с ними для создания доступа (запись и чтение) или обновления сохраненной информации. Здесь вы найдете все, что вам нужно знать, чтобы начать работать с этими типами воспоминаний ...

Что такое EEPROM?

ЭСППЗУ STMicroelectronics

ЭСППЗУ STMicroelectronics

La EEPROM (электрически стираемая программируемая память только для красного цвета) Это тип ПЗУ, то есть энергонезависимая память, в которой данные будут храниться постоянно, даже если отключен источник питания. Это ставит их по другую сторону ОЗУ (оперативное запоминающее устройство), которые теряют все свои данные, когда на них не подается питание.

В случае EEPROM это не память, такая как ROM, в которой данные записываются и больше не могут быть изменены. EEPROM, как вспышка, признает, что был изменен по мере необходимости. Другими словами, некоторые данные можно сохранить и стереть, чтобы сохранить другие.

Фактически, как показывают его аббревиатуры, это электрически стираемая память (электрически стираемые) для перепрограммирования. Это отличается от других типов ПЗУ, которые также можно стирать, как и СППЗУ, но в этом случае электричество не используется для стирания ячеек памяти, вместо этого у них было кварцевое «окно» на микросхеме, чтобы можно было излучать ультрафиолетовый свет. которое было стерто.

Эта характеристика EPROM им было неудобно проецировать эти лучи, чтобы стереть их. И, что хуже всего, их можно было случайно стереть, если подвергнуть их воздействию этого вида излучения. В EEPROM это разрешено более удобным и безопасным способом с помощью напряжения.

Внутренняя структура

Схема EEPROM

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

Для работы EEPROM необходимы особые ячейки памяти. Они построены с использованием транзисторов типа MOS, но имеют плавающий затвор по сравнению с традиционными полевыми МОП-транзисторами. Эти новые транзисторы имеют структуру, известную как САМОС, и его нормальное состояние отключено, и на выходе всегда будет логическая 1.

Эти ячейки EEPROM можно читать неограниченное количество раз, но это ограничено сколько раз их можно стереть и перепрограммировать, как и многие другие. То же самое происходит и с флеш-памятью, поэтому так много говорят о долговечности жестких дисков SSD, флеш-накопителей и т. Д.

В случае SAMOS этот предел находится между 100.000 и 1.000.000 раз. После этого они потерпят неудачу. Кстати, некоторые структуры были созданы старым знакомым, одним из великих: доктором Фудзио Масуока из Toshiba (1984), который также создал другие важные воспоминания и полупроводниковые структуры ... Однако первый чип был запущен на рынок был Intel с 1988, EEPROM типа NOR.

Кроме того, вы должны знать, что этот тип памяти обычно связан с процессорами или контроллерами через автобус с такими протоколами, как SPI, I2C, так далее. В случае микроконтроллеров (микроконтроллеров) он обычно встроен внутрь, как и в некоторых DSP, для достижения большей скорости.

Как видно на изображении выше, Самос транзисторы образующие ячейки памяти, в этом случае сгруппированы попарно. Одна из линий, подключенных к затворам некоторых транзисторов, действует как линия выбора, чтобы пометить или сигнализировать эту линию для доступа (чтение и запись), а другая будет той, которая хранит информационный бит (0 или 1).

Транзисторы выровнены, чтобы сформировать требуемую длину слова (4-бит, 8-бит, 16-бит, ...) и столько слов, сколько capacidad вы хотите иметь EEPROM (например: может быть длина слова 64 бита и 16 строк = 1024 бита, то есть 1 Кбайт).

Как работает EERPOM?

Как видите сбоку, чтобы выполнить разные задачи, напряжение вашего затвора, истока и стока должно быть конкретным:

  • Дверь на 20В и слив на 20В = программирование (запись) ячейки памяти для хранения желаемого бита.
  • Дверь на 0В и слив на 20В = очистить сохраненный бит, чтобы его можно было перепрограммировать с другим значением.
  • Ворота на 5 В и слив на 5 В = прочитать сохраненный бит. Поскольку напряжение затвора ниже, чем напряжение записи, сохраненное значение не будет изменено. То же самое происходит и с напряжением стока, при меньшем значении сохраненный бит не стирается.

Заключение, EEPROM используют несколько напряжения «Высокий» для стирания и записи, при использовании более низких напряжений для чтения ...

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

STMicroelectronics, французский производитель микроэлектроники, является номером один в этом типе микросхем EEPROM, хотя есть много других производителей, таких как Microchip. Эти микросхемы обычно довольно дешевы.

Если вы решите используйте одну из этих фишек, вы должны увидеть производителя и модель и найти ее данные чтобы увидеть все рекомендации производителя, так как они могут отличаться от одного к другому. Например, укажут напряжения, с которыми он работает, распиновка, так далее. Так вы сможете правильно настроить свой проект.

В зависимости от размера и модели у него может быть больше или меньше сосны. Но чтобы дать вам представление, типичная микросхема EEPROM 24LC512 может состоять из:

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

Что же касается Технические характеристики этого чипа:

  • 512K (64 × 8)
  • 128-байтовый буфер для записи
  • Рабочее напряжение: от 1.8 до 5.5 В
  • Ток чтения: 40 мкА
  • Коммуникационная шина: I2C
  • Цикл записи: 5 мс
  • Совместимость с часами: 100-400 кГц
  • Долговечность: 10.000.000 XNUMX XNUMX циклов
  • Возможность каскадного подключения до 8 устройств
  • Упаковка: 8-контактный DIP, SOIJ, SOIC и TSSOP.

Dónde 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.