Асинхронный последовательный интерфейс RS-232

Последовательная передача данных в ПК и микропроцессорных системах
При подключении персонального компьютера к сети или микропроцессорной системы (МПС) к периферийным устройствам применяется последовательная передача данных, что исключает жесткие ограничения на длину соединительных линий. В то же время внутренняя шина данных ПК и МПС остается параллельной. Для преобразования параллельного сигнала в последовательный в микросхемах последовательных интерфейсов используются регистры сдвига. Данные записываются в регистр параллельно, после чего сдвигаются вправо с каждым тактовым импульсом, выходя в линию с младших разрядов. В процессе приема данные вводятся в регистр также с младших разрядов, а после его заполнения передаются в МПС в параллельном формате.
Функции и применение интерфейса RS-232
Последовательный порт RS-232, который также называют асинхронным адаптером или последовательным интерфейсом, выполняет множество функций. Он используется для подключения компьютерных мышей, графических плоттеров, сканеров, принтеров и дигитайзеров, а также обеспечивает связь между двумя компьютерами через специальный кабель и оболочку Norton Commander. Кроме того, интерфейс применяется для подключения модемов, передачи данных через телефонные линии и соединения ПК с локальными сетями. Практически в каждом компьютере имеется хотя бы один последовательный порт, предназначенный для обмена данными.
Принципы работы последовательного протокола передачи
Протокол передачи данных включает в себя структуру передаваемого сигнала и его основные компоненты. Последовательная передача означает, что информация передается через единую линию связи.

На изображении представлена форма электрических сигналов и формат данных при передаче ASCII-кода символа «А» (41H). Исходное состояние линии представляет собой логическую единицу. Стартовый бит сигнализирует о начале передачи данных, затем следуют биты данных, расположенные в порядке D0 → D1 → D2 → D3 → D4 → D5…. При использовании бита четности (P) он также включается в передачу. Этот бит формируется так, чтобы общее количество единиц в пакете данных соответствовало выбранному алгоритму проверки — четному или нечетному. В конце передаются один или два стоповых бита, завершающие процесс, после чего линия возвращается в исходное состояние (логическая единица) до следующего стартового сигнала.
Одним из ключевых параметров передачи является скорость, которая должна совпадать у передающего и принимающего устройств. Она измеряется в бодах (Bd) — количестве битов, передаваемых за секунду, включая стартовые, стоповые и контрольные биты. Также используется термин бит в секунду (bps), обозначающий эффективную скорость передачи данных без учета служебных битов.
Компьютер может иметь от одного до восьми последовательных портов, реализованных на микросхеме Intel 8250. Это универсальный асинхронный приемопередатчик (UART – Universal Asynchronous Receiver Transmitter), содержащий несколько внутренних регистров, доступных через команды ввода-вывода. При передаче байт сначала записывается в буферный регистр передатчика, затем переписывается в сдвиговый регистр передатчика и «высовывается» из него по битам, начиная с младших разрядов. Аналогичный процесс происходит и при приеме: байты принимаются сдвиговым регистром, после чего передаются в буферный регистр для последующей обработки.
Разъемы и адреса портов последовательной передачи
Внешние устройства подключаются к порту ввода-вывода через разъемы DB25P или DB9P, содержащие соответственно 25 и 9 контактов.
Назначение контактов разъема DB9
Разъем DB9 используется для подключения внешних устройств к последовательному интерфейсу ПК. Он содержит 9 контактов, каждый из которых выполняет определенную функцию.

Номер контакта | Назначение | Тип сигнала |
---|---|---|
1 | DCD (Data Carrier Detect) – детектор несущего сигнала, определяет активное соединение | Вход |
2 | RXD (Received Data) – принимаемые данные | Вход |
3 | TXD (Transmitted Data) – передаваемые данные | Выход |
4 | DTR (Data Terminal Ready) – сигнал готовности терминала к передаче | Выход |
5 | GND (Ground) – общий провод (земля) | — |
6 | DSR (Data Set Ready) – сигнал готовности устройства | Вход |
7 | RTS (Request To Send) – запрос на передачу данных | Выход |
8 | CTS (Clear To Send) – подтверждение готовности к передаче | Вход |
9 | RI (Ring Indicator) – индикатор вызова, сообщает о входящем звонке при подключении модема | Вход |
На этапе инициализации системы модуль POST BIOS проверяет наличие асинхронных адаптеров и выполняет инициализацию первых двух из них. Их базовые адреса хранятся в области данных BIOS, начиная с 0000:0400H.
- COM1 имеет базовый адрес 3F8H и занимает диапазон адресов 3F8H – 3FFH.
- COM2 располагается по адресу 2F8H и использует диапазон 2F8H – 2FFH.
Асинхронные адаптеры могут вызывать прерывания: COM1 использует IRQ4 (INT 0CH), а COM2 — IRQ3 (INT 0BH).
Описание основных регистров
Регистр передачи и приема данных (порт 3F8H) и управление скоростью передачи
Порт 3F8H служит регистром данных для передачи и приема информации. Чтобы передать данные, их необходимо записать в этот порт. После приема данных от внешнего устройства их можно считать из этого же порта.
Назначение 3F8H зависит от состояния старшего бита управляющего слова, записанного в управляющий регистр по адресу 3FBH. Если старший бит равен 0, порт 3F8H используется для записи передаваемых данных. Если он равен 1, порт предназначен для вывода младшего байта делителя частоты тактового генератора.
Изменяя значение делителя, можно регулировать скорость передачи данных. Старший байт делителя записывается в порт 3F9H.
Зависимость скорости передачи данных от значения делителя
Делитель | Скорость передачи (Бод) |
---|---|
1040 | 110 |
768 | 150 |
384 | 300 |
192 | 600 |
96 | 1200 |
48 | 2400 |
24 | 4800 |
12 | 9600 |
6 | 19200 |
3 | 38400 |
2 | 57600 |
1 | 115200 |
Регистры управления прерываниями
Порт 3F9H выполняет функцию регистра управления прерываниями асинхронного адаптера. Однако, если в порт 3FBH записано управляющее слово с установленным в 1 старшим битом, он используется для вывода старшего байта делителя частоты.
Формат регистра управления прерываниями задает, какие события могут вызывать прерывания, управляя обработкой передаваемых и принимаемых данных.

Порт 3FAH и идентификация прерываний
Порт 3FAH предназначен для идентификации прерываний. Его содержимое определяет причину возникновения прерываний. Регистр имеет следующий формат:

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

Регистр 3FC и функции управления модемом
Порт 3FC выполняет задачу управления работой модема, контролируя выходные сигналы DTR, RTS, а также специальные линии OUT1 и OUT2, характерные для работы модемных устройств. Помимо этого, регистр может использоваться для запуска диагностических режимов, при которых вход адаптера замыкается на его же выход.
Структура регистра определяет, какие сигналы и команды передаются модему, обеспечивая корректную работу связи.

Регистр состояния линии 3FDH
Регистр 3FDH отвечает за контроль состояния линии передачи данных. Он используется для определения текущего состояния последовательного порта, включая ошибки передачи, статус приемника и передатчика, а также готовность к приему новых данных.

Регистр состояния модема 3FEH
Регистр 3FEH предназначен для мониторинга состояния модема. Он фиксирует изменения на входных сигнальных линиях, таких как DCD, RI, DSR и CTS, а также отслеживает их текущее состояние, что позволяет управлять процессом обмена данными между компьютером и внешним устройством связи.
