Слишком много энергопотребления в режиме остановки с использованием библиотеки STM32SLEP

Акобо
Пт 12 мая 2017 г. 10:01
Привет всем,
Я попробовал эту простую программу:
#include #include RTClock rt(RTCSEL_LSE); long int alarmDelay = 5; void setup() { // Disable ADC to save power adc_disable_all(); // Set all GPIO pins to Analog input to save power (this disables pretty // much all I/O incl. Serial) setGPIOModeToAllPins(GPIO_INPUT_ANALOG); // first a period in STOP mode, then STANDBY sleepAndWakeUp(STOP, &rt, alarmDelay); // sleeping in stop mode for 5 seconds, then ... sleepAndWakeUp(STANDBY, &rt, alarmDelay); // sleeping in standby mode for 5 seconds, then RESET } void loop() { // We have woken up from sleep! System clock is set to 8MHz HSI. // but never reach here }

Эдогальдо
Пт 12 мая 2017 г., 10:12
Есть ли регулятор напряжения, который может потреблять какой -то ток?
В синей таблетке, может быть, вам также нужно рассмотреть ток, нарисованный USB -схемой (резистор подтягивания), если питание через USB.

Ахулл
Пт 12 мая 2017 г. 11:34
Я впечатлен, что вы можете точно измерить 20UA : o

800UA по моей задней части расчета конверта предполагает нагрузку около 4 км в 3.3В

Может быть, если бы у нас было несколько фотографий вашей установки и того, как вы измеряете, и, возможно, полная схема только STM32 доски, которая может пролить некоторый свет на проблему. Я должен признаться в том, что в моих экспериментах с низкой мощностью, когда я добрался до 1MA, я подумал, что у меня все хорошо.

AG123
Пт 12 мая 2017 г. 11:51
Может быть, положить opamp LM741 с его открытым усилением петли & Поправьте это PIN -код ADC или добавить сложный мост Уэтстоун, но я предполагаю, что точность все равно будет проблемой :ржу не могу:
http: // www.тип.com/lit/ds/symlink/lm741.PDF
https: // en.Википедия.org/wiki/wheatstone_bridge

Другая вещь, которую можно попробовать, - это, возможно, заменить этот регулятор AMS1117 с высоким выбросом на «настоящий» LDO http: // www.STM32duino.com/viewtopic.PHP ... 061#P27657 & Используйте батареи Lipo 5000 мАч, 24x365 ~ 8760 часов, так что я предполагаю, что это может быть в последний раз, скажем, 1/2 года, прежде чем потребовать перезарядка

И в наши дни есть монстр USB -банки, такие как этот банк липо -мощности на 100000 мАч с солнечными элементами, добавленными в :ржу не могу:
http: // www.eBay.com/itm/new-100000mah-d ... 2162353948

Акобо
Пт 12 мая 2017 г. 12:28
Спасибо всем за ваши ответы,
Я забыл упомянуть, что я не использую никакого регулятора напряжения. Доска синей таблетки проведена через 3.3V PIN, так что только выход неактивного регулятора наблюдается с помощью источника питания. Другая плата (пользовательская печатная плата) вообще не имеет регулятора (3 В не-переупорядоченная литиевая батарея), а ток точно такой же.
Схема, которые я использую, такова:
Circuit.png
схема.PNG (30.89 киб) просмотрено 1188 раз

Ахулл
Пт 12 мая 2017 12:31
AG123 написал: ..Другая вещь, которую можно попробовать, - это, возможно, заменить этот регулятор AMS1117 с высоким выбросом на «настоящий» LDO http: // www.STM32duino.com/viewtopic.PHP ... 061#P27657 & Используйте батареи Lipo 5000 мАч, 24x365 ~ 8760 часов, так что я предполагаю, что это может быть в последний раз, скажем, 1/2 года, прежде чем потребовать перезарядка

И в наши дни есть монстр USB -банки, такие как этот банк липо -мощности на 100000 мАч с солнечными элементами, добавленными в :ржу не могу:
http: // www.eBay.com/itm/new-100000mah-d ... 2162353948

AG123
Пт 12 мая 2017 г. 12:32
@acobo
Другое дело было бы о часах, я не слишком уверен, что просто остановка выключит периферийные часы, я предполагаю, что один из способов - остановить все часы APB1 и APB2, а также проверить энергопотребление

Что касается точных измерений, я думаю, что неактивный AMS1117 может буквально принять некоторую власть. Следовательно, для «реального» теста, который вам может понадобиться, не задержан, AMS1117, и положить его позже :ржу не могу:
http: // www.Advanced-Monolithic.com/pdf/ds1117.PDF

