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

 
 
> STM32F030 и autobaudrate
Михась
сообщение Jan 28 2016, 08:10
Сообщение #1


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

Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816



Удалось ли кому запустить автоопределение скорости UART?
У меня работает, но плохо. Кварцы не используются.

Нужно передавать данные в одну сторону по следующему протоколу:

http://joxi.ru/Q2K03aZS9gXl0A

Рассчитывал на автоопределение скорости по преамбуле 0x80 в режиме USART_AutoBaudRate_StartBit. При отключенном автоопределении все работает замечательно, никаких сбоев, при включенном - очень часто регистр принимает неправильные значения, иногда отклонение в сотни раз больше нужного.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Михась
сообщение Jan 28 2016, 14:34
Сообщение #2


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

Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816



В общем, отчитываюсь.

Я впал в отчаяние и решил применить почти недокументированный режим для F030

ABRMOD[1:0]: Auto baud rate mode

00: Measurement of the start bit is used to detect the baud rate.
01: Falling edge to falling edge measurement. (the received frame must start with a single bit = 1 ->
Frame = Start10xxxxxx)
10: 0x7F frame detection.
11: 0x55 frame detection


Поменял преамбулу 0x55 и стал использовать в периодах между пакетами команду USART_RequestCmd(USART1, USART_Request_ABRRQ, ENABLE);

Устойчиво пересинхронизируется на лету в диапазоне 600-250000 бод.
-----------------------
UPD:
C преамбулой 0x55 худо-бедно заработал и в режиме 00:



Сообщение отредактировал Михась - Jan 28 2016, 15:18
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jan 29 2016, 14:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Михась @ Jan 28 2016, 15:10) *
Рассчитывал на автоопределение скорости по преамбуле 0x80 в режиме USART_AutoBaudRate_StartBit.

А с чего бы ему работать по преамбуле 0x80, если данные, как известно, передаются младшим битом вперёд.
Вот по 0x01 или любому другому байту с установленным в 1 младшим битом сработало бы.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Михась
сообщение Jan 29 2016, 16:32
Сообщение #4


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

Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816



Цитата(SSerge @ Jan 29 2016, 21:07) *
А с чего бы ему работать по преамбуле 0x80, если данные, как известно, передаются младшим битом вперёд.
Вот по 0x01 или любому другому байту с установленным в 1 младшим битом сработало бы.


00: Measurement of the start bit is used to detect the baud rate.
01: Falling edge to falling edge measurement. (the received frame must start with a single bit = 1 ->
Frame = Start10xxxxxx)

Я пробовал оба варианта, или во втором случае подразумевается что Start стоит возле младшего байта?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 29 2016, 16:48
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если пишут "измерение от среза до среза", то должны были указать не только первый бит 1, но и второй 0.
Если же измеряют от среза стартового бита до фронта, то первым битом должна быть 1, а дальше любые.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:30
Рейтинг@Mail.ru


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