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

 
 
 
Reply to this topicStart new topic
> случилась странность с USART6...
ЮКОР
сообщение Jun 30 2015, 09:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 17-10-14
Пользователь №: 83 186



Не мог получить устойчивую связь на скорости 115200 бод с stm32f437ii.
Осциллографом определил, что при установленной скорости 115200 реальная скорость получалась 104700.
Частота кварца 7.99974 МГц. Подставил значение 125200 получил скорость 115200, на которой всё заработало..

Первый раз такое случилось. Не думаю, что в этом виноват кварц. Уж больно большая ошибка.
Перед этим использовал STM32F437zi, код почти тот же. Всё работало нормально.
Есть у кого какие-нибудь предположения?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 30 2015, 10:00
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Ну вы бы хоть расчёты, коэффициенты привели…


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 30 2015, 10:05
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Частота кварца измерялась?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ЮКОР
сообщение Jun 30 2015, 10:50
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 17-10-14
Пользователь №: 83 186



Цитата(Obam @ Jun 30 2015, 13:00) *
Ну вы бы хоть расчёты, коэффициенты привели…


Коэффициенты не расчитывал.
Заполнил поле структуры USART_BaudRate = 115200;
Потом проинициализировал структуру USART_Init(USART6, &структура);
Действия самые обыкновенные.

Цитата(Сергей Борщ @ Jun 30 2015, 13:05) *
Частота кварца измерялась?

Частоту кварца измерил осциллографом, используя щуп. 7,9997 МГц.
Когда подобрал коэффициент, проверил частоту кварца при обмене данных по USART.
С подключенным щупом к лапке кварца обмен данными не нарушался.
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 30 2015, 11:00
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



"Коэффициенты не расчитывал. Заполнил поле структуры…"

Во времена настали… "Астролябия сама меряет, было бы чего мерять " sm.gif


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 30 2015, 11:49
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



крутоsm.gif...


мне нравиться что человеку быстрее было осциллограффом определить реальную скорость, рассчитать поправку, задать ее и померить кварц, чем посмотреть что попало в регистр делителя частоты для UART...

У вас какие-нибудь настройки не прошли, PLL не на то выставилась, и опорная частота уехала, как вы таймеры и все остальное будете задавать? Или там тоже астролябией, только результат сразу не поймешь?
Go to the top of the page
 
+Quote Post
ЮКОР
сообщение Jun 30 2015, 12:40
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 17-10-14
Пользователь №: 83 186



Цитата(Golikov A. @ Jun 30 2015, 14:49) *
крутоsm.gif...


мне нравиться что человеку быстрее было осциллограффом определить реальную скорость, рассчитать поправку, задать ее и померить кварц, чем посмотреть что попало в регистр делителя частоты для UART...

У вас какие-нибудь настройки не прошли, PLL не на то выставилась, и опорная частота уехала, как вы таймеры и все остальное будете задавать? Или там тоже астролябией, только результат сразу не поймешь?


Я использую многократно проверенный stm32f4xx_usart.c из стандартной перифирийной библиотеки.
там определяются все необходимые коэффициенты. Астролябией это назвать тяжело.
Не думаю, что в моём случае коэффициенты для скорости 115200 определились неправильно,
здесь чот-то другое.
Пока понять не могу.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jun 30 2015, 13:08
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(ЮКОР @ Jun 30 2015, 15:40) *
Пока понять не могу.

А таймер вывести на ножку? Описки бывают - попробуйте КУБом...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 30 2015, 13:15
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Не думаю, что в моём случае коэффициенты для скорости 115200 определились неправильно,


А думать не надо, проверить надо. Если коэффициент верный - значит не верная частота, если коэффициент не верный - значит не верный расчет.
в первом случае смотрим настройки pll во втором дефайны.

кстати там есть функция которую надо вызывать после перестройки частоты, она нужна чтобы поправить внутреннюю константу частоты для правильных расчетов остальных функций, ее вызывать не забыли?

так же может быть не от того проца дефайны и кэфициенты по регистру не правильно считаются...
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Jun 30 2015, 14:40
Сообщение #10


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

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Если б заглянули в usart.c, то увидели бы там функцию USART_Init(), в которой рассчитывается BRR после вызова RCC_GetClocksFreq(), отсюда и смотрите. При наличии отладки все просто. Может неверно указали модель МК, т.к. в system_stm32f4xx.c куча коэфициентов PLL зависит от модели, там же определяется SystemCoreClock, базовая частота для библиотеки.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:38
Рейтинг@Mail.ru


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