ULP-сопроцессор
Чтобы опрашивать датчик раз в секунду, не обязательно будить основной процессор. У ESP32 для этого есть маленький сопроцессор ULP, который работает в режиме глубокого сна и будит главный процессор только тогда, когда это действительно нужно.
Обновлено Редакция GAW
ULP-сопроцессор (ultra-low-power coprocessor) — маленький маломощный процессор внутри ESP32, который работает, пока основной процессор спит. Он питается от домена RTC, хранит программу в памяти RTC и может читать выводы RTC GPIO, периферию RTC и встроенные датчики, а при нужном событии — разбудить основной процессор.
Зачем. Устройство на батарейке большую часть времени должно спать. Если основной процессор просыпается ради каждого измерения, тратится много энергии на запуск. ULP делает простую работу сам — опрашивает датчик, сравнивает с порогом — и будит процессор, только когда есть что обрабатывать.
Потребление ESP32 по таблице режимов питания даташита:
| Режим | Ток |
|---|---|
| Глубокий сон, ULP работает | 150 мкА |
| Опрос датчика ULP с заполнением 1 % | 100 мкА |
| Глубокий сон: только таймер и память RTC | 10 мкА |
| Гибернация: только таймер RTC | 5 мкА |
В режиме гибернации ULP отключён.
ESP32-S3. По даташиту у ESP32-S3 два сопроцессора:
- ULP-RISC-V — процессор с набором команд RV32IMC, 32 регистрами, умножением, делением и прерываниями;
- ULP-FSM — автомат с простыми командами арифметики, переходов и измерения датчиков.
Оба запускаются основным процессором, своим таймером или сигналом RTC GPIO, но работать одновременно не могут. Программа лежит в памяти RTC SLOW, которая сохраняется в глубоком сне.
Режимы сна ESP32 и способы пробуждения разобраны в статье «Глубокий сон ESP32», общие понятия — в термине «Режимы сна».
Частые вопросы
Зачем нужен ULP-сопроцессор у ESP32?
Чтобы выполнять простую работу, пока основной процессор спит. По даташиту Espressif в глубоком сне ULP продолжает работать: читает выводы RTC и датчики и будит основной процессор, когда нужно. Так устройство на батарейке опрашивает датчик и не тратит энергию на пробуждение ради каждого измерения.
Сколько потребляет ESP32 с работающим ULP?
По таблице режимов питания даташита ESP32 глубокий сон с включённым ULP — 150 мкА, режим периодического опроса датчика с заполнением 1 % — 100 мкА. Для сравнения: глубокий сон только с таймером и памятью RTC — 10 мкА.
Чем ULP-RISC-V отличается от ULP-FSM?
У ESP32-S3 по даташиту два сопроцессора. ULP-RISC-V — маленький процессор с набором команд RV32IMC, 32 регистрами, умножением и делением. ULP-FSM — автомат с простыми командами арифметики, переходов и измерения датчиков. Работать одновременно они не могут.
Источники
- Espressif. ESP32 Series Datasheet v5.3 — разд. 4.3.1 — в глубоком сне работают только память и периферия RTC, сопроцессор ULP действует; в режиме гибернации ULP отключён; табл. 4-2 — глубокий сон с работающим ULP 150 мкА, опрос датчика ULP с заполнением 1 % — 100 мкА, только таймер и память RTC — 10 мкА; 8 КБ SRAM RTC SLOW Memory доступны ULP
- Espressif. ESP32-S3 Series Datasheet v2.2 — разд. 4.1.1.3 — два сопроцессора: ULP-RISC-V (набор команд RV32IMC, 32 регистра, умножение и деление, прерывания) и ULP-FSM; оба работают от быстрого RC-генератора, запускаются процессором, своим таймером или RTC GPIO; одновременно работать не могут; программа хранится в RTC SLOW Memory и в глубоком сне обращается к RTC GPIO, периферии RTC и датчикам
Нашли ошибку?
Смотрите также
- Глубокий сон ESP32Режимы сна, токи, пробуждение по таймеру и выводам, RTC-память, расчёт батареи
- Режимы снаSleep mode: Idle, Power-down, пробуждение и ток
- ESP32ESP32, S2, S3, C2, C3, C5, C6, H2, P4: ядра, радио, USB, GPIO — сравнение и выбор
- ESP32-S3-DevKitC-144 контакта, АЦП, сенсоры, обвязка загрузки, два USB, RGB-светодиод, PSRAM