Анатомия COM-порта. Сигналы квитирования (RTS, CTS итп) и RS232 вообще

В последнее время последовательный способ передачи данных вытесняет параллельный.
За примерами далеко ходить не надо: появление шин USB и SATA говорит само за себя.
И действительно, параллельную шину трудно масштабировать (удлинить шлейф, увеличить частоту тактирования шины), неудивительно, что технологии поворачиваются к параллельным шинам задней частью.

Последовательные интерфейсы

На сегодня существует великое множество различных интерфейсов последовательной передачи данных.
Кроме уже упомянутых USB и SATA еще можно вспомнить как минимум два широко известных стандарта RS-232 и MIDI (он же и GamePort).
Объединяет их все то же - последовательная передача каждого бита информации, или Serial Interface.
Преимуществ у подобных интерфейсов великое множество, и самое главное из них - малое количество соединительных проводов, а следовательно, меньшая цена.

Передача данных

Последовательную передачу данных можно реализовать двумя способами: асинхронным и синхронным.

Синхронная передача данных предполагает синхронизацию работы приемника и передатчика посредством включения тактовой информации в передаваемый сигнал или путем использования специальной синхро-линии.
Приемник и передатчик должны быть соединены специальным синхронизационным кабелем, который обеспечивает работу устройств на одной частоте.

Асинхронная передача подразумевает использование специальных битов, маркирующих начало и конец данных – стартового (логический ноль) и стопового (логическая единица) бита.
Также возможно использование специального бита четности, который определяет четное или нечетное количество передаваемых единичных битов (в зависимости от принятого соглашения).
На принимающей стороне проводится анализ этого бита, и если бит четности не соответствует количеству единичных битов, то пакет данных пересылается снова.

Стоит отметить, что такая проверка позволяет обнаружить ошибку только в том случае, если был передан неправильно только один бит, в случае, если неправильно передались несколько битов, эта проверка уже становится некорректной.
Посылка следующего пакета данных может происходить в любой момент после посылки стопового бита, и, естественно, должна начинаться со стартового бита.
Ничего не понятно?

Ну, если бы все компьютерные технологии были просты, то любая домохозяйка давно бы уже лепила параллельно с пельменями новые протоколы …
Попробуем взглянуть на процесс по-другому.
Данные передаются пакетами, примерно как IP пакеты, вместе с данными идут и информационные биты, количество этих битов может варьироваться от 2 до 3 с половиной.
С половиной?!
Да, ты не ослышался, именно с половиной!

Стоповый бит, а вернее передаваемый сигнал соответствующий стоповому биту, может иметь длительность большую, чем сигнал соответствующий биту-единице, но меньшую чем для двух битов.
Так вот, пакет всегда начинается со стартового бита, который всегда имеет значение ноль, после чего идут биты данных, потом бит четности, а потом и стоповый бит, всегда равный единице.
Потом через некоторый произвольный промежуток времени поход битов на Москву продолжается.

Такой способ передачи подразумевает, что приемник и передатчик должны работать с одной скоростью (ну, или почти с одной), иначе пришедшие биты данных приемник будет либо не успевать обрабатывать, либо принимать старый бит за новый.
Для того чтобы этого избежать, каждый бит стробируется, то есть посылается синхронно со специальным сигналом - «стробом», формируемым внутри прибора.
Существует ряд определенных скоростей работы асинхронных устройств - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 и 115 200 бит в секунду.

Ты наверняка слышал, что в качестве единицы измерения скорости передачи данных используется «бод» - частота изменения состояния линии, и эта величина будет совпадать со скоростью передачи данных только в случае если сигнал может иметь одно из двух значений.
Если же в одном изменении сигнала закодировано несколько бит (а это встречается у многих модемов), скорость передачи и частота изменения линии будут совершенно различными величинами.

Теперь пару слов о загадочном термине «пакет данных».
Под пакетом в данном случае понимается набор битов, передаваемых между стартовым и стоповым битами.
Их число может изменяться от пяти до восьми.
Можно задаться вопросом, почему именно пять-восемь бит?
Почему бы не передать сразу, скажем, килобайт данных внутри пакета?

Ответ очевиден: передавая маленькие пакеты данных, мы пусть и проигрываем, отправляя с ними три служебных бита (от 50 до 30 процентов данных), зато если при передаче пакет будет испорчен, мы легко узнаем это (помнишь про бит четности?) и быстро передадим его снова.
А вот в килобайте данных ошибку обнаружить будет уже трудно, и передавать его будет гораздо сложнее.

В качестве примера асинхронного последовательного устройства передачи данных можно привести COM-порт компьютера, любимый модем с дизайном от Труссарди и мышь, подключаемую к этому же порту, которую недалекие секретарши почему-то все время стараются засунуть в PS/2.
Работают все эти устройства по интерфейсу RS-232, вернее по асинхронной его части, поскольку в стандарте описана и синхронная передача данных.

Serial port (серийный порт, последовательный порт или COM-порт -, communications port) — это последовательный интерфейс с двойной направленностью.

