Перейти к содержанию
    

Приветствую!

Проблема в следующем: PLL не хочет устанавливаться в качестве SYSCLK. В регистре CFGR не устанавливаются соответствующие биты SWS и программа не выходит из цикла ожидания этих битов. В чем может быть косяк?

    //Включаем HSE на 24МГц и ждем его готовности
    RCC->CR |= RCC_CR_HSEON;
    while((RCC->CR & RCC_CR_HSERDY) != RCC_CR_HSERDY)
    {
    }
    //HSE как источник тактов для PLL
    RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE;
    //Настройка коэффициентов PLL: PLLM = 6; PLLN = 8
    RCC->PLLCFGR |= (RCC_PLLCFGR_PLLM_0 | RCC_PLLCFGR_PLLM_2);
    RCC->PLLCFGR ^= RCC_PLLCFGR_PLLN_4;
    RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_3;
    //Включаем PLL и ждем его готовности
    RCC->CR |= RCC_CR_PLLON;
    while((RCC->CR & RCC_CR_PLLRDY) != RCC_CR_PLLRDY)
    {
    }
    //Подключаем PLL в качестве SYSCLK
    RCC->CFGR |= RCC_CFGR_SW_1;
    while((RCC->CFGR & RCC_CFGR_SWS_PLL) != RCC_CFGR_SWS_PLL)
    {
    }
    //Обновляем системную частоту
    SystemCoreClockUpdate();
    //Выключаем HSI
    RCC->CR ^= RCC_CR_HSION;

 

Изменено пользователем haker_fox
Для оформления кода есть кнопка <>.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/1/2023 at 1:12 PM, Sergo1799 said:

В чем может быть косяк?

Посмотрите в datasheet какая допустимая входная частота для PLL.
Посмотрите какой допустимый диапазон выходных частот VCO PLL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, dimka76 said:

Посмотрите в datasheet какая допустимая входная частота для PLL.
Посмотрите какой допустимый диапазон выходных частот VCO PLL.

Смотрел уже - 16 МГц, VCO соответственно 32 МГц должно быть на выходе, максимум 170 МГц по даташиту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, dimka76 said:

а минимум ?

fVCO_OUT минимум 96 МГц, т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29 minutes ago, Sergo1799 said:

Нет, сам писал. А что?

Сделать кубом и сравнить религия не позволяет ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/1/2023 at 2:00 PM, Sergo1799 said:

fVCO_OUT минимум 96 МГц, т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц?

Да. Только сначала посмотрите для чего P, для чего Q, а для чего R нужен. И выберите правильный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, Sergo1799 сказал:

т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц?

Да. А также убедиться, что подано питание на AVDD и не забыть перед переключением правильно настроить количество тактов ожидания флеши

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Sergo1799 сказал:

   RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE;
    //Настройка коэффициентов PLL: PLLM = 6; PLLN = 8
    RCC->PLLCFGR |= (RCC_PLLCFGR_PLLM_0 | RCC_PLLCFGR_PLLM_2);
    RCC->PLLCFGR ^= RCC_PLLCFGR_PLLN_4;
    RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_3;

что за дикие конструкции??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, dimka76 said:

Да. Только сначала посмотрите для чего P, для чего Q, а для чего R нужен. И выберите правильный.

Все заработало. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На будущее, в кубе отличный конфигуратор системы тактирования. Не надо даже код генерить, а просто установить все делители и переключатели правильно и на их основе код написать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, VladislavS said:

На будущее, в кубе отличный конфигуратор системы тактирования. Не надо даже код генерить, а просто установить все делители и переключатели правильно и на их основе код написать.

Если мышки решили стать ёжиками, то они не слушают никого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/1/2023 at 5:54 PM, x893 said:

Если мышки решили стать ёжиками, то они не слушают никого.

Достался мне на работе проект под STM32 написанный на HAL.

Точнее даже его заготовка.

Проект простой. PLL, UART, DMA, GPIO.

Вся настройка периферии, прием и передача данных (даже без протоколов) в скомпилированном виде составляла порядка 30 кБайт.

Т.е. размер бинарника был порядка 30 кБайт.

Выкинул HAL, написал все на регистрах за полтора дня с перекурами и чаяпитениями. И мой бинарник получился порядка 4 кБайт !!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...