Масштабирование напряжения ядра (voltage scaling)
Внутренний стабилизатор STM32 питает ядро не одним фиксированным напряжением. Чем ниже напряжение ядра, тем меньше потребление, но тем ниже допустимая частота и медленнее флеш-память. Выбор этого напряжения называют масштабированием.
Обновлено Редакция GAW
Масштабирование напряжения ядра (dynamic voltage scaling) — выбор выходного напряжения внутреннего стабилизатора, которым питаются ядро, память и цифровая периферия STM32. По RM0377 (разд. 6.1.4) повышение VCORE улучшает быстродействие, а понижение экономит энергию. Режим выбирают битами VOS регистра питания, и от него зависят предельная частота и число тактов ожидания флеш-памяти.
STM32L0: Range 1–3
| Диапазон | VCORE | Частота с 1 / 0 тактами ожидания | Флеш-память |
|---|---|---|---|
| Range 1 | 1,8 В | 32 / 16 МГц | запись и стирание есть |
| Range 2 | 1,5 В | 16 / 8 МГц | запись и стирание есть |
| Range 3 | 1,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 1 | 32 МГц | 16 МГц |
| Range 2 | 16 МГц | 8 МГц |
| Range 3 | 8 МГц (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.
Источники
- 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 В
- 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)
- 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 В и частоты флеш-памяти для каждого числа тактов ожидания
- 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)
Нашли ошибку?
Смотрите также
- Такт ожиданияЛишние такты при обращении к медленной памяти: частоты, настройка, кэш
- Режим over-drive (STM32F7)Режим стабилизатора STM32F7, поднимающий предельную частоту ядра до 216 МГц
- Такты ожидания флеш-памяти STM32LATENCY в FLASH_ACR по частоте и питанию, таблица и код
- Тактирование STM32PLL под нужную частоту, шины, флеш-память, регистры RCC и код
- Режим Low-power run (LP run)Выполнение программы при стабилизаторе в режиме малого потребления и частоте MSI range 1
- STM32H7Cortex-M7 от 280 до 600 МГц, двухъядерные H745/H747 — линейки, память, загрузка и распиновки
- STM32L0Cortex-M0+, до 32 МГц, малое потребление: L010, L0x1, L0x2 с USB, L0x3 с ЖКИ — линейки и распиновки