Size: a a a

🎄Embedded Group

2021 January 05

A

Alexander in 🎄Embedded Group
Electronics Designer
В режиме STOP принудительно останавливается ВСЕ тактирование, кроме LSE.
А где Вы увидели STOP?
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
вот собственно - вопрос - когда нужно сделать переход в режим низкого потребления ?
источник

A

Alexander in 🎄Embedded Group
Василий Ярошенко
хм....как повезет наверное
в основном цикле -
HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);
...EnterSLEEPMode...

Sleep — приостановка работы ядра, но с сохранением всех тактовых частот. Периферия процессора может продолжать работать, если ядро ей не нужно, но может быть и автоматически отключена.
источник

A

Alexander in 🎄Embedded Group
Василий Ярошенко
вот собственно - вопрос - когда нужно сделать переход в режим низкого потребления ?
Если используешь Cube - в Pack для L0 для Nucleo/Discovery есть примеры работы с режимами малого энергопотребления.
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
примеры смотрел, но они с полной остановкой, а у меня системный таймер должен работать
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
хотя возможно как то по другому
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
я выше писал - есть входы - для счета импульсов + системный таймер + антидребезг
источник
2021 January 06

ВЯ

Василий Ярошенко... in 🎄Embedded Group
если все выключить - таймер остановится
источник

A

Alexander in 🎄Embedded Group
Василий Ярошенко
если все выключить - таймер остановится
В SLEEP периферия работать будет.
источник

ED

Electronics Designer in 🎄Embedded Group
Вообще, в чем смысл режимов пониженного энергопотребления в STM32 и как происходит переход туда.

Переход в любой режим состоит из трех идейных составляющих:

- отключить ядро: это достигается инструкцией WFI или WFE. Если эти инструкции вызываются тогда, когда бит SLEEPDEEP не стоит, получается sleep. Если SLEEPDEEP в SCR стоит, получается deep sleep. Это все, что может дать нам ядро.

- надо отключить тактирование периферии. Это нам дает бит PDDS. Если он в нуле, то получается STOP (можно выйти по прерываниям, работает LSE, выполнение программы продолжается с инструкции, следующей за WFI/WFE), если в единице - standby (только пины wakeup, выход представляет собой сброс МК).

- по вкусу, перевести регулятор напряжения ядра в режим пониженного потребления. Это делается битом LPDS в PWR->CR.
источник

ED

Electronics Designer in 🎄Embedded Group
Alexander
А где Вы увидели STOP?
А мы не туда хотим? :) Тогда извиняюсь.
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
хотим - но не можем ))
источник

ED

Electronics Designer in 🎄Embedded Group
А чо не можем? :)
источник

A

Alexander in 🎄Embedded Group
Electronics Designer
А мы не туда хотим? :) Тогда извиняюсь.
Из HAL stop вызывается

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

Но как вы правильно заметили - нужно будет доп. таймер на пробуждение настраивать.
источник

ED

Electronics Designer in 🎄Embedded Group
Для этого есть AWU в составе RTC.
источник

ED

Electronics Designer in 🎄Embedded Group
Работает от LSE.
источник

ED

Electronics Designer in 🎄Embedded Group
Кстати очень удобно.
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
Electronics Designer
Вообще, в чем смысл режимов пониженного энергопотребления в STM32 и как происходит переход туда.

Переход в любой режим состоит из трех идейных составляющих:

- отключить ядро: это достигается инструкцией WFI или WFE. Если эти инструкции вызываются тогда, когда бит SLEEPDEEP не стоит, получается sleep. Если SLEEPDEEP в SCR стоит, получается deep sleep. Это все, что может дать нам ядро.

- надо отключить тактирование периферии. Это нам дает бит PDDS. Если он в нуле, то получается STOP (можно выйти по прерываниям, работает LSE, выполнение программы продолжается с инструкции, следующей за WFI/WFE), если в единице - standby (только пины wakeup, выход представляет собой сброс МК).

- по вкусу, перевести регулятор напряжения ядра в режим пониженного потребления. Это делается битом LPDS в PWR->CR.
спасибо, это еще раз - почитаю - доосмыслю
источник

ED

Electronics Designer in 🎄Embedded Group
На здоровье. :)
источник

A

Alexander in 🎄Embedded Group
Именно.
Но для задач, где нужно оперативно просыпаться по внешним сигналам я бы остался в SLEEP - при отключенном тактировании ненужной периферии будет достаточно мало потреблять.
источник