Почему порт назвается последовательным? Потому, что вся информация по этому порту передается шагом равным одному биту. В нем данные передаются бит за битом, в отличие от параллельного порта.

Несмотря на то, что в некоторых других интерфейсах как, например, в Ethernet , FireWire и USB , применяется последовательный обмен данными, название «последовательный порт» закрепилось за портом, обладающим стандартом RS-232C .

Данный порт, в сравнении с другими "последовательными" технологиями, обладает отличительной особенностью: в нем отсутствует какое-либо временное требование между 2 байтами. Временные требования существуют только между битами одного байта. Величина, обратная временной паузе между битами одного байта, носит название «baud rate» (скорость передачи). Кроме того, в данной технологии нет такого понятия, как "пакет". Другие технологии "последовательной" передачи данных (X.25, USB или Ethernet), используют "пакеты", также в них существуют и жесткие временные требования между битами одного пакета.

В части протоколов связи с индустриальным оборудованием имеются жесткие временные требования между байтами последовательного порта. Реализация в многозадачных операционных системах со слабой поддержкой реального времени этих протоколов очень сложна. К этим системам относятся и Windows. Вот почему для работы с этими протоколами зачастую применяют MS-DOS или более устаревшее программное обеспечение.

Самый распространенный для последовательного порта стандарт - RS-232C. Ранее последовательный порт применялся для подключения терминала, позднее его использовали для подключения модема или мыши. В настоящее время его применяют в качестве средства соединения с источниками бесперебойного питания, а также в качестве средства связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами и приборами систем безопасности.

Благодаря COM-порту появляется возможность подключить друг к другу два ПК, применяя так называемый «нуль-модемный кабель». Данный метод использовался со времен MS-DOS в целях перекачки файлов с одного компьютера на другой. В UNIX-системах он использовался для терминального доступа к другой машине, а в операционных системах Windows - для отладчика уровня ядра.

Довольно популярный в свое время в IBM-совместимых ПК последовательный порт, сегодня уже морально устарел. Однако, следует отметить, что он еще нередко используется в промышленном и узкоспециальном оборудовании, а также на некоторых современных компьютерах. Последовательный порт активно вытесняется интерфейсом USB и FireWire.

Однако имеются специальные стандарты эмуляции последовательного порта над USB и над Bluetooth . Кстати, любопытно, но именно Bluetooth-технология проектировалась разработчиками в качестве беспроводной версии последовательного порта. Программная эмуляция порта широко используется и по сей день. Так, практически все мобильные телефоны сегодня эмулируют внутри себя COM-порт и модем, с целью реализации тетеринга (доступа компьютера к сети Интернет через GPRS/EGDE/3G). А вот непосредственно для физического подключения к компьютеру применяется USB, Bluetooth или Wi-Fi технологии.

Кроме того, программная эмуляция последовательного порта возможна для гостевых пользователей виртуальных машин VMWare и Microsoft Hyper-V. Основной целью данной процедуры является подключение отладчика уровня ядра Windows к гостевому клиенту.

Достоинства COM-порта

Главное преимущество данной технологии состоит в простоте подключения.

Недостатки COM-порта

Главными недостатками данного порта являются его низкая скорость, большие размеры разъемов, а также высокие требования к времени отклика операционной системы. Также, в данном стандарте наблюдается высокое количество прерываний (одно прерывание на каждые 8 байт).

Разъемы

Самыми распространенными разъемами стандарта являются 9-ти и 25-ти контактные (DB-9 и DB-25, соответственно), которые были стандартизированы в 1969 году. Это D-образные разъемы. Помимо них использовались и другие, но из этого же семейства: DB-31 и круглые восьмиконтактные DIN-8.

Максимальная скорость передачи (в обычном исполнении) достигает 115 200 бод.

Аппаратура

Разъем обладает следующими контактами:

  • DTR (Data Terminal Ready) - выход на ПК, вход - на модеме. Отвечает за готовность компьютера к работе с модемом. Сброс вызывает почти полную перезагрузку модема. В случае с мышью, данный провод используется для осуществления питания.
  • DSR (Data Set Ready) - вход на ПК, выход - на модеме. Отвечает за готовность модема. Если линия в нуле, то в некоторых операционных системах невозможно открыть порт в качестве файла.
  • RxD (Receive Data) - вход на ПК, выход - на модеме. Обозначает поток входящих в ПК данных.
  • TxD (Transmit Data) - выход на ПК, вход - на модеме. Обозначает поток исходящих от ПК данных.
  • CTS (Clear to Send) - вход на ПК, выход - на модеме. Компьютер должен приостановить процесс передачи данных, пока данный провод не будет выставлен в единицу. Применяется в аппаратном протоколе управления потоком в целях недопущения переполнения на модеме.
  • RTS (Request to Send) - выход на ПК, вход - на модеме. Модем должен приостановить процесс передачи данных, до тех пор, пока провод не будет выставлен в единицу. Применяется в аппаратном протоколе управления потоком в целях недопущения переполнения в оборудовании/драйвере.
  • DCD (Carrier Detect) - вход на ПК, выход - на модеме. После установления связи с модемом с той стороны возводится в единицу, сбрасывается в ноль, в случае разрыва связи. Аппаратура ПК может производить прерывание, в случае наступления подобного события.
  • RI (Ring Indicator) - вход на ПК, выход - на модеме. После детерминации вызывного сигнала телефонного звонка, возводится модемом в единицу. Аппаратная часть ПК может производить прерывание, в случае наступления подобного события.
  • SG (Signal Ground) - общий сигнальный провод порта. Важно: земля - не общая . Обычно провод имеет изоляцию от корпуса ПК или модема.

