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

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

Сообщение __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 КБ) 220 скачиваний
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Сообщение optima »

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

Сообщение HardWareMan »

Выбор кварца на HSE зависит от того, будет ли использоваться какое-то особое оборудование, вроде I2S. А если только ядро да USB, тогда можно взять любой из рекомендуемых, M выбрать равным кварцу, чтобы на PLL зашло 1МГц, а далее N=336, P=2 и Q=7, так мы получаем PLLCLK=168МГц и 48МГц для USB. Остальные делители по вкусу.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="__focus",url="/forum/viewtopic.php?p=3787145#p3787145"]4. читал на форумах - зачем то еще с flash-ом указывают доп настройки..[/uquote]Flash не может работать на полной скорости процессора. При старте, пока процессор работает от HSI, она успевает работать с минимальными задержками. Перед повышением частоты надо добавлять задержки в параметры flash, иначе будут страшные необъяснимые глюки.

[uquote="__focus",url="/forum/viewtopic.php?p=3787145#p3787145"]В общем в тупике. и да - использую cmsis[/uquote]Похвально. У меня на 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;
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 118
Зарегистрирован: Вс авг 18, 2019 13:22:01

Сообщение 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
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

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

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