http://ru.wikipedia.org/wiki/RS-232Цитата
Принцип работы
По структуре это обычный асинхронный последовательный протокол, то есть передающая сторона по очереди выдает в линию 0 и 1, а принимающая отслеживает их и запоминает.
Данные передаются пакетами по одному байту (8 бит).
Вначале передаётся стартовый бит, противоположной полярности состоянию незанятой (idle) линии, после чего передаётся непосредственно кадр полезной информации, от 5 до 8-ми бит.
Увидев стартовый бит, приемник выжидает интервал T1 и считывает первый бит, потом через интервалы T2 считывает остальные информационные биты. Последний бит — стоповый бит (состояние незанятой линии), говорящий о том, что передача завершена. Возможно 1, 1.5, 2 стоповых бита.
В конце байта, перед стоп битом, может передаваться бит четности (parity bit) для контроля качества передачи. Он позволяет выявить ошибку в нечетное число бит (используется, так как наиболее вероятна ошибка в 1 бит).
Еще раз по буквам
Вся система работает четко по таймеру (таймеры все - кварцованные). Каждый бит имеет свою длительность.
Формат передаваемых данных показан на рисунке 1.2. Собственно данные (5, 6, 7 или 8 бит) соопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определннные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение - не более 10%)
Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рис.1.3.). Отметим, что данные передаются в инверсном коде (лоической единице соответствует низкий уровень, логическому нулю - высокий уровень).
Это пример самого распространенного и доступного и самого простого в использованиии и программировании интерфейса по имени RS-232.
Слово начинается всегда со стартового бита "1", который изменяет состояние линии из "простой" в "работаем", дальше пошло слово (0100110). Дальше - может идти бит проверки четности (в нашем примере это будет еще одна единица) а потом один или два стоповых бита. Дальше линия переходит в состояние простоя (то есть на ней "ноль" длительностью большей чем необходимо для передачи, (по моему больше чем одного бита), после окончания слова).
Если мы упростим сигалы до оговоренных (типа TTL - ноль это низкий лог.уровень "типа ток не течет", а единица - высокий лог.уровень "типа ток течет" ) то на осциллографе или на логическом анализаторе (которые ток нам не покажут, но зато покажут напряжения на нагрузке, через которую течет ток), то должно получится примерно так:
Код
_ _ _ П _ П _ _ П П _ П П П _ _ _
Пробелы введены исключительно для читаемости и считаемости тактов. Ширина всех символов должна быть одинаковой. Переходы уровня внутри слова между "_ _" , между ПП и ППП ... ну их даже может и не быть - таймер приемника обязан сам отсчитать нужное количество тактов. Переходы низкого уровня сигнала не внутри слова (после окончания передачи-приема слова) будут однозначно восприняты как попытка передать стартовую единицу следующего слова.
Повторю: длина слова данных, порядок проверки четности и количество стоповых бит, а также скорость (определяющая длительность каждого цикла ) устанавливается заранее.
... как-то так ...
Сообщение отредактировал vovaz02h - 12.10.2010, 23:29