В нуль-модемном кабеле применяются две перекрещенные пары: TXD/RXD и RTS/CTS.

UART 16550 - стандартная аппаратура порта. Сегодня включена в SuperIO микросхему на материнской плате. Со времен IBM PC, она оснащена аппаратной очередью байтов. Она существенно снижает число возникающих прерываний.

Рекомендация ITU-T V.24 (1980), а также её более поздняя редакция X.24 (1984) имеют название: «Перечень цепей стыка между Оконечным Оборудованием Данных и Оконечным Оборудованием Цепей Данных». Из названия следует, что протокол V.24 устанавливает процедуры взаимодействия на физическом уровне двух типов устройств — ООД и АКД.

  • Оконечное Оборудование Данных (ООД) или Data Terminal Equipment(DTE) в общем случае выполняет задачу представления данных пользователю и является в этом смысле оконечным устройством.
  • Оконечное Оборудование Цепей Данных (ОЦД) или Аппаратура Канала Данных (АКД) или Data Circuit-terminal Equipment(DCE) в общем случае выполняет задачу представления данных сети и является в этом смысле посредником.

Протокол V.24 определяет набор электрических сигналов, с помощью которых DTE и DCE устанавливают взаимодействие. Сигналы, которые формирует DTE, являются входными для DCE и наоборот. Всего в рекомендации определяется более 40 цепей стыка, однако, в промышленной реализации V.24 используются далеко не все рекомендованные сигналы.

Сигнал DTR «Присоединить АПД К линии»

Источником сигнала DTR (Data Terminal Ready) является устройство DTE. Назначение сигнала - представить DCE информацию о том, что аппаратура DTE готова к тому, чтобы начать процесс передачи данных.

Сигнал DSR «АПД готова»

Источником сигнала DSR (Data Set Ready) является устройство DCE. DSR формируется DCE в ответ на сигнал DTR, полученный от DTE. Назначение сигнала — представить DTE информацию о том, что аппаратура DCE готова к тому, чтобы участвовать в процессе передачи данных.

Сигнал RTS «Запрос передачи»

Источником сигнала RTS (Request To Send) является устройство DTE. Назначение сигнала — перевести DCE непосредственно в режим передачи данных.

Сигнал CTS «Готов к передаче»

Источником сигнала RTS (Clear To Send) является устройство DCE. CTS формируется DCE в ответ на сигнал RTS, полученный от DTE. Назначение сигнала — представить DTE информацию о том, что аппаратура DCE готова к тому, чтобы начать процесс непосредственной передачи данных.

Сигналы RTS и CTS используются для выполнения аппаратного управления темпом передачи данных. Следует различать скорость, с которой производится обмен данными между DCE и DTE и темп, с которым DCE работает с каналом передачи данных. В том случае, если DCE не справляется с выбранным DTE темпом передачи, это устройство должно перевести сигнал CTS в состояние «выключено». В ответ на это DTE протоколами верхних уровней приостанавливает процесс передачи данных до восстановления состояния сигнала CTS.

Сигнал LSD «Детектор принимаемого линейного сигнала данных»

Источником сигнала LSD (Line Signal Detect) является устройство DCE. Назначение данного сигнала — индикация наличия или отсутствия сигнала от удаленного конца передачи данных. Например, модем устанавливает этот сигнал (у модемов он обычно называется CD — Carrier Detect) в том случае, когда он установил соединение с удаленным модемом в соответствии со своим линейным протоколом.

Сигналы TXD и RXD «Передаваемые данные» и «Принимаемые данные»

Источником сигнала TXD (Transmit Data) является устройство DTE. Передача данных производится после получения от DCE подтверждения готовности к приему данных. Источником сигнала RXD (Receive Data) является устройство DCE. Достоверный прием данных в DTE производится после получения сигнала LSD от DCE.

Асинхронный режим взаимодействия DTE и DCE

