0 / 0 / 1
Регистрация: 07.02.2022
Сообщений: 33
|
||||||
1 | ||||||
STM32f4 настройка PLL20.02.2022, 16:44. Показов 1302. Ответов 11
Здравствуйте, правильно ли я понимаю, что макрос
![]() Как тогда выставить множитель N? У Stm он может достигать 400 и выше. Хочется, чтобы код был красивым и читаемым, а не какие-нибудь побитовые или сдвиговые операции. Есть ли альтернатива данному макросу?
0
|
|
20.02.2022, 16:44 | |
Ответы с готовыми решениями:
11
Настройка PLL множителей на stm32f407vet6 STM32f4 настройка таймера STM32F4 Discovery Настройка таймеров stm32f4 настройка альтернативной функции |
Заблокирован
|
||||||
20.02.2022, 17:00 | 2 | |||||
![]() Решение
Вопрос 1: откуда этот макрос?
Вопрос 2: где документация? Там все должно быть написано. Или хотя бы в комментариях к макросу. Добавлено через 5 минут UPD, grep -R нашел этот макрос в недрах CMSIS:
0
|
0 / 0 / 1
Регистрация: 07.02.2022
Сообщений: 33
|
||||||
20.02.2022, 18:01 [ТС] | 3 | |||||
Да, спасибо. В чем же тогда проблема? Пока N меньше 256 все работает отлично, когда я ставлю N = 256 и больше, контроллер начинает считать примерно в 2 раза быстрее заданного.
0
|
38 / 31 / 9
Регистрация: 29.03.2019
Сообщений: 345
|
|
21.02.2022, 16:31 | 4 |
В том, что выходная частота с PLL должна быть в определенном диапазоне, например 100MHz <= Fpll <= 500MHz, я так думаю
0
|
38 / 31 / 9
Регистрация: 29.03.2019
Сообщений: 345
|
|
21.02.2022, 16:44 | 5 |
Вот
0
|
Заблокирован
|
|
21.02.2022, 16:48 | 6 |
Поле PLLN 9-битное, т.е. числа до 511 туда писать легитимно.
Вот только если заглянуть в RM, видно, что очень много значений его — неверные! 256 - легитимное значение. Возможно, неправильно работает макрос. Советую посмотреть листинг этого участка кода: во что его превращает gcc. Или даже можно сначала просто раскрыть макросы при помощи флага -E Кстати, что за MCU конкретно?
0
|
0 / 0 / 1
Регистрация: 07.02.2022
Сообщений: 33
|
|||||||||||
21.02.2022, 22:02 [ТС] | 7 | ||||||||||
На плате кварц 25МГц, я эту частоту делю с помощью М на 25, а потом с помощью N умножаю на 256, получается 256МГц, по документации на контроллер: The software has to set these bits correctly to ensure that the VCO output frequency is between 192 and 432 MHz. И частота и множитель находятся в разрешенном диапазоне.
Добавлено через 10 минут Проверил работу макроса, сделав побитовые операции
Контроллер Stm32f401ccu6. Никогда такое не пробовал, не могли бы вы вкратце объяснить процедуру или подсказать где это описывается? Добавлено через 21 минуту Получилось. Если обнуляю предыдущие биты явно
0
|
0 / 0 / 1
Регистрация: 07.02.2022
Сообщений: 33
|
|||||||||||
21.02.2022, 22:42 [ТС] | 9 | ||||||||||
Что в итоге получилось. Если перед выставлением множителя N, обнулить все его биты
Это все, что удалось получить опытным путем. Если кто то знает почему так происходит, будет интересно услышать. Я пока нигде в описании настройки тактовой частоты не встречал таких нюансов. Добавлено через 6 минут Я эти макросы не задаю, возможно они описаны где то в библиотеке CMSIS.
0
|
Заблокирован
|
|||||||||||||||||||||
21.02.2022, 22:58 | 10 | ||||||||||||||||||||
Я уже приводил, что в этом макросе:
0
|
0 / 0 / 1
Регистрация: 07.02.2022
Сообщений: 33
|
|
21.02.2022, 23:49 [ТС] | 11 |
Я предполагаю, что в CMSIS где то прописаны числовые значения RCC_PLLCFGR_PLLN_Pos и RCC_PLLCFGR_PLLN_Msk, так как без определения их в моей программе она работает.
Значит ли это что множитель N в регистре PLLCFGR изначально не равен нулю и когда я вручную выставляю девятый бит (или значение 256 с помощью макроса) через операцию |, биты накладываются друг на друга и получается неверная величина?
0
|
Заблокирован
|
|
22.02.2022, 00:01 | 12 |
В RM написано, какое там значение после сброса: 0x24003010, т.е. в регистре PLLN после сброса записано 192. Естественно, ксорить это с 256 не очень хорошо: получится 448 - запрещенное значение, поведение будет непредсказуемым.
0
|
22.02.2022, 00:01 | |
22.02.2022, 00:01 | |
Помогаю со студенческими работами здесь
12
Настройка работы таймера stm32f4 discovery Настройка RCC в STM32F4. Спортивный бег по костылям. stm32f1 stm32f4 cmsis RCC настройка как проверить работу HSE& PLL на STM32F103RCT Управление PLL STM32F4Discovery PLL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |