fk0, легенда (18.06.2014 15:18, просмотров: 110) ответил Argon на А какой физ. протокол посоветуете при передаче данных по ИК? Имею ввиду не Irda, а пультовый ИК с заполнением 36-38 кГц.
В приёмнике есть какая-либо система АРУ. И для её работы средний уровень сигнала должен быть на уровне ~50% от вспышки, потому и манчестер, вот как мне думается. UART, наверное, не нужен. Тут ещё одно свойство манчестерского приёмника -- он синхронизируется по скорости на каждом бите. А не в начале байта. Это тоже может быть причиной, почему именно манчестер: кварц в пульт (да и приёмник) никто не ставит, дорого. А без кварца битовая скорость сильно варьируется. Потом ещё ньюанс. Отловить точно начало старт-бита будет практически невозможно. Приёмник вносит свои шумы, искажения, фазовые задержки -- не будет ровного фронта. В таких случаях используют PLL и опять же преамбулу, или что-то вместо неё, достаточно длинное, чтоб чётко зафиксировать фазу более чем по одному периоду сигнала.
Практически может быть вариант: преамбула с фиксированным значением (таким, чтоб сигнал менялся), потом сразу поток битов. На преамбуле идёт начальная настройка фазы и частоты, на данных медленная подстройка. Для чего данные не имеют слишком много нулей/единиц подряд (а так же для подстройки АРУ приёмника). Данные передаются в NRZ (как в UART). Чтоб не получать длинных нулей/единиц данные можно либо закодировать как это сделано в HDLC (bit stuffing), либо можно проксорить с фиксированной псевдослучайной последовательностью (здесь правда вопрос, что будет при совпадении -- помнится история с нечивающимися CDROM). Либо алгоритм помехоустойчивого кодирования уже может не давать длинных последовательностей нулей или единиц.
Нужен ли помехоустойчивый код и какой -- зависит от характеристики ошибок. Если ошибки единичные, максимум двойные -- поможет что-то вроде кода Хэмминга, BCH-кодов, код Голея... Ещё можно подсмотреть вариант кодирования у Texas Instruments, что используется в трансиверах на 433МГц. Там какая-то форма свёрточного кода не сложная в реализации, но удваивающая объём данных. Если ошибки сериями, то потребуется что-то вроде ECC, но тут ньюанс: на такой серии сбивается ФАПЧ приёмника и дальше он может напринимать полную ерунду до конца пакета.
[ZX]