Перейти к содержанию

Режим Low-power run (LP run)

Между обычной работой и сном у STM32L0 и STM32L1 есть промежуточный режим: ядро выполняет программу, но стабилизатор работает в экономичном режиме, а частота снижена до ~131 кГц. Это Low-power run, а его спящий вариант — Low-power sleep.

Обновлено Редакция GAW

Low-power run (LP run) — режим микроконтроллеров STM32L0 и STM32L1, в котором ядро выполняет программу, а внутренний стабилизатор переведён в режим малого потребления. По RM0377 (разд. 6.3.4) частота системы при этом не должна превышать f_MSI range1 — 131,072 кГц (генератор MSI в диапазоне 1). Это промежуточная ступень между обычным Run и режимами сна. Режимы с тем же названием есть и у более новых серий — STM32L4, U0, WB, WL, — но предельная частота и условия входа у них свои, и их берут из справочного руководства семейства.

Условия и ограничения

  • Только при напряжении ядра в Range 2; масштабирование напряжения в этом режиме не используют.
  • Из LP run разрешены только Sleep и Stop со стабилизатором в режиме малого потребления.
  • Выводы сохраняют состояние, как в Run.
  • Если частота шины APB1 меньше семи частот RTC, регистры календаря читают дважды и сравнивают.

Вход и выход (RM0377)

  1. Включить такты только нужных блоков в RCC_APBxENR и RCC_AHBENR.
  2. Снизить системную частоту до MSI range 1.
  3. Установить биты LPRUN и LPSDSR в PWR_CR — стабилизатор переходит в режим малого потребления.

Выход: вернуть основной стабилизатор, при необходимости включить флеш-память и только после этого поднимать частоту.

Low-power sleep

Спящий вариант того же режима. Ядро останавливается по WFI или WFE, стабилизатор в режиме малого потребления (LPSDSR), частота не выше MSI range 1, а флеш-память можно выключить битом SLEEP_PD — это снижает ток, но удлиняет пробуждение (разд. 6.3.8). ОЗУ остаётся доступным.

Такой режим подходит устройствам, которым нужно медленно, но постоянно что-то делать — опрашивать вход, вести счёт, — не уходя в Stop. Обзор режимов питания — на страницах STM32L0 и STM32L1.

Частые вопросы

Какая максимальная частота в режиме Low-power run?

Не выше частоты MSI в диапазоне range 1 — 131,072 кГц у STM32L0 и STM32L1. Так сказано в RM0377 и RM0038: при входе в режим частоту системы снижают до этого значения, и только потом стабилизатор переводят в режим малого потребления.

Как войти в Low-power run на STM32L0?

По RM0377: оставить включёнными только нужные периферийные такты, снизить системную частоту до MSI range 1, убедиться, что VCORE в Range 2, и установить биты LPRUN и LPSDSR в PWR_CR. Выход — в обратном порядке: вернуть основной стабилизатор, при необходимости включить флеш-память и только потом поднимать частоту.

Чем Low-power sleep отличается от обычного Sleep?

В обычном Sleep ядро стоит, а стабилизатор работает в основном режиме, и частота может быть любой. В Low-power sleep стабилизатор переведён в режим малого потребления, частота не выше MSI range 1, а флеш-память можно выключить битом SLEEP_PD. Вход — так же, по WFI или WFE.

Источники

  1. STMicroelectronics. RM0377: Ultra-low-power STM32L0x1 advanced Arm-based 32-bit MCUs. Reference manual, Rev 10 — разд. 6.3.4: чтобы ещё снизить потребление в Run, стабилизатор можно перевести в режим малого потребления; частота системы не должна превышать f_MSI range1; вход только при VCORE в Range 2, динамическое масштабирование напряжения в этом режиме не используют; из него разрешены только Stop и Sleep со стабилизатором в режиме малого потребления; все выводы сохраняют состояние; вход: включить или выключить такты блоков в RCC_APBxENR и RCC_AHBENR, снизить частоту до f_MSI range1, установить LPRUN и LPSDSR; выход: вернуть основной стабилизатор, включить флеш-память при необходимости, поднять частоту; при APB1 ниже 7 тактов RTC регистры календаря читают дважды; разд. 6.3.8: Low-power sleep — флеш-память можно выключить битом SLEEP_PD, стабилизатор в режиме малого потребления (LPSDSR), вход по WFI или WFE, частота не выше f_MSI range1, только в Range 2; разд. 7.2.3 — MSI range 1 — 131,072 кГц
  2. STMicroelectronics. RM0038: STM32L100xx, STM32L151xx, STM32L152xx and STM32L162xx advanced Arm-based 32-bit MCUs. Reference manual, Rev 18 — разд. 5.3.4 — Low-power run mode (LP run) у STM32L1, частота не выше f_MSI range1; разд. 6.3.2 — MSIRANGE 001: range 1 около 131,072 кГц
  3. STMicroelectronics. CMSIS device header stm32l073xx.h, cmsis-device-l0 v1.9.4 (GitHub, Apache-2.0) — биты PWR_CR_LPRUN и PWR_CR_LPSDSR регистра PWR_CR

Нашли ошибку?