Страница 1 из 1
Тактирование в f407
Добавлено: Сб фев 08, 2020 08:44:11
__focus
Доброго времени суток. Учу основы stm. Пытаюсь разобраться с регулировкой тактирования.
в reference manual нашел схему. начало кода
https://pastebin.com/p875ni1t
Но не пойму как дальше писать.
1. по схеме HSE (4-26 MHz) - как определить и настроить точное значение? от чего зависит
2.и HSE и HSI судя по схеме проходят через блок SW - он определяет от чего тактируемся - регистр нашел.
3. а вот куда дальше двигаться?
4. читал на форумах - зачем то еще с flash-ом указывают доп настройки..
В общем в тупике. и да - использую cmsis
Re: Тактирование в f407
Добавлено: Сб фев 08, 2020 09:34:33
optima
А поставить cubemx не судьба? это не панацея, но на старте незаменимая вещь!
Re: Тактирование в f407
Добавлено: Сб фев 08, 2020 09:54:01
HardWareMan
Выбор кварца на HSE зависит от того, будет ли использоваться какое-то особое оборудование, вроде I2S. А если только ядро да USB, тогда можно взять любой из рекомендуемых, M выбрать равным кварцу, чтобы на PLL зашло 1МГц, а далее N=336, P=2 и Q=7, так мы получаем PLLCLK=168МГц и 48МГц для USB. Остальные делители по вкусу.
Re: Тактирование в f407
Добавлено: Сб фев 08, 2020 10:09:07
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;
Re: Тактирование в f407
Добавлено: Сб фев 08, 2020 11:10:29
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), надо внести поправки. В референс-мануале написано, сколько циклов ожидания нужно добавить для выбранного диапазона тактовой частоты и имеющегося напряжения питания (про напряж. питания часто забывают!)
Re: Тактирование в f407
Добавлено: Ср фев 12, 2020 16:26:58
dosikus