При использовании этого режима DCE и DTE либо жестко устанавливают одинаковую скорость обмена данными, либо одна из сторон (обычно это DCE) подбирает соответствующее значение скорости автоматически из установленного набора в ходе обмена данными с DTE. Данные в асинхронном режиме передаются информационной группой (от 6 до 8 бит). Информационная группа может сопровождаться битом контроля (дополнение до четного или нечетного числа единиц всей группы). Формат информационной группы также должен быть предварительно согласован. О начале информационной группы сигнализирует прием стартового бита — переход принимаемого сигнала в «0». После получения стартового бита приемник запускает свой внутренний генератор, с помощью которого производится синхронизация принимаемых данных по времени. Информационная группа завершается передачей стопового бита, который обычно занимает 1,5 или две информационных позиции.

Сигналы TXC и RXC «Синхронизация элементов передаваемого и принимаемого сигнала»

Источником сигналов TXС (Transmit Clock) и RXC (Receive Clock) является устройство DCE. Переход сигнала TXС или RXC из состояния «включен» в состояние «выключен» соответствует середине информационной позиции соответствующего сигнала обмена (TXD или RXD). Сигналы TXC и RXC формируются устройством DCE в непрерывном режиме с момента включения питания и могут использоваться для синхронизации информационного обмена.

Синхронный режим взаимодействия DTE и DCE

Синхронный режим информационного обмена используется в тех случаях, когда необходимо обеспечить устойчивое, надежное и высокоскоростное взаимодействие DCE и DTE. В данном режиме аппаратура DTE принимает и передает данные на синхронизации DCE. В синхронном режиме управление потоком не используется, и поэтому, сигналы RTS и CTS в данном случае не оказывают влияние на темп информационного обмена. Темп обмена при синхронном взаимодействии определяется DCE-источниками данных для обоих направлений передачи. Синхронное взаимодействие по протоколу V.24 может быть реализовано, например, с использованием синхронных интерфейсов RS-232-C. Стандарт RS-232-C определяет необходимое подмножество управляющих сигналов для реализации данного взаимодействия со скоростями до 128 Кбит/с.

Сигналы TRXC «Синхронизация элементов передаваемого сигнала»

Источником сигналов TRXC (Transmit Signal Element Timing) является устройство DTE. Этот сигнал может быть использован в тех случаях, когда источником синхронизирующих импульсов является аппаратура DTE. Переход сигнала TRXC из состояния «включен» в состояние «выключен» соответствует середине информационной позиции сигнала TXD.

Симметричные и несимметричные цепи

Сигнальное напряжение обычной, несимметричной цепи формируется относительно общего сигнального провода. Диапазоны изменения сигнальных напряжений интерфейса EIA-232 приведены в таблице:

Диапазон от − 3 до + 3 Вольт образует зону изменения сигнала.

При передаче по кабелю, который соединяет DCE и DTE информационный сигнал подвергается воздействию помех и искажается из-за несогласованности параметров линии и генератора. Это может затруднить или сделать невозможным его правильное распознавание приемником. Поэтому даже при использовании синхронного режима обмена скорость передачи сигналов через физические интерфейсы не может превышать сотни килобит в секунду. Для того чтобы преодолеть это ограничения для соединения DCE и DTE применяют специальные симметричные цепи.

Диапазоны изменения сигнальных напряжений между сигнальными проводами пары U ab для интерфейса, который использует сбалансированные сигналы (EIA-422) приведены в таблице:

Современные последовательные высокоскоростные интерфейсы используют сбалансированные цепи для передачи как отдельных, так и всех информационных сигналов. В качестве примера можно рассмотреть интерфейс, который построен в соответствии со стандартом V.35.

Добавить в:

Интерфейс RS-232C предназначен для подключения аппаратуры, передающей или принимающей данные (ООД - оконечное оборудование данных, или АПД - аппаратура передачи данных; DTE - Data Terminal Equipment), к оконечной аппаратуре каналов данных (АКД; DCE - Data Communication Equipment). В роли АПД может выступать компьютер, принтер, плоттер и другое периферийное оборудование. В роли АКД обычно выступает модем. Конечной целью подключения является соединение двух устройств АПД. Полная схема соединения приведена на рис. 1; интерфейс позволяет исключить канал удаленной связи вместе с парой устройств АКД, соединив устройства непосредственно с помощью нуль-модемного кабеля (рис. 2).

Рис.1. Полная схема соединения по RS-232C


Рис.2. Соединение по RS-232C нуль-модемным кабелем

Стандарт описывает управляющие сигналы интерфейса, пересылку данных, электрический интерфейс и типы разъемов. В стандарте предусмотрены асинхронный и синхронный режимы обмена, но COM-порты поддерживают только асинхронный режим. Функционально RS-232C эквивалентен стандарту МККТТ V.24/ V.28 и стыку С2, но они имеют различные названия сигналов.

