Интерфейс связи, передающий информацию последовательно
Последовательный порт — это последовательный интерфейс связи , через который информация передается в или из последовательного по одному биту за раз. [1] Это отличается от параллельного порта , который передает несколько бит одновременно параллельно . На протяжении большей части истории персональных компьютеров данные передавались через последовательные порты на такие устройства, как модемы , терминалы , различные периферийные устройства , а также напрямую между компьютерами.
Хотя такие интерфейсы, как Ethernet , FireWire и USB, также отправляют данные в виде последовательного потока , термин последовательный порт обычно обозначает оборудование, совместимое с RS-232 или связанным стандартом, таким как RS-485 или RS-422 .
Современные потребительские персональные компьютеры (ПК) в значительной степени заменили последовательные порты более скоростными стандартами, в первую очередь USB. Однако последовательные порты по-прежнему часто используются в приложениях, требующих простых, низкоскоростных интерфейсов, таких как промышленные системы автоматизации, научные приборы, системы точек продаж и некоторые промышленные и потребительские товары.
Серверные компьютеры могут использовать последовательный порт в качестве консоли управления для диагностики, в то время как сетевое оборудование (такое как маршрутизаторы и коммутаторы ) обычно использует последовательные консольные порты для настройки, диагностики и доступа к аварийному обслуживанию. Для взаимодействия с этими и другими устройствами преобразователи USB-to-serial могут быстро и легко добавить последовательный порт к современному ПК.
Очень недорогие системы, такие как некоторые ранние домашние компьютеры , вместо этого использовали ЦП для отправки данных через выходной штифт, используя технику битового удара . Эти ранние домашние компьютеры часто имели фирменные последовательные порты с выводами и уровнями напряжения, несовместимыми с RS-232.
До того, как широкомасштабная интеграция (LSI) сделала UART обычным явлением, последовательные порты обычно использовались в мэйнфреймах и миникомпьютерах , которые имели несколько небольших интегральных схем для реализации сдвиговых регистров, логических вентилей, счетчиков и всей другой необходимой логики. По мере развития ПК последовательные порты были включены в чип Super I/O , а затем в чипсет .
Последовательная карта IBM PC с 25-контактным разъемом (устаревшая 8-битная карта ISA )
Карта PCI Express ×1 с одним последовательным портом
Четырехпортовая последовательная (RS-232) плата расширения PCI Express ×1 с кабелем Octopus , который разделяет разъем DC-37 карты на четыре стандартных разъема DE-9
Преобразователь из USB в последовательный порт, совместимый с RS-232 — это больше, чем просто физический переход, для него требуется драйвер в программном обеспечении хост-системы и встроенный процессор для эмуляции функций оборудования последовательного порта, совместимого с IBM XT .
Адаптер UART-USB
DTE и DCE
Отдельные сигналы на последовательном порту являются однонаправленными, и при подключении двух устройств выходы одного устройства должны быть подключены к входам другого. Устройства делятся на две категории: терминальное оборудование данных (DTE) и терминальное оборудование цепи данных (DCE). Линия, которая является выходом на устройстве DTE, является входом на устройстве DCE и наоборот, поэтому устройство DCE можно подключить к устройству DTE с помощью прямого кабеля, в котором каждый штырь на одном конце идет к тому же пронумерованному штырю на другом конце.
Традиционно компьютеры и терминалы являются DTE, а периферийные устройства, такие как модемы, являются DCE. Если необходимо соединить два устройства DTE (или DCE), необходимо использовать кабель с обратными линиями TX и RX, известный как кросс-овер , roll-over или нуль-модемный кабель.
Пол
Обычно разъемы последовательных портов имеют гендерный тип , что позволяет подключать разъемы только к разъемам противоположного пола. В случае с D-субминиатюрными разъемами штыревые разъемы имеют выступающие штыри, а гнездовые разъемы имеют соответствующие круглые гнезда. [2] Любой тип разъема может быть установлен на оборудовании или панели; или терминировать кабель.
Разъемы, установленные на DTE, скорее всего, будут мужскими, а те, что установлены на DCE, скорее всего, будут женскими (с кабельными разъемами наоборот). Однако это далеко не универсально; например, большинство последовательных принтеров имеют женский разъем DB25, но они являются DTE. [3] В этом случае для исправления несоответствия можно использовать соответствующие гендерные разъемы на кабеле или преобразователь пола .
Соединители
Единственным разъемом, указанным в исходном стандарте RS-232, был 25-контактный D-subminiature, однако, для экономии денег или экономии физического пространства, среди прочих причин, использовались многие другие разъемы. В частности, поскольку многие устройства не используют все 20 сигналов, определенных стандартом, часто используются разъемы с меньшим количеством контактов. Хотя ниже приведены конкретные примеры, для соединений RS-232 использовалось бесчисленное множество других разъемов.
9-контактный разъем DE-9 использовался большинством IBM-совместимых ПК с момента появления опции последовательного/параллельного адаптера для PC-AT , где 9-контактный разъем позволял размещать последовательный и параллельный порты на одной карте. [4] Этот разъем был стандартизирован для RS-232 как TIA-574 .
Разъемы 8P8C также используются во многих устройствах. Стандарт EIA/TIA-561 определяет распиновку с использованием этого разъема, в то время как перевернутый кабель (или стандарт Yost) обычно используется на компьютерах Unix и сетевых устройствах, таких как оборудование от Cisco Systems . [7]
Многие модели Macintosh отдают предпочтение связанному стандарту RS-422, в основном с использованием круглых разъемов mini-DIN . Macintosh включал стандартный набор из двух портов для подключения к принтеру и модему, но некоторые ноутбуки PowerBook имели только один объединенный порт для экономии места. [8]
Разъемы 10P10C можно найти на некоторых устройствах. [9]
Другим распространенным разъемом является разъем 10 × 2 контакта, распространенный на материнских платах и картах расширения, который обычно преобразуется с помощью ленточного кабеля в более стандартный 9-контактный разъем DE-9 (и часто монтируется на свободной пластине слота или другой части корпуса). [10]
Распиновка
В следующей таблице перечислены часто используемые сигналы RS-232 и назначения контактов: [11]
Сигнальное заземление является общим возвратом для других соединений; оно появляется на двух контактах в стандарте Yost, но является тем же сигналом. Разъем DB-25 включает второе защитное заземление на контакте 1, которое предназначено для подключения каждого устройства к его собственному заземлению корпуса или аналогичному. Подключение защитного заземления к сигнальному заземлению является обычной практикой, но не рекомендуется.
Обратите внимание, что EIA/TIA 561 объединяет DSR и RI, [13] [14] , а стандарт Yost объединяет DSR и DCD.
Аппаратная абстракция
Операционные системы обычно создают символические имена для последовательных портов компьютера, а не требуют от программ обращаться к ним по аппаратному адресу.
Unix-подобные операционные системы обычно обозначают последовательные порты устройства как /dev/tty* . TTY — это распространенное сокращение без товарных знаков для телетайпа , устройства, обычно подключаемого к последовательным портам ранних компьютеров, а * представляет собой строку, идентифицирующую конкретный порт; синтаксис этой строки зависит от операционной системы и устройства. В Linux аппаратные последовательные порты UART 8250 / 16550 называются /dev/ttyS* , адаптеры USB отображаются как /dev/ttyUSB* , а различные типы виртуальных последовательных портов не обязательно имеют имена, начинающиеся с tty .
В средах DOS и Windows последовательные порты называются COM- портами: COM1, COM2 и т. д. [15]
Распространенные применения последовательных портов
В этот список входят некоторые из наиболее распространенных устройств, которые подключаются к последовательному порту на ПК. Некоторые из них, такие как модемы и последовательные мыши, выходят из употребления, в то время как другие легко доступны. Последовательные порты очень распространены на большинстве типов микроконтроллеров , где они могут использоваться для связи с ПК или другими последовательными устройствами.
Поскольку сигналы управления для последовательного порта могут управляться любым цифровым сигналом , некоторые приложения использовали линии управления последовательного порта для мониторинга внешних устройств без обмена последовательными данными. Распространенным коммерческим применением этого принципа было использование некоторых моделей источников бесперебойного питания , которые использовали линии управления для сигнализации о потере питания, низком заряде батареи и другой информации о состоянии. По крайней мере, некоторые программы обучения азбуке Морзе использовали кодовый ключ, подключенный к последовательному порту, для имитации фактического использования кода; биты состояния последовательного порта могли быть выбраны очень быстро и в предсказуемые моменты времени, что позволяло программе расшифровывать код Морзе.
Последовательные компьютерные мыши могут получать свою рабочую мощность из полученных данных или сигналов управления. [16] [17]
Настройки
Последовательные стандарты предусматривают множество различных скоростей работы, а также корректировки протокола для учета различных условий работы. Наиболее известные параметры — скорость, количество бит данных на символ, четность и количество стоповых бит на символ.
В современных последовательных портах, использующих интегральную схему UART, все эти настройки могут контролироваться программно. Аппаратное обеспечение 1980-х годов и более ранних версий может потребовать установки переключателей или перемычек на печатной плате.
Конфигурация последовательных портов, предназначенных для подключения к ПК, стала фактическим стандартом, обычно обозначаемым как 9600/8-N-1 .
Скорость
Последовательные порты используют двухуровневую (двоичную) сигнализацию, поэтому скорость передачи данных в битах в секунду равна скорости передачи символов в бодах . Общая скорость включает биты для кадрирования (стоповые биты, четность и т. д.), поэтому эффективная скорость передачи данных ниже скорости передачи битов. Например, при кадрировании символов 8-N-1 только 80% бит доступны для данных; на каждые восемь бит данных отправляется еще два бита кадрирования.
Стандартный ряд скоростей основан на кратных скоростям для электромеханических телетайпов ; некоторые последовательные порты позволяют выбирать множество произвольных скоростей, но скорости на обеих сторонах соединения должны совпадать для правильного приема данных. Обычно поддерживаемые скорости передачи данных включают 75, 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бит/с. [19] Многие из этих стандартных скоростей передачи модемов кратны либо 1,2 кбит/с (например, 19200, 38400, 76800), либо 0,9 кбит/с (например, 57600, 115200). [23] Кварцевые генераторы с частотой 1,843200 МГц продаются специально для этой цели. Это в 16 раз больше максимальной скорости передачи данных, и схема последовательного порта может легко разделить ее на более низкие частоты по мере необходимости.
Возможность установки скорости передачи данных не означает, что в результате будет установлено рабочее соединение. Не все скорости передачи данных возможны со всеми последовательными портами. Некоторые специальные протоколы, такие как MIDI для управления музыкальными инструментами, используют скорости последовательной передачи данных, отличные от стандартов телетайпа. Некоторые реализации последовательного порта могут автоматически выбирать скорость передачи данных, наблюдая за тем, что отправляет подключенное устройство, и синхронизируясь с ним.
Биты данных
Количество бит данных в каждом символе может быть 5 (для кода Бодо ), 6 (используется редко), 7 (для настоящего ASCII ), 8 (для большинства видов данных, поскольку этот размер соответствует размеру байта ) или 9 (используется редко). 8 бит данных почти повсеместно используются в новых приложениях. 5 или 7 бит обычно имеют смысл только со старым оборудованием, таким как телетайпы.
Большинство конструкций последовательной связи отправляют биты данных в каждом байте, начиная с наименее значимого бита . Также возможно, но редко используется, сначала наиболее значимое бит ; это использовалось, например, печатающим терминалом IBM 2741. Порядок бит обычно не настраивается в интерфейсе последовательного порта, а определяется хост-системой. Для связи с системами, которым требуется другой порядок бит, чем локальный по умолчанию, локальное программное обеспечение может переупорядочивать биты в каждом байте непосредственно перед отправкой и сразу после получения.
Паритет
Четность — это метод обнаружения ошибок при передаче. Когда четность используется с последовательным портом, дополнительный бит данных отправляется с каждым символом данных, организованным таким образом, что количество битов 1 в каждом символе, включая бит четности, всегда нечетное или всегда четное. Если байт получен с неправильным количеством единиц, то он, должно быть, поврежден. Правильная четность не обязательно указывает на отсутствие повреждения, так как поврежденная передача с четным числом ошибок пройдет проверку четности. Один бит четности не позволяет реализовать исправление ошибок для каждого символа, и протоколы связи, работающие по последовательным каналам передачи данных, обычно будут иметь механизмы более высокого уровня для обеспечения достоверности данных и запроса повторной передачи данных, которые были получены неправильно.
Бит четности в каждом символе может быть установлен на одно из следующих значений:
None (N) означает, что бит четности не отправляется, а передача сокращается.
Нечетный (O) означает, что бит четности установлен таким образом, что количество единичных битов является нечетным.
Четный (E) означает, что бит четности установлен таким образом, что число единичных битов является четным.
Контроль четности по метке (M) означает, что бит четности всегда установлен в соответствии с условием сигнала метки (значение 1 бит).
Пробел (S) четности всегда отправляет бит четности в состоянии сигнала пробела (значение бита 0).
За исключением редких приложений, в которых последний бит (обычно 9-й) используется для какой-либо формы адресации или специальной сигнализации, контроль четности по меткам или пробелам встречается редко, поскольку он не добавляет никакой информации об обнаружении ошибок.
Нечетная четность более полезна, чем четная, поскольку она гарантирует, что в каждом символе происходит по крайней мере один переход состояния, что делает ее более надежной при обнаружении ошибок, подобных тем, которые могут быть вызваны несоответствием скорости последовательного порта. Однако наиболее распространенной настройкой четности является none , при этом обнаружение ошибок осуществляется протоколом связи.
Чтобы обеспечить обнаружение сообщений, поврежденных шумом на линии , электромеханические телетайпы были настроены на печать специального символа, если полученные данные содержали ошибку четности.
Стоп-биты
Стоповые биты, отправляемые в конце каждого символа, позволяют оборудованию принимающего сигнала обнаружить конец символа и повторно синхронизироваться с потоком символов. Электронные устройства обычно используют один стоповый бит. Если используются медленные электромеханические телетайпы , могут потребоваться один с половиной или два стоповых бита.
Условные обозначения
Обычная нотация данные/четность/стоп (D/P/S) определяет кадрирование последовательного соединения. Наиболее распространенное использование на микрокомпьютерах — 8/N/1 (8N1). Это определяет 8 бит данных, без четности, 1 стоповый бит. В этой нотации бит четности не включен в биты данных. 7/E/1 (7E1) означает, что бит четности добавляется к 7 битам данных, в результате чего между стартовым и стоповым битами получается в общей сложности 8 бит.
Управление потоком
Управление потоком используется в ситуациях, когда передатчик может отправлять данные быстрее, чем приемник может их обрабатывать. Чтобы справиться с этим, последовательные линии часто включают метод квитирования . Существуют аппаратные и программные методы квитирования.
Аппаратное квитирование выполняется с помощью дополнительных сигналов, часто цепей сигналов RS-232 RTS/CTS или DTR/DSR. RTS и CTS используются для управления потоком данных, например, когда буфер почти заполнен. Согласно стандарту RS-232 и его последователям, DTR и DSR используются для сигнализации о наличии и включении оборудования, поэтому обычно всегда активируются. Однако существуют нестандартные реализации, например, принтеры, которые используют DTR для управления потоком.
Программное квитирование выполняется, например, с помощью управляющих символов ASCII XON/XOFF для управления потоком данных. Символы XON и XOFF отправляются получателем отправителю для управления тем, когда отправитель будет отправлять данные, то есть эти символы идут в противоположном направлении по отношению к отправляемым данным. Система запускается в состоянии разрешенной отправки . Когда буферы получателя приближаются к емкости, получатель отправляет символ XOFF, чтобы сообщить отправителю о необходимости прекратить отправку данных. Позже, после того как получатель опустошит свои буферы, он отправляет символ XON, чтобы сообщить отправителю о необходимости возобновить передачу. Это пример внутриполосной сигнализации , когда управляющая информация отправляется по тому же каналу, что и его данные.
Преимущество аппаратного квитирования в том, что оно может быть чрезвычайно быстрым, работает независимо от навязанного значения, такого как ASCII, в передаваемых данных и не имеет состояния . Его недостаток в том, что оно требует больше оборудования и кабелей, и оба конца соединения должны поддерживать используемый протокол аппаратного квитирования.
Преимущество программного квитирования в том, что его можно выполнить с отсутствующими или несовместимыми аппаратными схемами квитирования и кабелями. Недостаток, общий для всех внутриполосных управляющих сигналов, заключается в том, что он вносит сложности в обеспечение того, чтобы управляющие сообщения проходили, даже если сообщения с данными заблокированы, и данные никогда не могут быть ошибочно приняты за управляющие сигналы. Первое обычно обрабатывается операционной системой или драйвером устройства; последнее обычно обеспечивается тем, что управляющие коды экранируются ( например, в протоколе Kermit ) или пропускаются по замыслу (например, в терминальном управлении ANSI ).
Если не используется квитирование , перегруженный приемник может просто не получить данные от передатчика. Подходы к предотвращению этого включают снижение скорости соединения, чтобы приемник всегда мог поддерживать связь, увеличение размера буферов , чтобы он мог поддерживать связь в среднем в течение более длительного времени, использование задержек после длительных операций (например, в termcap ) или применение механизма повторной отправки данных, которые не были получены правильно (например, TCP ).
^ ab "Yost Serial Device Wiring Standard". Архивировано из оригинала 2020-06-17 . Получено 2020-05-10 .
^ «Книга оборудования RS-232D».
^ "Распиновка RS-232D EIA/TIA-561 RJ45" .
^ Стивен Байрон Купер. «Что такое порт Com1?». Techwalla . Получено 30 сентября 2021 г.
^ Чан, Элвин (1990). "Реализация мыши AN-681 для ПК с использованием COP800" (PDF) . National Semiconductor . Получено 29 июля 2023 г. .
^ "AN519 Реализация простого последовательного контроллера мыши" (PDF) . Microchip Technology Inc. 1997 . Получено 29 июля 2023 .
^ "Структура SERIAL_COMMPROP". Microsoft . 2018-04-22. Архивировано из оригинала 2019-09-28 . Получено 2019-09-28 .
^ ab "Структура DCB". Центр разработки Windows . Microsoft . 2018-12-04. Архивировано из оригинала 2019-09-28 . Получено 2019-09-28 .
^ "BACnet MS/TP Overview Manual" (PDF) . Neptronic. Архивировано (PDF) из оригинала 10 января 2020 г. . Получено 26 сентября 2019 г. .
^ "MultiModem ZBA" (PDF) . Multi-Tech Systems, Inc. Январь 2019. Архивировано из оригинала (PDF) 3 марта 2019 . Получено 26 сентября 2019 .
^ "Courier 56K Business Modem: Руководство пользователя: Управление скоростью передачи данных". USRobotics . 2007. Архивировано из оригинала 4 августа 2017 г. Получено 26 сентября 2019 г.
Serial Port Complete: COM-порты, виртуальные COM-порты USB и порты для встраиваемых систем ; 2-е издание; Ян Аксельсон; Lakeview Research; 380 страниц; 2007; ISBN 978-1-931-44806-2 .
Внешние ссылки
В Wikibooks есть книга на тему: Программирование: последовательная передача данных.
Медиа, связанные с Serial port на Wikimedia Commons
Список контактов RS-232 и других последовательных портов