Uart синхронизация

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Родился
Сообщения: 2
Зарегистрирован: Вт дек 15, 2020 14:01:42

Сообщение Romeo84 »

Всем добрый)

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

Понятно, что есть старт бит, стоп бит и т.д. Но это же работает в слуае, когда долгое время "тишина", потом начинается передача байта, потом опять "тишина" нескольке секунд, потом ещё передача байта.

А в случае передачи кучи байтов в непрерывном потоке, что будет, если из-за помехи произойдет рассинхронизация, то как приёмнику найти границу начала передачи следующего байта? Думаю, это особенно актуально для передачи по радиоканалу.

Много гуглил, но мало что нашёл именно по своему вопросу. Пытался провести аналогию с передачей PPM (Pulse-position modulation), где есть явная и длинная синхопауза после передачи каждой "пачки" данных, но про UART такого нигде не нагуглил...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 16993
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Приёмник уарта ждёт старт-бита (нулевого уровня). Первый же нуль достаточной длительности на линии воспринимается уартом как старт-бит, и он принимает байт. Если стоп-бит(ы) окажутся на месте и будут соблюдены другие возможные условия (чётность), то всё ОК. Если подключить уарт к потоку, когда он уже прёт, или если произойдёт сбой, то попрёт мусор. Скорее всего, недолго, ибо первое же несоблюдение наличия стоп-бита выдаст ашыпку, а там - как уж прописано: то ли ожидать нового потока с начала, то ли принимать как есть...
Что касается прямой подачи уарта в радиоканал: так делать нежелательно. Есть стандартные протоколы, есть не очень... кто-то придумал своё, даже ваш покорный слуга в своё время озаботился (нет, выкладывал это не я) от нечего делать, и даже где-то опубликовал.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Реклама
Родился
Сообщения: 2
Зарегистрирован: Вт дек 15, 2020 14:01:42

Сообщение Romeo84 »

mickbell благодарю за ответ )

PS Хотя для меня странно, почему при передаче потока, хотябы через каждые 10-100 байт не делать синхропаузу в полтора-два байта, это бы и дало возможность синхронизироваться в случае сбоя и не сильно бы снизило скорость передачи
Друг Кота
Аватара пользователя
Сообщения: 15754
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

При приеме ведется программный анализ принятых данных а уж по результатам применяем соответствующие меры.
Протоколов весьма много.
Помимо прочего никто не запрещает и чего-то своего соорудить.
(обмен с ПК к примеру вот тут заложен
https://radiokot.ru/forum/viewtopic.php ... 7#p3167597
https://radiokot.ru/forum/viewtopic.php ... 1#p3435971
https://radiokot.ru/forum/viewtopic.php ... 1#p3472041
принимаем отсылаемый из ПК символьный файл формата intel hex8)
или та же CRC8 в пакетах микроLAN и прочее (не говоря о XON/XOFF или аппаратном RTS/CTS)...
:dont_know:
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Теория»