PS: Ошибки в SDK я описывать больше не буду - пусть Espressif сам думает. С установками WiFi там серьезные ошибки в SDK 0.9.6 b1.
Насколько я знаю, у них там около 70 программистов в Шанхае занимается ПО. Если бы им подкинуть идеи, как улучшить, что сделать для улучшения ПО, в каком направлении копать, они бы прислушались.
Конечно, у нас маловато открытой информации, чтобы давать дельные рекомендации..
А принимать модуль не должен? Измерения показывают, что чем тише обстановка в эфире WiFi, тем меньше потребление. Это говорит о том, что модуль обрабатывает все принимаемые сообщения по своему каналу и анализирует - ему или нет.
Думаю, модуль в режиме light sleep в ждущем режиме работает импульсно, синхронно с широковещательными посылками, которые следуют с DTIM интервалом (кратно 100 мс).
Модуль просыпается, принимает широковещательную посылку, узнает есть ли для него пакеты, если есть - принимает их, делает, что требуется, нет пакетов - засыпает до момента следующей шикоровещательной посылки, выключая тактовую процессор и приемник (динамическая память, похоже, не портится..).
Похожая техника применяется и в GSM модулях. Когда модуль может потреблять в среднем 1.5 мА и в то же время иметь возможность получения пакетов по GPRS.
Плюс сама SDK - в ней есть LwIP и прочие либы - для них запущены таймеры и идет постоянный выход CPU из режима idle на обработку всякого...
Пробовал модифицировать простейший пример - Hello World (на 0.9.5) - в нем только один таймер. Увеличил период таймера до 10 секунд. Включил явным образом режим STATION и light sleep.
Соединился с офисной wifi AP.
Все равно не увидел потребления менее 2 мА. (Правда чудо-осциллографа для измерения тока нету
.
2 mA - это возможно на ноге питания передатчика WiFi, но не всего чипа...
Первый же график из
http://bbs.espressif.com/viewtopic.php?f=7&t=171 показывает 1.5 мА (при DTIM3 - 300 мс интервале синхронизации). Вряд ли график нарисован от руки
C функцией Wrap приложения, которые используют кэш, заполняют кэш фиксированной длиной (8/16/32/64-байт) данных из Flash без выдачи многократных команд чтения...
Как работает механизм кэша мне непонятен - раньше с таким не сталкивался. Если есть сслылка, где можно почитать - с удовольствием познакомлюсь.
Как я понимаю, половина статической памяти используется без кеша, другая - с кешом.. так ли это?
----------------------
https://github.com/EspressifSystems/low_power_voltage_measurement - недавно появился у них пример, использующий sleep режимы, и вики есть
https://github.com/EspressifSystems/low_power_voltage_measurement/wiki . Правда, все крутится вокруг deep sleep , с которым и так все более-менее понятно.