Стандарт RS-232C описывает несимметричные передатчики и приемники - сигнал передается относительно общего провода - схемной земли (симметричные дифференциальные сигналы используются в других интерфейсах - например, RS-422). Интерфейс не обеспечивает гальванической развязки устройств. Логической единице (состояние MARK) на входе данных (сигнал RxD) соответствует диапазон напряжения от –12 до –3 В; логическому нулю - от +3 до +12 В (состояние SPACE). Для входов управляющих сигналов состоянию ON (“включено”) соответствует диапазон от +3 до +12 В, состоянию OFF (“выключено”) - от –12 до –3 В. Диапазон от –3 до +3 В - зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения порога (рис. 3). Уровни сигналов на выходах передатчиков должны быть в диапазонах от –12 до –5 В и от +5 до +12 В. Разность потенциалов между схемными землями (SG) соединяемых устройств должна быть менее 2 В, при более высокой разности потенциалов возможно неверное восприятие сигналов. Заметим, что сигналы уровней ТТЛ (на входах и выходах микросхем UART) передаются в прямом коде для линий TxD и RxD и в инверсном - для всех остальных.

Интерфейс предполагает наличие защитного заземления для соединяемых устройств, если они оба питаются от сети переменного тока и имеют сетевые фильтры.

ВНИМАНИЕ

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

Стандарт RS-232C регламентирует типы применяемых разъемов.

На аппаратуре АПД (в том числе на COM-портах) принято устанавливать вилки DB-25P или более компактный вариант - DB-9P. Девятиштырьковые разъемы не имеют контактов для дополнительных сигналов, необходимых для синхронного режима (в большинстве 25-штырьковых разъемах эти контакты не используются).

На аппаратуре АКД (модемах) устанавливают розетки DB-25S или DB-9S.

Это правило предполагает, что разъемы АКД могут подключаться к разъемам АПД непосредственно или через переходные “прямые” кабели с розеткой и вилкой, у которых контакты соединены “один в один”. Переходные кабели могут являться и переходниками с 9 на 25-штырьковые разъемы (рис. 4).

Если аппаратура АПД соединяется без модемов, то разъемы устройств (вилки) соединяются между собой нуль-модемным кабелем (Zero-modem, или Z-modem), имеющим на обоих концах розетки, контакты которых соединяются перекрестно по одной из схем, приведенных на рис. 5.


Рис. 3. Прием сигналов RS-232C

Рис. 4. Кабели подключения модемов


Рис. 5. Нуль-модемный кабель: а - минимальный, б - полный

Если на каком-либо устройстве АПД установлена розетка - это почти 100 % того, что к другому устройству оно должно подключаться прямым кабелем, аналогичным кабелю подключения модема. Розетка устанавливается обычно на тех устройствах, у которых удаленное подключение через модем не предусмотрено.

В табл. 1 приведено назначение контактов разъемов COM-портов (и любой другой аппаратуры передачи данных АПД). Контакты разъема DB-25S определены стандартом EIA/TIA-232-E, разъем DB-9S описан стандартом EIA/TIA-574. У модемов (АКД) название цепей и контактов такое же, но роли сигналов (вход-выход) меняются на противоположные.

Таблица 1. Разъемы и сигналы интерфейса RS-232C

Обозначение цепи

Контакт разъема

№ провода кабеля выносного разъема PC

Направление

1 Ленточный кабель 8-битных мультикарт.
2 Ленточный кабель 16-битных мультикарт и портов на системных платах.
3 Вариант ленточного кабеля портов на системных платах.
4 Широкий ленточный кабель к 25-контактному разъему.

Подмножество сигналов RS-232C, относящихся к асинхронному режиму, рассмотрим с точки зрения COM-порта PC. Для удобства будем пользоваться мнемоникой названий, принятой в описаниях COM-портов и большинства устройств (она отличается от безликих обозначений RS-232 и V.24). Напомним, что активному состоянию управляющих сигналов (“включено”) и нулевому значению бита передаваемых данных соответствует положительный потенциал (выше +3 В) сигнала интерфейса, а состоянию “выключено” и единичному биту - отрицательный (ниже –3 В). Назначение сигналов интерфейса приведено в табл. 2. Нормальную последовательность управляющих сигналов для случая подключения модема к COM-порту иллюстрирует рис. 6.

Таблица 2. Назначение сигналов интерфейса RS-232C

Назначение

Protected Ground - защитная земля, соединяется с корпусом устройства и экраном кабеля

Signal Ground - сигнальная (схемная) земля, относительно которой действуют уровни сигналов

Transmit Data - последовательные данные - выход передатчика

Receive Data - последовательные данные - вход приемника

Request To Send - выход запроса передачи данных: состояние “включено” уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением - состояние “включено” служит сигналом модему на переключение в режим передачи

Clear To Send - вход разрешения терминалу передавать данные. Состояние “выключено” запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных

Data Set Ready - вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)

Data Terminal Ready - выход сигнала готовности терминала к обмену данными. Состояние “включено” поддерживает коммутируемый канал в состоянии соединения

Data Carrier Detected - вход сигнала обнаружения несущей удаленного модема

Ring Indicator - вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова


