|
|
  |
USART Idle frame , USART Break frame, Что это и зачем используется ? |
|
|
|
Jan 3 2015, 22:52
|

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

|
В STM32 USART может передать особые Idle frame и Break frame, а так же генерировать прерывание при их получении. Хочется объяснения в двух словах, зачем они обычно используются и чем отличаются ? Задача вот какая: Пользователь подключает устройство к линии UART, в которой передаются килобайтные пакеты. Связь двунаправленная. При этом устройтсво не знает, в какой момент оно подключилось, и должно как-то отличить начало пакета от его середины. Эти Idle frame и Break frame - и есть то что мне надо, что бы обозначить начало пакета ? Заранее спасибо за ответ !
Эскизы прикрепленных изображений
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Jan 4 2015, 19:13
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(MiklPolikov @ Jan 4 2015, 01:52)  Задача вот какая: Пользователь подключает устройство к линии UART, в которой передаются килобайтные пакеты. Связь двунаправленная. При этом устройтсво не знает, в какой момент оно подключилось, и должно как-то отличить начало пакета от его середины. Так как непонятно как представлены данные: текстовыми или бинарными. То в общих чертах. Рекомендуют обычно сделать заголовок (уникальная комбинация), далее разместить сами данные и конец "пакета" обрамить контрольной суммой (CRC-каким-нибудь). Цитата(MiklPolikov @ Jan 4 2015, 01:52)  Эти Idle frame и Break frame - и есть то что мне надо, что бы обозначить начало пакета ? Скорее всего нет. Idle - пассивное состояние когда нет никаких данных.
|
|
|
|
|
Jan 5 2015, 13:07
|

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

|
Цитата(toweroff @ Jan 5 2015, 09:35)  насколько я помню, если начало передачи следующего байта в пакете опаздывает по времени на длину самого байта или больше, то это считается ошибкой. Считается ошибкой где ? В алгоритме, который я сам должен написать ? То что можно сделать заголовок, а в пакете особым образом изменить место, где байты случайно сложились в лже-заголовок, я знаю. Делал это, когда работал со считывателем отпечатков пальца. Но сейчас во-первых просто не хочется делать этот мудрёный алгоритм с заголовком и проверку-изменение каждого пакета на предмет поиска в нём ложного случайного заголовка, во-вторых на эту проверку-изменение не особо хватит ресурсов процессора. Вот и смотрю на Idle Frame, break frame : скажем, при отсутствии пакета пусть на линии будет idle , а в начале пакета break . И получится, что после получения break надо начать приём пакета, а после получения idle радоваться тому что пакет получен, и проверять в нём crc
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Jan 6 2015, 11:24
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(A. Fig Lee @ Jan 5 2015, 22:25)  Да закодировать все base64, добавить служебные символы: 0xFE - start, 0xFD - end packet. Если предположить что у ТС, данные бинарные, то из "килобайтных данных" они станут в четыре раза бОльшими. Цитата(A. Fig Lee @ Jan 5 2015, 22:25)  И не болит голова у дятла. А с учетом увеличения объема данных, ограниченности скорости USART, головушка еще больше заболит. Тем более что ТС явно указал на возможный вариант нехватки ресурсов у несчастного арма.
|
|
|
|
|
Jan 6 2015, 15:24
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Александр77 @ Jan 6 2015, 06:24)  Если предположить что у ТС, данные бинарные, то из "килобайтных данных" они станут в четыре раза бОльшими.
А с учетом увеличения объема данных, ограниченности скорости USART, головушка еще больше заболит. Тем более что ТС явно указал на возможный вариант нехватки ресурсов у несчастного арма. Ну не в 4, а в 4/3, на 30%. 3 байта передаются как 4. Ну да, про ресурсы он говорил.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|