RS-232 (англ.Recommended Standard 232, другое название EIA232[1]) — стандарт физического уровня для асинхронного интерфейса (UART). Устройство, поддерживающее этот стандарт, широко известно как последовательный портперсональных компьютеров. Исторически стандарт имел широкое распространение в телекоммуникационном оборудовании. В настоящее время используется для подключения к компьютерам широкого спектра оборудования, нетребовательного к скорости обмена, особенно при значительном удалении его от компьютера и отклонении условий применения от стандартных. В компьютерах, занятых офисными и развлекательными приложениями, практически вытеснен интерфейсом USB.
RS-232 обеспечивает передачу данных и некоторых специальных сигналов между терминалом (англ.Data Terminal Equipment, DTE) и коммуникационным устройством (англ.Data Communications Equipment, DCE) на расстояние до 15 метров на максимальной скорости (115200 бод). Так как этот интерфейс известен не только простотой программирования, но и неприхотливостью, в реальных условиях это расстояние увеличивается во много раз с примерно пропорциональным снижением скорости.
Протокол интерфейса предполагает два режима передачи данных — синхронный и асинхронный, а также два метода управления обменом данных — аппаратный и программный. Каждый режим может работать с любым методом управления. В протоколе также предполагается вариант управления передачей данных по специальным сигналам, устанавливаемым хостом (DSR — сигнал состояния готовности, DTR — сигнал готовности передачи данных).
Для передачи данных по интерфейсу RS-232 используется код NRZ, который не является самосинхронизирующимся, поэтому для синхронизации используются стартовый и стоповый биты, позволяющие выделить битовую последовательность и синхронизировать приёмник с передатчиком.
Изначально создавался для подключения телефонных модемов к компьютерам[источник не указан 2273 дня]. В связи с такой специализацией имеет рудименты, например, в виде отдельной линии RING («звонок»). Постепенно телефонные модемы перешли на другие интерфейсы (USB), но разъём для RS-232 имелся на всех персональных компьютерах, и многие изготовители оборудования использовали его для подключения своего оборудования (например, компьютерной мыши).
В настоящее время чаще всего используется в промышленном и узкоспециальном оборудовании, встраиваемых устройствах. На портативных компьютерах (ноутбуках, нетбуках, КПК и т. п.) широкого применения RS-232 не нашёл, однако материнские платы стационарных персональных компьютеров до недавнего времени ещё содержали RS-232 — либо в виде разъёма на задней панели, либо в виде колодки для подключения шлейфа на плате. Также возможно использование переходников-преобразователей. Кроме того, RS-232 имеется на некоторых телевизорах и ресиверах, в частности, спутниковых, где предназначен в том числе для обновления встроенного ПО через компьютер.
Часто этот стандарт используется для взаимодействия микроконтроллеров различных архитектур, имеющих в своем составе интерфейс UART, с другими цифровыми устройствами и периферией.
RS-232 — проводной дуплексный интерфейс. Метод передачи данных аналогичен асинхронному последовательному интерфейсу UART.
Информация передаётся по проводам двоичным сигналом с двумя уровнями напряжения (код NRZ). Логическому «0» соответствует положительное напряжение (от +5 до +15 В для передатчика), а логической «1» — отрицательное (от −5 до −15 В для передатчика). Для электрического согласования линий RS-232 и стандартной цифровой логики UART выпускается большая номенклатура микросхем драйверов, например, MAX232.
Помимо линий входа и выхода данных, RS-232 регламентировал ряд необязательных вспомогательных линий для аппаратного управления потоком и специальных функций.
Экран кабеля, может соединять корпуса приборов. Не используется для сигналов. В зависимости от условий эксплуатации может соединяться, или изолироваться от сигнальной цепи AB (перемычкой).
-
1
1
-
-
102
Signal ground or common return
AB
Signal Common
GND
SG
Общий сигнальный провод
-
7
7
5
4
103
Transmitted data
BA
Transmitted Data
TxD
D
Передача данных. Производить передачу разрешается при состоянии (CA&CB&CC&CD)=ON. Также разрешается передача управляющих команд на DCE (программирование, набор номера) при состоянии (CB&¬(CC)&CD) =ON
DTE→DCE
2
2
3
6
104
Received Data
BB
Received Data
RxD
D
Приём данных
DTE←DCE
3
3
2
5
105
Request to send
CA
Request to send
RTS
C
Запрос на передачу. Передача данных по BA сопровождается этим сигналом. В полудуплексном режиме управляет направлением передачи (запрещает приём данных по BB). CA не должен переводиться из состояния OFF в состояние ON пока CF=ON.
DTE→DCE
4
4
7
8
133
Ready for receiving
CJ
Ready for receiving
-
C
Готов к приёму. Разрешает приём данных по BB. Используется для контроля переполнения входного буфера DTE. Обычно в EIA/TIA не используется, но может быть задействован вместо цепи CA (в этом случае CA всегда остаётся в состоянии ON).
DTE→DCE
106
Ready for sending
CB
Clear to send
CTS
C
Свободен для передачи. При СС=ON показывает, что DCE и канал связи готовы к передаче данных. При СС=OFF показывает, что DCE готов к приёму команд управления.
DTE←DCE
5
5
8
7
107
Data set ready
CC
DCE Ready
DSR
C
Указывает на готовность DCE к работе. Назначение сигнала зависит от режима работы DCE. В основном режиме показывает исправность системы, или готовность канала связи.
Готовность DTE. Запрос от DTE к DCE на подготовку к работе линии связи.
DTE→DCE
20
20
4
3
108/2
Data terminal ready
109
Data channel received line signal detector
CF
Received Line Signal Detector
CD
C
Обнаружен принимаемый сигнал. Конкретный смысл сигнала зависит от оборудования. Обычно показывает рабочее состояние канала связи для режима приёма. В полудуплексном режиме запрещает включение сигнала CA.
DTE←DCE
8
8
1
2
111
Data signal rate selector (DTE)
CH/CI
Data signal rate selector
DSRS
C
Выбор скорости передачи данных. ON — высокая скорость OFF — низкая. Если необходимо использовать цепь SCF, то цепи CH и CI подключаются к контакту 23. Если цепь SCF не используется, то цепь CI подключается к контакту 12
DTE→DCE
23
23
112
Data signal rate selector (DCE)
DTE←DCE
113
Transmitter signal element timing (DTE)
DA
Transmitter Signal Element Timing (DTE source)
TST out
T
Синхронизация сигнала BA (источник в DTE)
DTE→DCE
24
24
114
Transmitter signal element timing (DCE)
DB
Transmitter Signal Element Timing (DCE source)
TST in
T
Синхронизация сигнала BA (источник в DCE)
DTE←DCE
15
15
115
Receiver signal element timing (DCE)
DD
Receiver signal element timing (DCE source)
RST
T
Синхронизация сигнала BB (источник в DCE)
DTE←DCE
17
17
118
Transmitted backward channel data
SBA
Secondary transmitted data
D
Передача данных по второму (резервному) каналу. Аналогичен сигналу BA.
DTE→DCE
14
14
119
Received backward channel data
SBB
Secondary received data
D
Приём данных по второму (резервному) каналу. Аналогичен сигналу BB.
DTE←DCE
16
16
120
Transmit backward channel line signal
SCA
Secondary request to send
C
Запрос на передачу по второму (резервному) каналу. Аналогичен сигналу CA.
DTE→DCE
19
19
121
Backward channel ready
SCB
Secondary clear to send
C
Свободен для передачи по второму (резервному) каналу. Аналогичен сигналу CB.
DTE←DCE
13
13
122
Backward channel received line signal detector
SCF
Secondary received line signal detector
C
Обнаружен принимаемый сигнал по второму (резервному) каналу. Аналогичен сигналу CF.
DTE←DCE
12
12
112
Data signal rate selector (DCE)
CI
Data signal rate selector (DCE source)
C
Выбор скорости передачи данных. Если необходимо использовать цепь SCF, то цепи CH и CI подключаются к контакту 23. Если цепь SCF не используется, то цепь CI подключается к контакту 12
DTE←DCE
125
Calling indicator
CE
Ring indicator
RI
C
Запрос на установку соединения от удалённого DCE. Сигнал передаётся независимо от состояния других сигналов. (Назначение контакта в EIA/TIA выбирается по требованию)
DTE←DCE
22
22
9
1
135
Received energy present
CK
Received Energy Present
C
Показывает наличие сигнала на линии приёма. (Назначение контакта в EIA/TIA выбирается по требованию)
DTE←DCE
126
Select transmit frequency
N/A (Unassigned)
C
Не используется в EIA/TIA. Контакт 11 подключён к цепи 126 в ISO/IEC 2110
DTE→DCE
11
11
140
Loopback/Maintenance test
RL
Remote loopback
RL
C
Тестирование дальнего DCE. Сигнал BA напрямую передаются в линию BB.
DTE→DCE
21
21
110
Цепь 110 не включена в текущую редакцию V.24
CG
Signal quality detector
-
C
в EIA/TIA использование сигнала не рекомендуется
DTE←DCE
141
Local loopback
LL
Local Loopback
LL
C
Тестирование ближнего DCE. Сигнал BA напрямую передаётся в линию BB.
DTE→DCE
18
18
142
Test indicator
TM
Test mode
TM
C
Показывает, что DTE находится в режиме тестирования (в том числе по запросу от удалённого DCE).
Устройства для связи по последовательному каналу соединяются кабелями с 9- или 25-контактными разъёмами типа D-sub. Обычно они обозначаются Dx-yz, где
x — размер разъёма (например, B для 25 контактов, E для 9 контактов);
y — количество контактов (25 или 9);
z — тип контактов: вилка (Р, pin) или розетка (S, socket).
Так, DB25P — вилка с 25 контактами, DE9P — вилка с 9 контактами, а DB25S и DE9S, соответственно — розетки с 25 и 9 контактами.
Первоначально в RS-232 использовались DB-25, но, поскольку многие приложения использовали лишь часть предусмотренных стандартом контактов, стало возможно применять для этих целей 9-штырьковые разъёмы DE-9, которые рекомендованы стандартом RS-574.
Номера основного контакта, передающего и принимающего данные, для разъёмов DE-9 и DB-25 разные: для DE-9 контакт 2 — вход приёмника, контакт 3 — выход передатчика. Для DB-25, наоборот, контакт 2 — выход передатчика, контакт 3 — вход приёмника.
С развитием техники производители телекоммуникационного оборудования стали использовать для RS-232 разнообразные соединители, например 6P6C, 6P4C, 8P8C и др.[источник не указан 1417 дней]
Стандарт
Стандарт RS-232 был предложен в 1962 году американской Ассоциацией электронной промышленности (EIA). Стандарты EIA изначально имели префикс «RS» (англ.recommended standard, «рекомендованный стандарт»), но сейчас обозначаются просто «EIA». В 1969 году представлена третья редакция (RS-232C), в 1987 году — четвёртая (RS-232D, или EIA-232D). Самой последней является модификация «Е», принятая в июле 1991 года как стандарт EIA/TIA-232E. В данном варианте нет никаких технических изменений, которые могли бы привести к проблемам совместимости с предыдущими вариантами этого стандарта.
RS-232 идентичен стандартам ITU-T (CCITT) V.24/V.28, X.20bis/X.21bis и ISO IS2110.
Ограничения
Скорость работы ограничена физическими параметрами скорости передачи одного байта: на 115200 бод, каждый бит длится (1/115200) = 8,7 µs. Если передаются 8-разрядные данные, это длится 8 x 8,7 µs = 69 µs, но каждый байт требует дополнительного стартового и стопового бита, поэтому необходимо 10 x 8,7 µs = 87 µs. Это означает максимальную скорость 11,5 Кбайт в секунду.
На практике в зависимости от качества применяемого кабеля требуемое расстояние передачи данных в 15 метров может не достигаться, составляя, к примеру, порядка 1,5 м на скорости 115200 бод для неэкранированного плоского или круглого кабеля. Это вызвано применением однофазных сигналов вместо дифференциальных, а также отсутствием требований по согласованию приёмника (и часто также передатчика) с линией.
Для преодоления этого ограничения, а также возможного получения гальванической развязки между узлами, преобразуют физический уровень RS-232 в другие физические уровни асинхронного интерфейса:
«RS-232 — RS-422» (с сохранением полной программной совместимости) или «RS-232 — RS-485» (с определёнными программными ограничениями). Расстояние может быть увеличено до 1 км на скорости 9600 бод и при использовании кабеля типа «витая пара» категории 3;
внешний преобразователь «RS232 — Токовая петля» для 9-контактного разъёма или соответствующие цепи 25-контактного разъёма в случае наличия преобразователя внутри устройств.
↑Изначально по стандарту на контакт 1 подключался сигнал CE. Но поскольку CE используется в основном для модемов, то часто на контакт 1 подключается сигнал CC.
Java Simple Serial ConnectorАрхивная копия от 10 марта 2011 на Wayback Machine — библиотека для работы с последовательными портами из Java. Поддерживает Win32, Win64, Linux_x86, Linux_x86_64, Linux_ARM, Solaris_x86, Solaris_x86_64, MacOSX_x86, MacOSX_x86_64, MacOSX_PPC, MacOSX_PPC64