@ahull
Согласился, размер липо - это проблема, поэтому вся эта суета ищет «настоящий» LDO, который падает меньше, чем < 0.5 В :ржу не могу:

victor_pv
Пт 12 мая 2017 г. 13:12
AG123 написал:@acobo
Другое дело было бы о часах, я не слишком уверен, что просто остановка выключит периферийные часы, я предполагаю, что один из способов - остановить все часы APB1 и APB2, а также проверить энергопотребление

Что касается точных измерений, я думаю, что неактивный AMS1117 может буквально принять некоторую власть. Следовательно, для «реального» теста, который вам может понадобиться, не задержан, AMS1117, и положить его позже :ржу не могу:
http: // www.Advanced-Monolithic.com/pdf/ds1117.PDF

@ahull
Согласился, размер липо - это проблема, поэтому вся эта суета ищет «настоящий» LDO, который падает меньше, чем < 0.5 В :ржу не могу:

Zoomx
Пт 12 мая 2017 г. 13:20
Он измерил то же энергопотребление, используя пользовательскую плату без какого -либо регулятора.
Это странно, так как я ожидаю некоторого потребления на BluePill из -за регулятора, как в Arduino Pro Mini, где я должен сократить след регулирования, чтобы получить реальную низкую мощность.

Акобо
Пт 12 мая 2017 г. 13:45
victor_pv написал:AG123 написал:@acobo
Другое дело было бы о часах, я не слишком уверен, что просто остановка выключит периферийные часы, я предполагаю, что один из способов - остановить все часы APB1 и APB2, а также проверить энергопотребление

Что касается точных измерений, я думаю, что неактивный AMS1117 может буквально принять некоторую власть. Следовательно, для «реального» теста, который вам может понадобиться, не задержан, AMS1117, и положить его позже :ржу не могу:
http: // www.Advanced-Monolithic.com/pdf/ds1117.PDF

@ahull
Согласился, размер липо - это проблема, поэтому вся эта суета ищет «настоящий» LDO, который падает меньше, чем < 0.5 В :ржу не могу:

AG123
Пт 12 мая 2017 г. 14:17
Я немного прочитал в RM0008, P73 5.3.4 режим остановки
Режим остановки основан на режиме DeepSleep Cortex®-M3 в сочетании с периферией
часы. Регулятор напряжения может быть настроен либо в нормальном, либо в режиме низкой мощности.
В режиме остановки все часы в 1.Домен 8 В остановлен, PLL, HSI и HSE RC
Осцилляторы отключены. Содержание SRAM и регистра сохраняются.
В режиме остановки все булавки ввода/вывода сохраняют то же состояние, что и в режиме запуска.
Похоже, не предполагает, что периферические часы будут остановлены автоматически, следовательно, вы можете попытаться остановить часы

Тогда есть также резервный режим P75 5.3.5 режим ожидания
Режим ожидания позволяет достичь самого низкого энергопотребления. Он основан на
Cortex®-M3 DeepSleep Mode, с отключенным регулятором напряжения. 1.8 V домен
Следовательно, отключен. PLL, генератор HSI и HSE осциллятор также
выключился. SRAM и Регистрационные содержимое потеряно, за исключением регистров в домене резервного копирования
и резервная схема (см. Рисунок 4).
Установки ввода/вывода в режиме ожидания
В режиме ожидания все булавки ввода/вывода имеют высокий импеданс, кроме:
• Сбросить прокладку (все еще доступна)
• Pinper, если настроен для подделки или калибровки
• PIN -код WKUP, если включен
Следовательно, вы также можете попробовать режим резервного режима

О, и используйте * настоящий * lipo ldo, который выпадает меньше, чем < 0.5 В, если вам это нужно (e.глин. Бег на 4.2V), что 1 AMP AMS1117, по -видимому, не для того, чтобы снизить мощность больше, чем его экономическая эффективность, регулирующая от 5V до 3.3V и дает 1 выходные жалобы на недостаточную мощность. Кто знает, что кто -то может использовать синюю таблетку, чтобы управлять своим 3D -принтером горячим концом :ржу не могу:

всего 2 цента, надеюсь, это поможет

victor_pv
Пт 12 мая 2017 г. 15:19
Акобо написал:victor_pv написал:AG123 написал:@acobo
Другое дело было бы о часах, я не слишком уверен, что просто остановка выключит периферийные часы, я предполагаю, что один из способов - остановить все часы APB1 и APB2, а также проверить энергопотребление

