реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Настройка тактирования STM32F373, через StdPeriph_rcc
styuf
сообщение Jan 9 2017, 15:29
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Добрый день!
Разобравшись с правильным тактирование USB в мк данного типа, обнаружил, что не могу через функции стандартной библиотеки переферии rcc сконфигурировать частоты шин, и, соответственно, таймера.
Что хочу: хочу, имея внешинй кварц на 8 МГц, получить 48 МГц на шине USB, 48 - Мгц SYSCLK, 24 МГц - APB1, 48 МГц - TIM2.
Пишу код вот такой:

CODE
/* rcc init start */
RCC_DeInit(); //reset all rcc settings
RCC_HSICmd(DISABLE); //hsi off
RCC_HSEConfig(RCC_HSE_ON); //hse on
RCC_PREDIV1Config(RCC_PREDIV1_Div1); //div1-hse pll_in
RCC_PLLConfig(RCC_PLLSource_PREDIV1 ,RCC_PLLMul_6); // pll_clock=(8MHz/1)*6=48MHz
RCC_PLLCmd(ENABLE); // pll enable
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //pll_clk is system clk source
RCC_HCLKConfig(RCC_SYSCLK_Div2); //ahb_clk_devider
RCC_PCLK1Config(RCC_HCLK_Div2); //apb1_clk_devider
/* rcc init end */


Далее настраиваю таймер, на мегание в 1-у секунду. И он мигает с частотой около одной секунды. Экспериментально установлено, что он мигает с частотой, соответствующей частоте таймера в 72МГц, а не 48, как планировалось. 72 - это цифра для настроек по умолчанию, но ведь я их заменяю на новые!

Попробовал все тоже самое проделать через CubeMX - и получилось с первого раза. Есть какой-то нюанс, видимо в ручной настройки тактирования.

Если кто-то понимает в чем дело - помогите, пожалуйста.

Сообщение отредактировал styuf - Jan 9 2017, 16:01
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2017, 17:11
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 7 367
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А PLL от чего тактируется? Reference Manual круче StdLib + CubeMX.
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 9 2017, 17:15
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



PLL тактирует от внешнего источника (на это указывает данный параметр - RCC_PLLSource_PREDIV1).
Схема тактирования проинициализирована согласна reference manual: внешний источник подается через предделитель с коэффициентом 1 на PLL (в котором умножается на 6), затем выбирается как источник для системного клока.

В то-то и проблема. Я сначала написал код. потом те же коэффициенты и клоки использовал в сube. В первом случае нет результата, во втором присутствует.

Сообщение отредактировал styuf - Jan 9 2017, 17:26
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2017, 20:11
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 7 367
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Для меня не очевидно по имени PREDIV1, что используется HSE.
Вообще, при включении HSE нужно дождаться его включения. Аналогично и с PLL.
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 11 2017, 16:14
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Спасибо. Попробую реализовать и отпишусь, как получу или не получу результат.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th May 2017 - 02:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01344 секунд с 7
ELECTRONIX ©2004-2016