EEPROM - что это такое? Описание, назначение, советы

EEPROM (Electrically Erasable Programmable Read-Only Memory) - тип энергонезависимой памяти, используемой в микроконтроллерах и выделенных микросхемах для хранения данных. Рассмотрим подробно, что из себя представляет эта память, где применяется и как с ней работать.

1. Что такое EEPROM? Определение, особенности

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

Основные особенности EEPROM:

  • Энергонезависимое хранение данных
  • Возможность многократной электрической перезаписи ячеек памяти
  • Ограниченное число циклов записи (100 000 - 1 000 000)
  • Большие времена записи и стирания по сравнению с оперативной памятью

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

2. Где используется EEPROM?

Благодаря своим особенностям, EEPROM нашла широкое применение:

  • В микроконтроллерах для хранения настроек и калибровочных данных
  • В выделенных микросхемах памяти для расширения объема хранимых данных в устройствах
  • Для записи телеметрии, показаний датчиков, параметров ошибок в электронных блоках
  • В автомобильной электронике - для хранения данных и параметров блока управления двигателем, адаптивных настроек подвески, коробки передач и других систем

Например, в автомобилях Volkswagen контроллер коробки передач использует внешнюю флеш-память EEPROM для хранения адаптивных настроек и данных об ошибках.

Бортовой компьютер и другие электронные блоки автомобилей активно используют разные типы энергонезависимой памяти для хранения важных настроек и параметров состояния систем.

Помимо автомобильной промышленности, EEPROM применяется во множестве бытовых и промышленных устройств - для хранения заводских установок, пользовательских настроек, данных датчиков, статистики использования и так далее.

3. Как устроена EEPROM? Архитектура, принцип работы

В основе работы EEPROM лежат специальные транзисторы с плавающим затвором, так называемые ячейки САМОС (Сонмос, СВМОП). Такие полевые транзисторы имеют дополнительный электрод - плавающий затвор, расположенный под затвором транзистора и изолированный тонким диэлектрическим слоем.

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

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

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

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

Операция Напряжение затвор-исток, В Ток затвора, мкА
Чтение 5 1
Запись 12 10
Стирание 12 100

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

EEPROM works

Рассмотрим конкретный пример применения EEPROM в микроконтроллере для хранения пользовательских настроек. В коде программы объявляется структура для хранения данных:

 struct Settings { byte brightness; int volume; char ssid[16]; char pass[16]; } 

Здесь мы хотим сохранить яркость (1 байт), громкость (2 байта), ssid и пароль точки доступа Wi-Fi (по 16 символов). Далее при старте программы делаем:

 Settings settings; EEPROM.get(0, settings); 

Функция EEPROM.get прочитает из памяти данные по указанному адресу в переданную структуру. Теперь в переменной settings хранятся параметры, которые были записаны туда ранее. Их можно использовать в программе, и изменять по необходимости. А обновленные данные записать обратно:

 EEPROM.put(0, settings); 

Так реализуется хранение и восстановление настроек с помощью встроенной EEPROM микроконтроллера.

4. Покупка и подбор EEPROM

Для использования внешней EEPROM в своих проектах необходимо правильно подобрать и купить подходящую микросхему. Основные критерии выбора:

  • Объем памяти в байтах/килобайтах
  • Максимальная частота записи данных
  • Интерфейс подключения (I2C, SPI, USB, параллельный)
  • Напряжение питания
  • Диапазон рабочих температур

По объему EEPROM обычно выпускают от 1 килобайта до 1 мегабайта. Популярные серии микросхем: 24xxx от Microchip, 25xxx от STMicroelectronics, AT24Cxx и AT25xxx от Atmel, NXxMxxx от On Semiconductor.

5. Подключение EEPROM к Arduino

Рассмотрим как подключить внешнюю микросхему eeprom arduino EEPROM к плате Arduino UNO. Возьмем микросхему 24LC256 со следующими характеристиками:

  • Объем: 256 кбайт
  • Интерфейс: I2C
  • Напряжение питания: 2.5-5.5В

Подключение выполняем по следующей схеме:

Линии SDA и SCL подключаем соответственно к пинам A4 и A5, на которых у Arduino реализован интерфейс I2C. Также подаем питание 5В и общий провод. Все готово для работы с внешней EEPROM через программу.

6. Скорость записи данных в EEPROM

Скорость записи данных является важной характеристикой любой энергонезависимой памяти. Для battery EEPROM она составляет порядка 1-5 миллисекунд на байт. Это гораздо медленнее оперативной флеш или SRAM памяти.

Фактическую скорость можно измерить с помощью Arduino. Например, так:

 const int size = 1024; // 1 кбайт byte buffer[size]; void setup() { for (int i = 0; i < size; i++) { buffer[i] = i % 256; } long t = micros(); for (int a = 0; a < size; a += 32) { EEPROM.write(a, &buffer[a], 32); } t = micros() - t; float speed = (float)size / (t / 1000.0) / 1024; Serial.print("Write speed: "); Serial.print(speed); Serial.println(" kb/s"); } 

Здесь мы последовательно записываем 1 килобайт случайных данных блоками по 32 байта и замеряем все время записи. По нему рассчитывается результирующая скорость, которая для Arduino составит около 2 кбайт/с.

7. Battery EEPROM works в автомобиле

В автомобиле установлено множество электронных блоков, использующих EEPROM память для хранения данных. Основные примеры:

  • Блок управления двигателем (ЭБУ)
  • Контроллер АКПП
  • Блок управления подвеской и тормозами
  • Комбинация приборов
  • Магнитола и бортовой компьютер

В блоках используется как встроенная EEPROM микроконтроллеров, так и отдельные микросхемы памяти емкостью до 1 мегабита. Данные, которые туда записываются:

  • Адаптивные настройки систем
  • Диагностические коды неисправностей
  • Статистика и время работы компонентов
  • Заводские установки и калибровки датчиков

Таким образом вся электроника автомобиля активно использует возможности EEPROM памяти для хранения важных данных.

8. Защита данных EEPROM от перезаписи

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

  • Аппаратная защита в виде перемычки или переключателя для блокировки записи
  • Программная блокировка операций записи с проверкой пароля
  • Хранение контрольной суммы данных для проверки их целостности
  • Шифрование данных перед записью в EEPROM

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

9. Восстановление данных EEPROM

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

Чтобы восстановить потерянную информацию, можно попробовать:

  • Перепрошить микроконтроллер с известными данными
  • Записать заводские настройки из документации устройства
  • Перебрать все варианты данных перебором (если известен формат)
  • Заменить неисправную микросхему EEPROM на новую

Чтобы избежать потери данных, рекомендуется использовать резервное копирование EEPROM, контроль целостности информации и обнаружение ошибок записи.

10. Резервное копирование данных EEPROM

Для предотвращения потери данных из-за выхода из строя ячеек памяти необходимо делать резервные копии EEPROM. Существует несколько способов резервного копирования:

  • Копирование данных во флеш-память микроконтроллера
  • Запись во внешнюю микросхему памяти
  • Передача данных на внешний сервер
  • Сохранение на SD карту или другой носитель

Резервное копирование рекомендуется делать один раз в месяц, а также при каждом обновлении прошивки устройства. Это позволит минимизировать потерю данных при выходе из строя EEPROM памяти со временем.

Комментарии