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

 
 
> USART Idle frame , USART Break frame, Что это и зачем используется ?
MiklPolikov
сообщение Jan 3 2015, 22:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



В STM32 USART может передать особые Idle frame и Break frame, а так же генерировать прерывание при их получении. Хочется объяснения в двух словах, зачем они обычно используются и чем отличаются ?

Задача вот какая:
Пользователь подключает устройство к линии UART, в которой передаются килобайтные пакеты. Связь двунаправленная. При этом устройтсво не знает, в какой момент оно подключилось, и должно как-то отличить начало пакета от его середины. Эти Idle frame и Break frame - и есть то что мне надо, что бы обозначить начало пакета ?

Заранее спасибо за ответ !
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Jan 5 2015, 05:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(MiklPolikov @ Jan 4 2015, 01:52) *
При этом устройтсво не знает, в какой момент оно подключилось, и должно как-то отличить начало пакета от его середины.

насколько я помню, если начало передачи следующего байта в пакете опаздывает по времени на длину самого байта или больше, то это считается ошибкой.
Также оговаривается время между пакетами
Если никаких заголовков и CRC нет - остается только ловить эти временные интервалы
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 5 2015, 13:07
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(toweroff @ Jan 5 2015, 09:35) *
насколько я помню, если начало передачи следующего байта в пакете опаздывает по времени на длину самого байта или больше, то это считается ошибкой.


Считается ошибкой где ? В алгоритме, который я сам должен написать ?

То что можно сделать заголовок, а в пакете особым образом изменить место, где байты случайно сложились в лже-заголовок, я знаю. Делал это, когда работал со считывателем отпечатков пальца. Но сейчас во-первых просто не хочется делать этот мудрёный алгоритм с заголовком и проверку-изменение каждого пакета на предмет поиска в нём ложного случайного заголовка, во-вторых на эту проверку-изменение не особо хватит ресурсов процессора.
Вот и смотрю на Idle Frame, break frame : скажем, при отсутствии пакета пусть на линии будет idle , а в начале пакета break . И получится, что после получения break надо начать приём пакета, а после получения idle радоваться тому что пакет получен, и проверять в нём crc


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jan 5 2015, 19:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(MiklPolikov @ Jan 5 2015, 16:07) *
Считается ошибкой где ? В алгоритме, который я сам должен написать ?

нет, в самой передаче байтов. Логически, разумеется
А в алгоритме - да, тайм-аут по неприему части пакета
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 6th August 2025 - 11:45
Рейтинг@Mail.ru


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