MicroPython:Библиотеки/pyb/pyb.freq()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


pyb.freq()[1]

  • pyb.freq([sysclk[, hclk[, pclk1[, pclk2]]]]) – если не задавать в этой функции никаких аргументов, она вернет кортеж с тактовыми частотами: (sysclk, hclk, pclk1, pclk2). Они означают следующее:
    • sysclk – частота процессора.
    • hclk – частота шины AHB (оперативная память и DMA).
    • pclk1 – частота шины APB1.
    • pclk2 – частота шины APB2.

Если задать в этой функции аргументы, она задаст частоту процессора и шин. Частота задается в герцах. Например, freq(120000000) задаст частоту процессора (sysclk) на 120 МГц. Поддерживаются не все значения, и функцией будет выбрано наибольшее поддерживаемое значение, но не выше того, что было задано в аргументе.

Поддерживаемые частоты для sysclk (в МГц): 8, 16, 24, 30, 32, 36, 40, 42, 48, 54, 56, 60, 64, 72, 84, 96, 108, 120, 144, 168.

Максимальная частота для hclk – это 168 МГц, для pclk1 – 42 МГц, для pclk2 – 84 МГц. Ни в коем случае не задавайте частоты, превышающие эти значения.

Частоты для hclk, pclk1 и pclk2 – это производные от частоты sysclk (они генерируются при помощи предварительных делителей частоты). Поддерживаемые делители для hclk: 1, 2, 4, 8, 16, 64, 128, 256, 512. Поддерживаемые делители для pclk1 и pclk2: 1, 2, 4, 8. Выбор делителя будет осуществляться так, чтобы он наилучшим образом соответствовал запрошенной частоте.

Частота sysclk в 8 МГц напрямую использует HSE-генератор (внешний высокоскоростной генератор), а в 16 МГц – HSI-генератор (внутренний высокоскоростной генератор). Более высокие частоты используются HSE-генератором для управления PLL (фазовой автоподстройкой частоты), а затем используют результат PLL.

Если поменять частоту при включенном USB-соединении, оно может стать ненадежным. Частоту лучше менять в «boot.py» – еще до запуска USB-компонентов. Также помните, что при частоте процессора ниже 36 МГц USB-соединение будет работать некорректно.

<syntaxhighlight lang="python" enclose="div">

См.также

Внешние ссылки