Eeprom arduino: Работа с EEPROM памятью

EEPROM в arduino – RxTx.su

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

Объем памяти EEPROM разниться от модели к модели arduino. Так же необходимо знать, что минимальный объем записываемой\считываемой информации составляет 1 байт.

Производитель гарантирует, что срок хранения информации хранимой в такой памяти составляет 100 лет, а количество циклов записи\перезаписи составляет 100000. Эти данные относятся к командам записи и перезеписи, что касается чтения, то такая операция не ограничена каким либо количеством.

Если рассматривать МК не только семейства ардуино, то необходимо знать, что многие микроконтроллеры вообще не содержать EEPROM

. Внимательно читайте описание выбранного МК, что бы потом это не было сюрпризом.

Важной характеристикой EEPROM, является время записи и чтения. Так для памяти ардуино время записи составляет примерно 3.3 миллисекунды на 1 байт. Время чтения примерно 0.4 микросекунды. Как мы видим, время записи в разы больше чем чтение. Это необходимо учитывать при организации записи, следить что бы в течении всего времени записи напряжение питания не опускалось ниже 3.3В.

ВНИМАНИЕ! Если сохраняете настройки при выключении прибора, или аварийного выключения, необходимо включить в схему питания конденсатор, емкостью достаточной для записи данных. Время записи рассчитываем согласно времени записи одного байта.

Работа с EEPROM arduino

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

Как говорилось выше минимальный объем записи 1 байт.  Адресация начинается с 0. Например, у нас есть 3 переменные:

Byte P1
Int P2
Byte P3
ADR P1 будет равен 0 (адрес по которому происходит запись.чтение)
ADR P2 будет равен 1 (ADR P1 + 1(size(P1)))
ADR P3 будет равен 3 (ADR P2 + 2(size(P2)))

ВНИМАНИЕ! Для записи\чтения в EEPROM удобно использовать структуры! Так как под одной переменной можно объединить разные объемы данных.   При записи и чтении структуры, распределение информации по адресам будет выполнено автоматически. Необходимо только знать полный размер, что бы сделать смещение для записи новой переменной.

Для удобной работы с памятью EEPROM в arduino, разработана библиотека eeprom. Скачать библиотеку и ознакомиться с примерами ее использования можно по ссылке на нашем сайте.

Загрузки

  • Даташит Arduino NANO
  • Даташит Arduino UNO
  • Даташит Arduino MEGA

Где купить

  • Плата Arduino NANO
  • Плата Arduino UNO
  • Плата Arduino MEGA

Как использовать внутреннюю EEPROM Arduino?

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

В качестве дополнения к этому руководству я покажу вам, как использовать внешнюю EEPROM, такую ​​как AT24C32 или AT24C256, с Arduino в следующем руководстве.

Контур

Введение

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

Возьмем в качестве примера Arduino. Если вы посмотрите на спецификации платы Arduino UNO, упомянутые в этом руководстве по распиновке Arduino UNO, вы обнаружите, что UNO имеет три типа памяти:

  • 32 КБ флэш-памяти
  • 2 КБ ОЗУ
  • 1 КБ EEPROM

За исключением значений размера, Flash и EEPROM являются типами постоянной памяти, а RAM является временной памятью. Что это значит? Постоянная память — это тип памяти, который может хранить данные/информацию даже после отключения питания.

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

В зависимости от мощности память можно разделить на два типа:

  • Энергонезависимая память
  • Энергозависимая память

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

Обе эти памяти сохранят свои данные даже при отключении питания.

Что касается ОЗУ, это энергозависимая память, т. е. данные исчезают после отключения питания.

Что такое ЭСППЗУ?

Давайте теперь сосредоточимся на интересующей памяти. EEPROM или E 2 PROM — сокращение от электрически стираемое программируемое постоянное запоминающее устройство является преемником ПЗУ (только для чтения), PROM (программируемое постоянное запоминающее устройство) и EPROM (стираемое программируемое постоянное запоминающее устройство) предыдущего поколения.

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

Начальные ПЗУ запрограммированы на заводе, и вы не можете изменить содержимое ПЗУ. Они также известны как MROM (Masked Read Only Memory).

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

Для решения проблемы «одноразового программирования» PROM была разработана EPROM. Это расшифровывается как Erasable Programmable Read Only Memory. Память можно стереть, подвергнув ее сильному ультрафиолетовому излучению, и ее можно запрограммировать аналогично PROM.

