Интерфейс RS-232C
Интерфейс 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
|
Направление
|
COM-
|
RS-
|
V.24
|
DB-
|
DB-
|
11
|
22
|
33
|
44
|
I/O
|
порт
|
232
|
Стык 2
|
25P
|
9P
|
|
|
|
|
|
PG
|
AA
|
101
|
1
|
5
|
(10)
|
(10)
|
(10)
|
1
|
–
|
SG
|
AB
|
102
|
7
|
5
|
5
|
9
|
1
|
13
|
–
|
TD
|
BA
|
103
|
2
|
3
|
3
|
5
|
3
|
3
|
O
|
RD
|
BB
|
104
|
3
|
2
|
2
|
3
|
4
|
5
|
I
|
RTS
|
CA
|
105
|
4
|
7
|
7
|
4
|
8
|
7
|
O
|
CTS
|
CB
|
106
|
5
|
8
|
8
|
6
|
7
|
9
|
I
|
DSR
|
CC
|
107
|
6
|
6
|
6
|
2
|
9
|
11
|
I
|
DTR
|
CD
|
108/2
|
20
|
4
|
4
|
7
|
2
|
14
|
O
|
DCD
|
CF
|
109
|
8
|
1
|
1
|
1
|
5
|
15
|
I
|
RI
|
CE
|
125
|
22
|
9
|
9
|
8
|
6
|
18
|
I
|
1 Ленточный кабель 8-битных мультикарт.
2 Ленточный кабель 16-битных мультикарт и
портов на системных платах.
3 Вариант ленточного кабеля портов на системных платах.
4 Широкий ленточный кабель к 25-контактному разъему.
Подмножество сигналов RS-232C,
относящихся к асинхронному режиму, рассмотрим с точки зрения COM-порта PC. Для
удобства будем пользоваться мнемоникой названий, принятой в описаниях
COM-портов и большинства устройств (она отличается от безликих обозначений
RS-232 и V.24). Напомним, что активному состоянию управляющих сигналов
(“включено”) и нулевому значению бита передаваемых данных соответствует положительный
потенциал (выше +3 В) сигнала интерфейса, а состоянию “выключено” и
единичному биту — отрицательный (ниже –3 В). Назначение
сигналов интерфейса приведено в табл. 2. Нормальную последовательность
управляющих сигналов для случая подключения модема к COM-порту иллюстрирует
рис. 6.
Таблица 2.
Назначение сигналов интерфейса RS-232C
Сигнал
|
Назначение
|
PG
|
Protected Ground —
защитная земля, соединяется с корпусом устройства и экраном кабеля
|
SG
|
Signal Ground —
сигнальная (схемная) земля, относительно которой действуют уровни сигналов
|
TD
|
Transmit Data —
последовательные данные — выход передатчика
|
RD
|
Receive Data —
последовательные данные — вход приемника
|
RTS
|
Request To Send — выход запроса передачи данных: состояние
“включено” уведомляет модем о наличии у терминала данных для передачи. В
полудуплексном режиме используется для управления направлением —
состояние “включено” служит сигналом модему на переключение в режим передачи
|
CTS
|
Clear To Send — вход разрешения терминалу передавать
данные. Состояние “выключено” запрещает передачу данных. Сигнал используется
для аппаратного управления потоками данных
|
DSR
|
Data Set Ready — вход сигнала готовности от аппаратуры передачи
данных (модем в рабочем режиме подключен к каналу и закончил действия
по согласованию с аппаратурой на противоположном конце канала)
|
DTR
|
Data Terminal
Ready — выход сигнала готовности терминала
к обмену данными. Состояние “включено” поддерживает коммутируемый канал в
состоянии соединения
|
DCD
|
Data Carrier
Detected — вход сигнала обнаружения несущей удаленного модема
|
RI
|
Ring Indicator —
вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем
сигнализирует о принятии вызова
|
Рис. 6. Последовательность
управляющих сигналов интерфейса
- Установкой DTR компьютер
указывает на желание использовать модем.
- Установкой DSR модем
сигнализирует о своей готовности и установлении соединения.
- Сигналом RTS компьютер
запрашивает разрешение на передачу и заявляет о своей готовности принимать
данные от модема.
- Сигналом CTS модем
уведомляет о своей готовности к приему данных от компьютера и передаче их
в линию.
- Снятием CTS модем
сигнализирует о невозможности дальнейшего приема (например, буфер
заполнен) — компьютер должен приостановить передачу данных.
- Сигналом CTS модем разрешает
компьютеру продолжить передачу (в буфере появилось место).
- Снятие RTS может означать
как заполнение буфера компьютера (модем должен приостановить передачу
данных в компьютер), так и отсутствие данных для передачи в модем. Обычно
в этом случае модем прекращает пересылку данных в компьютер.
- Модем подтверждает
снятие RTS
сбросом CTS.
- Компьютер повторно
устанавливает RTS
для возобновления передачи.
- Модем подтверждает
готовность к этим действиям.
- Компьютер указывает на
завершение обмена.
- Модем отвечает
подтверждением.
- Компьютер снимает DTR, что обычно
является сигналом на разрыв соединения (“повесить трубку”).
- Модем сбросом 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), является сложность реализации полнодуплексного
режима обмена. В этом случае из потока принимаемых данных должны выделяться (и
обрабатываться) символы управления потоком, что ограничивает набор передаваемых
символов.
Кроме этих двух распространенных стандартных протоколов, поддерживаемых и
ПУ, и ОС, существуют и другие.