Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2739
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Управление питанием

504

разрешение прерывания в регистре управления периферийным устройством, но не в NVIC, и установка бита SEVONPEND в регистре управления системой – Когда микроконтроллер возобновляет работу из WFE, бит отложенного состояния (pending bit) периферийного прерывания и бит отложенного состояния периферийного канала IRQ контроллера NVIC (в регистре NVIC сброса прерываний) должны быть сброшены;

или конфигурирование внешней или внутренней линии EXTI в режиме событий (event mode) – Когда ЦПУ возобновляет работу из WFE, нет необходимости сбрасывать бит отложенного состояния периферийного прерывания или бит отложенного состояния канала IRQ контроллера NVIC, так как бит отложенного состояния, соответствующий линии события не установлен.

После выхода из спящего режима с пониженным энергопотреблением микроконтроллер автоматически переводится в рабочий режим с пониженным энергопотреблением.

19.4.2.2.1. Режим пакетного сбора данных

Режим пакетного сбора данных (Batch Acquisition Mode, BAM) – это неявный и оптимизи-

рованный режим для передачи данных. Только одно необходимое периферийное устройство передачи данных (например, I²C), один DMA и SRAM конфигурируются с включенным тактированием в спящем режиме. В спящем режиме Flash-память переводится в режим выключенного питания, и ее тактирование запрещается. Микроконтрол-

лер может перейти в спящий режим или в спящий режим с пониженным энергопотребле-

нием. Обратите внимание, что тактовый сигнал I²C может быть установлен на 16 МГц даже в спящем режиме с пониженным энергопотреблением, что позволяет поддерживать

1 МГц режим fast-mode plus. Тактирование USART и LPUART также может быть от HSI-генератора. Типовая область применения BAM – это концентраторы датчиков.

19.4.2.3. Режимы останова

Микроконтроллеры STM32L могут предоставлять до 2 различных режимов останова, названных stop1 и stop2. Режимы останова основаны на режиме глубокого сна Cortex-M в сочетании с запретом тактирования периферии. Регулятор напряжения может быть сконфигурирован как в нормальном20, так и в режиме пониженного энергопотребления. В режиме останова stop1 все тактирование домена VCORE останавливается; блоки PLL, MSI-, HSI16- и HSE-генераторы отключены. Некоторые периферийные устройства с возможностью пробуждения (I²C, USART и LPUART) могут включать HSI16-генератор для получения кадра данных и после получения кадра отключать его, если кадр не является пробуждающим. В этом случае тактовый сигнал HSI16-генератора распространяется только на периферийное устройство, запрашивающее его. SRAM1, SRAM2 и содержимое регистров сохраняются. В режиме останова stop1 могут работать несколько периферийных устройств: PVD, контроллер ЖК-дисплея, цифро-аналоговые преобразователи, операционные усилители, компараторы, независимый сторожевой таймер, таймеры LPTIM (если есть), I²C, UART и LPUART. Режим останова stop2 отличается от stop1 тем, что доступны только следующие периферийные устройства: PVD, контроллер ЖК-дисплея, компараторы, независимый сторожевой таймер, LPTIM1, I2C3 и LPUART.

BOR всегда доступен в режимах останова stop1 и stop2. Потребление увеличивается при использовании порогов выше VBOR0.

20 HAL называет этот режим stop0, и он достигается путем вызова функции HAL_PWREx_EnterSTOP0Mode().

Управление питанием

505

Для перевода микроконтроллера в режим останова HAL предоставляет функцию:

void HAL_PWREx_EnterSTOPxMode(uint8_t STOPEntry);

где ‘x’ равно 0, 1 и 2 в зависимости от режима останова. Параметр STOPEntry может принимать значения PWR_STOPENTRY_WFI или PWR_STOPENTRY_WFE. Для совместимости с другими HAL также доступна функция HAL_PWR_EnterSTOPMode().

Для перехода в режим останова, все биты отложенного состояния (pending bits) линий EXTI, все биты отложенного состояния прерываний от периферийных устройств и флаг будильника RTC Alarm должны быть сброшены. В противном случае процедура перехода в режим останова игнорируется, и выполнение программы продолжается. В режим останова stop1 можно перейти из рабочего режима и рабочего режима с пониженным энер-

гопотреблением, в то время как в режим останова stop2 невозможно перейти из рабочего режима с пониженным энергопотреблением.

Любая линия EXTI, сконфигурированная в режиме прерываний или событий, вынуждает ЦПУ выйти из режима останова, если оно перешло в режим пониженного энергопотребления при помощи инструкции WFI или WFE. Поскольку и HSE-генератор, и блок PLL отключаются перед переходом в режим останова, при выходе из этого режима источником тактового сигнала микроконтроллера устанавливается HSI-генератор. Это означает, что наш код должен переконфигурировать схему тактирования в соответствии с желаемым тактовым сигналом SYSCLK.

19.4.2.4. Режимы ожидания

Микроконтроллеры STM32L предоставляют два режима ожидания, которые основаны на режиме глубокого сна Cortex-M. Режим ожидания – это режим с наименьшим энергопотреблением, в котором можно сохранить 32 КБ SRAM2, поддерживается автоматический переход с VDD на VBAT, а уровень I/O можно сконфигурировать с помощью независимых схем подтяжки к питанию и к земле. По умолчанию регуляторы напряжения находятся в режиме выключенного питания, а содержимое SRAM и регистров периферийных устройств теряется. 128-байтовые резервные регистры всегда сохраняются. BOR со сверхнизким энергопотреблением (ultra-low-power BOR) всегда включен, чтобы обеспечить безопасный сброс независимо от скорости нарастания VDD.

Для перевода микроконтроллера в режим ожидания HAL предоставляет функцию:

void HAL_PWR_EnterSTANDBYMode(void);

Если мы хотим сохранить 32 КБ SRAM2, то можно вызвать функцию:

void HAL_PWREx_EnableSRAM2ContentRetention(void);

прежде чем мы вызовем HAL_PWR_EnterSTANDBYMode();

В микроконтроллерах STM32L каждый I/O может быть сконфигурирован с подтягивающими резисторами или без них, вызвав функцию HAL HAL_PWREx_EnablePullUpPullDownConfig(). Это позволяет контролировать состояние входов внешних компонентов даже в режиме ожидания. Для получения дополнительной информации по данной теме обратитесь к справочному руководству по вашему микроконтроллеру.