Проблема с EPROM заключается в том, что постоянное воздействие сильного света (обычно от ртутной лампы) в конечном итоге изнашивает память, ограничивая цикл стирания менее чем 1000.

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

ПРИМЕЧАНИЕ. Современная флэш-память, которая используется в картах памяти, USB-накопителях, твердотельных накопителях, микроконтроллерах и т. д., является типом EEPROM.

Современные микроконтроллеры используют флэш-память для хранения прошивки и EEPROM для хранения небольших данных (таких как параметры, идентификатор устройства, история и т. д.).

EEPROM в Arduino

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

Существует два варианта использования EEPROM с Arduino. Первый и простой способ — использовать внутреннюю EEPROM Arduino. Второй вариант — добавить внешнюю микросхему EEPROM, например, знаменитую серию AT24 от ATMEL. Давайте сосредоточимся на внутренней EEPROM Arduino для этого урока.

Поскольку внутренняя EEPROM является функцией микроконтроллера, а не платы, все платы Arduino, т. е. UNO, Mega и Nano, имеют некоторое количество внутренней EEPROM.

В следующей таблице показан размер внутреннего EEPROM для некоторых распространенных микроконтроллеров ATMEL, используемых в различных платах Arduino.

Микроконтроллер Доски Размер
ATmega328P УНО, Нано, Мини 1024 байта (1 КБ)
ATmega2560 Мега 4096 байт (4 КБ)
ATmega168 Нано 512 байт

Библиотека EEPROM Arduino

Библиотека EEPROM — это специальная библиотека, позволяющая считывать и записывать во внутреннюю EEPROM микроконтроллера на плате Arduino. Он входит в стандартную комплектацию IDE, и вам не нужно ничего загружать дополнительно.

Библиотека Arduino EEPROM предоставляет вам пять очень полезных функций:

  • EEPROM.read() – Чтение байта из EEPROM.
  • EEPROM.write() — Записать байт в EEPROM.
  • EEPROM.update() — Записать байт в EEPROM, только если текущее значение отличается от предыдущего значения.
  • EEPROM.get() — Чтение любого типа данных из EEPROM (с плавающей запятой, структуры или любого типа данных).
  • EEPROM.put() — Запись любого типа данных в EEPROM (с плавающей запятой, структуры или любого другого типа данных).

В Arduino IDE для библиотеки EEPROM есть примеры. Просмотрите их для получения дополнительной информации.

Тестовая схема: запомните состояние реле

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

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

Принципиальная схема

На следующем рисунке показана принципиальная схема для тестирования EEPROM Arduino. Схема

для схемы тестирования EEPROM Arduino

Код

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

Заключение

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

SparkFun Внешняя библиотека EEPROM Arduino

Библиотека для связи I2C с внешними EEPROM

Автор
SparkFun Electronics
Веб-сайт
https://github.com/sparkfun/SparkFun_External_EEPROM_Arduino_Library
Категория
Хранение данных
Лицензия
НЕТ УТВЕРЖДЕНИЯ
Тип библиотеки
Внесен
Архитектуры
Любые

Библиотека для расширенного управления любой EEPROM на основе I2C. Эта библиотека записывает очень быстро и автоматически обрабатывает запись страниц, чтобы вся EEPROM работала как один большой перезаписываемый блок. Автоматически читает и записывает целые числа, числа с плавающей запятой, массивы и структуры. Работает со всеми EEPROM, включая очень большие EEPROM > 512 кбит и любой проводной порт (Wire1 и т. д.). Используйте с

Qwiic EEPROM, чтобы упростить чтение и запись данных калибровки и других пользовательских настроек. Настраиваемый размер буфера I2C увеличивает пропускную способность до 30 КБ/с. Включает пример, который считывает двоичный файл с SD и автоматически записывает/проверяет в EEPROM. Проверено с 24LC1025 и 24LC256.

Имя файла Дата выпуска Размер файла
SparkFun_External_EEPROM_Arduino_Library-1.0.12.zip 2022-11-21 25,05 КиБ
SparkFun_External_EEPROM_Arduino_Library-1. 0.11.zip 20.11.2022 24,96 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.0.10.zip 2022-11-09 24,95 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.0.9.zip 2022-11-04 24,90 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.0.8.zip 2022-09-10 24,80 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.0.7.zip 2022-01-14 24,74 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.0.6.zip 2022-01-07 24,71 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.0.5.zip 2021-02-12 24,54 КиБ
SparkFun_External_EEPROM_Arduino_Library-1.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *