Регистры PWR STM32H7
Регистры PWR STM32H742/H743/H750/H753: схема питания ядра, масштаб напряжения VOS и SVOS, режимы доменов D1–D3, детекторы PVD и AVD, резервный стабилизатор, мониторинг VBAT и температуры, питание USB и выводы пробуждения.
После включения питания программа должна один раз записать схему питания в PWR_CR3: встроенный стабилизатор LDO (LDOEN) или внешнее питание ядра (BYPASS); бит SCUEN разрешает эту единственную запись. Масштаб напряжения ядра задаёт PWR_D3CR.VOS (Scale 1–3), его готовность — флаг VOSRDY; VOS0 включается через SYSCFG_PWRCR (RM0433, раздел 6.8).
Режимы доменов при глубоком сне ядра задают биты PDDS_D1…PDDS_D3 регистра PWR_CPUCR, а SVOS — напряжение в Stop. Шесть выводов WKUP настраиваются в PWR_WKUPEPR: включение, полярность и подтяжка.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| PWR | 0x5802 4800 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| PWR_CR1 | 0x00 | Детекторы PVD и AVD, напряжение в Stop, защита резервного домена | 0xF000 C000 |
| PWR_CSR1 | 0x04 | Выходы детекторов и текущий масштаб напряжения | 0x0000 4000 |
| PWR_CR2 | 0x08 | Резервный стабилизатор и мониторинг VBAT и температуры | 0x0000 0000 (сбрасывается только сбросом домена VSW (VSW POR и VSWRST)) |
| PWR_CR3 | 0x0C | Схема питания: LDO, обход, USB и заряд VBAT | 0x0000 0006 (у ревизии Y; у ревизии V — 0x0000 0046; сбрасывается только при включении питания) |
| PWR_CPUCR | 0x10 | Режимы доменов при глубоком сне ядра и флаги Stop и Standby | 0x0000 0000 |
| PWR_D3CR | 0x18 | Масштаб напряжения ядра VOS | 0x0000 4000 (после сброса VOSRDY читается как 1) |
| PWR_WKUPCR | 0x20 | Сброс флагов выводов пробуждения | 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby) |
| PWR_WKUPFR | 0x24 | Флаги выводов пробуждения WKUP1–WKUP6 | 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby) |
| PWR_WKUPEPR | 0x28 | Включение, полярность и подтяжка выводов пробуждения | 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby) |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0xF000C000
1111 0000 0000 0000 1100 0000 0000 0000
PWR->CR1 = 0xF000C000;PWR_CR1 — детекторы PVD и AVD, напряжение в Stop, защита резервного домена
Смещение 0x00, адрес 0x5802 4800, 32 бит, после сброса 0xF000 C000. В коде: PWR->CR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | ALS | AVDEN | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SVOS | — | FLPS | DBP | PLS | PVDEN | — | LPDS | ||||||||
- ALS (биты 18:17) — Порог детектора аналогового питания AVD: 1,7, 2,1, 2,5 или 2,8 В.
ALS Значение Макрос CMSIS 00 1,7 В PWR_CR1_ALS_LEV0 01 2,1 В PWR_CR1_ALS_LEV1 10 2,5 В PWR_CR1_ALS_LEV2 11 2,8 В PWR_CR1_ALS_LEV3 - AVDEN (бит 16) — Включение детектора напряжения VDDA (AVD).
- SVOS (биты 15:14) — Масштаб напряжения ядра в Stop: SVOS3, SVOS4 или SVOS5.
SVOS Значение 01 SVOS5 10 SVOS4 11 SVOS3 (после сброса) - FLPS (бит 9) — Флеш-память в экономичном режиме, когда домен D1 в DStop.
- DBP (бит 8) — Снятие защиты записи RTC, резервных регистров и резервной SRAM.
- PLS (биты 7:5) — Порог детектора напряжения PVD.
PLS Значение Макрос CMSIS 000 1,95 В PWR_CR1_PLS_LEV0 001 2,1 В PWR_CR1_PLS_LEV1 010 2,25 В PWR_CR1_PLS_LEV2 011 2,4 В PWR_CR1_PLS_LEV3 100 2,55 В PWR_CR1_PLS_LEV4 101 2,7 В PWR_CR1_PLS_LEV5 110 2,85 В PWR_CR1_PLS_LEV6 111 Внешний вход PVD_IN (сравнивается с VREFINT) PWR_CR1_PLS_LEV7 - PVDEN (бит 4) — Включение детектора напряжения PVD.
- LPDS (бит 0) — Экономичный стабилизатор в Stop при SVOS3.
PWR_CSR1 — выходы детекторов и текущий масштаб напряжения
Смещение 0x04, адрес 0x5802 4804, 32 бит, после сброса 0x0000 4000. В коде: PWR->CSR1.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | AVDO | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ACTVOS | ACTVOSRDY | — | PVDO | — | |||||||||||
- AVDO (бит 16) — Выход AVD: 1 — VDDA ниже порога ALS (только чтение).
- ACTVOS (биты 15:14) — Текущий масштаб напряжения VOS (только чтение).
- ACTVOSRDY (бит 13) — Напряжение ядра соответствует ACTVOS (только чтение).
- PVDO (бит 4) — Выход PVD: 1 — VDD ниже порога PLS (только чтение).
PWR_CR2 — резервный стабилизатор и мониторинг VBAT и температуры
Смещение 0x08, адрес 0x5802 4808, 32 бит, после сброса 0x0000 0000 (сбрасывается только сбросом домена VSW (VSW POR и VSWRST)). В коде: PWR->CR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TEMPH | TEMPL | VBATH | VBATL | — | BRRDY | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | MONEN | — | BREN | ||||||||||||
- TEMPH (бит 23) — Температура выше верхнего порога (только чтение).
- TEMPL (бит 22) — Температура ниже нижнего порога (только чтение).
- VBATH (бит 21) — VBAT выше верхнего порога (только чтение).
- VBATL (бит 20) — VBAT ниже нижнего порога (только чтение).
- BRRDY (бит 16) — Резервный стабилизатор готов (только чтение).
- MONEN (бит 4) — Мониторинг VBAT и температуры.
- BREN (бит 0) — Резервный стабилизатор резервной SRAM.
PWR_CR3 — схема питания: LDO, обход, USB и заряд VBAT
Смещение 0x0C, адрес 0x5802 480C, 32 бит, после сброса 0x0000 0006 (у ревизии Y; у ревизии V — 0x0000 0046; сбрасывается только при включении питания). В коде: PWR->CR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | USB33RDY | USBREGEN | USB33DEN | — | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | VBRS | VBE | — | SCUEN | LDOEN | BYPASS | |||||||||
- USB33RDY (бит 26) — Питание USB 3,3 В готово (только чтение).
- USBREGEN (бит 25) — Встроенный стабилизатор питания USB 3,3 В.
- USB33DEN (бит 24) — Детектор напряжения VDD33USB.
- VBRS (бит 9) — Резистор заряда VBAT: 5 кОм (0) или 1,5 кОм (1).
- VBE (бит 8) — Заряд батареи на VBAT.
- SCUEN (бит 2) — Разрешение однократной записи схемы питания (LDOEN, BYPASS).
- LDOEN (бит 1) — Встроенный стабилизатор LDO ядра.
- BYPASS (бит 0) — Обход стабилизатора: ядро питается внешним напряжением.
PWR_CPUCR — режимы доменов при глубоком сне ядра и флаги Stop и Standby
Смещение 0x10, адрес 0x5802 4810, 32 бит, после сброса 0x0000 0000. В коде: PWR->CPUCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RUN_D3 | — | CSSF | SBF_D2 | SBF_D1 | SBF | STOPF | — | PDDS_D3 | PDDS_D2 | PDDS_D1 | ||||
- RUN_D3 (бит 11) — Домен D3 остаётся в Run независимо от режима ядра.
- CSSF (бит 9) — Запись 1 сбрасывает флаги STOPF, SBF, SBF_D1 и SBF_D2.
- SBF_D2 (бит 8) — Домен D2 побывал в DStandby.
- SBF_D1 (бит 7) — Домен D1 побывал в DStandby.
- SBF (бит 6) — Микроконтроллер побывал в режиме Standby.
- STOPF (бит 5) — Система побывала в режиме Stop.
- PDDS_D3 (бит 2) — Глубокий сон: домен D3 переходит в Standby (1) или Stop (0).
- PDDS_D2 (бит 1) — Глубокий сон: домен D2 переходит в DStandby (1) или DStop (0).
- PDDS_D1 (бит 0) — Глубокий сон: домен D1 переходит в DStandby (1) или DStop (0).
PWR_D3CR — масштаб напряжения ядра VOS
Смещение 0x18, адрес 0x5802 4818, 32 бит, после сброса 0x0000 4000 (после сброса VOSRDY читается как 1). В коде: PWR->D3CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| VOS | VOSRDY | — | |||||||||||||
- VOS (биты 15:14) — Масштаб напряжения ядра VOS1…VOS3 (VOS0 — через ODEN в SYSCFG_PWRCR).
VOS Значение 01 Scale 3 (после сброса) 10 Scale 2 11 Scale 1 - VOSRDY (бит 13) — Напряжение ядра установилось по VOS (только чтение).
PWR_WKUPCR — сброс флагов выводов пробуждения
Смещение 0x20, адрес 0x5802 4820, 32 бит, после сброса 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby). В коде: PWR->WKUPCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WKUPC6 | WKUPC5 | WKUPC4 | WKUPC3 | WKUPC2 | WKUPC1 | |||||||||
- WKUPC2–WKUPC6 (по биту на каждый y, положение — на карте битов) — Запись 1 сбрасывает флаг WKUPFy.
- WKUPC1 (бит 0) — Запись 1 сбрасывает флаг WKUPF1.
PWR_WKUPFR — флаги выводов пробуждения WKUP1–WKUP6
Смещение 0x24, адрес 0x5802 4824, 32 бит, после сброса 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby). В коде: PWR->WKUPFR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WKUPF6 | WKUPF5 | WKUPF4 | WKUPF3 | WKUPF2 | WKUPF1 | |||||||||
- WKUPF1–WKUPF6 (по биту на каждый y, положение — на карте битов) — Флаг пробуждения от вывода WKUPy.
PWR_WKUPEPR — включение, полярность и подтяжка выводов пробуждения
Смещение 0x28, адрес 0x5802 4828, 32 бит, после сброса 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby). В коде: PWR->WKUPEPR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | WKUPPUPD6 | WKUPPUPD5 | WKUPPUPD4 | WKUPPUPD3 | WKUPPUPD2 | WKUPPUPD1 | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | WKUPP6 | WKUPP5 | WKUPP4 | WKUPP3 | WKUPP2 | WKUPP1 | — | WKUPEN6 | WKUPEN5 | WKUPEN4 | WKUPEN3 | WKUPEN2 | WKUPEN1 | ||
- WKUPPUPD1–WKUPPUPD6 (по 2 бита на каждый y, положение — на карте битов) — Подтяжка вывода WKUPy: нет, вверх или вниз.
WKUPPUPDy Значение 00 Без подтяжки 01 Подтяжка вверх 10 Подтяжка вниз - WKUPP2–WKUPP6 (по биту на каждый y, положение — на карте битов) — Полярность вывода WKUPy: высокий (0) или низкий (1) уровень.
- WKUPP1 (бит 8) — Полярность вывода WKUP1: высокий (0) или низкий (1) уровень.
- WKUPEN1–WKUPEN6 (по биту на каждый y, положение — на карте битов) — Вывод WKUPy пробуждает из Standby.
Частые вопросы
Почему STM32H7 зависает при старте после смены HAL_PWREx_ConfigSupply?
Схема питания записывается в PWR_CR3 один раз после включения питания. Если плата питает ядро от внешнего SMPS, а программа выбрала LDO (или наоборот), напряжение ядра неверное и микроконтроллер не стартует — выберите схему по схеме платы.
Источники
- STMicroelectronics. RM0433: Reference manual (Rev 9) — раздел 6.8: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-h7 v1.10.7: заголовки CMSIS stm32h742xx.h, stm32h743xx.h, stm32h750xx.h, stm32h753xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры STM32H7
- Все регистры STM32H7Блоки периферии и заголовки CMSIS
- RCC — тактирование и сбросRCC_CR, RCC_HSICFGR, RCC_CRRCR, RCC_CSICFGR, RCC_CFGR, RCC_D1CFGR
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_PMCR, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4, SYSCFG_CFGR
- EXTI — контроллер внешних прерываний и событийEXTI_RTSR1, EXTI_FTSR1, EXTI_SWIER1, EXTI_D3PMR1, EXTI_D3PCR1L, EXTI_D3PCR1H
- USART — последовательные порты USART и LPUARTUSART_CR1, USART_CR2, USART_CR3, USART_BRR, USART_GTPR, USART_RTOR
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_CFG1, SPI_CFG2, SPI_IER, SPI_SR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_TIMINGR, I2C_TIMEOUTR
- TIM — таймерыTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- LPTIM — малопотребляющие таймерыLPTIM_ISR, LPTIM_ICR, LPTIM_IER, LPTIM_CFGR, LPTIM_CR, LPTIM_CMP
- DMA — контроллеры DMA и мультиплексор запросовDMA_LISR, DMA_HISR, DMA_LIFCR, DMA_HIFCR, DMA_SxCR, DMA_SxNDT
- АЦП — аналого-цифровые преобразователиADC_ISR, ADC_IER, ADC_CR, ADC_CFGR, ADC_CFGR2, ADC_SMPR1
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR, IWDG_WINR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — блок вычисления CRCCRC_DR, CRC_IDR, CRC_CR, CRC_INIT, CRC_POL
- DBGMCU — поддержка отладкиDBGMCU_IDC, DBGMCU_CR, DBGMCU_APB3FZ1, DBGMCU_APB1LFZ1, DBGMCU_APB2FZ1, DBGMCU_APB4FZ1
- RTC — часы реального времениRTC_TR, RTC_DR, RTC_CR, RTC_ISR, RTC_PRER, RTC_WUTR
- ЦАП — цифро-аналоговый преобразовательDAC_CR, DAC_SWTRGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2