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

Регистры PWR STM32G4

Регистры PWR STM32G4: диапазон напряжения ядра и режим Range 1 boost, Low-power run, режимы Stop 0, Stop 1, Standby и Shutdown, детектор PVD и мониторы VDDA, выводы пробуждения WKUP1–WKUP5, подтяжки выводов в Standby и UCPD.

Напряжение ядра задаёт поле VOS: Range 1 — до 170 МГц, Range 2 — до 26 МГц. Выше 150 МГц нужен режим boost — бит R1MODE = 0 в PWR_CR5. Режим глубокого сна выбирает поле LPMS: Stop 0, Stop 1, Standby или Shutdown; в Standby SRAM2 сохраняется при RRS = 1 (RM0440, раздел 6.4).

Мониторов напряжения VDDA у STM32G4 два — относительно 1,62 В и 1,8 В. В RM0440 и SVD ST это PVME1/PVMO1 и PVME2/PVMO2 на битах 6–7 и 14–15, а заголовок CMSIS называет эти биты PVME3/PVME4 и PVMO3/PVMO4 и объявляет ещё PVME1/PVME2 на битах 4–5 и PVMO1/PVMO2 на 12–13, которые в руководстве зарезервированы. Страница показывает только биты руководства под именами заголовка. Бит FLASH_RDY регистра SR2 (бит 7) в заголовке не определён.

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

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

РегистрСмещениеНазначениеПосле сброса
PWR_CR10x00Режим пониженного потребления, напряжение ядра, доступ к резервному домену0x0000 0200
PWR_CR20x04Детектор PVD и мониторы питания PVM0x0000 0000
PWR_CR30x08Выводы пробуждения, SRAM2 в Standby, подтяжки, UCPD0x0000 8000
PWR_CR40x0CПолярность выводов пробуждения, заряд батареи VBAT0x0000 0000
PWR_SR10x10Флаги пробуждения и Standby0x0000 0000
PWR_SR20x14Состояние регулятора, PVD и мониторов0x0000 0000
PWR_SCR0x18Сброс флагов пробуждения и Standby0x0000 0000
PWR_PUCRA0x20Подтяжка вверх порта A в Standby и Shutdown0x0000 0000
PWR_PDCRA0x24Подтяжка вниз порта A в Standby и Shutdown0x0000 0000
PWR_PUCRB0x28Подтяжка вверх порта B в Standby и Shutdown0x0000 0000
PWR_PDCRB0x2CПодтяжка вниз порта B в Standby и Shutdown0x0000 0000
PWR_PUCRC0x30Подтяжка вверх порта C в Standby и Shutdown0x0000 0000
PWR_PDCRC0x34Подтяжка вниз порта C в Standby и Shutdown0x0000 0000
PWR_PUCRD0x38Подтяжка вверх порта D в Standby и Shutdown0x0000 0000
PWR_PDCRD0x3CПодтяжка вниз порта D в Standby и Shutdown0x0000 0000
PWR_PUCRE0x40Подтяжка вверх порта E в Standby и Shutdown0x0000 0000
PWR_PDCRE0x44Подтяжка вниз порта E в Standby и Shutdown0x0000 0000
PWR_PUCRF0x48Подтяжка вверх порта F в Standby и Shutdown0x0000 0000
PWR_PDCRF0x4CПодтяжка вниз порта F в Standby и Shutdown0x0000 0000
PWR_PUCRG0x50Подтяжка вверх порта G в Standby и Shutdown0x0000 0000
PWR_PDCRG0x54Подтяжка вниз порта G в Standby и Shutdown0x0000 0000
PWR_CR50x80Режим главного регулятора: Range 1 Boost0x0000 0100

Конструктор значения

Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.

Значение: 0x00000200

0000 0000 0000 0000 0000 0010 0000 0000

PWR->CR1 = 0x00000200;

PWR_CR1 — режим пониженного потребления, напряжение ядра, доступ к резервному домену

Смещение 0x00, адрес 0x4000 7000, 32 бит, после сброса 0x0000 0200. В коде: PWR->CR1.

31302928272625242322212019181716
—
1514131211109876543210
—LPR—VOSDBP—LPMS
  • LPR (бит 14) — Регулятор в маломощном режиме: режим Low-power run (до 2 МГц).
  • VOS (биты 10:9) — Диапазон напряжения ядра: 1 — до 170 МГц, 2 — до 26 МГц.
  • DBP (бит 8) — Снятие защиты записи с домена RTC (регистры RTC, резервные регистры, RCC_BDCR).
  • LPMS (биты 2:0) — Режим глубокого сна: Stop 0, Stop 1, Standby или Shutdown.
    LPMSЗначениеМакрос CMSIS
    000Stop 0PWR_CR1_LPMS_STOP0
    001Stop 1PWR_CR1_LPMS_STOP1
    011StandbyPWR_CR1_LPMS_STANDBY
    100ShutdownPWR_CR1_LPMS_SHUTDOWN

