Последовательный порт
Последовательный порт (англ. serial port) — это аппаратный интерфейс, предназначенный для последовательной передачи данных по одному биту за раз, как на вход, так и на выход[1]. Это отличается от параллельных портов, которые передают несколько бит одновременно. На протяжении большей части истории персональных компьютеров данные передавались через последовательные порты к таким устройствам, как модемы, терминалы, различные периферийные устройства, а также напрямую между компьютерами.
Хотя такие интерфейсы, как Ethernet, FireWire и USB, также осуществляют передачу данных в виде последовательного потока, термин «последовательный порт» обычно применяется к аппаратным средствам, совместимым со стандартами RS-232 или родственными, такими как RS-485 и RS-422.
В современных массовых персональных компьютерах последовательные порты практически полностью вытеснены более скоростными интерфейсами, преимущественно USB. Однако последовательные порты по-прежнему широко применяются в задачах, где требуются простые и малоскоростные интерфейсы, например, в промышленной автоматизации, научных приборах, системах продажи и некоторых промышленных/бытовых устройствах.
Серверные компьютеры могут использовать последовательный порт как консоль управления для диагностики, а сетевое оборудование (например, маршрутизаторы и коммутаторы) — как консольный порт для настройки, диагностики и аварийного доступа. Для подключения таких и других устройств к современному ПК могут использоваться переходники USB-to-serial, добавляющие последовательный порт.
Аппаратная часть
Современные устройства используют специализированную интегральную схему — UART (универсальный асинхронный приёмопередатчик), реализующую последовательный порт. Такая микросхема переводит символы в асинхронный последовательный формат и обратно, реализуя синхронизацию и структурирование данных, заданные протоколом. В IBM PC, при наличии последовательных портов, их функцию реализует один или несколько UART.
Дешёвые системы (например, многие ранние домашние компьютеры) могли выполнять передачу данных напрямую центральным процессором через выводы на плате с помощью техники «bit banging». Часто такие порты отличались своими схемами и уровнями напряжения, не совместимыми с RS-232.
До появления интегральных UART, последовательные порты применялись на мейнфреймах и миникомпьютерах, где реализовывались с помощью отдельных микросхем — регистра сдвига, логических элементов, счётчиков и прочей логики. В дальнейшем последовательные порты интегрировались в Super I/O и затем в чипсеты ПК.
DTE и DCE
Сигналы последовательного порта являются однонаправленными: при соединении двух устройств выход одного должен подключаться к входу другого. Устройства делятся на: оконечное оборудование данных (DTE) и оконечное оборудование цепи передачи данных (DCE). Вывод, являющийся выходом на устройстве DTE, будет входом на DCE, и наоборот, поэтому DTE и DCE можно соединять обычным («прямым») кабелем, где номера контактов совпадают на обоих концах.
Традиционно компьютеры и терминалы считаются DTE, а периферия (например, модемы) — DCE. Для соединения двух устройств одного типа (DTE-DTE или DCE-DCE) используют кабель с перекрёстными линиями передачи/приёма — нуль-модемный, crossover или roll-over кабель.
Полярность (пол) разъёмов
Последовательные разъёмы обычно имеют различие по полу, то есть соединяются только «мужской» с «женским». В разъёмах D-subminiature контакты у мужского — штырьки, у женского — гнёзда[2]. Разъёмы любого пола могут устанавливаться на панели или проводе.
Обычно на DTE устанавливают мужской разъём, на DCE — женский (кабель, соответственно, противоположного пола). Тем не менее, это не всегда так: например, большинство последовательных принтеров имеют женский разъём DB25, но всё ещё являются DTE[3]. В таких случаях проблему решают соответствующим кабелем или сменой пола с помощью переходника.
Разъёмы
Оригинальный стандарт RS-232 предполагал только 25-контактный разъём D-subminiature, однако со временем стали использоваться и другие типы — из соображений экономии и размера, так как многие устройства не используют все 20 сигналов стандарта. Пример — DE-9 (9-контактный D-sub), ставший стандартом для ПК с опцией Serial/Parallel Adapter для IBM PC/AT[4]. Для RS-232 этот разъём стандартизирован в TIA-574.
В миниатюрной электронике (например, графические калькуляторы[5] и ручные радиостанции[6]) используют телефонные (jack) разъёмы на 2,5 или 3,5 мм и простую 3-проводную схему: передача, приём, земля.
8P8C (RJ-45) разъёмы также распространены. Стандарт EIA/TIA-561 определяет их распайку, а rollover-кабель (стандарт Yost) используется на Unix-компьютерах и сетевом оборудовании (Cisco Systems и др.)[7].
Многие Macintosh работали со стандартом RS-422, обычно с круглыми разъёмами mini-DIN, причём были стандартные пары портов для принтера и модема, а на некоторых PowerBook — объединённый разъём[8].
Иногда используются 10P10C (RJ-50) разъёмы[9].
Также распространён 10-контактный pin header (штырьковый разъём) на материнских платах и платах расширения — обычно через ленточный кабель преобразуется в стандартный DE-9 и крепится на свободном слоте[10].
Распайка (pinout)
| Сигнал | Контакт разъёма | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Название | V.24 цепь | Сокращение | Источник | DB-25 | DE-9 (TIA-574) |
MMJ | 8P8C («RJ45») | 10P10C («RJ50») | ||||||
| EIA/TIA-561 | Yost (DTE)[12] | Yost (DCE)[12] | Cyclades | Digi (ALTPIN) | National Instruments[9] | Cyclades | Digi | |||||||
| Передача данных (TxD) | 103 | TxD | DTE | 2 | 3 | 2 | 6 | 6 | 3 | 3 | 4 | 8 | 4 | 5 |
| Приём данных (RxD) | 104 | RxD | DCE | 3 | 2 | 5 | 5 | 3 | 6 | 6 | 5 | 9 | 7 | 6 |
| Data Terminal Ready (DTR) | 108/2 | DTR | DTE | 20 | 4 | 1 | 3 | 7 | 2 | 2 | 8 | 7 | 3 | 9 |
| Data Carrier Detect (DCD) | 109 | DCD | DCE | 8 | 1 | н/д | 2 | 2 | 7 | 7 | 1 | 10 | 8 | 10 |
| Data Set Ready (DSR) | 107 | DSR | DCE | 6 | 6 | 6 | 1 | н/д | 8 | н/д | 5 | 9 | 2 | |
| Ring Indicator (RI) | 125 | RI | DCE | 22 | 9 | н/д | н/д | н/д | н/д | н/д | 2 | 10 | 1 | |
| Request To Send (RTS) | 105 | RTS | DTE | 4 | 7 | н/д | 8 | 8 | 1 | 1 | 2 | 4 | 2 | 3 |
| Clear To Send (CTS) | 106 | CTS | DCE | 5 | 8 | н/д | 7 | 1 | 8 | 5 | 7 | 3 | 6 | 8 |
| Земля сигнальная (G) | 102 | G | н/д | 7 | 5 | 3, 4 | 4 | 4, 5 | 4, 5 | 4 | 6 | 6 | 5 | 7 |
| Земля защитная (PG) | 101 | PG | н/д | 1 | н/д | н/д | н/д | н/д | н/д | н/д | 3 | н/д | 1 | 4 |
Сигнальная земля — это общий провод для других цепей, может быть на двух контактах (стандарт Yost) — это один и тот же сигнал. В DB-25 второй контакт (PG) предназначен для подключения устройства к своему корпусу или земле. Объединение сигнальной и защитной земли часто встречается, но не рекомендуется.
В стандарте EIA/TIA 561 контакты DSR и RI объединены[13],[14] а в стандарте Yost объединены DSR и DCD.
Аппаратная абстракция
Операционные системы обычно создают для последовательных портов символические имена: Unix-подобные операционные системы используют устройства /dev/tty* («tty» — от teletype), где * — идентификатор порта. В Linux, UART-порты называются /dev/ttyS*, USB-адаптеры как /dev/ttyUSB* и т. д.
В DOS и Microsoft Windows последовательные порты обозначаются как COM: COM1, COM2 и так далее[15].
Типичные применения последовательных портов
Ниже приведены типичные устройства, подключаемые к последовательному порту ПК. Некоторые из них (например, модемы и последовательные мыши) вышли из массового употребления, другие по-прежнему распространены. Последовательные порты часто встречаются во встраиваемых системах (например, микроконтроллерах) для связи с ПК или аналогичными устройствами.
- Коммутируемые модемы
- Конфигурирование и управление сетевым оборудованием: маршрутизаторы, коммутаторы, фаерволы, балансировщики нагрузки
- GPS-приёмники (обычно на NMEA 0183, 4 800 бит/с)
- Сканеры штрих-кода и другие POS-устройства
- LED и LCD текстовые дисплеи
- Спутниковые телефоны, низкоскоростные модемы и приёмопередающие устройства на спутниках
- Плоские дисплеи для управления функциями экрана с внешнего ПК или аудиовидеотехникой
- Измерительные и тестовые приборы (цифровые мультиметры, весовые системы)
- Обновление прошивки различных устройств
- ЧПУ-станки
- Управление и мониторинг ИБП
- Машина стенографии/стенотип
- Программаторы и отладчики, работающие на втором ПК
- Консоль/отладка на развивающей плате
- Промышленные полевые шины
- Принтеры
- Терминалы, телетайп
- Сетевые протоколы (например, AppleTalk на Mac через RS-422, 230,4 кбит/с)
- Последовательные мыши
Некоторые приложения используют управляющие линии последовательного порта для мониторинга внешних устройств — даже без передачи данных. Например, некоторые ИБП сигнализируют так об отключении питания, разряде аккумулятора и прочем. Для тренировки азбуки Морзе применяются специальные клавиши, подключённые к управляющему входу порта, — это позволяет ПО точно фиксировать сигналы.
Последовательные мыши могут получать питание от сигнальных или управляющих линий[16].
Настройки
| Скорость (бит/с) | Время на бит (мкс) | Предопределено в Windows[17][18] | Типовые применения |
|---|---|---|---|
| 75 | 13333,3 | Да | |
| 110 | 9090,9 | Да | Модем Bell 101 |
| 134,5 | 7434,9 | Да | Терминал IBM 2741 |
| 150 | 6666,6 | Да | |
| 300 | 3333,3 | Да | Модем Bell 103/V.21 |
| 600 | 1666,7 | Да | |
| 1 200 | 833,3 | Да | Bell 202, Bell 212A, V.22 |
| 1 800 | 555,6 | Да | |
| 2 400 | 416,7 | Да | V.22bis модем |
| 4 800 | 208,3 | Да | V.27ter модем |
| 7 200 | 138,9 | Да | |
| 9 600 | 104,2 | Да | V.32 |
| 14 400 | 69,4 | Да | V.32bis модем |
| 19 200 | 52,1 | Да | |
| 31 250 | 32,0 | Нет | MIDI |
| 38 400 | 26,0 | Да | |
| 56 000 | 17,9 | Да | V.90/V.92 |
| 57 600 | 17,4 | Да | V.32bis/V.42bis |
| 76 800 | 13,0 | Нет | |
| 115 200 | 8,68 | Да | V.34 с V.42bis; дешёвые модемы V.90/V.92/V.44 |
| 125 000 | 8,00 | Нет | CAN-шина |
| 128 000 | 7,81 | Да | ISDN терминальный адаптер |
| 230 400 | 4,34 | Нет | LocalTalk, Econet, скоростные модемы V.90/V.92 с V.42bis/V.44[19][20] |
| 250 000 | 4,0 | Нет | DMX512 (театральное управление) |
| 256 000 | 3,91 | Да |
Стандарты последовательной передачи предусматривают разнообразные скорости и настройки (битность, чётность, стоп-биты и т. д.).
Современные UART позволяют менять все параметры программно; старое оборудование могло требовать изменения перемычек или переключателей на плате.
Формат 9600/8-N-1 является фактическим стандартом для ПК.
Скорость (baud rate)
Данные передаются двоично, поэтому скорость передачи (бит/с) равна скорости символов (baud). Часть пропускной способности уходит на служебные биты (стоп, чётность), поэтому эффективная скорость заметно ниже максимальной. Например, для формата 8-N-1 только 80 % бит составляют полезные данные: на 8 бит данных — 2 дополнительных (старт и стоп).
Существуют стандартные скорости: 75, 110, 300, 1 200, 2 400, 4 800, 9 600, 19 200, 38 400, 57 600, 115 200 бит/с и другие[18]. Многие значения основаны на 1,2 кбит/с и 0,9 кбит/с (19200, 38400, 57600, 115200). Для этих целей применяют кварцы, например, на 1,8432 МГц — в 16 раз быстрее максимального значения передачи.
Выбор скорости не гарантирует работоспособность соединения: поддержка зависит от аппаратного обеспечения; иногда возможна автосинхронизация (например, в MIDI).
Биты данных
Количество бит данных может быть 5 (код Бодо), 6 (редко), 7 (ASCII), 8 (большинство современных протоколов), 9 (редко). Современные приложения почти всегда используют 8 бит. Форматы 5 и 7 бит встречаются только со старым оборудованием (телетайпами).
Обычно данные отправляются в порядке от младшего бита к старшему (least significant bit first), но возможен и обратный (например, IBM 2741).
Чётность (parity)
Чётность — способ контроля ошибок. При передаче с чётностью добавляется дополнительный бит так, чтобы общее число единиц было всегда чётным или нечётным.
- Нет (N) — бит чётности не используется.
- Odd (O) — бит устанавливается для нечётного числа единиц.
- Even (E) — бит устанавливается для чётного числа единиц.
- Mark (M) — бит всегда равен 1.
- Space (S) — бит всегда равен 0.
Mark и space используются редко; они не дают контроля ошибок. Нечётная чётность полезнее чётной, так как обеспечивает наличие перехода сигнала. Обычно по умолчанию устанавливается «нет чётности», а контроль целостности поручается протоколу более высокого уровня.
При ошибке чётности на телетайпах печатался специальный символ.
Стоп-биты
Стоп-биты завершают символ, помогая принимающей стороне определить границу и восстановить синхронизацию. Обычно используют 1 стоп-бит, а при медленных электромеханических устройствах — 1,5 или 2.
Условные обозначения (D/P/S и скорость)
Запись в формате D/P/S определяет структуру кадра (например, 8-N-1: 8 бит данных, без бита проверки, 1 стоп-бит[21]). Указание часто сопровождается скоростью (например, «9600-8-N-1»).
Управление потоком (flow control)
Управление потоком предотвращает потерю данных при несовпадении скорости передачи/приёма. Различают аппаратное и программное управление.
Аппаратное управление реализуется отдельными линиями (обычно RTS/CTS или DTR/DSR). RTS/CTS сигнализируют, например, почти заполненный буфер. DTR/DSR по стандарту сигнализируют только о наличии и готовности оборудования, но не всегда используются именно так (встречаются и нестандартные применения).
Программное управление реализуется управляющими символами (например, XON/XOFF). При заполнении буфера получатель посылает XOFF — отправитель делает паузу, затем принимает XON и возобновляет передачу. Такая схема относится к in-band signaling, то есть управляющие команды идут по тому же каналу, что и данные.
Достоинство аппаратного управления — высокая скорость и простота; недостаток — требует больше линий и поддержки на обоих концах.
Достоинство программного метода — работает при отсутствии или несовместимости аппаратных цепей; его недостаток — сложность с обозначением управляющих символов и предотвращением конфликтов с пользовательскими данными, что требует протоколов экранирования (например, Kermit) или их ограничения (ANSI-управление терминалом).
При отсутствии управления потоком переполненный приёмник теряет данные. Решения — снижение скорости, увеличение буферов или повторные передачи (как в TCP).
Примечания
- ↑ Beal, Vangie Serial Port Definition & Meaning (англ.). Webopedia (сентябрь 1996). Дата обращения: 8 марта 2021. Архивировано 8 сентября 2025 года.
- ↑ Serial Cable Connection Guide (англ.). CISCO (1 августа 2006). Дата обращения: 31 января 2016. Архивировано 9 июля 2025 года.
- ↑ RS232 - DTE and DCE connectors (англ.). Lantronix (29 марта 2006). Дата обращения: 31 января 2016. Архивировано 14 декабря 2015 года.
- ↑ IBM PC AT Serial/Parallel Adapter. Архивировано 24 февраля 2020 года.
- ↑ TI-73...92+/V200 TI Link Guide (англ.). merthsoft.com. Дата обращения: 14 августа 2020. Архивировано 28 сентября 2025 года.
- ↑ Technical Section (англ.). Miklor.com. Дата обращения: 14 августа 2020. Архивировано 25 мая 2025 года.
- ↑ Cabling Guide for Console and AUX Ports (англ.). Cisco. Дата обращения: 14 августа 2020. Архивировано 10 сентября 2025 года.
- ↑ Classic Mac Ports (англ.). WhiteFiles.org. Дата обращения: 14 августа 2020. Архивировано 12 декабря 2024 года.
- ↑ 1 2 Serial Quick Reference Guide (англ.). NI.com. National Instruments (июль 2013). Дата обращения: 18 июня 2021. Архивировано 7 августа 2015 года.
- ↑ Intel Server Board S5000PAL/S5000XAL Technical Product Specification : [англ.]. — P. 38.
- ↑ Serial (PC 9) (англ.). Дата обращения: 7 июля 2010. Архивировано 11 августа 2010 года.
- ↑ 1 2 Yost Serial Device Wiring Standard (англ.). Дата обращения: 10 мая 2020. Архивировано 17 июня 2020 года.
- ↑ Hardware Book RS-232D (англ.). Архивировано 11 декабря 2021 года.
- ↑ RS-232D EIA/TIA-561 RJ45 Pinout (англ.). Архивировано 24 мая 2025 года.
- ↑ Stephen Byron Cooper. What Is a Com1 Port? (англ.). Архивировано 13 июля 2025 года. Дата обращения: 30 сентября 2021.
- ↑ Chan, Alvin AN-681 PC Mouse Implementation Using COP800 (англ.). National Semiconductor (1990). Дата обращения: 29 июля 2023. Архивировано 19 августа 2025 года.
- ↑ _SERIAL_COMMPROP (ntddser.h) - Windows drivers (англ.). Windows Hardware Developer. Microsoft (1 сентября 2022). Дата обращения: 8 февраля 2025. Архивировано 28 сентября 2025 года.
- ↑ 1 2 DCB (winbase.h) - Windows apps (англ.). Windows App Development. Microsoft (1 апреля 2021). Дата обращения: 8 февраля 2025. Архивировано 12 сентября 2025 года.
- ↑ MultiModem ZBA (англ.). Multi-Tech Systems, Inc (январь 2019). Дата обращения: 26 сентября 2019. Архивировано 3 марта 2019 года.
- ↑ Courier 56K Business Modem: User Guide: Controlling Data Rates (англ.). USRobotics (2007). Дата обращения: 26 сентября 2019. Архивировано 4 августа 2017 года.
- ↑ What does 8-N-1 mean? (англ.). modemhelp.net. Дата обращения: 25 декабря 2013. Архивировано 9 августа 2025 года.
Литература
- Serial Port Complete: COM Ports, USB Virtual COM Ports, and Ports for Embedded Systems; 2-е издание; Джен Аксельсон; Lakeview Research; 380 стр.; 2007; ISBN 978-1-931-44806-2.