Техническая поддержка: URBANNOVA@YANDEX.RU
Назад к списку

Флэш–память ESP32 - Хранение постоянных данных (запись и чтение)

В этой статье мы покажем вам, как сохранять и считывать значения из флэш-памяти ESP32 с помощью Arduino IDE. Данные, сохраненные во флэш-памяти, остаются неизменными даже при сбросе ESP 32 или отключении питания. В качестве примера мы покажем вам, как сохранить последнее состояние GPIO.

Посмотрите видеоурок


Флэш-память

Данные, сохраненные во флэш-памяти, остаются там даже при сбросе ESP32 или отключении питания. Флэш-память очень похожа на EEPROM. Оба являются энергонезависимыми воспоминаниями.

Сохранение данных во флэш-памяти особенно полезно для:

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

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

Библиотека EEPROM

Для чтения и записи из флэш-памяти ESP32 с помощью Arduino IDE мы будем использовать библиотеку EEPROM. Использование этой библиотеки с ESP32 очень похоже на ее использование с Arduino. Итак, если вы раньше использовали Arduino EEPROM, это не сильно отличается.

С помощью ESP32 и библиотеки EEPROM вы можете использовать до 512 байт флэш-памяти. Это означает, что у вас есть 512 разных адресов, и вы можете сохранить значение от 0 до 255 в каждой адресной позиции.

Писать

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

EEPROM.write(address, value);

Например, чтобы записать 9 по адресу 0, вам потребуется:

EEPROM.write(0, 9);

С последующим

EEPROM.commit();

Для сохранения изменений.

Прочитай

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

EEPROM.read(address);

Например, чтобы прочитать байт, сохраненный ранее в адресе 0, используйте:

EEPROM.read(0);

Это вернет 9, которое является значением, которое мы сохранили в адресе 0.