PWR_CR2 — детектор PVD и мониторы питания PVM

Смещение 0x04, адрес 0x4000 7004, 32 бит, после сброса 0x0000 0000. В коде: PWR->CR2.

31302928272625242322212019181716
—
1514131211109876543210
—PVME4PVME3—PLSPVDE
  • PVME4 (бит 7) — Монитор напряжения PVM4: VDDA выше 1,8 В (ЦАП); в RM0440 — PVM2.
  • PVME3 (бит 6) — Монитор напряжения PVM3: VDDA выше 1,62 В (АЦП, компараторы); в RM0440 — PVM1.
  • PLS (биты 3:1) — Порог детектора PVD при спаде VDD; код 7 — внешний вход PVD_IN.
    PLSЗначениеМакрос CMSIS
    000Порог 0 (напряжения — в даташите)PWR_CR2_PLS_LEV0
    001Порог 1 (напряжения — в даташите)PWR_CR2_PLS_LEV1
    010Порог 2 (напряжения — в даташите)PWR_CR2_PLS_LEV2
    011Порог 3 (напряжения — в даташите)PWR_CR2_PLS_LEV3
    100Порог 4 (напряжения — в даташите)PWR_CR2_PLS_LEV4
    101Порог 5 (напряжения — в даташите)PWR_CR2_PLS_LEV5
    110Порог 6 (напряжения — в даташите)PWR_CR2_PLS_LEV6
    111Внешний вход PVD_IN (сравнивается с VREFINT)PWR_CR2_PLS_LEV7
  • PVDE (бит 0) — Включение детектора напряжения PVD.

PWR_CR3 — выводы пробуждения, SRAM2 в Standby, подтяжки, UCPD

Смещение 0x08, адрес 0x4000 7008, 32 бит, после сброса 0x0000 8000. В коде: PWR->CR3.

31302928272625242322212019181716
—
1514131211109876543210
EIWFUCPD_DBDISUCPD_STDBY—APC—RRS—EWUP5EWUP4EWUP3EWUP2EWUP1
  • EIWF (бит 15) — Внутренняя линия пробуждения (RTC, TAMP, LSE CSS) из Standby и Shutdown.
  • UCPD_DBDIS (бит 14) — Отключение резисторов «мёртвой батареи» на выводах CC контроллера UCPD1.
  • UCPD_STDBY (бит 13) — Standby при работе UCPD1: запись 1 перед входом в Standby, 0 — сразу после выхода.
  • APC (бит 10) — Применить подтяжки PWR_PUCRx и PWR_PDCRx в Standby и Shutdown.
  • RRS (бит 8) — Сохранение SRAM2 в режиме Standby.
  • EWUP1–EWUP5 (по биту на каждый y, положение — на карте битов) — Вывод пробуждения WKUPy.

PWR_CR4 — полярность выводов пробуждения, заряд батареи VBAT

Смещение 0x0C, адрес 0x4000 700C, 32 бит, после сброса 0x0000 0000. В коде: PWR->CR4.

31302928272625242322212019181716
—
1514131211109876543210
—VBRSVBE—WP5WP4WP3WP2WP1
  • VBRS (бит 9) — Резистор заряда батареи VBAT: 5 или 1,5 кОм.
  • VBE (бит 8) — Заряд батареи VBAT от VDD.
  • WP1–WP5 (по биту на каждый y, положение — на карте битов) — Полярность вывода WKUPy: пробуждение по высокому или низкому уровню.

PWR_SR1 — флаги пробуждения и Standby

Смещение 0x10, адрес 0x4000 7010, 32 бит, после сброса 0x0000 0000. В коде: PWR->SR1.

31302928272625242322212019181716
—
1514131211109876543210
WUFI—SBF—WUF5WUF4WUF3WUF2WUF1
  • WUFI (бит 15) — Пробуждение по внутренней линии; сбрасывается вместе с источником.
  • SBF (бит 8) — Микроконтроллер вышел из режима Standby.
  • WUF1–WUF5 (по биту на каждый y, положение — на карте битов) — Пробуждение выводом WKUPy.

PWR_SR2 — состояние регулятора, PVD и мониторов

Смещение 0x14, адрес 0x4000 7014, 32 бит, после сброса 0x0000 0000. В коде: PWR->SR2.

31302928272625242322212019181716
—
1514131211109876543210
PVMO4PVMO3—PVDOVOSFREGLPFREGLPS—
  • PVMO4 (бит 15) — Выход монитора PVM4: 1 — VDDA ниже 1,8 В (ЦАП); в RM0440 — PVM2.
  • PVMO3 (бит 14) — Выход монитора PVM3: 1 — VDDA ниже 1,62 В (АЦП, компараторы); в RM0440 — PVM1.
  • PVDO (бит 11) — Выход PVD: VDD ниже порога.
  • VOSF (бит 10) — Идёт смена диапазона напряжения ядра.
  • REGLPF (бит 9) — Регулятор работает в маломощном режиме.
  • REGLPS (бит 8) — Маломощный регулятор готов.

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

Смещение 0x18, адрес 0x4000 7018, 32 бит, после сброса 0x0000 0000. В коде: PWR->SCR.

31302928272625242322212019181716
—
1514131211109876543210
—CSBF—CWUF5CWUF4CWUF3CWUF2CWUF1
  • CSBF (бит 8) — Сброс флага SBF записью 1.
  • CWUF2–CWUF5 (по биту на каждый y, положение — на карте битов) — Сброс флага WUFy записью 1.
  • CWUF1 (бит 0) — Сброс флага WUF1 записью 1.

PWR_PUCRA — подтяжка вверх порта A в Standby и Shutdown

Смещение 0x20, адрес 0x4000 7020, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRA.

31302928272625242322212019181716
—
1514131211109876543210
PA15—PA13PA12PA11PA10PA9PA8PA7PA6PA5PA4PA3PA2PA1PA0
  • PA0–PA15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PAy в Standby и Shutdown (при APC = 1).
  • PA1 (бит 1) — Подтяжка вверх вывода PA1 в Standby и Shutdown (при APC = 1).

PWR_PDCRA — подтяжка вниз порта A в Standby и Shutdown

Смещение 0x24, адрес 0x4000 7024, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRA.

31302928272625242322212019181716
—
1514131211109876543210
—PA14—PA12PA11PA10PA9PA8PA7PA6PA5PA4PA3PA2PA1PA0
  • PA0–PA14 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PAy в Standby и Shutdown (при APC = 1).
  • PA1 (бит 1) — Подтяжка вниз вывода PA1 в Standby и Shutdown (при APC = 1).

PWR_PUCRB — подтяжка вверх порта B в Standby и Shutdown

Смещение 0x28, адрес 0x4000 7028, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRB.

31302928272625242322212019181716
—
1514131211109876543210
PB15PB14PB13PB12PB11PB10PB9PB8PB7PB6PB5PB4PB3PB2PB1PB0
  • PB0–PB15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PBy в Standby и Shutdown (при APC = 1).
  • PB1 (бит 1) — Подтяжка вверх вывода PB1 в Standby и Shutdown (при APC = 1).

PWR_PDCRB — подтяжка вниз порта B в Standby и Shutdown

Смещение 0x2C, адрес 0x4000 702C, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRB.

31302928272625242322212019181716
—
1514131211109876543210
PB15PB14PB13PB12PB11PB10PB9PB8PB7PB6PB5—PB3PB2PB1PB0
  • PB0–PB15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PBy в Standby и Shutdown (при APC = 1).
  • PB1 (бит 1) — Подтяжка вниз вывода PB1 в Standby и Shutdown (при APC = 1).

PWR_PUCRC — подтяжка вверх порта C в Standby и Shutdown

Смещение 0x30, адрес 0x4000 7030, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRC.

31302928272625242322212019181716
—
1514131211109876543210
PC15PC14PC13PC12PC11PC10PC9PC8PC7PC6PC5PC4PC3PC2PC1PC0
  • PC0–PC15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PCy в Standby и Shutdown (при APC = 1).
  • PC1 (бит 1) — Подтяжка вверх вывода PC1 в Standby и Shutdown (при APC = 1).

PWR_PDCRC — подтяжка вниз порта C в Standby и Shutdown

Смещение 0x34, адрес 0x4000 7034, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRC.

31302928272625242322212019181716
—
1514131211109876543210
PC15PC14PC13PC12PC11PC10PC9PC8PC7PC6PC5PC4PC3PC2PC1PC0
  • PC0–PC15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PCy в Standby и Shutdown (при APC = 1).
  • PC1 (бит 1) — Подтяжка вниз вывода PC1 в Standby и Shutdown (при APC = 1).

PWR_PUCRD — подтяжка вверх порта D в Standby и Shutdown

Смещение 0x38, адрес 0x4000 7038, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRD.

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD0–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PDy в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вверх вывода PD1 в Standby и Shutdown (при APC = 1).

PWR_PDCRD — подтяжка вниз порта D в Standby и Shutdown

Смещение 0x3C, адрес 0x4000 703C, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRD.

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD0–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PDy в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вниз вывода PD1 в Standby и Shutdown (при APC = 1).

