Последовательный интерфейс для передачи данных использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Отсюда название интерфейса и порта.
Последовательная передача данных может осуществляться в асинхронном или синхронном режимах. При асинхронной передаче каждому байту предшествует старт-бит, сигнализирующий приемнику о начале посылки, за которым следуют биты данных и, возможно, бит паритета (четности). Завершает посылку стоп-бит, гарантирующий паузу между посылкам. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (логический 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена.
Рис. 2.1. Формат асинхронной передачи
Формат асинхронной посылки позволяет выявлять возможные ошибки передачи.
В бодах принято измерять частоту изменения состояния линии, а при недвоичном способе кодирования (широко применяемом в современных модемах) в канале связи скорости передачи бит (бит/с).
Асинхронный обмен в PC реализуется с помощью СОМ-порта с использованием протокола RS-232C.
Интерфейс RS-232C предназначен для подключения аппаратуры, передающей или принимающей данные (О ОД – оконечное оборудование данных или АПД - аппаратура передачи данных; DTE - Data Terminal Equipment), к оконечной аппаратуре каналов данных (АКД', DCE - Data Communication Equipment). В роли АПД может выступать компьютер, принтер, плоттер и другое периферийное оборудование. В роли АКД обычно выступает модем. Конечной целью подключения является соединение двух устройств АПД.
Стандарт описывает управляющие сигналы интерфейса, пересылку данных, электрический интерфейс и типы разъемов. В стандарте предусмотрены асинхронный и синхронный режимы обмена, но СОМ-порты поддерживают только асинхронный режим.
СОМ-порты чаще всего применяют для подключения манипуляторов (мышь, трекбол). Питание манипуляторов производится от интерфейса. Каждое событие - перемещение мыши или нажатие-отпускание кнопки – кодируется двоичной посылкой по интерфейсу RS-232C.
Также СОМ-порты используются для подключения внешних устройств; связи двух компьютеров, удаленных друг от друга на небольшое расстояние; для подключения электронных ключей (Security Devices), предназначенных для защиты от нелицензированного использования ПО. СОМ-порт используют для беспроводных коммуникаций с применением излучателей и приемников инфракрасного диапазона - IR (Infra Red) Connection.
Контроллер СОМ-порта является полностью программируемым устройством. Можно программно задать следующие параметры обмена: количество битов данных и стоп-битов^ вид четности и скорость обмена.
Микросхема UART 16550A имеет 12 программируемых однобайтных регистров, с помощью которых управляется и контролируется порт коммуникации. Большинство из них занимаются инициализацией порта. Доступ к этим 12 регистрам осуществляется через восемь адресов портов с номерами 3F8h - 3FFh (или 2F8h - 2FFh).
В пяти случаях регистр, к которому организуется доступ через данный порт, зависит от того, как установлен бит 7 в регистре управления линии (т. н. бит DLAB), который является единственным регистром с адресом порта 3FBh. Назначение регистров 16550А и их отображение на адресное пространство портов (смещение относительно базового адреса) представлено в табл. 3.2.
Доступ |
Регистр |
R/W |
Смещ. |
DLAB |
Ими |
Название |
|
Oh |
0 |
THR |
Регистр хранения передатчика - Transmit Holding Register |
W |
Ob |
0 |
RBg |
Регистр данных приемника - Receiver Buffer Register |
R |
Ob |
1 |
DLL |
Делитель скорости обмена (младший) - Divisor Latch LSB |
R/W |
Ih |
1 |
DLM |
Делитель скорости обмена (старший) - Divisor Latch MSB |
R/W |
Ih |
0 |
IER |
Регистр разрешения прерыв. - Interrupt Enable Register |
R/W |
2h |
X |
im |
Регистр идентификации прерывания - Interrupt Identification Register |
R |
2h |
X |
FCR |
Регистр управления FIFO (FIFO Control Register) |
W ; |
3h |
X |
LCR |
Регистр управлення линия - Line Control Register |
R/W |
4h |
X |
MCR |
Регистр управлення модемом - Modem Control Register |
R/W |
5h |
X |
LSR |
Регистр статуса линии - Line Status Register |
R/W , |
6h |
X |
MSR |
Регистр статуса модема - Modem Status Register |
R/W |
7h |
X |
SCR |
Рабочий регистр - Scratch Pad Register |
R/W |
THR (регистр передатчика) - сюда засылается байт для передачи. Данные, записанные в этот регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS. Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.
RBR (регистр приемника) - отсюда считывается принятый байт. Данные, принятые входным сдвигающим регистром, помещаются в регистр RBR. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра RBR, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие (лишние) биты в регистре имеют нулевое значение.
DLL (регистр младшего байта делителя частоты). Сюда засылается младший байт делителя (см. DLM).
DLM (регистр старшего байта делителя частоты). Делитель определяется по формуле D=115200/V, где V - скорость передачи. Входная частота синхронизации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных. Например, для скорости 9600 бод делитель равен П5200/9600=12=ОС1г, поэтому нужно вывести OCh в порт 3F8h и 0 в порт 3F9h.
IER (регистр управления прерываниями). Единичное значение бита разрешает прерывание. Назначение бит:
0: прерывание по приему символа (в режиме FIFO - прерывание по тайм-ауту);
1: прерывание по завершению передачи символа;
2: прерывание по обрыву линии или ошибке в линии;
3: прерывание по изменению состояния модема (любой из линий CTS, DSR,RInDCD);
4-7:должны быть 0.
IIR (регистр идентификации прерываний и признака режима FIFO). Когда происходит прерывание, здесь содержится причина, вызвавшая его. Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по 4-уровневой приоритетной системе. Порядок приоритетов (по убыванию) следующий: состояние линии, прием символа, освобождение регистра передатчика и состояние модема. При возникновении условии прерывания UART указывает па источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника.