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

Домены питания D1, D2 и D3 (STM32H7)

У большинства STM32 вся цифровая часть засыпает и просыпается целиком. В STM32H7 её разделили на три домена: ядро с памятью, основную периферию и системный блок с периферией малого потребления. Каждый может спать отдельно.

Обновлено Редакция GAW

Домены D1, D2 и D3 — три части цифрового ядра микроконтроллеров STM32H7 (на примере STM32H743, RM0433), у которых свои режимы работы и сна. Все три питаются от одного стабилизатора напряжением VCORE, но тактирование и выключение у каждого своё.

Что в каждом домене (RM0433, разд. 6.4.2 и 6.6)

ДоменСодержимое
D1ядро Cortex-M7, флеш-память, часть периферии на шине AXI
D2большая часть периферии, DMA1 и DMA2
D3управление системой, логика ввода-вывода, периферия малого потребления, BDMA

Вне этих доменов — резервный домен с RTC и схемы Standby: их VCORE не питает.

Режимы доменов

У каждого домена три состояния:

  • DRun — питание и такт есть;
  • DStop — питание есть, такта нет, содержимое сохраняется;
  • DStandby — домен обесточен.

RM0433 называет режимы D1 и D2 независимыми, но в одноядерном STM32H743 их связывает ядро (табл. 40): когда ядро в CStop, D1 и D2 уходят в DStop вместе. Возможен только обратный случай — ядро работает, D1 в DRun, а D2 в DStop, если за ядром не закреплено ни одного блока D2. D3 подчиняется им: система уходит в Stop, только когда D1 и D2 оба в DStop или DStandby, и в Standby — когда оба в DStandby.

Что это даёт

  • Работа без ядра. Периферия D3 со своим BDMA и мультиплексором DMAMUX2 собирает данные, пока D1 спит: RM0433 приводит пример передачи из SRAM4 в LPUART1 через BDMA.
  • Экономия. Ненужный домен D2 можно обесточить в DStandby.
  • Общее напряжение. Уровень VCORE для всех трёх задаётся одним полем VOS в PWR_D3CR — см. масштабирование напряжения ядра.

Разделение на домены объясняет, почему у STM32H7 несколько контроллеров DMA и почему BDMA видит только память и периферию домена D3. В RM0433 сценарию с работающим D3 при спящих D1 и D2 посвящена отдельная глава 7 «Low-power D3 domain application example».

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

Что находится в доменах D1, D2 и D3 STM32H743?

По RM0433 D1 — ядро Cortex-M7, флеш-память и часть периферии на шинах AXI; D2 — большая часть периферии с DMA1 и DMA2; D3 — управление системой, логика ввода-вывода и периферия малого потребления, например LPUART1, SPI6, I2C4 и BDMA с памятью SRAM4.

Может ли домен D3 работать, когда ядро спит?

Да. Система с доменом D3 может оставаться в Run, когда ядро в CStop, а D1 и D2 в DStop, — пока активен сигнал пробуждения (автономный режим D3): этому сценарию в RM0433 посвящена отдельная глава 7 «Low-power D3 domain application example». Так BDMA может перекладывать данные из LPUART1 в SRAM4, пока D1 с ядром в DStop. В режим Stop весь микроконтроллер уходит, только когда и D1, и D2 в DStop или DStandby.

Можно ли питать домены разным напряжением?

Нет: по RM0433 D1, D2 и D3 питаются от одного стабилизатора с общим уровнем VCORE, который выбирают битами VOS. Отдельно домены различаются тактированием и режимами сна, а D1 и D2 можно полностью обесточить в DStandby.

Источники

  1. STMicroelectronics. RM0433: STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — разд. 6.4.2: VCORE питает всю цифровую часть, кроме резервного домена и схем Standby; VCORE разделён на D1 (Cortex-M7, флеш-память и периферия), D2 (периферия) и D3 (управление системой, логика ввода-вывода и периферия малого потребления); разд. 6.6: D1 — часть периферии и ядро, D2 — большая часть периферии, D3 — часть периферии и управление системой; режимы DRun/Run (питание и такт есть), DStop/Stop (питание есть, такта нет), DStandby/Standby (нет ни того, ни другого); режимы D1 и D2 независимы, D3 уходит в Stop, только когда D1 и D2 в DStop или DStandby, в Standby — когда оба в DStandby; все три домена питаются от одного стабилизатора с общим уровнем VCORE; D1 и D2 можно обесточить по отдельности в DStandby; разд. 6.7.6–6.7.7, табл. 40: D1 и D2 уходят в DStop только при ядре в CStop — тогда оба; при CRun или CSleep D1 в DRun, а D2 в DStop, если за ядром не закреплено блоков D2; система остаётся в Run, пока активен сигнал пробуждения (автономный режим D3); разд. 17.3.1 — DMAMUX1 для DMA1/DMA2 в D2, DMAMUX2 для BDMA в D3; рис. 39 — передача SRAM4 → LPUART1 через BDMA при работающем D3
  2. STMicroelectronics. CMSIS device header stm32h743xx.h, cmsis-device-h7 v1.10.7 (GitHub, Apache-2.0) — регистры PWR_D3CR (поле VOS) и RCC_D1CFGR, RCC_D2CFGR, RCC_D3CFGR — делители тактов по доменам

Нашли ошибку?