цифровая электроника
вычислительная техника
встраиваемые системы

 

Режимы сна ESP32 и их энергопотребление

Автор: Mike(admin) от 22-05-2020, 23:55

Режимы работы ESP32 и сокращение энергопотребления


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


Режимы сна ESP32 и их энергопотребление

Когда ваш проект Интернета вещей (IoT) питается от розетки в стене, вы, как правило, не слишком заботитесь о потреблении энергии. Но если вы собираетесь питать свой проект от батареек, то каждый миллиампер будет на счету.


Решением в данном случае является сокращение энергопотребления ESP32 за счет использования одного из его режимов сна. Это действительно отличная стратегия для значительного увеличения срока службы батареи проекта, который не должен быть активным постоянно.


Спящий режим ESP32 – это энергосберегающее состояние, в которое ESP32 может войти, когда он не используется. Состояние ESP32 поддерживается в оперативной памяти. Когда ESP32 входит в спящий режим, питание отключается от любых ненужных цифровых периферийных устройств, в то время как ОЗУ получает достаточно энергии для сохранения своих данных.


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


Функциональная блок-схема микросхемы ESP32

В основе чипа ESP32 лежит двухъядерный 32-разрядный микропроцессор, а также 448 КБ ПЗУ, 520 КБ SRAM и 4 МБ флэш-памяти. Он также содержит модуль WiFi, модуль Bluetooth, криптографический ускоритель (сопроцессор, специально разработанный для выполнения криптографических операций), модуль часов реального времени (RTC) и множество периферийных устройств.


Режимы питания ESP32


Благодаря расширенному управлению питанием ESP32 имеет 5 настраиваемых режимов питания. Согласно требованию к мощности, чип может переключаться между различными режимами питания. Эти режимы следующие:


  • Активный режим
  • Спящий режим модема
  • Режим легкого сна
  • Режим глубокого сна
  • Режим гибернации

Каждый режим имеет свои отличительные особенности и возможности энергосбережения. Давайте рассмотрим каждый из них.


Активный режим ESP32


Нормальный режим также известен как активный режим. В этом режиме все функции чипа активны. Поскольку активный режим постоянно поддерживает все модули (особенно модуль WiFi, процессорные ядра и модуль Bluetooth), для работы микросхемы требуется ток более 240 мА. Также было замечено, что если вы используете функции Wi-Fi и Bluetooth вместе, иногда появляются пики высокой мощности (самая большая составляла 790 мА).


Активный режим ESP32

Если вы посмотрите в документацию на ESP32, энергопотребление в активном режиме при работе на ВЧ выглядит следующим образом:


Активный режим ESP32

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


Спящий режим модема ESP32


В режиме сна модема все активно, кроме WiFi и Bluetooth. Процессор также работает. В этом режиме чип потребляет около 3 мА на медленной скорости и 20 мА на высокой скорости.


Спящий режим модема ESP32

Чтобы поддерживать соединения WiFi/Bluetooth, процессор, Wi-Fi, Bluetooth и радиоприемник просыпаются через определенные интервалы. Во время этого режима ожидания режим питания переключается между активным режимом и режимом сна модема. ESP32 может войти в режим сна модема, только когда он подключается к маршрутизатору в режиме станции. ESP32 остается подключенным к маршрутизатору через механизм маяка DTIM. Чтобы сэкономить энергию, ESP32 отключает модуль Wi-Fi между двумя интервалами маяка DTIM и автоматически просыпается до следующего получения сигнала маяка. Время ожидания определяется интервалом маяка DTIM маршрутизатора, которое обычно составляет от 100 мс до 1000 мс.


Режим легкого сна ESP32


Рабочий режим легкого сна аналогичен режиму модемного сна. Микросхема также следует подобной схеме ожидания. Разница в том, что в режиме легкого сна цифровые периферийные устройства, большая часть ОЗУ и ЦП работают согласно сокращенному тактированию. В легком спящем режиме процессор приостанавливается путем отключения его тактовых импульсов, в то время как RTC и ULP-сопроцессор остаются активными. Это приводит к меньшему энергопотреблению, чем в режиме ожидания модема, и составляет около 0,8 мА.


Режим легкого сна

Перед переходом в легкий режим ожидания ESP32 сохраняет свое внутреннее состояние и возобновляет работу после выхода из режима ожидания. Функция esp_light_sleep_start() может использоваться для входа в режим сна после настройки источников пробуждения.


Режим глубокого сна ESP32


В режиме глубокого сна центральный процессор, большая часть оперативной памяти и все цифровые периферийные устройства отключены. Единственные части чипа, которые остаются включенными: контроллер RTC, периферийные устройства RTC (включая сопроцессор ULP) и память RTC (медленная и быстрая). Чип потребляет от 0,15 мА (если включен ULP-сопроцессор) до 10 мкА.


Режим глубокого сна

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


Однако память RTC остается включенной. Таким образом, ее содержимое сохраняется во время глубокого сна и может быть восстановлено после того, как мы пробудем чип. По этой причине микросхема сохраняет данные о соединениях Wi-Fi и Bluetooth в памяти RTC перед их отключением. Итак, если вы хотите использовать данные при перезагрузке, сохраните их в памяти RTC, определив глобальную переменную с атрибутом RTC_DATA_ATTR. Например, RTC_DATA_ATTR int bootCount = 0. В режиме глубокого сна питание отключается для всего чипа, кроме модуля RTC. Таким образом, все данные, которых нет в памяти восстановления RTC, будут потеряны, и, таким образом, микросхема будет перезапущена с перезагрузкой. Это означает, что выполнение программы начинается с начала еще раз.


В отличие от других спящих режимов, система не может автоматически переходить в режим глубокого сна. Функция esp_deep_sleep_start() может быть использована для немедленного входа в режим глубокого сна после настройки источников пробуждения. По умолчанию ESP32 автоматически отключает периферийные устройства, не требующиеся источником пробуждения. Но вы можете при желании решить, какие периферийные устройства отключить/оставить.


Режим гибернации ESP32


В отличие от режима глубокого сна, в режиме гибернации чип отключает внутренний генератор 8 МГц и ULP-сопроцессор. Память восстановления RTC также отключена, что означает, что мы не сможем сохранить какие-либо данные в режиме гибернации. Все остальное будет отключено, за исключением только одного таймера RTC с медленным тактированием, и некоторые RTC GPIO будут активны. Они отвечают за выход чипа из режима гибернации.


Режим гибернации ESP32

В режиме гибернации чип потребляет около 2,5 мкА.




© digitrode.ru


Теги: ESP32




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий