Comments 25
У EFM32 в спячке меньше и более продуманные.
+1
У вас энергопотребление довольно высокое, а вот будете работать с очень долгоживущими — годы на батарейке — устройствами, столкнётесь с ещё одной вещью, которая тривиальна, но про неё при этом говорят хорошо если в одном случае из десяти.
Это GPIO.
Они по умолчанию сконфигурированы как цифровые входы с триггером Шмитта. Если ножка висит в воздухе, у неё на входе шум, триггер Шмитта от этого шума дёргается туда-сюда. И жрёт. Потерять таким образом полсотни микроампер — как нефиг делать, при собственном потреблении МК в STOP + RTC в районе 1,5 мкА.
Иногда советуют перевести все входы в состояние AIN — те же входы, но без триггера Шмитта.
Так вот, это совет правильный, но только наполовину.
Вторая половина заключается в том, что при наличии внешней цифровой периферии с входами, подключённым к GPIO МК, при переводе последних в AIN… оказавшись фактически в воздухе, жрать начинают уже входы периферии. Если это вход, от которого тактируется какой-нибудь SPI — там можно легко влететь уже в сотни микроампер.
Поэтому:
1) GPIO, работающие выходом на цифровую периферию и не имеющие внешней подтяжки, перед уходом в сон ставятся в состояние входа с подтяжкой или выхода, уровень соответствует неактивному состоянию периферии (SPI CS = 1, UART TX = 1 и т.п.)
2) Остальные GPIO отправляются в AIN
По этой же причине в Standby можно влететь в нехилое такое «мусорное» потребление периферии, если не предусмотреть на всех исходящих сигнала МК внешнюю подтяжку.
Это GPIO.
Они по умолчанию сконфигурированы как цифровые входы с триггером Шмитта. Если ножка висит в воздухе, у неё на входе шум, триггер Шмитта от этого шума дёргается туда-сюда. И жрёт. Потерять таким образом полсотни микроампер — как нефиг делать, при собственном потреблении МК в STOP + RTC в районе 1,5 мкА.
Иногда советуют перевести все входы в состояние AIN — те же входы, но без триггера Шмитта.
Так вот, это совет правильный, но только наполовину.
Вторая половина заключается в том, что при наличии внешней цифровой периферии с входами, подключённым к GPIO МК, при переводе последних в AIN… оказавшись фактически в воздухе, жрать начинают уже входы периферии. Если это вход, от которого тактируется какой-нибудь SPI — там можно легко влететь уже в сотни микроампер.
Поэтому:
1) GPIO, работающие выходом на цифровую периферию и не имеющие внешней подтяжки, перед уходом в сон ставятся в состояние входа с подтяжкой или выхода, уровень соответствует неактивному состоянию периферии (SPI CS = 1, UART TX = 1 и т.п.)
2) Остальные GPIO отправляются в AIN
По этой же причине в Standby можно влететь в нехилое такое «мусорное» потребление периферии, если не предусмотреть на всех исходящих сигнала МК внешнюю подтяжку.
+7
Вообще, для действительно низкопотребляющих случаев такие проблемы лучше решать на уровне топологии ПП.
0
Повесить на уровне топологии ПП на все шины внешние подтягивающие резисторы — очень так себе решение в качестве замены нескольких строчек кода.
0
Отличное решение.
1) подтяжка внешняя может быть меньше внутренней и находиться до стабилизатора напряжения
2) несколько строчек кода это 5-15 тактов, которые ядро могло бы и проспать.
1) подтяжка внешняя может быть меньше внутренней и находиться до стабилизатора напряжения
2) несколько строчек кода это 5-15 тактов, которые ядро могло бы и проспать.
0
Если подтяжка будет до стабилизатора, то будет фигня и перетекание тока куда не положено. Уменьшенная подтяжка просто не имеет смысла — когда она нужна она находится в неактивном состоянии — по подтяжке ток не течет и нет разницы сильная она или слабая, вот если что-то будет тянуть подтяжку в другую сторону, тогда надо думать. Кроме того слабая подтяжка уменьшит помехозащищённость(проверьте идею абсурдным увеличением подтягивающего резистора до величины в 1ГОм).
Если 5-15 тактов настолько критичны к энергопотреблению, тогда зачем тактирование в 72Мгц? У вас там рабочий цикл измеряется в сотнях тысяч тактов… 15 тактов — это экономия на блохах.
Если 5-15 тактов настолько критичны к энергопотреблению, тогда зачем тактирование в 72Мгц? У вас там рабочий цикл измеряется в сотнях тысяч тактов… 15 тактов — это экономия на блохах.
0
1) подтяжка внешняя может быть меньше внутренней
Не играет никакой роли. В STM32 внутренняя подтяжка — 50 кОм, если вам этого много, поставьте во сне ножку в выход, будет подтяжка нулевого сопротивления.
2) несколько строчек кода это 5-15 тактов, которые ядро могло бы и проспать.
И ровно эти же нановатты вы и потеряете потом в работе на внешних подтяжках на интерфейсах, которые их не требуют.
Не говоря уже про место на плате и число компонентов.
0
Можно взять измеритель тока (100nA — 50mA) и посмотреть реальное потребление устройства во всех режимах.
0
Я смотрел осциллографом падение напряжения на 1Ом резисторе. Метод вполне себе достоверный. Как упоминалось в статье, основная проблема это карта памяти, которая потребляет весьма неравномерно, иногда это короткие импульсы, а иногда прямо жрачка на несколько десятков миллисекунд.
0
Не могли бы вы привести свои данные по карточкам, которые вы использовали/замеряли потребление тока? По моим сведениям карты памяти от 40 до 150 мА могут кушать при записи. От производителя зависит. Заранее спасибо.
0
можете посмотреть выборочные сравнения avr-start.ru/?p=4735
0
Спасибо за статью.
Если не секрет, то какой Bluetooth вы использовали в этом проекте?
Если не секрет, то какой Bluetooth вы использовали в этом проекте?
0
Кстати, ничего не сказано про измерительные каналы. Если они на операционниках, то там ещё и инвертор напряжения должен стоять и сами ОУ потреблять будут. Если не секрет, что измеряете?
0
У меня почему-то с L4 постоянные проблемы, то Куб забудет закинуть часть исходников для сборки (FatFS например), то до какого-то момента все глобальные переменные всегда были равны 0 даже при явном ненулевом определении (использую связку: Куб, arm-none-eabi-gcc, makefile и VSCode).
0
А почему используется батарейка, а не аккумулятор?
0
10 мА — не low-power
Количество данных настолько огромное что нужна жирная uSD — флешка? Нельзя было обойтись SPI low-power флэшкой?
Где схемотехника? В низкопотребляющих устройствах она не меньше важна чем софт.
— Bluetooth— это тоже не low-power.
— SD карта
— OLED дисплей 128х64
Количество данных настолько огромное что нужна жирная uSD — флешка? Нельзя было обойтись SPI low-power флэшкой?
Где схемотехника? В низкопотребляющих устройствах она не меньше важна чем софт.
+3
В статье все написано, получаемый поток 6.5кБайт в секунду, за сутки 6.5*60*60*24 ~ 500мб.
0
я бы тогда сделал так: простой промежуточный буфер на SPI low-power флэшке на 1-2 мб, тогда SD карту как конечное хранилище пришлось бы включать очень редко. SD на низких скоростях весьма прожорливы (по сравнению с таким хорошим МК и прочей переферией).
0
Я правильно понял, что на входе у вас стоит step up импульcник и постоянно молотит. Он же тоже потребляет. Да не много, но постоянно. Не измеряли сколько оно ест во время сна контроллера?
0
Low power — это потребление в микроамперах и работами годами на круглой плоской батарейке.
+2
Sign up to leave a comment.
Опыт разработки low power устройств на STM32L