Что касается точных измерений, я думаю, что неактивный AMS1117 может буквально принять некоторую власть. Следовательно, для «реального» теста, который вам может понадобиться, не задержан, AMS1117, и положить его позже :ржу не могу:
http: // www.Advanced-Monolithic.com/pdf/ds1117.PDF

@ahull
Согласился, размер липо - это проблема, поэтому вся эта суета ищет «настоящий» LDO, который падает меньше, чем < 0.5 В :ржу не могу:

Акобо
Пт 12 мая 2017 г., 19:02
victor_pv написал:Акобо написал:victor_pv написал: Библиотека имеет функцию для отключения часов, я не видел ее при входе в какой -либо режим. Я думаю, что вы должны позвонить в свой код, если хотите остановить часы на все периферийные устройства.
Возможно, я пропустил звонок этой функции, если да, дайте мне знать.

victor_pv
Пт 12 мая 2017 г., 19:09
Акобо написал:victor_pv написал:Акобо написал:

AG123
Пт 12 мая 2017 г., 19:53
Я думаю, что RM0008 P80 6 резервных регистров обсуждали регистры резервного копирования (16 регистров составляют 84 байта)

Другой способ, хотя в режиме остановки, вы можете попытаться поместить все булавки, которые не используете (E.глин. светодиодный штифт) в режим Tristate или даже все из них в режим Tristate (в зависимости от контекста) pinMode(pin, INPUT_FLOATING);

Ахулл
Пт 12 мая 2017 г. 22:46
Если вы используете название бренд Lipo или Liion Cell. Типичные значения могут быть выведены из информации здесь. http: // BatteryNiversity.com/learn/arti ... _увольнять

Если вы используете дешевые клетки бренда "Chinesium", ваш.

victor_pv
Сб 13 мая 2017 г. 2:25 утра
Только что проверяется с помощью инструмента Cube MX Cube Cube, в режиме остановки должен занять около 46UA с регулятором напряжения в режиме и 38UA с регулятором в режиме LP.

Вы уверены, что нет ничего, что могло бы истощать часть этого тока, а также то, что все, что вы используете для измерения тока, является совершенно точным?

РЕДАКТИРОВАТЬ:
И из любопытства я проверил пару других режимов питания. Спящий режим с HSI при 8 МГц составляет 800UA. Я подозреваю, что библиотека может получить вас в спящем режиме, а не в режиме остановки.

Стилин
Вторник 16 мая 2017 г. 12:30
Некоторое время назад я наткнулся на эту полезную ветку на форуме Chibios: http: // www.Чибиос.com/forum/viewtopic. ... 9&начало = 10. Пользователь Barthess кажется очень опытным в режимах с низким энергопотреблением, и он намекает на то, что режим отладки STM32 предотвращает выключение FCLK или HCLK вообще. Вы должны отключить режим отладки, чтобы иметь возможность сделать это. Объяснения, как это сделать, также есть (в ответ пользователю Сарабен).

AG123
Чт 25 мая 2017 г. 9:32 утра
С другой стороны, я отметил, что Systick прерывает
https: // github.com/rogerclarkmelbourne/ ... /Systick.в
http: // docs.Leaflabs.com/static.Leaflab ... Le-Systick

Запускает каждую миллисекунду, он делает что -то «важное», он обновляет счетчик работы системы systick_uptime_millis;
Вот где Millis () и Micros () предоставляет значения из.

Следовательно, процессор может на самом деле бодрствовать, так как «wfi» (подождите прерывания) и «WFE» (подождите события), будет просыпаться с прерыванием Systick.
Следовательно, чтобы сохранить власть, это может потребоваться
1) Настройка прерывания Systick на более низкий приоритет, чтобы «WFI» или «WFE» не разбудит его
или
2) systick_disable ();

Есть также что -то со стороны USB, что я не слишком знакоми. Я думаю, что USB действительно имеет прерывание «начало кадры», которое запускает каждую миллисекунду. Но я не уверен, что прерывание SOF включено или скажем, отключение USB остановит это

AG123
SAT 03 июня 2017 г., 17:43
Основная проблема с Systick - это *это не бодрствует MCU *
Systick прерывает в основном обновления systick_uptime_millis
https: // github.com/rogerclarkmelbourne/ ... галочка.C#184
Я думаю, что это используется функциями Millis (), Micros (), и вы можете быть застигнуты врасплох, но задержка () использует Millis ()
Так что, если у вас есть коды, которые делаютdelay(100) //delay 100ms