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

PLL — фазовая автоподстройка частоты

PLL — блок, который получает высокую тактовую частоту из частоты кварца или внутреннего генератора. Благодаря ему микроконтроллер с кварцем 8 МГц работает на 72 или 168 МГц, а интерфейс USB получает ровно 48 МГц.

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

PLL (phase-locked loop, ФАПЧ — фазовая автоподстройка частоты) — схема, которая формирует сигнал с частотой, кратной опорной. Внутри PLL генератор, управляемый напряжением (VCO), выдаёт высокую частоту; она делится и сравнивается по фазе с опорной частотой, а разница подстраивает генератор. Когда петля захватила опорный сигнал, частота VCO равна опорной, умноженной на коэффициент делителя в обратной связи. В микроконтроллерах PLL получает тактовую частоту ядра из частоты кварца — например, 72 МГц из 8 МГц.

PLL в STM32

STM32F1STM32F4
Настройкамножитель 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,5VCO / PLLQ = 336 / 7

Частота STM32F4 считается так:

fVCO=fвх⋅PLLNPLLM,fSYSCLK=fVCOPLLP,fUSB=fVCOPLLQf_\text{VCO} = f_\text{вх} \cdot \frac{PLLN}{PLLM}, \qquad f_\text{SYSCLK} = \frac{f_\text{VCO}}{PLLP}, \qquad f_\text{USB} = \frac{f_\text{VCO}}{PLLQ}

Подобрать коэффициенты под свой кварц и нужную частоту, проверить пределы шин и получить значения регистров поможет калькулятор тактирования 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.

Источники

  1. STMicroelectronics. RM0008 Rev 21. Reference manual: STM32F101xx–STM32F107xx — раздел RCC: PLL ×2…×16 с выходом до 72 МГц, AHB и APB2 до 72 МГц, APB1 до 36 МГц, USB — 48 МГц через делитель USBPRE
  2. 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 МГц

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