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

Регистры 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: включение, полярность и подтяжка.

ЭкземплярБазовый адресЕсть у
PWR0x5802 4800всех

Регистры блока

РегистрСмещениеНазначениеПосле сброса
PWR_CR10x00Детекторы PVD и AVD, напряжение в Stop, защита резервного домена0xF000 C000
PWR_CSR10x04Выходы детекторов и текущий масштаб напряжения0x0000 4000
PWR_CR20x08Резервный стабилизатор и мониторинг VBAT и температуры0x0000 0000 (сбрасывается только сбросом домена VSW (VSW POR и VSWRST))
PWR_CR30x0CСхема питания: LDO, обход, USB и заряд VBAT0x0000 0006 (у ревизии Y; у ревизии V — 0x0000 0046; сбрасывается только при включении питания)
PWR_CPUCR0x10Режимы доменов при глубоком сне ядра и флаги Stop и Standby0x0000 0000
PWR_D3CR0x18Масштаб напряжения ядра VOS0x0000 4000 (после сброса VOSRDY читается как 1)
PWR_WKUPCR0x20Сброс флагов выводов пробуждения0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby)
PWR_WKUPFR0x24Флаги выводов пробуждения WKUP1–WKUP60x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby)
PWR_WKUPEPR0x28Включение, полярность и подтяжка выводов пробуждения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.

31302928272625242322212019181716
—ALSAVDEN
1514131211109876543210
SVOS—FLPSDBPPLSPVDEN—LPDS
  • ALS (биты 18:17) — Порог детектора аналогового питания AVD: 1,7, 2,1, 2,5 или 2,8 В.
    ALSЗначениеМакрос CMSIS
    001,7 ВPWR_CR1_ALS_LEV0
    012,1 ВPWR_CR1_ALS_LEV1
    102,5 ВPWR_CR1_ALS_LEV2
    112,8 ВPWR_CR1_ALS_LEV3
  • AVDEN (бит 16) — Включение детектора напряжения VDDA (AVD).
  • SVOS (биты 15:14) — Масштаб напряжения ядра в Stop: SVOS3, SVOS4 или SVOS5.
    SVOSЗначение
    01SVOS5
    10SVOS4
    11SVOS3 (после сброса)
  • FLPS (бит 9) — Флеш-память в экономичном режиме, когда домен D1 в DStop.
  • DBP (бит 8) — Снятие защиты записи RTC, резервных регистров и резервной SRAM.
  • PLS (биты 7:5) — Порог детектора напряжения PVD.
    PLSЗначениеМакрос CMSIS
    0001,95 ВPWR_CR1_PLS_LEV0
    0012,1 ВPWR_CR1_PLS_LEV1
    0102,25 ВPWR_CR1_PLS_LEV2
    0112,4 ВPWR_CR1_PLS_LEV3
    1002,55 ВPWR_CR1_PLS_LEV4
    1012,7 ВPWR_CR1_PLS_LEV5
    1102,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.

31302928272625242322212019181716
—AVDO
1514131211109876543210
ACTVOSACTVOSRDY—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.

31302928272625242322212019181716
—TEMPHTEMPLVBATHVBATL—BRRDY
1514131211109876543210
—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.

31302928272625242322212019181716
—USB33RDYUSBREGENUSB33DEN—
1514131211109876543210
—VBRSVBE—SCUENLDOENBYPASS
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
—RUN_D3—CSSFSBF_D2SBF_D1SBFSTOPF—PDDS_D3PDDS_D2PDDS_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.

31302928272625242322212019181716
—
1514131211109876543210
VOSVOSRDY—
  • VOS (биты 15:14) — Масштаб напряжения ядра VOS1…VOS3 (VOS0 — через ODEN в SYSCFG_PWRCR).
    VOSЗначение
    01Scale 3 (после сброса)
    10Scale 2
    11Scale 1
  • VOSRDY (бит 13) — Напряжение ядра установилось по VOS (только чтение).

PWR_WKUPCR — сброс флагов выводов пробуждения

Смещение 0x20, адрес 0x5802 4820, 32 бит, после сброса 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby). В коде: PWR->WKUPCR.

31302928272625242322212019181716
—
1514131211109876543210
—WKUPC6WKUPC5WKUPC4WKUPC3WKUPC2WKUPC1
  • WKUPC2–WKUPC6 (по биту на каждый y, положение — на карте битов) — Запись 1 сбрасывает флаг WKUPFy.
  • WKUPC1 (бит 0) — Запись 1 сбрасывает флаг WKUPF1.

PWR_WKUPFR — флаги выводов пробуждения WKUP1–WKUP6

Смещение 0x24, адрес 0x5802 4824, 32 бит, после сброса 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby). В коде: PWR->WKUPFR.

31302928272625242322212019181716
—
1514131211109876543210
—WKUPF6WKUPF5WKUPF4WKUPF3WKUPF2WKUPF1
  • WKUPF1–WKUPF6 (по биту на каждый y, положение — на карте битов) — Флаг пробуждения от вывода WKUPy.

PWR_WKUPEPR — включение, полярность и подтяжка выводов пробуждения

Смещение 0x28, адрес 0x5802 4828, 32 бит, после сброса 0x0000 0000 (сбрасывается только системным сбросом, не сбрасывается при выходе из Standby). В коде: PWR->WKUPEPR.

31302928272625242322212019181716
—WKUPPUPD6WKUPPUPD5WKUPPUPD4WKUPPUPD3WKUPPUPD2WKUPPUPD1
1514131211109876543210
—WKUPP6WKUPP5WKUPP4WKUPP3WKUPP2WKUPP1—WKUPEN6WKUPEN5WKUPEN4WKUPEN3WKUPEN2WKUPEN1
  • 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 (или наоборот), напряжение ядра неверное и микроконтроллер не стартует — выберите схему по схеме платы.

Источники

  1. STMicroelectronics. RM0433: Reference manual (Rev 9) — раздел 6.8: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-h7 v1.10.7: заголовки CMSIS stm32h742xx.h, stm32h743xx.h, stm32h750xx.h, stm32h753xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры STM32H7

Калькуляторы и статьи