Sergo1799 0 1 июня, 2023 Опубликовано 1 июня, 2023 (изменено) · Жалоба Приветствую! Проблема в следующем: 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; Изменено 1 июня, 2023 пользователем haker_fox Для оформления кода есть кнопка <>. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба Куб генерил ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergo1799 0 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 6 minutes ago, x893 said: Куб генерил ? Нет, сам писал. А что? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба On 6/1/2023 at 1:12 PM, Sergo1799 said: В чем может быть косяк? Посмотрите в datasheet какая допустимая входная частота для PLL. Посмотрите какой допустимый диапазон выходных частот VCO PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergo1799 0 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 3 minutes ago, dimka76 said: Посмотрите в datasheet какая допустимая входная частота для PLL. Посмотрите какой допустимый диапазон выходных частот VCO PLL. Смотрел уже - 16 МГц, VCO соответственно 32 МГц должно быть на выходе, максимум 170 МГц по даташиту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба On 6/1/2023 at 1:43 PM, Sergo1799 said: максимум 170 МГц по даташиту. а минимум ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergo1799 0 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 5 minutes ago, dimka76 said: а минимум ? fVCO_OUT минимум 96 МГц, т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 29 minutes ago, Sergo1799 said: Нет, сам писал. А что? Сделать кубом и сравнить религия не позволяет ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба On 6/1/2023 at 2:00 PM, Sergo1799 said: fVCO_OUT минимум 96 МГц, т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц? Да. Только сначала посмотрите для чего P, для чего Q, а для чего R нужен. И выберите правильный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 7 минут назад, Sergo1799 сказал: т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц? Да. А также убедиться, что подано питание на AVDD и не забыть перед переключением правильно настроить количество тактов ожидания флеши Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 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; что за дикие конструкции?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergo1799 0 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 2 hours ago, dimka76 said: Да. Только сначала посмотрите для чего P, для чего Q, а для чего R нужен. И выберите правильный. Все заработало. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба На будущее, в кубе отличный конфигуратор системы тактирования. Не надо даже код генерить, а просто установить все делители и переключатели правильно и на их основе код написать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 2 minutes ago, VladislavS said: На будущее, в кубе отличный конфигуратор системы тактирования. Не надо даже код генерить, а просто установить все делители и переключатели правильно и на их основе код написать. Если мышки решили стать ёжиками, то они не слушают никого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба On 6/1/2023 at 5:54 PM, x893 said: Если мышки решили стать ёжиками, то они не слушают никого. Достался мне на работе проект под STM32 написанный на HAL. Точнее даже его заготовка. Проект простой. PLL, UART, DMA, GPIO. Вся настройка периферии, прием и передача данных (даже без протоколов) в скомпилированном виде составляла порядка 30 кБайт. Т.е. размер бинарника был порядка 30 кБайт. Выкинул HAL, написал все на регистрах за полтора дня с перекурами и чаяпитениями. И мой бинарник получился порядка 4 кБайт !!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться