Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Минимальная частота.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM > Kinetis
Jenya7
Я хочу понизить тактовую частоту.
В pll_init() я вижу следующие ограничения
Код
// Check PLL divider settings are within spec.
  if ((prdiv_val < 1) || (prdiv_val > 8)) {return 0x41;}
  if ((vdiv_val < 16) || (vdiv_val > 47)) {return 0x42;}

  // Check PLL reference clock frequency is within spec.
  ref_freq = crystal_val / prdiv_val;
  if ((ref_freq < 8000000) || (ref_freq > 32000000)) {return 0x43;}

// Check PLL output frequency is within spec.
  pll_freq = (crystal_val / prdiv_val) * vdiv_val;
  if ((pll_freq < 180000000) || (pll_freq > 360000000)) {return 0x45;}

Но последнее ограничение пртиворечит другим. Или я что то не понимаю? Какую минимальную частоту я могу задать?
scifi
Не знаю, что за чип, но, судя по коду, частота на выходе PLL должна быть в пределах 180...360 МГц.
Если нужно меньше, должен быть способ поделить эту частоту после PLL. Опять же, не знаю, что за чип, и есть ли там такая возможность.
Jenya7
Цитата(scifi @ Jun 29 2017, 16:01) *
Не знаю, что за чип, но, судя по коду, частота на выходе PLL должна быть в пределах 180...360 МГц.
Если нужно меньше, должен быть способ поделить эту частоту после PLL. Опять же, не знаю, что за чип, и есть ли там такая возможность.

формула такая
PLL out = (((CLKIN/PRDIV) x VDIV) / 2)
но почему 180000000? максимальная частота камня 120000000

чтобы получить 120 мега я делаю
#define CLKIN 50000000
#define PRDIV 5
#define VDIV 24

но если я хочу уменьшить наполовину я влетаю в ограничения.

то есть исходя из if ((pll_freq < 180000000) || (pll_freq > 360000000)) {return 0x45;} минимальный PLL out будет 180000000/2=90000000 так что ли ?
HardEgor
Цитата(Jenya7 @ Jun 29 2017, 18:47) *
PLL out = (((CLKIN/PRDIV) x VDIV) / 2)

Надо отключить PLL и переключиться на HSE, тогда будете только делить частоту
если PRDIV максимум 8, тогда минимальная частота:
F out = CLKIN/16
Jenya7
Цитата(HardEgor @ Jun 29 2017, 16:59) *
Надо отключить PLL и переключиться на HSE, тогда будете только делить частоту
если PRDIV максимум 8, тогда минимальная частота:
F out = CLKIN/16

внешний осцилятор в системе будет 20 Мега это маловато. На демо плате это наверное было бы самое то, там 50 Мега.

как это F out = CLKIN/16? а где x VDIV часть?
HardEgor
Цитата(Jenya7 @ Jun 29 2017, 19:05) *
как это F out = CLKIN/16? а где x VDIV часть?

Раз частота умножается на VDIV, подозреваю что это умножитель PLL, который отключен.
SII
Цитата(Jenya7 @ Jun 29 2017, 14:47) *
формула такая
PLL out = (((CLKIN/PRDIV) x VDIV) / 2)
но почему 180000000? максимальная частота камня 120000000


Вы путаете диапазон частот, допустимых для PLL, и максимальную частоту, с которой может работать собственно процессор. Частоты PLL существенно выше, и рабочая частота получается делением частоты PLL.
sonycman
Цитата(Jenya7 @ Jun 29 2017, 16:05) *
внешний осцилятор в системе будет 20 Мега это маловато. На демо плате это наверное было бы самое то, там 50 Мега.

как это F out = CLKIN/16? а где x VDIV часть?

Посмотрите на диаграмму тактирования из мануала:
Нажмите для просмотра прикрепленного файла
Как видно, для клока ядра существует делитель OUTDIV1, работающий в диапазоне от 1 до 16.
К примеру, с PLL вы получили 360 МГц, делите эту частоту на 3 - получаете 120 МГц системный клок.
Jenya7
Разобрался. Минимальная частота PLL - 180Mhz. На выходе я могу получить 180/2 = 90Mhz.
Всем спасибо за помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.