Рис. 6. Последовательность управляющих сигналов интерфейса

  1. Установкой DTR компьютер указывает на желание использовать модем.
  2. Установкой DSR модем сигнализирует о своей готовности и установлении соединения.
  3. Сигналом RTS компьютер запрашивает разрешение на передачу и заявляет о своей готовности принимать данные от модема.
  4. Сигналом CTS модем уведомляет о своей готовности к приему данных от компьютера и передаче их в линию.
  5. Снятием CTS модем сигнализирует о невозможности дальнейшего приема (например, буфер заполнен) - компьютер должен приостановить передачу данных.
  6. Сигналом CTS модем разрешает компьютеру продолжить передачу (в буфере появилось место).
  7. Снятие RTS может означать как заполнение буфера компьютера (модем должен приостановить передачу данных в компьютер), так и отсутствие данных для передачи в модем. Обычно в этом случае модем прекращает пересылку данных в компьютер.
  8. Модем подтверждает снятие RTS сбросом CTS.
  9. Компьютер повторно устанавливает RTS для возобновления передачи.
  10. Модем подтверждает готовность к этим действиям.
  11. Компьютер указывает на завершение обмена.
  12. Модем отвечает подтверждением.
  13. Компьютер снимает DTR, что обычно является сигналом на разрыв соединения (“повесить трубку”).
  14. Модем сбросом DSR сигнализирует о разрыве соединения.

Из рассмотрения этой последовательности становятся понятными соединения DTR–DSR и RTS–CTS в нуль-модемных кабелях.

Асинхронный режим передачи

