Глава 3. Управление питанием
3.1 Источники питания
Для нормальной работы контроллеру необходимо от 2.0 до 3.6 вольт (VDD). Встроенный регулятор обеспечивает 1.8 V для питания ядра.
Часы реального времени (RTC) и регистры для резервного сохранения информации могут быть отдельно запитаны от VBAT, когда питание на VDDотключено.

Рис. 1 Схема питания
Замечание: VDDA и VSSA должны быть подключены к VDD и VSSсоответственно.
3.1.1 Независимый источник питания для АЦП и ЦАП
Чтобы обеспечить точность преобразования, АЦП и ЦАП имеют собственный вход питания, который может быть дополнительно очищен от помех и проэкранирован при разводке платы.
- Вход питания для АЦП и ЦАП доступен на ноге VDDA
- Подключение к изолированной земле для АЦП и ЦАП доступно на ноге VSSA
Если вывод VREF- доступен (в зависимости от количества ножек), то он должен быть подключен к VSSA.
В корпусах с количеством выводов 100 и 144:
Для повышения точности преобразования при низких максимальных уровнях напряжения на выводах АЦП и ЦАП, можно подключить вывод VREF+ к внешнему источнику опорного напряжения. Напряжение на VREF+ – максимальное напряжение, которое соответсвует максимальному преобразованному значению в АЦП и ЦАП. Напряжение на VREF+ может изменяться с 2.4 вольт, до VDDA.
В корпусах с 64 выводами:
Выводы VREF+ и VREF- недоступны и подключены к VDDA и VSSA соотвественно.
3.1.2 Резервные источники питания
Для обеспечения сохранности содержимого резервных регистров (backup registers) и нормального функционирования RTC в случае, когда VDD отключен от источников питания, у контроллера есть выход VBAT ,который может быть подключен к резервному источнику питания.
От вывода VBAT запитываются: модуль RTC, LSE генератор и выводы с PC13 до PC15, обеспечивающие функционирование часов реального времени даже при отключенном питании на VDD .
Переход с VDD на VBAT контролируется с помощью значением напряжения PDR (Power down reset), встроенного в блок сброса.
Внимание!
В течение tRSTTEMPO ( tRSTTEMPO – время между моментом, когда VDD = VPOR и выходом контроллера из режима сброса) или после того, как был обнаружен PDR, переключатель между VDD и VBAT остается подключенным к VBAT .
Во время запуска контроллера, если время подачи питания на VDD меньше tRSTTEMPO и VDD >VBAT + 0.6 В, это напряжение может быть “спущено” в линию VBAT через внутренний диод, который соединяет VDD с переключателем питания (который в данный момент подключен к VBAT ).
Если источник питания, подключенный к VBAT не может выдержать этот скачок напряжения, то необходимо предусмотреть диод с низким падением напряжения между источником питания и входом VBAT .
Если не планируется использовать источник резервного питания, то рекомендуется замкнуть VBAT на VDD с помощью керамического конденсатора на 100 мкФ.
Когда на резервный домен (backup domain) подается напряжения с VDD, доступны следующие возможности:
- PC14 и PC15 используются как обычные выводы GPIO или LSE
- PC13 может использоваться как GPIO, вывод TAMPER, калибрующий сигнал RTC или будильник RTC.
Если же на него подается напряжение с VBAT , то доступны следующие возможности:
- PC14 и PC15 используются только как выводы LSE.
- PC13 может использоваться как вывод TAMPER, будильник RTC.
3.1.3 Регулятор напряжения
Регулятор всегда включается после выхода устройства из режима сброса. Он работает в 3 режимах, которые зависят от режима работы контроллера.
- Обычный режим. Регулятор обеспечивает полное питание для домена 1.8В (ядро, память, цифровая периферия)
- Режим останова. Регулятор обеспечивает пониженное питание для домена 1.8В, сохраняются значения регистров и SRAM.
- Режим ожидания. Регулятор отключен. Содержимое регистров и SRAM утеряно, кроме схемы ожидания и резервного домена.
3.2 Контроль источников питания
3.2.1 Сброс при старте (POR – power on reset)/сброс при отключении (PDR – power down reset)
Контроллер имеет встроенные схемы POR и PDR для обеспечения нормальной работы контроллера. Контроллер находится в режиме сброса, пока напряжение питания на VDD / VDDA ниже, чем установленный порог срабатывания VPOR / VPDR.
3.2.2 Программируемый детектор напряжения (PVD)
Программируемый детектор напряжения (Programmable Voltage Detector, PDV) может использоваться для наблюдения за VDD / VDDA с помощью сравнения его с величиной, выбранной битами PLS[2:0] в регистре управления управления питанием (PWR_CR).
PVD включеается с помощью установки бита PVDE.
В статусном регистре PWR_CSR есть флаг PVDO, который показывает выше или ниже VDD / VDDA, чем порог срабатывания PVD. Изменение этого регистра может генерировать прерывание, если оно разрешено в регистрах EXTI.
3.3 Режимы с низким энергопотреблением
По умолчанию, после сброса работает в режиме нормального энергопотребления. Режимы пониженного энергопотребления для снижения потребления энергии контроллером, когда нет необходимости в его функционировании (например при ожидании внешнего прерывания).
Контроллер может работать в следующих режимах:
- Спящий режим – такирование ядра остановлено, периферия, в том числе и ядро, работает.
- Режим останова – тактирование всех устройств отключено.
- Режим ожидания – отключен домен 1.8В.
Снижение энергопотребления может быть осуществлено с помощью следующих методик:
- Замедление тактирования системы
- Прекращение тактирования периферии на шинах APB и AHB, когда они не используются.
3.3.1 Замедление системных частот
В обычном режиме величины системных частот (SYSCLK, HCLK, PCLK1, PCLK2) могут быть программно уменьшены с помощью предделителей. Предделители могут так же использоваться для замедления периферии перед погружением в спящий режим.
3.3.2 Отключение периферийного тактирования
В режиме нормального энергопотребления, сигналы HCLK и PCLKx для периферии и внешних запоминающих устройств могут быть отключены в любой момент для сохранения питания
3.3.3 Спящий режим
Вход в спящий режим
Вход в спящий режим осуществляется с помощью инструкций WFI (wait for interrupt) или WFE (wait for event). Есть возможность выбора механизма входа в спящий режим в зависимоти от бита SLEEPONEXIT:
- Sleep-now: если бит SLEEPONEXIT сброшен, то устройство уходит в спящий режим как только была вызвана инструкция WFI или WFE.
- Sleep-on-exit: если бит SLEEPONEXIT установлен, то устройство входит в спящий режим как только произойдет выход из обработчика прерывания.
В спящем режиме все пины ввода-вывода сохраняют своё состояние.
Выход из спящего режима.
Если для входа в спящий режим была задействована инструкция WFI, то выход контроллера из спящего режима может быть спровоцирован вызовом любого прерывания от периферии.
Если для входа в спящий режим была задействована инструкция WFE, то выход контроллера из спящего режима осуществляется как только происходит какое-либо событие. Это событие может быть сгенерировано:
- за счет включения прерывания в регистре управления периферией, но не в NVIC и за счет установки бита SEVONPEND в регистре управления ядром. После восстановления контроллера из WFE, бит ожидания периферийного прерывания и бит ожидания периферийного канала NVIC.
- за счет конфигурирования внешнего или внутреннего EXTI в режиме событий.
3.3.4 Режим останова.
Режим останова базируется на режиме глубокой спячки ядра. В этом режиме останавливаются все генераторы тактовой частоты в 1.8В домене, а так же отключаются PLL, HSI и HSE RC.
В режиме останова все пины ввода-вывода сохраняют своё состояние.
Вход в режим останова.
Вход может быть осущевствлен следующими способами:
Вызовом инструкций WFI или WFE пока:
- Установлен бит SLEEPDEEP
- Очищен бит PDDS в регистре PWR_CR
- Выбран режим регулятора напряжения битом LPDS в регистре PWR_CR
Если во время перехода устройства в спящий режим происходит программирование флеш-памяти, то переход откладывается до завершения процесса программирования.
С доступом к домену APB ситуация аналогичная.
В режиме останова путем изменения соответствующих конфигурационных битов можно включить следующие возможности:
- Независимый сторожевой таймер (IWDT): он может быть запущен с помощью своего регистра. Однажды запущен, он может быть остановлен только вводом контроллера в режим сброса.
- Часы реального времени (RTC): с помощью бита RTCEC в своём регистре управления.
- Внутренняя тактирующая RC-цепочка (LSI RC): с помощью бита LSION.
- Внешний генератор на 32.768 кГц (LSE OSC): с помощью бита LSEON.
Выход из режима останова.
Если вход был инициирован с помощью WFI, то с помощью любой линии EXTI, сконфигурированной в режиме прерывания.
Если с помощью WFE, то с помощью любой линии EXTI, сконфигурированной в режиме события.
Во время выхода из режима останова HSI RC генератор выбран как основное системное тактирующее устройство.
3.4.5 Режим ожидания.
Режим ожидания – режим с минимальным энергоптреблением. Основан на режиме глубоко сна контроллера вместе с отключенным регулятором питания. В этом режиме 1.8В домен отключен, PLL и генераторы HSI и HSE аналогично отключены. Содержимое SRAM и всех регистров (кроме резервных) утеряно.
Вход в режим ожидания.
Вызовом инструкций WFI или WFE пока:
- Установлен бит SLEEPDEEP
- Установлен бит PDDS в регистре PWR_CR
- Сброшен бит WUF в регистре (PWR_CSR)
Также можно включить следующие возможности:
- Независимый сторожевой таймер (IWDT): он может быть запущен с помощью своего регистра. Однажды запущен, он может быть остановлен только вводом контроллера в режим сброса.
- Часы реального времени (RTC): с помощью бита RTCEC в своём регистре управления.
- Внутренняя тактирующая RC-цепочка (LSI RC): с помощью бита LSION.
- Внешний генератор на 32.768 кГц (LSE OSC): с помощью бита LSEON.
Выход из режима ожидания.
Выход может быть осуществлен с помощью:
- нарастающего фронта на пине WKUP
- нарастающему фронту будильника RTC
- внешнего сигнала на пине NRST
- сброса IWGT
Отладочный режим.
По усолчанию отладочное соединение таеряется при переходе контроллера в режим останова или ожидания, так как ядро больше не получает тактирующего сигнала.
Однако с помощью битов регистра DBGMCU_CR можно включить возможность отладки контроллера в режимах с низким потреблением энергии.
3.3.6 Автовыход из режима пониженного энергопотребления
Часы реального времени могут вызывать выход из режима пониженного энергоптребления без вызова прерывания. Можно настроить RTC на поддъем контроллера из этих режимов через определенные промежутки времени. Для этого можно выбрать 2 источника тактирующего сигнала для RTC с помощью битов RTCSEL[1:0] регистра управления RTC:
- Внешний кварц на 32.768 кГц (LSE OSC)
- Внутренняя RC-цепочка
Чтобы поднять устройство из режима останова с помощью события от будильника RTC необходимо сделать следующее:
- Настроить линию 17 EXTI на возрастающий фронт
- Настроить RTC на генерацию будильника
3.4 Регистры управления питанием
3.4.1 Регистр управления питанием (PWR_CR)
31 |
… |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Reserved |
DBP |
PLS[2:0] |
PVDE |
CSBF |
CWUF |
PDDS |
LPDS |
||||
rw |
rw |
rw |
rw |
rw |
rc_w1 |
rc_w1 |
rw |
rw |
Биты 31:9 – зарезервированы, всегда читаются как 0.
Бит 8 DBP (disable backup domain write protection) – отключение защиты от записи резервного домена.
0: Доступ к RTC и регистрам для резервного копирования отключен.
1: Доступ к RTC и регистрам для резервного копирования включен.
Биты 7:5 PLS[2:0] (PVD level selection) – Выбор порога срабатывания детектора напряжения.
000: 2.2 В
001: 2.3 В
010: 2.4 В
011: 2.5 В
100: 2.6 В
101: 2.7 В
110: 2.8 В
111: 2.9 В
Бит 4 PVDE (power voltage detector enable) – включение детектора напряжения.
0 – PVD отключен.
1 – PVD включен.
Бит 3 CSBF (clear standby flag) – Очистить флаг ожидания.
Бит всегда читается как 0.
0 – не принесет результатаю.
1 – Очистка флага ожидания SBF.
Бит 2 CWUF (clear wakeup flag) – очистить флаг пробуждения.
Бит всегда читается как 0.
0 – не принесет результата.
1 – Очистка флага WUF после 2 тактов системного генератора.
Бит 1 PDDS (power down deepsleep) – бит перехода в глубокий сон с отключением питания. Работает вместе с LPDS.
0 – Вход в режим останова, когда CPU входит в режим глубокого сна. Статус регулятора зависит от бита LPDS.
1 – Вход в режим ожидания, когда CPU входит в режим глубокого сна.
Бит 0 LPDS (low-power deepsleep) – бит перехода в глубокий сон с режимом пониженного энергопотребления. Работает вместе с PDDS.
0 – Регулятор напряжения включен во время режима останова.
1 – Регулятор напряжения в режиме низкого энергопторебления во время режима останова.
3.4.2 Регистр управления/статусный регистр (PWR_CSR)
31 |
… |
9 |
8 |
7 |
… |
3 |
2 |
1 |
0 |
Reserved |
EWUP |
Reserved |
PVDO |
SDF |
WUF |
||||
rw |
r |
r |
r |
Биты 31:9 – зарезервированы, ситаются как 0.
Бит 8 EWUP (Enable WKUP pin) – назначение пина WKUP.
0 – Пин WKUP используется как GPIO. Событие на WKUP не прерывает режим ожидания устройства.
1 – Пин WKUP используется для пробуждения устройства из режима ожидания по нарастающему фронту.
Биты 7:3 – зарезервированы, читаются как 0.
Бит 2 PVDO (PVD output) – флаг статуса программируемого регулятора напряжения. Бит устанавливается и сбрасывается аппаратно.
0: VDD / VDDA выше порога срабатывания PVD
1: VDD / VDDA ниже порога срабатывания PVD
Замечание: Во время режима ожидания PVD отключен, поэтом бит PVDO читается как 0 после выхода устройства из режима ожидания и после сброса, пока не установлен бит PVDE.
Бит 1 SBF (standby flag) – бит устанавливается и сбрасывается только POR/PDR или с помощью установки бита CSBF в регистре PWR_CR
0: Устройство не в режиме ожидания
1: Устройство в режиме ожидания
Бит 0 WUF (wakeup flag) – бит устанавливается аппаратно, а сбрасывается с помощью POR/PDR или с помощью установки бита CWUF в регистре PWR_CR.
0: Пробуждающего события нет
1: Пробуждающее событие пришло с пина WKUP или от будильника RTC.
3.5 Программирование модуля управления питанием
|
Включает или отключает доступ к резервным регистрам и регистрам RTC.
Вход:
NewState
– состояние разрешения доступа. Может быть либо ENABLE, либо DISABLE.
Выход:
- Значения не возвращает.
|
Очищает указанный флаг PWR.
Вход:
PWR_FLAG
– указывает флаг, который надо сбросить. Прнимает следующие значения: PWR_FLAG_WU (wake up flag) и PWR_FLAG_SB (standby flag)
Выход:
- Значения не возвращает.
|
Сбрасывает значения регистров PWR к их первоначальному значению.
Вход:
- Параметров нет.
Выход:
- Значения не возвращает.
|
Вводит устройство в режим ожидания.
Вход:
- Параметров нет.
Выход:
- Значения не возвращает.
|
Ввводит устройство в режим останова.
Вход:
PWR_Regulator
– устанавливает состояние регулятора при входе в режим останова. Прнимает следующие значения: PWR_Regulator_ON (регулятор включен) и PWR_Regulator_LowPower (регулятор находится в режиме пониженного энергопотребления)PWR_STOPEntry
– устанавливает тип инструкции (WFE или WFI) с которой должен быть осуществлен вход режим останова. Принимает следующие значения: PWR_STOPEntry_WFI и PPWR_STOPEntry_WFE.
Выход:
- Значения не возвращает.
|
Возвращает состояние указанного флага (установлен или нет).
Вход:
PWR_FLAG
– указывает флаг, состояние которого надо проверить. Принимает следующие значения: PWR_FLAG_WU (wake up flag), PWR_FLAG_SB (standby flag) и PWR_FLAG_PVDO (PVD Output)
Выход:
- Состояние флага. Варианты: SET или RESET
|
Влючает или отключает детектор напряжения.
Вход:
NewState
– статус детектора напряжения. Принимает следующие значения: ENABLE, DISABLE (standby flag) и PWR_FLAG_PVDO (PVD Output)
Выход:
- Значения не возвращает.
|
Устанавливает порог срабатывания детектора напряжения.
Вход:
PWR_PVDLevel
– вольтаж порога. Принимает следующие значения: от PWR_PVDLevel_2V2 (2.2 вольта) до PWR_PVDLevel_2V9 (2.9 вольта) с шагом 0.1 вольт.
Выход:
- Значения не возвращает.
|
Устанавливает возможность пробуждения контроллера по сигналу на пробуждающем пине.
Вход:
NewState
– состояние возможности пробуждения. Принимает следующие значения: ENABLE и DISABLE.
Выход:
- Значения не возвращает.
1.В предложении явно не хватает слова.
“После восстановления контроллера из WFE, бит ожидания периферийного прерывания и бит ожидания периферийного канала NVIC”.
2. “осущевствлен”
3. “поддъем”
4. “энергоптреблением”.
5. “Основан на режиме глубоко сна
“Если не планируется использовать источник резервного питания, то рекомендуется замкнуть VBAT на VDD с помощью керамического конденсатора на 100 мкФ.”
Может 100 нФ ?!