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

Масштабирование напряжения ядра (voltage scaling)

Внутренний стабилизатор STM32 питает ядро не одним фиксированным напряжением. Чем ниже напряжение ядра, тем меньше потребление, но тем ниже допустимая частота и медленнее флеш-память. Выбор этого напряжения называют масштабированием.

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

Масштабирование напряжения ядра (dynamic voltage scaling) — выбор выходного напряжения внутреннего стабилизатора, которым питаются ядро, память и цифровая периферия STM32. По RM0377 (разд. 6.1.4) повышение VCORE улучшает быстродействие, а понижение экономит энергию. Режим выбирают битами VOS регистра питания, и от него зависят предельная частота и число тактов ожидания флеш-памяти.

STM32L0: Range 1–3

ДиапазонVCOREЧастота с 1 / 0 тактами ожиданияФлеш-память
Range 11,8 В32 / 16 МГцзапись и стирание есть
Range 21,5 В16 / 8 МГцзапись и стирание есть
Range 31,2 В4,2 / 4,2 МГцтолько чтение

Range 1 доступен при VDD выше 1,71 В, Range 2 и 3 — во всём диапазоне 1,65–3,6 В (RM0377, табл. 33). Режим Low-power run разрешён только в Range 2.

STM32L1: те же диапазоны, другие частоты в Range 3

У STM32L1 три диапазона VCORE в пределах 1,2–1,8 В (RM0038, разд. 5.1.5), но пределы частоты по табл. 13 RM0038 отличаются от L0 в Range 3:

ДиапазонС 1 тактом ожиданияБез тактов ожидания
Range 132 МГц16 МГц
Range 216 МГц8 МГц
Range 38 МГц (4,2 МГц у категории 1)4,2 МГц (2,1 МГц у категории 1)

STM32F7: Scale 1–3 и over-drive

У STM32F7 стабилизатор выдаёт около 1,2 В, и биты VOS[1:0] в PWR_CR1 выбирают scale 1, 2 или 3: предельная частота HCLK — 180, 168 и 144 МГц соответственно. Scale 1 и 2 дополнительно расширяет режим over-drive: до 216 и 180 МГц (RM0385, разд. 3.3.2). Менять VOS можно только при выключенном PLL.

STM32H7: VOS0–VOS3

У STM32H743 четыре уровня в режиме Run: VOS3 (0,95–1,05 В) после сброса, VOS2, VOS1 и VOS0 (1,26–1,40 В) — повышенный, который включают битом ODEN регистра SYSCFG_PWRCR только из VOS1 (RM0433, разд. 6.6.2). Для режима Stop есть свои уровни SVOS3–SVOS5. Подобрать такты ожидания под частоту и напряжение помогает калькулятор задержки флеш-памяти.

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

Зачем снижать напряжение ядра, если можно просто уменьшить частоту?

Потому что потребление цифровой логики зависит и от частоты, и от напряжения. RM0377 называет снижение VCORE способом экономить энергию при ограниченном запасе батареи. Плата — меньшая допустимая частота: у STM32L0 в Range 3 (1,2 В) не выше 4,2 МГц, и в этом диапазоне нельзя писать и стирать флеш-память.

Почему STM32H7 после сброса работает медленно?

После сброса и после выхода из Stop или Standby стабилизатор STM32H7 стоит на самом низком уровне VOS3 (0,95–1,05 В). Прежде чем поднимать частоту, программа переключает VOS на нужный уровень в PWR_D3CR и ждёт флага готовности, а для максимальной частоты ещё включает VOS0 битом ODEN в SYSCFG_PWRCR.

Как масштабирование напряжения связано с тактами ожидания?

Скорость флеш-памяти зависит от напряжения ядра, поэтому число тактов ожидания выбирают по паре частота — диапазон. У STM32L0 в Range 1 без тактов ожидания можно работать до 16 МГц, а в Range 2 — только до 8 МГц. У STM32H7 таблица 17 RM0433 задаёт частоты флеш-памяти отдельно для VOS0–VOS3.

Источники

  1. STMicroelectronics. RM0377: Ultra-low-power STM32L0x1 advanced Arm-based 32-bit MCUs. Reference manual, Rev 10 — разд. 6.1.4: динамическое масштабирование напряжения — увеличение или уменьшение VCORE по обстоятельствам; Range 1 — высокая производительность, 1,8 В тип., при VDD выше 1,71 В, программирование флеш-памяти возможно; при VDD ниже 2,0 В частоту поднимать не больше чем в 4 раза за шаг с паузой 5 мкс; Range 2 — 1,5 В, Range 3 — 1,2 В, без ограничений на VDD 1,65–3,6 В; в Range 3 запись и стирание флеш-памяти невозможны; табл. 33: частота с 1 и 0 тактами ожидания — Range 1 32/16 МГц, Range 2 16/8 МГц, Range 3 4,2/4,2 МГц; табл. 14 — диапазоны VCORE 1,65–1,95, 1,35–1,65, 1,05–1,35 В
  2. STMicroelectronics. RM0385: STM32F75xxx and STM32F74xxx advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — разд. 4.1.4: в режиме Run выход стабилизатора около 1,2 В масштабируется битами VOS[1:0] регистра PWR_CR1 (scale 1, 2, 3); менять можно только при выключенном PLL и HSI или HSE в качестве системного такта, новое значение действует после включения PLL; при выключенном PLL и после выхода из Stop автоматически выбирается scale 3; разд. 3.3.2: VOS = 0x01 — HCLK до 144 МГц, 0x10 — до 168 МГц (180 с over-drive), 0x11 — до 180 МГц (216 с over-drive)
  3. STMicroelectronics. RM0433: STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — разд. 6.6.2: домены D1, D2, D3 питаются от одного стабилизатора с масштабированием: Run — VOS0 (подъём VCORE), VOS1, VOS2, VOS3; Stop — SVOS3, SVOS4, SVOS5; после сброса — VOS3; VOS меняют на лету битами VOS регистра PWR_D3CR; после выхода из Stop или Standby — снова VOS3; VOS0 включают битом ODEN регистра SYSCFG_PWRCR только из VOS1; табл. 17 — диапазоны VCORE: VOS3 0,95–1,05 В, VOS2 1,05–1,15 В, VOS1 1,15–1,26 В, VOS0 1,26–1,40 В и частоты флеш-памяти для каждого числа тактов ожидания
  4. STMicroelectronics. RM0038: STM32L100xx, STM32L151xx, STM32L152xx and STM32L162xx advanced Arm-based 32-bit MCUs. Reference manual, Rev 18 — разд. 5.1.5: три диапазона VCORE в пределах 1,2–1,8 В, Range 1 — высокая производительность; табл. 13 — без тактов ожидания до 16 МГц в Range 1, 8 МГц в Range 2, 4,2 МГц (2,1 МГц у категории 1) в Range 3; с одним тактом — 32, 16 и 8 МГц (4,2 МГц у категории 1)

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