Асинхронный режим передачи является байт-ориентированным (символьно-ориентированным): минимальная пересылаемая единица информации - один байт (один символ). Формат посылки байта иллюстрирует рис. 7. Передача каждого байта начинается со старт-бита, сигнализирующего приемнику о начале посылки, за которым следуют биты данных и, возможно, бит четности (Parity). Завершает посылку стоп-бит, гарантирующий паузу между посылками. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (логический 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена. Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала старт-бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале стробы располагаются в середине битовых интервалов, что позволяет принимать данные и при незначительном рассогласовании скоростей приемника и передатчика. Очевидно, что при передаче 8 бит данных, одного контрольного и одного стоп-бита предельно допустимое рассогласование скоростей, при котором данные будут распознаны верно, не может превышать 5 %. С учетом фазовых искажений и дискретности работы внутреннего счетчика синхронизации реально допустимо меньшее отклонение частот. Чем меньше коэффициент деления опорной частоты внутреннего генератора (чем выше частота передачи), тем больше погрешность привязки стробов к середине битового интервала, и требования к согласованности частот становятся более строгие. Чем выше частота передачи, тем больше влияние искажений фронтов на фазу принимаемого сигнала. Взаимодействие этих факторов приводит к повышению требований к согласованности частот приемника и передатчика с ростом частоты обмена.


Рис.7. Формат асинхронной передачи RS-232C

Формат асинхронной посылки позволяет выявлять возможные ошибки передачи.

  • Если принят перепад, сигнализирующий о начале посылки, а по стробу старт-бита зафиксирован уровень логической единицы, старт-бит считается ложным и приемник снова переходит в состояние ожидания. Об этой ошибке приемник может не сообщать.
  • Если во время, отведенное под стоп-бит, обнаружен уровень логического нуля, фиксируется ошибка стоп-бита.
  • Если применяется контроль четности, то после посылки бит данных передается контрольный бит. Этот бит дополняет количество единичных бит данных до четного или нечетного в зависимости от принятого соглашения. Прием байта с неверным значением контрольного бита приводит к фиксации ошибки.
  • Контроль формата позволяет обнаруживать обрыв линии: как правило, при обрыве приемник “видит” логический нуль, который сначала трактуется как старт-бит и нулевые биты данных, но потом срабатывает контроль стоп-бита.

Для асинхронного режима принят ряд стандартных скоростей обмена: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бит/с. Иногда вместо единицы измерения “бит/с” используют “бод” (baud), но при рассмотрении двоичных передаваемых сигналов это некорректно. В бодах принято измерять частоту изменения состояния линии, а при недвоичном способе кодирования (широко применяемом в современных модемах) в канале связи скорости передачи бит (бит/с) и изменения сигнала (бод) могут отличаться в несколько раз.

Количество бит данных может составлять 5, 6, 7 или 8 (5- и 6-битные форматы распространены незначительно). Количество стоп-бит может быть 1, 1,5 или 2 (“полтора бита” означает только длительность стопового интервала).

Управление потоком данных

Для управления потоком данных (Flow Control) могут использоваться два варианта протокола - аппаратный и программный. Иногда управление потоком путают с квитированием. Квитирование (handshaking) подразумевает посылку уведомления о получении элемента, в то время как управление потоком предполагает посылку уведомления о возможности или невозможности последующего приема данных. Зачастую управление потоком основано на механизме квитирования.

Аппаратный протокол управления потоком RTS/CTS (hardware flow control) использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к их приему (рис. 8). Передатчик “выпускает” очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части - сдвигающий, для приема очередной посылки, и хранящий, из которого считывается принятый байт. Это позволяет реализовать обмен по аппаратному протоколу без потери данных.


Рис.8. Аппаратное управление потоком

Аппаратный протокол удобно использовать при подключении принтеров и плоттеров, если они его поддерживают. При непосредственном (без модемов) соединении двух компьютеров аппаратный протокол требует перекрестного соединения линий RTS - CTS.

При непосредственном соединении у передающего терминала должно быть обеспечено состояние “включено” на линии CTS (соединением собственных линий RTS - CTS), в противном случае передатчик будет “молчать”.

Применяемые в IBM PC приемопередатчики 8250/16450/16550 сигнал CTS аппаратно не отрабатывают, а только показывают его состояние в регистре MSR. Реализация протокола RTS/CTS возлагается на драйвер BIOS Int 14h, и называть его “аппаратным” не совсем корректно. Если же программа, пользующаяся COM-портом, взаимодействует с UART на уровне регистров (а не через BIOS), то обработкой сигнала CTS для поддержки данного протокола она занимается сама. Ряд коммуникационных программ позволяет игнорировать сигнал CTS (если не используется модем), и для них не требуется соединение входа CTS с выходом даже своего сигнала RTS. Однако существуют и иные приемопередатчики (например, 8251), в которых сигнал CTS отрабатывается аппаратно. Для них, а также для “честных” программ, использование сигнала CTS на разъемах (а то и на кабелях) обязательно.

Программный протокол управления потоком XON/XOFF предполагает наличие двунаправленного канала передачи данных. Работает протокол следующим образом: если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устройство, приняв этот символ, приостанавливает передачу. Когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (11h), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается, по крайней мере, на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа (рис. 9). Из этого следует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимаемых данных и сигнализирующим о неготовности заблаговременно (имея в буфере свободное место).


Рис.9. Программное управление потоком XON/XOFF

Преимущество программного протокола заключается в отсутствии необходимости передачи управляющих сигналов интерфейса - минимальный кабель для двустороннего обмена может иметь только 3 провода (см. рис. 5, а). Недостатком, помимо обязательного наличия буфера и большего времени реакции (снижающего общую производительность канала из-за ожидания сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом случае из потока принимаемых данных должны выделяться (и обрабатываться) символы управления потоком, что ограничивает набор передаваемых символов.

Кроме этих двух распространенных стандартных протоколов, поддерживаемых и ПУ, и ОС, существуют и другие.

Описание интерфейса RS-232, формат используемых разъемов и назначение выводов, обозначения сигналов, протокол обмена данными.

Общее описание

Интерфейс RS-232, совсем официально называемый "EIA/TIA-232-E", но более известный как интерфейс "COM-порта", ранее был одним из самых распространенных интерфейсов в компьютерной технике. Он до сих пор встречается в настольных компьютерах, несмотря на появление более скоростных и "интеллектуальных" интерфейсов, таких как USB и FireWare. К его достоинствам с точки зрения радиолюбителей можно отнести невысокую минимальную скорость и простоту реализации протокола в самодельном устройстве.

Физический интерфейс реализуется одним из двух типов разъемов: DB-9M или DB-25M, последний в выпускаемых в настоящее время компьютерах практически не встречается.

Назначение выводов 9-контактного разъема


9-контактная вилка типа DB-9M
Нумерация контактов со стороны штырьков
Направление сигналов указано относительно хоста (компьютера)
Контакт Сигнал Направление Описание
1 CD Вход Обнаружена несущая
2 RXD Вход Принимаемые данные
3 TXD Выход Передаваемые данные
4 DTR Выход Хост готов
5 GND - Общий провод
6 DSR Вход Устройство готово
7 RTS Выход Хост готов к передаче
8 CTS Вход Устройство готово к приему
9 RI Вход Обнаружен вызов

Назначение выводов 25-контактного разъема

Контакт Сигнал Направление Описание
1 SHIELD - Экран
2 TXD Выход Передаваемые данные
3 RXD Вход Принимаемые данные
4 RTS Выход Хост готов к передаче
5 CTS Вход Устройство готово к приему
6 DSR Вход Устройство готово
7 GND - Общий провод
8 CD Вход Обнаружена несущая
9 - - Резерв
10 - - Резерв
11 - - Не используется
12 SCD Вход Обнаружена несущая #2
13 SCTS Вход Устройство готово к приему #2
Контакт Сигнал Направление Описание
14 STXD Выход Передаваемые данные #2
15 TRC Вход Тактирование передатчика
16 SRXD Вход Принимаемые данные #2
17 RCC Вход Тактирование приемника
18 LLOOP Выход Локальная петля
19 SRTS Выход Хост готов к передаче #2
20 DTR Выход Хост готов
21 RLOOP Выход Внешняя петля
22 RI Вход Обнаружен вызов
23 DRD Вход Определена скорость данных
24 TRCO Выход Тактирование внешнего передатчика
25 TEST Вход Тестовый режим

Из таблиц видно, что 25-контактный интерфейс отличается наличием полноценного второго канала приема-передачи (сигналы, обозначенные "#2"), а также многочисленных дополнительных управляющих и контрольных сигналов. Однако, часто, несмотря на наличие в компьютере "широкого" разъема, дополнительные сигналы на нем просто не подключены.

Электрические характеристики

Логические уровни передатчика: "0" - от +5 до +15 Вольт, "1" - от -5 до -15 Вольт.

Логические уровни приемника: "0" - выше +3 Вольт, "1" - ниже -3 Вольт.

входное сопротивление приемника не менее 3 кОм.

Данные характеристики определены стандартом как минимальные, гарантирующие совместимость устройств, однако реальные характеристики обычно существенно лучше, что позволяет, с одной стороны, питать маломощные устройства от порта (например, так спроектированы многочисленные самодельные data-кабели для сотовых телефонов), а с другой - подавать на вход порта инвертированный TTL-уровень вместо двуполярного сигнала.

Описание основных сигналов интерфейса

CD - Устройство устанавливает этот сигнал, когда обнаруживает несущую в принимаемом сигнале. Обычно этот сигнал используется модемами, которые таким образом сообщают хосту о обнаружении работающего модема на другом конце линии.

RXD - Линия приема хостом данных от устройства. Подробно описана в разделе "Протокол обмена данными".

TXD - Линия передачи хостом данных к устройству. Подробно описана в разделе "Протокол обмена данными".

DTR - Хост устанавливает этот сигнал, когда готов к обмену данными. Фактически сигнал устанавливается при открытии порта коммуникационной программой и остается в этом состоянии все время, пока порт открыт.

DSR - Устройство устанавливает этот сигнал, когда включено и готово к обмену данными с хостом. Этот и предыдущий (DTR) сигналы должны быть установлены для обмена данными.

RTS - Хост устанавливает этот сигнал перед тем, как начать передачу данных устройству, а также сигнализирует о готовности к приему данных от устройства. Используется при аппаратном управлении обменом данными.

CTS - Устройство устанавливает этот сигнал в ответ на установку хостом предыдущего (RTS), когда готово принять данные (например, когда предыдущие присланные хостом данные переданы модемом в линию или есть свободное место в промежуточном буфере).

RI - Устройство (обычно модем) устанавливает этот сигнал при получении вызова от удаленной системы, например при приеме телефонного звонка, если модем настроен на прием звонков.

Протокол обмена данными

В протоколе RS-232 существуют два метода управления обменом данных: аппаратный и программный, а также два режима передачи: синхронный и асинхронный. Протокол позволяет использовать любой из методов управления совместно с любым режимом передачи. Также допускается работа без управления потоком, что подразумевает постоянную готовность хоста и устройства к приему данных, когда связь установлена (сигналы DTR и DSR установлены).

Аппаратный метод управления реализуется с помощью сигналов RTS и CTS. Для передачи данных хост (компьютер) устанавливает сигнал RTS и ждет установки устройством сигнала CTS, после чего начинает передачу данных до тех пор, пока сигнал CTS установлен. Сигнал CTS проверяется хостом непосредственно перед началом передачи очередного байта, поэтому байт, который уже начал передаваться, будет передан полностью независимо от значения CTS. В полудуплексном режиме обмена данными (устройство и хост передают данные по очереди, в полнодуплексном режиме они могут делать это одновременно) снятие сигнала RTS хостом означает его переход в режим приема.

Программный метод управления заключается в передаче принимающей стороной специальных символов остановки (символ с кодом 0x13, называемый XOFF) и возобновления (символ с кодом 0x11, называемый XON) передачи. При получении данных символов передающая сторона должна соответственно остановить передачу или возобновить ее (при наличии данных, ожидающих передачи). Этот метод проще с точки зрения реализации аппаратуры, однако обеспечивает более медленную реакцию и соответственно требует заблаговременного извещения передатчика при уменьшении свободного места в приемном буфере до определенного предела.

Синхронный режим передачи подразумевает непрерывный обмен данными, когда биты следуют один за другим без дополнительных пауз с заданной скоростью. Этот режим COM-портом не поддерживается .

Асинхронный режим передачи состоит в том, что каждый байт данных (и бит контроля четности, в случае его наличия) "оборачивается" синхронизирующей последовательностью из одного нулевого старт-бита и одного или нескольких единичных стоп-битов. Схема потока данных в асинхронном режиме представлена на рисунке.

Один из возможных алгоритмов работы приемника следующий:

  1. Ожидать уровня "0" сигнала приема (RXD в случае хоста, TXD в случае устройства).
  2. Отсчитать половину длительности бита и проверить, что уровень сигнала все еще "0"
  3. Отсчитать полную длительность бита и текущий уровень сигнала записать в младший бит данных (бит 0)
  4. Повторить предыдущий пункт для всех остальных битов данных
  5. Отсчитать полную длительность бита и текущий уровень сигнала использовать для проверки правильности приема с помощью контроля четности (см. далее)
  6. Отсчитать полную длительность бита и убедиться, что текущий уровень сигнала "1".