PLL — фазовая автоподстройка частоты
PLL — блок, который получает высокую тактовую частоту из частоты кварца или внутреннего генератора. Благодаря ему микроконтроллер с кварцем 8 МГц работает на 72 или 168 МГц, а интерфейс USB получает ровно 48 МГц.
Обновлено Редакция GAW
PLL (phase-locked loop, ФАПЧ — фазовая автоподстройка частоты) — схема, которая формирует сигнал с частотой, кратной опорной. Внутри PLL генератор, управляемый напряжением (VCO), выдаёт высокую частоту; она делится и сравнивается по фазе с опорной частотой, а разница подстраивает генератор. Когда петля захватила опорный сигнал, частота VCO равна опорной, умноженной на коэффициент делителя в обратной связи. В микроконтроллерах PLL получает тактовую частоту ядра из частоты кварца — например, 72 МГц из 8 МГц.
PLL в STM32
| STM32F1 | STM32F4 | |
|---|---|---|
| Настройка | множитель PLLMUL ×2…×16 | делитель PLLM, множитель PLLN, делители PLLP и PLLQ |
| Ограничения | выход до 72 МГц | вход VCO 1–2 МГц, VCO 100–432 МГц |
| Пример от 8 МГц | ×9 = 72 МГц | 8 / 4 × 168 / 2 = 168 МГц |
| USB 48 МГц | 72 / 1,5 | VCO / PLLQ = 336 / 7 |
Частота STM32F4 считается так:
Подобрать коэффициенты под свой кварц и нужную частоту, проверить пределы шин и получить значения регистров поможет калькулятор тактирования STM32.
Что ещё учесть
- Такты ожидания флеш-памяти. При повышении частоты ядра флеш-память не успевает выдавать команды, и в регистре FLASH_ACR нужно заранее увеличить LATENCY — сколько, покажет калькулятор тактов ожидания.
- Делители шин. У каждой шины свой предел частоты, а таймеры при делителе шины больше 1 получают удвоенную частоту — это важно для расчёта предделителя.
- Точность. PLL переносит на выход точность опорной частоты, поэтому для USB на STM32F1 и STM32F4 источником служит кварц с правильно подобранной нагрузочной ёмкостью, а не внутренний RC-генератор.
Частые вопросы
Как получить 72 МГц на STM32F103 от кварца 8 МГц?
Включить внешний генератор HSE и умножить его в PLL на 9 (PLLMUL = 0111). Шина APB1 не может работать быстрее 36 МГц, поэтому её делитель — 2. Флеш-памяти на 72 МГц нужно два такта ожидания, а USB получает 72 / 1,5 = 48 МГц.
Как рассчитать PLL STM32F4 на 168 МГц?
С кварцем 8 МГц: PLLM = 4 даёт на входе VCO рекомендуемые 2 МГц, PLLN = 168 — VCO 336 МГц, PLLP = 2 — системная частота 168 МГц, PLLQ = 7 — ровно 48 МГц для USB. Шина APB1 делится на 4 (42 МГц), APB2 — на 2 (84 МГц).
Почему при 180 МГц на STM32F429 не работает USB?
Для 180 МГц VCO должен работать на 360 МГц с PLLP = 2, а 360 МГц не делится на 48 нацело: нужный PLLQ = 7,5 недопустим. Если нужен USB, выбирают 168 МГц — VCO 336 МГц и PLLQ = 7.
Источники
- STMicroelectronics. RM0008 Rev 21. Reference manual: STM32F101xx–STM32F107xx — раздел RCC: PLL ×2…×16 с выходом до 72 МГц, AHB и APB2 до 72 МГц, APB1 до 36 МГц, USB — 48 МГц через делитель USBPRE
- STMicroelectronics. RM0090 Rev 22. Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 — главы 6 и 7 RCC: PLLM 2…63 с входом VCO 1–2 МГц, PLLN 50…432, VCO 100–432 МГц, PLLP 2/4/6/8, PLLQ 2…15 для 48 МГц
Нашли ошибку?
Смотрите также
- Тактирование STM32PLL под нужную частоту, шины, флеш-память, регистры RCC и код
- Такты ожидания флеш-памяти STM32LATENCY в FLASH_ACR по частоте и питанию, таблица и код
- Нагрузочная ёмкость кварцаCL кварца и подбор конденсаторов C1 и C2
- Предделитель таймераPrescaler: делитель тактов перед счётчиком таймера