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
Здесь мы хотим сохранить яркость (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 памяти со временем.
https://fb.ru/article/532363/2023-eeprom—chto-eto-takoe-opisanie-naznachenie-sovetyi