Найти тему
1377 подписчиков

А теперь сравним потребление разных ULP ядер в МК ESP32-S2 (пока вы копите лайки под предыдущей статьей для статьи о раннем пробуждении :)).


Возьмем условно одинаковую программу для ULP ядра, которая при нажатии на кнопку, замыкающую GPIO0 на землю не менее 50 мс., увеличивает счетчик нажатий и будит микроконтроллер. Тот весело мигает светодиодом (в коде GPIO светодиода задан константой LED_PIN), пишет количество нажатий кнопки и уходит в глубокий сон. ULP ядро запускается таймером, измерения потребления проводились для значений таймера в 1, 3, 5, 10 и 20 мс.

Код для FSM ULP ядра на данный момент можно откомпиллировать только в девелоперской версии ESP-IDF, код же для RISC-V ULP ядра напротив не работает в девелоперской версии ESP-IDF, зато работает в релизе 4.4.1. Вариантов использовать для сборки Arduino нет, только ESP-IDF, увы.

Итак, перейдем к результатам:

ULP-FSM

1 ms 80 uA

3 ms 60 uA

5 ms 50 uA

10 ms 35 uA

20 ms 30 uA

ULP-RISCV

1 ms -

3 ms 70 uA

5 ms 60 uA

10 ms 40 uA

20 ms 30 uA

При значении таймера в 1 мс. для RISC-V ULP ядра, основной МК просыпался от срабатывания ловушки на ULP ядре, т.е. можно считать этот вариант неработоспособным.

Как видим, старое FSM ULP ядро чуть энергоэффективнее нового RISC-V, хотя писать для него в разы сложнее. С другой стороны, достаточно сложный код для RISC-V иногда выпадает в ловушку, так что FSM может быть надежнее. Но решать только разработчику по результатам собственного тестирования. Т.е. вам.
А теперь сравним потребление разных ULP ядер в МК ESP32-S2 (пока вы копите лайки под предыдущей статьей для статьи о раннем пробуждении :)).
1 минута
452 читали