Тактирование в f407

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
__focus
Родился
Сообщения: 1
Зарегистрирован: Сб фев 08, 2020 08:35:00

Тактирование в f407

Сообщение __focus »

Доброго времени суток. Учу основы stm. Пытаюсь разобраться с регулировкой тактирования.
в reference manual нашел схему. начало кода https://pastebin.com/p875ni1t
Но не пойму как дальше писать.
1. по схеме HSE (4-26 MHz) - как определить и настроить точное значение? от чего зависит
2.и HSE и HSI судя по схеме проходят через блок SW - он определяет от чего тактируемся - регистр нашел.
3. а вот куда дальше двигаться?
4. читал на форумах - зачем то еще с flash-ом указывают доп настройки..

В общем в тупике. и да - использую cmsis
Вложения
Снимок экрана от 2020-02-08 08-15-56.png
схема
(63.3 КБ) 215 скачиваний
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: Тактирование в f407

Сообщение optima »

А поставить cubemx не судьба? это не панацея, но на старте незаменимая вещь!
Вложения
куб.jpg
(220.66 КБ) 208 скачиваний
Аватара пользователя
HardWareMan
Мучитель микросхем
Сообщения: 429
Зарегистрирован: Ср сен 02, 2015 07:47:20

Re: Тактирование в f407

Сообщение HardWareMan »

Выбор кварца на HSE зависит от того, будет ли использоваться какое-то особое оборудование, вроде I2S. А если только ядро да USB, тогда можно взять любой из рекомендуемых, M выбрать равным кварцу, чтобы на PLL зашло 1МГц, а далее N=336, P=2 и Q=7, так мы получаем PLLCLK=168МГц и 48МГц для USB. Остальные делители по вкусу.
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Тактирование в f407

Сообщение VladislavS »

4. читал на форумах - зачем то еще с flash-ом указывают доп настройки..
Flash не может работать на полной скорости процессора. При старте, пока процессор работает от HSI, она успевает работать с минимальными задержками. Перед повышением частоты надо добавлять задержки в параметры flash, иначе будут страшные необъяснимые глюки.

В общем в тупике. и да - использую cmsis
Похвально. У меня на f407 нет, но вот смотри как на F411 частоты поднимаются. Возьми этот шаблон за основу - там разница не шибко большая будет. Открой куб, как посоветовал optima, и просчитай в нём все делители. Ну и по RM впиши их в регистры по этому шаблону.

Код: Выделить всё

  // Настройка FLASH
  FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_3WS;
 
  // ---------- Тактирование ----------
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON; //Включаем HSE = 8 MHz
  while(!(RCC->CR & RCC_CR_HSERDY));
  //Задаём источники тактирования и делители SYSCLK = 96 МГц  USB = 48 МГц 
  RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSE | _VAL2FLD(RCC_PLLCFGR_PLLQ,4) | _VAL2FLD(RCC_PLLCFGR_PLLN,96) | _VAL2FLD(RCC_PLLCFGR_PLLM,4) | RCC_PLLCFGR_PLLP_div2;
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON | RCC_CR_PLLON; //Включаем PLL
  while(!(RCC->CR & RCC_CR_PLLRDY));
  //Переключаемся на PLL и установливаем делители
  RCC->CFGR = RCC_CFGR_MCO2_HSE | RCC_CFGR_MCO2PRE_div1 | RCC_CFGR_MCO1PRE_div1 | RCC_CFGR_I2SSRC_PLLI2S | RCC_CFGR_MCO1_HSE |
              _VAL2FLD(RCC_CFGR_RTCPRE,8) | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
Trully
Встал на лапы
Сообщения: 118
Зарегистрирован: Вс авг 18, 2019 13:22:01

Re: Тактирование в f407

Сообщение Trully »

1. HSE будет таким, какой кварц вы поставите. И не обязательно 8 МГц. Можно даже 4,33 МГц или 8,192 МГц.
2. Да. Это просто переключатель - от чего будет работать МК дальше. От внешнего кварца HSE, от внутреннего RC-осциллятора HSI на 8 МГц или даже от умножителя частоты PLL.
3. А всё, можно никуда дальше и не двигаться. Дальше идет главный предделитель, его можно оставлять 1:1, и предделители двух основных периферийных шин. Скоростная APB2 и помедленнее APB1. Пока работаете от HSE или HSI, их тоже можно оставить 1:1 и не трогать. Если будете работать через умножитель частоты, подняв частоту, то у этих шин прописана максимальная частота - и делителями шин можно уложиться в допуск. Потом посмотрите, что такое PLL - фазовый умножитель частоты.
4. Пока работаете на низкой частоте примерно до 24 МГц, это вас не должно волновать, можно ничего не трогать. А как только частота будет выше (от PLL), надо внести поправки. В референс-мануале написано, сколько циклов ожидания нужно добавить для выбранного диапазона тактовой частоты и имеющегося напряжения питания (про напряж. питания часто забывают!)
to be or not to be = -1
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Тактирование в f407

Сообщение dosikus »

__focus, с картинками - http://mcu.goodboard.ru/viewtopic.php?id=11
Ответить

Вернуться в «ARM»