PWR_PUCRE — подтяжка вверх порта E в Standby и Shutdown

Смещение 0x40, адрес 0x4000 7040, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRE.

31302928272625242322212019181716
—
1514131211109876543210
PE15PE14PE13PE12PE11PE10PE9PE8PE7PE6PE5PE4PE3PE2PE1PE0
  • PE0–PE15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PEy в Standby и Shutdown (при APC = 1).
  • PE1 (бит 1) — Подтяжка вверх вывода PE1 в Standby и Shutdown (при APC = 1).

PWR_PDCRE — подтяжка вниз порта E в Standby и Shutdown

Смещение 0x44, адрес 0x4000 7044, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRE.

31302928272625242322212019181716
—
1514131211109876543210
PE15PE14PE13PE12PE11PE10PE9PE8PE7PE6PE5PE4PE3PE2PE1PE0
  • PE0–PE15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PEy в Standby и Shutdown (при APC = 1).
  • PE1 (бит 1) — Подтяжка вниз вывода PE1 в Standby и Shutdown (при APC = 1).

PWR_PUCRF — подтяжка вверх порта F в Standby и Shutdown

Смещение 0x48, адрес 0x4000 7048, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRF.

31302928272625242322212019181716
—
1514131211109876543210
PF15PF14PF13PF12PF11PF10PF9PF8PF7PF6PF5PF4PF3PF2PF1PF0
  • PF0–PF15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PFy в Standby и Shutdown (при APC = 1).
  • PF1 (бит 1) — Подтяжка вверх вывода PF1 в Standby и Shutdown (при APC = 1).

PWR_PDCRF — подтяжка вниз порта F в Standby и Shutdown

Смещение 0x4C, адрес 0x4000 704C, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRF.

31302928272625242322212019181716
—
1514131211109876543210
PF15PF14PF13PF12PF11PF10PF9PF8PF7PF6PF5PF4PF3PF2PF1PF0
  • PF3–PF15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PFy в Standby и Shutdown (при APC = 1) (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484).
  • PF0–PF10 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PFy в Standby и Shutdown (при APC = 1).
  • PF1 (бит 1) — Подтяжка вниз вывода PF1 в Standby и Shutdown (при APC = 1).

PWR_PUCRG — подтяжка вверх порта G в Standby и Shutdown

Смещение 0x50, адрес 0x4000 7050, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRG.

31302928272625242322212019181716
—
1514131211109876543210
PG15PG14PG13PG12PG11PG10PG9PG8PG7PG6PG5PG4PG3PG2PG1PG0
  • PG0–PG15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PGy в Standby и Shutdown (при APC = 1) (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484).
  • PG10 (бит 10) — Подтяжка вверх вывода PG10 в Standby и Shutdown (при APC = 1).
  • PG1 (бит 1) — Подтяжка вверх вывода PG1 в Standby и Shutdown (при APC = 1) (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484).

PWR_PDCRG — подтяжка вниз порта G в Standby и Shutdown

Смещение 0x54, адрес 0x4000 7054, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRG.

31302928272625242322212019181716
—
1514131211109876543210
—PG10PG9PG8PG7PG6PG5PG4PG3PG2PG1PG0
  • PG0–PG10 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PGy в Standby и Shutdown (при APC = 1).
  • PG1 (бит 1) — Подтяжка вниз вывода PG1 в Standby и Shutdown (при APC = 1).

PWR_CR5 — режим главного регулятора: Range 1 Boost

Смещение 0x80, адрес 0x4000 7080, 32 бит, после сброса 0x0000 0100. В коде: PWR->CR5.

31302928272625242322212019181716
—
1514131211109876543210
—R1MODE—
  • R1MODE (бит 8) — Range 1: 0 — режим Boost (выше 150 МГц, до 170 МГц), 1 — обычный режим.

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

Что такое режим Range 1 boost?

Повышенное напряжение ядра для частот выше 150 МГц. По умолчанию R1MODE = 1 (обычный режим, до 150 МГц). Перед разгоном до 170 МГц сбросьте R1MODE, дождитесь VOSF = 0 и только потом поднимайте частоту.

Как перевести STM32G4 в Shutdown?

LPMS = 1xx в PWR_CR1, SLEEPDEEP в SCB->SCR и WFI. Разбудят выводы WKUP, RTC или TAMP; SRAM и регистры теряются, выход — как после сброса.

Источники

  1. STMicroelectronics. RM0440: Reference manual (Rev 9) — раздел 6.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-g4 v1.2.6: заголовки CMSIS stm32g431xx.h, stm32g441xx.h, stm32g471xx.h, stm32g473xx.h, stm32g474xx.h, stm32g483xx.h, stm32g484xx.h, stm32g491xx.h, stm32g4a1xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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