|
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
|
||||||
PLL выдает не ту частоту, что требуется (STM32F103C8T6)23.09.2019, 22:09. Показов 7471. Ответов 45
Метки нет (Все метки)
Все здравствуйте.
Дело в следующем. На вышеупомянутом МК настраиваю тактирование от кварца 4.608МГц (Специальная частота кварца для работы с UART) USART1->BRR рассчитывается как 4608000/9600 = 480. В цикле просто через определенный промежуток времени отправляю символ "M". При таких настройках все отлично работает. Но как только я пытаюсь затактировать МК через PLL, происходит что-то странное. При умножении PLL на 10 частота становиться не 46.080МГц как ожидается, а примерно 41.76МГц. Выяснил я это следующим путем. При переключении на PLL в терминал вместо "М" побежали кракозяблы. Подключив осциллограф, выяснил, что стартовый бит, вместо положенных при 9600 бод 104 микросекунды, длится 116 микросекунд. Начал уменьшать постепенно USART1->BRR до тех пор, пока на осциллографе первый бит опять не стал 104мкс и в порт не пошли нормальные данные. Остановился на USART1->BRR = 4350. Умножив на 9600 получил частоту МК 41.76МГц. Я понимаю, что это моя ошибка где-то, потому что на МК STM32f030f4 та же самая картина. Прошу, подскажите в какую сторону рыть. Код:
0
|
||||||
| 23.09.2019, 22:09 | |
|
Ответы с готовыми решениями:
45
Оперативная память выдаёт частоту 1066 |
|
8 / 8 / 0
Регистрация: 09.02.2019
Сообщений: 36
|
||||||
| 23.09.2019, 23:08 | ||||||
|
Рабочий код в качестве примера:
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
|
|
| 23.09.2019, 23:31 [ТС] | |
|
Хм, Вы знаете, какой-то неоднозначный результат с Вашим кодом. Дело в том, что у меня в цикле еще диодик мигает вместе с отправкой символа, так, для наглядности. Так вот с Вашим кодом диодик стал мигать чаще, но время первого бита так и не изменилось - 116 мкс при рассчитанном USART1->BRR = 4800.
0
|
|
|
16 / 16 / 1
Регистрация: 20.10.2013
Сообщений: 81
|
|
| 24.09.2019, 09:43 | |
|
Добрый день! Для начала проверте частоту на выводе MCO(прикладываю скриншот). Подключите осцилограф к выводу PA8(предварительно настройте его на вывод тактирования). Данный вывод можно настроить на вывод как входящего та тактирования, так и для отображения тактирования после PLL. Таким образом вы сможете проверить частоту тактирования от кварца, и после PLL
Я смотрю вы используете прямое обращение к регистрам. В таком случае для более быстрого решения вашей проблемы, рекомендую собрать проект в CubeMx, затем скопировать часть инициализации тактирования
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,916
|
|
| 24.09.2019, 10:08 | |
|
Вот пример для stm32f103c8t6 для максимальной частоты (72 МГц) от внешнего кварца 8 МГц (уж какой установлен на моей платке).
1
|
|
|
8 / 8 / 0
Регистрация: 09.02.2019
Сообщений: 36
|
|
| 24.09.2019, 10:50 | |
|
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 24.09.2019, 11:25 | |
|
Bodisey, Открываем RM, страницу 135. И видим:
Откуда вы взяли множитель 10 - непонятно. У меня например даже дефайна такого нет в файле stm32f10x.h Если ваш кварц умножить на 9 (максимальный множитель) то частота составит 41,472 МГц, что вполне близко к вашей.
1
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 24.09.2019, 11:27 | |
0
|
|
|
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
|
|
| 24.09.2019, 11:29 [ТС] | |
|
Всем спасибо за советы, сейчас буду подключать, пробовать.
0
|
|
|
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
|
|
| 24.09.2019, 11:43 [ТС] | |
|
_SayHello, согласен, в RM действительно максимальный множитель 9, хотя в моих дефайнайх, в отличии от ваших, множитель доходит до 16.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||||||||||||||
| 24.09.2019, 12:03 | |||||||||||||||||
|
Bodisey, эталон - RM, в библиотеках часто бывают ошибки. Говорю как разработчик этих самых библиотек, только для других контроллеров
![]() Добавлено через 16 минут
0
|
|||||||||||||||||
|
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
|
|
| 24.09.2019, 13:02 [ТС] | |
|
Как указал _SayHello, поменял множитель на 9, пересчитал USART1->BRR, и ЮАРТ нормально заработал. И даже первый бит, насколько я могу судить на своем карманном осциллографе, длится 104 мкс. Точнее уже посмотрю на работе, на взрослом осцилле. На этом пока всем спасибо!
0
|
|
| 24.09.2019, 14:04 | |
|
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,916
|
|
| 24.09.2019, 14:13 | |
|
locm, что за камень и что за код?
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 24.09.2019, 14:19 | |
|
locm, а что тут объяснять? в RM написано что множители выше 9 - reserved. То что вы записали reserved значение просто вызывает undefined behavior который может зависеть от партии к партии. Вот у вас 8 МГц перемножилось на 16 хотя такого множителя нет, а у ТСа даже при задании reserved значения все равно множитель 9 остался.
Раскрою вам секрет: внутри контроллеров, может оставаться тестовая периферия которая нормально размечена в памяти, и даже есть хардварное исполнение. Возможно в следующей ревизии она пропадет, может нет. Может частично работать. Можете поискать, может какойнибудь лишний USART найдете, там где он не заявлен. Хотя в старших моделях он есть в определенной области памяти. Я с таким часто встречаюсь, и хардварщики разрабатывающие саму микросхему, тоже любят отлаживать и изменения могут быть достаточно частыми. Тем не менее по моему опыту, самым первым для пользователя обновляется именно RM. Добавлено через 3 минуты А вообще в МК обычно много reseved областей, можете пописать туда чего-нибудь, может чего интересного найдете)
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,916
|
|
| 24.09.2019, 15:08 | |
|
_SayHello, только хорошо бы не "чего-нибудь куда-нибудь", а для начала посмотреть старшие контроллеры семейства, что там должно лежать.
... А потом, когда эйфория от своей офигенности испарится, перестать полагаться на недокументированные возможности. Но в качестве развлечения - почему бы и нет.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 24.09.2019, 15:13 | |
|
COKPOWEHEU, Да это собственно не призыв особо к действию. Действительно, отправлять в релиз девайс основанный на недокументированных свойствах - такое себе предприятие.
Просто можно иметь ввиду, что "хардварная" отладка, не программная, никто из за удаления одного модуля не будет бежать вносить изменения в топологию. Просто зарезервят в памяти адреса и в RM напишут reserved. Если изменений наберется большая пачка, возможно это и совсем выпилят, а может и нет.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,916
|
|
| 24.09.2019, 16:21 | |
|
_SayHello, скорее - продукт сортировки. Если по каким-то параметрам контроллер не дотягивает до старшей ветки, его маркируют как младшую (если все совсем плохо - выбрасывают, но это неинтересный вариант). А в младшей ветке данная периферия не предусмотрена. Или такой объем памяти. Или еще что-то. И исправления перед маркировкой тоже могут быть разные: можно физически пережечь перемычку, можно прошить в память корректирующее значение. А можно просто промолчать: если мы не говорим юзеру, что у него есть еще один таймер, то и за его функциональность отвечать не придется.
То есть ограничения накладываются на отдельные кристаллы, а не на даташит.
0
|
|
|
|
|||
| 24.09.2019, 22:10 | |||
![]() ![]() И в добавок картинка из даташита. Обратите внимание на умножитель. И еще одна, на сей раз из RM.
0
|
|||
|
|
|||
| 24.09.2019, 22:25 | |||
Посмотрите 45 страницу RM.![]()
1
|
|||
| 24.09.2019, 22:25 | |
|
Помогаю со студенческими работами здесь
20
Видеокарта выдает большую частоту чем заявлено производителем Что делать, если не получается подключиться к STM32F103C8T6 с Linux, ST-LINK v2? Ga-7vt600 rz-c s-t a atlon xp 2200+ : в биосе выдает частоту в 2,3 мгц, а в виндовс 1,8 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|