Последовательные интерфейсы: COM-порт

Последовательный интерфейс для передачи данных в одну сторону использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Такой способ передачи и определяет название интерфейса и порта, его реализующего. Эти названия соответствуют английским терминам Serial Interface и Serial Port (иногда в неудачном переводе их называют “серийными”, что звучит довольно странно). Последовательная передача данных может осуществляться как в асинхронном, так и синхронном режимах.

При асинхронной передаче каждому байту предшествует старт-бит, сигнализирующий приемнику о начале очередной посылки, за которым следуют биты данных и, возможно, бит паритета (контроля четности,). Завершает посылку стоп-бит, гарантирующий определенную выдержку между соседними посылками (рис. 1). Старт-бит следующего посланного байта может посылаться в любой момент после окончания стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (лог. 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена, измеряемой в количестве передаваемых бит в секунду. Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала старт-бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале эти стробы располагаются в середине битовых интервалов, что обеспечивает возможность приема данных и при некотором рассогласовании скоростей приемника и передатчика. Нетрудно заметить, что при передаче 8 бит данных, одного контрольного и одного стоп-бита предельно допустимое рассогласование скоростей, при котором данные будут распознаны верно, не может превышать 5%. С учетом фазовых искажений (затянутых фронтов сигнала) и дискретности работы внутреннего счетчика синхронизации реально допустимо меньшее отклонение частот. Чем меньше коэффициент деления опорной частоты внутреннего генератора (тем выше частота передачи), тем больше погрешность привязки стробов к середине битового интервала, и, следовательно, требования к согласованности частот более строгие. Также, чем выше частота передачи, тем больше влияние искажений фронтов на фазу принимаемого сигнала. Такое «дружное» действие этих двух факторов приводит к повышению требований согласованности частот приемника и передатчика с ростом частоты обмена.

Для асинхронного режима принят ряд стандартных скоростей обмена: 50, 75, 110, 150,300,600, 1200,2400,4800,9600, 19200, 38400, 57600 и 115200 бит/с. Иногда вместо единицы измерения “бит/с” используют “бод” (baud), но в данном случае, при рассмотрении двоичных передаваемых сигналов, это некорректно. В бодах принято измерять частоту изменения состояния линии, а при недвоичном способе кодирования (широко применяемом в современных модемах) в одном и том же канале связи скорости передачи бит (бит/с) и изменения сигнала (бод) могут отличаться в несколько раз.

Количество бит данных может составлять 5, 6, 7 или 8 (5- и 6-битные форматы малораспространены). Количество стоп-бит может быть 1, 1,5 и 2 (“полтора бита” подразумевает, естественно, только длительность стопового интервала).

Асинхронный обмен в РС реализуется с помощью СОМ-порта с использованием протокола RS-232C.

Синхронный режим передачи предполагает постоянную активность канала связи. Посылка начинается с синхробайта, за которым вплотную следует поток информационных бит. Если у передатчика нет данных для передачи, он заполняет паузу непрерывной посылкой байтов синхронизации. Очевидно, что при передаче больших массивов данных накладные расходы на синхронизацию в данном режиме обмена будут ниже, чем в асинхронном. Однако в синхронном режиме необходима внешняя синхронизация приемника с передатчиком, поскольку даже малое отклонение частот приведет к быстро накапливающейся ошибке и искажению принимаемых данных. Внешняя синхронизация возможна либо с помощью отдельной линии для передачи сигнала синхронизации, либо с использованием самосинхронизирующего кодирования данных (например, манчестерский код или NRZ), при котором на приемной стороне из принятого сигнала могут быть выделены и импульсы синхронизации. В любом случае синхронный режим требует либо дорогих линий связи, либо дорогого оконечного оборудования (а может, и того и другого).


1. Интерфейс RS-232С

Интерфейс RS-232С предназначен для подключения аппаратуры, передающей или принимающей данные (ООД оконечное оборудование данных или АПД – аппаратура передачи данных), к оконечной аппаратуре каналов данных (АКД). В роли АПД может выступать компьютер, принтер, плоттер и другое периферийное оборудование. Этой аппаратуре соответствует аббревиатура DTE – Data Terminal Equipment. В роли АКД обычно выступает модем, этой аппаратуре соответствует аббревиатура DCE – Data Communication Equipment. Конечной целью подключения является соединение двух устройств DTE. Интерфейс позволяет исключить канал удаленной связи вместе с парой устройств DTE (модемов), соединив устройства непосредственно с помощью нуль-модемного кабеля (рис. 2).

Стандарт описывает асинхронный и синхронный режимы обмена, но COM-порты поддерживают только асинхронный режим. Функционально RS-232С эквивалентен стандарту MKKTT V.24/V.28 и стыку С2, но они имеют различные названия одних и тех же используемых сигналов.


2. Электрический интерфейс

Стандарт RS-232С использует несимметричные передатчики и приемники – сигнал передается относительно общего провода – схемной земли (симметричные дифференциальные сигналы используются в других интерфейсах – например, RS-422). Интерфейс не обеспечивает гальванической развязки устройств. Логической единице соответствует уровень напряжения на входе приемника в диапазоне -12...-3 В. Для линий управляющих сигналов это состояние называется ON (“включено”), для линий последовательных данных называется MARK. Логическому нулю соответствует напряжение в диапазоне +3...+12 В. Для линий управляющих сигналов это состояние называется OFF (“выключено”), для линий последовательных данных называется SPACE. Между уровнями -3...+3 В имеется зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения соответствующего порога (рис. 3). Уровни сигналов на выходах передатчиков должны быть в диапазонах -12...-5 В и +5...+12 В для представления единицы и нуля соответственно. Разность потенциалов между схемными землями (SG) соединяемых устройств должна быть менее 2 В, при более высокой разности потенциалов возможно неверное восприятие сигналов.

Интерфейс предполагает наличие защитного заземления для соединяемых устройств, если они оба питаются от сети переменного тока и имеют сетевые фильтры. Подключение и отключение интерфейсных кабелей устройств с автономным питанием (не питающихся от интерфейса, таких как, например, мышь) должно производиться при отключении питания. В противном случае разность не выровненных потенциалов устройств в момент коммутации (присоединения или отсоединения разъема) может оказаться приложенной к выходным или входным (что опаснее) цепям интерфейса и вывести из строя микросхемы.

Для интерфейса RS-232С специально выпускаются буферные микросхемы приемников (с гистерезисом) и передатчиков двуполярного сигнала. При несоблюдении правил заземления и коммутации включенных устройств они обычно являются первыми (хорошо, если единственными) жертвами “пиротехнических” эффектов. Иногда их устанавливают в «кроватках», что сильно облегчает замену. Изображение популярных микросхем формирователей сигналов RS-232С приведено на рис. 4.

Часто буферные схемы входят прямо в состав интерфейсных БИС. Это удешевляет изделие, экономит место на плате, но в случае аварии обычно оборачивается крупными финансовыми потерями.

Вывести из строя интерфейсные микросхемы замыканием сигнальных цепей маловероятно, поскольку ток короткого замыкания передатчиков обычно ограничен да уровне 20 мА.


2.3. Управление потоком передачи

Для управления потоком данных (Flow Control) могут использоваться два варианта протокола – аппаратный и программный. Иногда управление потоком путают с квитированием, но это разные методы достижения одной цели – согласования темпа передачи и приема. Квитирование (Handshaking) подразумевает посылку уведомления о получении (квитанции) элемента, в то время как управление потоком предполагает посылку уведомления о невозможности последующего приема данных.

Стандарт RS-232С (табл. 1) регламентирует типы применяемых разъемов, что обеспечивает высокий уровень совместимости аппаратуры различных производителей. На аппаратуре DTE (в том числе, и на COM-портах РС) принято устанавливать вилки (male – “папа”) DB25-P или более компактный вариант – DB9-P. Девятиштырьковые разъемы не имеют контактов для дополнительных сигналов, необходимых для синхронного режима). На аппаратуре DСЕ (модемах) устанавливают розетки (female – “мама”) DB25-S или DB-9S.

Аппаратный протокол управления потоком RTS/CTS (HardWare Flow Control) использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к их приему. Передатчик “выпускает” очередной байт только при включенном состоянии линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Обычно микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части – сдвигающий для приема очередной посылки и хранящий, из которого принятый байт считывается. Это позволяет реализовать обмен с аппаратным протоколом без потери данных, не прибегая к программной буферизации.

Аппаратный протокол управления потоком RTS/CTS (Hardware Flow Control) использует сигнал СТ8, который позволяет остановить передачу данных, если приемник не готов к их приему. Работу этого протокола иллюстрирует рис. 5. Передатчик “выпускает” очередной байт только при включенном состоянии линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки).

Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Обычно микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части – сдвигающий для приема очередной посылки и хранящий, из которого принятый байт считывается. Это позволяет реализовать обмен с аппаратным протоколом без потери данных, не прибегая к программной буферизации.

Аппаратный протокол удобно использовать при подключении принтеров и плоттеров, если они поддерживают этот режим. При непосредственном (без модемов) соединении двух компьютеров аппаратный протокол требует перекрестного соединения линий RTS – CTS.

Программный протокол управления потоком XON/ХOFF предполагает наличие двунаправленного канала передачи данных. Работает он следующим образом:

Если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устройство, приняв этот символ, приостанавливает передачу. Далее, когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (11h), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается по крайней мере на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа (рис. 6). Из этого следует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимаемых данных и сигнализирующим о неготовности заблаговременно (имея в буфере свободное место).

Преимущество программного протокола при непосредственном соединении устройств заключается в отсутствии необходимости передачи управляющих сигналов интерфейса – минимальный кабель для двустороннего обмена может иметь только 3 провода. Недостатком, кроме требования наличия буфера и большего времени реакции (снижающего и общую производительность канала из-за ожидания прохождения сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом случае из потока принимаемых данных должны выделяться (и обрабатываться) символы управления потоком, что ограничивает набор передаваемых символов.


4. Микросхемы асинхронных приемопередатчиков

Преобразование параллельного кода в последовательный для передачи и обратное преобразование при приеме данных выполняют специализированные микросхемы UART (Universal Asynchronous Receiver-Transmitter) универсальный асинхронный приемопередатчик (УАПП). Эти же микросхемы формируют и обрабатывают управляющие сигналы интерфейса (управление и состояние модема). COM-порты IBM PC XT/AT базируются на микросхемах, совместимых на уровне регистров с UART 18250 – 8250/16450/16550А. Это семейство представляет собой усовершенствования начальной модели, направленные на повышение быстродействия, снижение потребляемой мощности и загрузки процессора при интенсивном обмене.

Микросхемы 8250х имеют невысокое быстродействие по обращениям со стороны системной шины. Они не допускают обращения к своим регистрам в смежных шинных циклах процессора – для корректной работы с ними требуется введение программных задержек (команд JMP) между обращениями CPU. В компьютерах класса АТ применяют микросхемы UART следующих модификаций:

- 16450 – быстродействующая версия 8250 для АТ. Ошибок 8250 и полной совместимости с XT BIOS не имеет. Эта микросхема является минимумом, требуемым для работы OS/2 с COM-портами.

- 16550 – развитие 16450. Может использовать канал DMA для обмена данными. Имеет FIFO-буфер, но некорректность его работы не позволяет им воспользоваться.

- 16550А – имеет работающие 16-байтные FIFO-буферы приема и передачи и возможность использования DMA. Именно этот тип UART должен применяться в АТ при интенсивных обменах на скоростях 9600 бит/с и выше без потери данных. Совместимость с этой микросхемой обеспечивает большинство универсальных микросхем контроллеров портов ввода/ вывода, входящих в чипсеты современных системных плат.

Микросхемы UART 16550А с программной точки зрения представляют собой набор регистров, доступ к которым определяется адресом (смещением адреса регистра относительно базового адреса порта) и значением бита ВЬАВ (бита 7 регистра ЬСК). В адресном пространстве микросхема занимает 8 смежных адресов. Список регистров 11АКТ 16550А и способы доступа к ним приведены в табл. 2.

Микросхемы 8250 отличаются от приведенного ниже описания отсутствием регистра РСК и всех возможностей ПРО и ВМА (и соответствующих им бит регистров).

- THR (Transmit Holding Register) – промежуточный регистр данных передатчика (только для записи). Данные, записанные в этот регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS. Бит О передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.

- RBR (Receiver Buffer Register) – буферный регистр принимаемых данных (только для чтения). Данные, принятые входным сдвигающим регистром, помещаются в регистр RBR, откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра RBR, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие (липшие) биты в регистре имеют нулевое значение.

- DLL (Divisor Latch LSB) – регистр младшего байта делителя частоты.

- DLM (Divisor Latch MSB) – регистр старшего байта делителя частоты. Делитель определяется по формуле D=115200/V, где V – скорость передачи, бит/с. Входная частота синхронизации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных.

- IER (Interrupt Enable Register) – регистр разрешения прерываний. Единичное значение бита разрешает прерывание от соответствующего источника:

Биты 7-4=0 – не используются.

Бит 3 – Mod IE – по изменению состояния модема (любой из линий CTS, DSR, RI, DCD).

Бит 2 – RxL IE по обрыву/ошибке линии.

Бит 1 – TxD IE – по завершении передачи.

Бит 0 – RxD IE – по приему символа (в режиме FIFO – прерывание по тайм-ауту).

- IIR (Interrupt Identification Register) – регистр идентификации (только для чтения) прерываний и признака режима FIFO. Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по 4-уровневой приоритетной системе. Порядок приоритетов (по убыванию) следующий: состояние линии, прием символа, освобождение регистра передатчика и состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника.

Биты [7:6] – признак режима Р1РО:

11 – режим FIFO 16550А, 10 – режим FIFO 16550, 00 – обычный.

Биты [5:4] – не используются.

Бит 3 – прерывание по тайм-ауту (не в режиме FIFO).

Биты [2:1] – причина прерывания с наивысшим приоритетом (в обычном, не FIFO-режиме):

11 – ошибка/обрыв линии; сброс – чтением регистра состояния линии,

10 – принят символ; сброс – чтением данных,

01 – передан символ (регистр THR пуст); сброс – записью данных,

00 – изменение состояния модема; сброс – чтением регистра состояния модема.

Бит 0 – признак необслуженного запроса прерывания:

1 – нет запроса, 0 – есть запрос.

В режиме FIFO причину прерывания идентифицируют биты [3:1]:

011 – ошибка/обрыв линии; сброс – чтением регистра состояния линии.

010 – принят символ; сброс – чтением регистра данных приемника.

110 – индикатор тайм-аута (за 4-кратный интервал времени передачи символа не передано и не принято ни одного символа, хотя в буфере имеется, по крайней мере, один). Сброс – чтением регистра данных приемника.

001 – регистр THR пуст; сброс – записью данных.

000 – изменение состояния модема (CTS, DSR, RI или DCD), сброс – чтением регистра MSR

- FCR (FIFO Control Register) – регистр управления FIFO (только для записи). Назначение бит:

Биты [7:6] ITL (Interrupt Trigger Level) – уровень заполнения FIFO-буфера, при котором вырабатывается прерывание:

00 – 1 байт (по умолчанию);

01 – 4 байта;

10 – 8 байт;

11 – 14 байт.

Биты [5:4] зарезервированы.

Бит 3 – разрешение операций DMA.

Бит 2 – RESETTF (Reset Transmitter FIFO) – сброс счетчика FIFO-передатчика. Запись единицы в этот бит приводит к сбросу счетчика FIFO (сдвигающий регистр не сбрасывается).

Бит 1 – RESETRF (Reset Receiver FIFO) – сброс счетчика FIFO-приемника. Запись единицы в этот бит приводит к сбросу счетчика FIFO (сдвигающий регистр не сбрасывается).

Бит 0 – TRFIFOE (Transmit And Receive FIFO Enable) – разрешение (единицей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.

- LCR (Line Control Register) – регистр управления линией (настройки параметров канала).

Бит 7 – DLAB (Divisor Latch Access Bit) – управление доступом к делителю частоты.

Бит 6 – BRCON (Break Control) – формирование обрыва линии (посылка нулей) при BRCON=1.

Бит 5 – STICPAR (Sticky Parity) – принудительное формирование бита паритета:

0 – контрольный бит генерируется в соответствии с паритетом выводимого символа;

1 – постоянное значение контрольного бита:

при EVENPAR=1 – нулевое, при EVENPAR=0 – единичное.

Бит 4 – EVENPAR (Even Parity Select) – выбор типа контроля: 0 – нечетность, 1 – четность.

Бит 3 – PAREN (Parity Enable) – разрешение контрольного бита:

1 – контрольный бит (паритет или постоянный) разрешен, 0 – запрещен.

Бит 2 – STOPS (Stop Bits) – количество стоп-бит:

0 – 1 стоп-бит,

1 – 2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бит).

Биты [1:0] SERIALDB (Serial Data Bits) – количество бит данных:

00 – 5 бит,

01 – 6 бит.

10 – 7 бит,

11 – 8 бит.

- MCR (Modem Control Register) – регистр управления модемом:

Биты [7:5]=0 – зарезервированы.

Бит 4 – LME (Loopback Mode Enable) – разрешение режима диагностики:

0 – нормальный режим, 1 – режим диагностики (см. ниже).

Бит 3 – IE (Interrupt Enable) – разрешение прерываний (с помощью внешнего выхода OUT2):

0 – прерывания запрещены,

1 – разрешены.

В диагностическом режиме поступает на вход MSR.7.

Бит 2 – OUT1C (OUT1 Bit Control) – управление выходным сигналом 1 (не используется). В диагностическом режиме поступает на вход MSR.6.

Бит 1 – RTSC (Request To Send Control) – управление выходом RTS:

1 – активен (-V), 0 – пассивен (+V). В диагностическом режиме поступает на вход MSR.4.

Бит 0 – DTRC (Data Terminal Ready Control) – управление выходом DTR:

1 – активен (-V), 0 – пассивен (+V).

В диагностическом режиме поступает на вход MSR.5.

- LSR (Line Status Register) – регистр состояния линии (точнее, состояния приемопередатчика):

Бит 7 – FIFOE (FIFO Error Status) – ошибка принятых данных в режиме FIFO (буфер содержит хоть один символ, принятый с ошибкой формата, паритета или обрывом). В не-FIFO режиме всегда 0.

Бит 6 – TEMPT (Transmitter Empty Status) – регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных, THR или FIFO).

Бит 5 – THRE (Transmitter Holding Register Empty) – регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Вызывает прерывание.

Бит 4 – BD (Break Detected) – индикатор обрыва линии (вход приемника находится в состоянии лог. 0 не менее, чем время посылки символа).

Бит 3 – FE (Framing Error) – ошибка кадра (неверный стоп-бит).

Бит 2 – PE (Parity Error) – ошибка контрольного бита (паритета или фиксированного).

Бит 1 – OE (Overrun Error) – переполнение (потеря символа). Если прием очередного символа начинается до того, как предыдущий был выгружен из сдвигающего регистра в буферный или FIFO, прежний символ в сдвигающем регистре теряется.

Бит 0 – DR (Received Data Ready) – принятые данные готовы (в DHR или FIFO-буфере). Сброс – чтением приемника.

Индикаторы ошибок – биты [4:1] – сбрасываются после чтения регистра LSR. В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один “обрывной” символ, и UART ждет восстановления и последующего старт-бита.

- MSR (Modem Status Register) – регистр состояния модема:

Бит 7 – DCD (Data Carrier Detect) – состояние линии DCD.

Бит 6 – RI (Ring Indicator) – состояние линии RI.

Бит 5 – DSR (Data Set Ready) – состояние линии DSR.

Бит 4 – CTS (Clear To Send) – состояние линии CTS.

Бит 3 – DDCD (Delta Data Carrier Detect) – изменение состояния DCD.

Бит 2 – TERI (Trailing Edge Of Ring Indicator) – спад огибающей RI (окончание звонка).

Бит 1 – DDSR (Delta Data Set Ready) – изменение состояния DSR.

Бит 0 – DCTS (Delta Clear To Send) – изменение состояния CTS.

Признаки изменения – биты [3:0] – сбрасываются по чтению регистра.

- SCR (Scratch Pad Register) – рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 отсутствует).

В диагностическом режиме (при LME=1) внутри UART организуется внутренняя “заглушка” (loopback):

- Выход передатчика переводится в состояние лог. 1.

- Вход приемника отключается.

- Выход сдвигающего регистра передатчика логически соединяется со входом приемника.

- Входы DSR, CTS, RI и DCD отключаются от входных линий, на них внутренне подаются сигналы DTRC, RTSC, OUT1C, IE.

- Выходы управления модемом переводятся в пассивное состояние (лог. 0).

При этом переданные данные в последовательном виде немедленно принимаются, что позволяет проверять внутренний канал данных порта (включая сдвигающие регистры) и отработку прерываний, а также определить скорость работы UART).


Рисунок 1

Рис. 1.


Рис. 2. Цикл записи данных.


Рисунок 3

Рис. 3,а.

Рис. 3,б.


Рисунок 1. Формат асинхронной передачи

Рис. 1. Формат асинхронной передачи.


Рисунок 2. Соединение по RS-232C нуль-модемным кабелем

Рис. 2. Соединение по RS-232C нуль-модемным кабелем.


Рисунок 3

Рис. 3.


Рисунок 4. Формирование сигналов RS-232C

Рис. 4. Формирование сигналов RS-232C: а – приемник 1489 (A – вход RS-232, C – управление гистерезисом (ТТЛ), Y – выход ТТЛ); б – передатчик 1488 (А, В – входы ТТЛ, Y – выход RS-232, VDD=+12 В, VEE=-12 В); в – таблица состояния выходов передатчика (*1 В=лог. 1).


Рисунок 5

Рис. 5.


Рисунок 6

Рис. 6.


Таблица 1

Сигнал | I/O* | Контакт | Назначение
Strobe# | I | 1 | Строб данных. Данные фиксируются по низкому уровню сигнала.
Data [0:7] | I | 2-9 | Линии данных. Data 0 (контакт 2) – младший бит
Ack# | O | 10 | Acknowledge – импульс подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования запроса прерывания
Busy | O | 11 | Занято. Прием данных возможен только при низком уровне сигнала
PaperEnd | O | 12 | Высокий уровень сигнализирует о конце бумаги
Select | O | 13 | Сигнализирует о включении принтера (обычно в принтере соединяется резистором с цепью +5 В)
Auto LF# | I | 14 | Автоматический перевод строки. При низком символ CR (Carriage Return – возврат каретки), автоматически выполняет и функцию LF (Line Feed – перевод строки)
Error# | O | 32 | Ошибка: конец бумаги, состояние OFF-Line или внутренняя ошибка принтера
Init# | I | 31 | Инициализация (сброс в режим параметров умолчания, возврат к началу строки)
Slctln# | I | 36 | Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса
GND | - | 19-30 33 | Общий провод интерфейса


Таблица 2. Разъем стандартного LPT-порта.

Контакт DB-25S | Провод шлейфа | Назначение
 |  | I/O* | Reg. Bit** | Сигнал
1 | 1 | 0/1 | CR: 0\ | Strobe#
2 | 3 | 0(1) | DR: 0 | Data 0
3 | 5 | 0(1) | DR: 1 | Data 1
4 | 7 | 0(1) | DR: 2 | Data 2
5 | 9 | 0(1) | DR: 3 | Data 3
6 | 11 | 0(1) | DR: 4 | Data 4
7 | 13 | 0(1) | DR: 5 | Data 5
8 | 15 | 0(1) | DR: 6 | Data 6
9 | 17 | 0(1) | DR: 7 | Data 6
10 | 19 | I”* | SR: 6 | Ack#
11 | 21 | I | SR: 7\ | Busy
12 | 23 | I | SR: 5 | PaperEnd
13 | 25 | I | SR: 4 | Select
14 | 2 | 0/1 | CR: 1\ | Auto LF#
15 | 4 | I | SR: 3 | Error#
16 | 6 | 0/1 | CR: 2 | Init#
17 | 8 | 0/1 | CR: 3\ | Select In#
18-25 | 10, 12, 14, 16 | 18, 20, 22, 24, 26 | - | -


Таблица 3. Сигналы порта в режиме ввода/вывода EPP.

Контакт | Сигнал SPP | Имя в EPP | I/O | Описание
1 | STROBE# | WRITE# | O | Низкий уровень – признак цикл записи, высокий – чтения
14 | AUTOFEEM# | DATASTB# | O | Строб данных. Низкий уровень устанавливается в циклах передачи данных
17 | SELECTING# | ADDRSTB# | O | Строб адреса. Низкий уровень устанавливается в адресных циклах
16 | INIT# | RESET# | O | Сброс ПУ (низким уровнем)
10 | ACK# | INTR$ | I | Прерывание от ПУ
11 | BUSY# | WAIT# | I | Сигнал квитирования. Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий – разрешает завершение цикла (снятие)
2-9 | D[8:0] | AD[8:0] | I/O | Двунаправленная шина адреса/данных
12 | PE | AckDataReq | I | Используется по усмотрению разработчика периферии
13 | SELECT | Xflag | I | Используется по усмотрению разработчика периферии
15 | ERROR# | DataAvail# | I | Используется по усмотрению разработчика периферии


Таблица 4. Регистры EPP-порта

Таблица 4. Регистры ЕРР-порта.

Имя регистра | Смещение | Режим | R/W | Описание
SPP Data Port | +0 | SPP/EPP | W | Регистр данных стандартного порта
SPP Status Port | +1 | SPP/EPP | R | Регистр состояния стандартного порта
SPP Control Port | +2 | SPP/EPP | W | Регистр управления стандартного порта
EPP Address Port | +3 | ЕРР | R/W | Регистр адреса ЕРР. Чтение или запись в него генерирует связанный цикл чтения или записи адреса ЕРР
EPP Data Port | +4 | ЕРР | R/W | Регистр данных ЕРР. Чтение (запись) генерирует связанный цикл чтения (записи) данных ЕРР
Not defined | +5…+7 | ЕРР | N/A | В некоторых контроллерах могут использоваться для 16-32-битных операций ввода/вывода


Таблица 5. Сигналы LPT-порта в режиме ввода/вывода ECP.

Конт | Сигнал | Имя в ЕСР | I/O | Описание
1 | STROBE# | HostClk | O | Используется в паре с PeriphAck для передачи в прямом направлении (вывод)
14 | AUTOFEEDS | HostAck | O | Индицирует тип команда/данные при передаче в прямом направлении. Используется в паре с PeriphClk для передачи в обратном направлении
17 | SELECTING | 1284Active | O | Высокий уровень указывает на обмен в режиме ШЕЕ 1284. (В режиме SPP уровень низкий)
16 | INIT# | ReverseRequest# | О | Низкий уровень переключает канал на передачу в обратном направлении
10 | АСК# | PeriphClk | I | Используется в паре с HostAck для передачи в обратном направлении
11 | BUSY | PeriphAck | I | Используется в паре с HostClk для передачи в обратном направлении. Индицирует тип команда/данные при передаче в обратном направлении
12 | PE | AckReverse# | I | Переводится в низкий уровень как подтверждение сигналу ReverseRequest#
13 | SELECT | Xflag* | I | Флаг расширяемости Extensibility flag
15 | ERRORS | PeriphRequest#* | I | Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи*
2-9 | Data[0:7] | Data[0:7] | I/O | Двунаправленный канал данных


Таблица 1. Назначение сигналов интерфейса RS-232C

Таблица 1. Назначение сигналов интерфейса RS-232С

Сигнал | Назначение
PG | Защитная земля, соединяется с корпусом устройства и экраном кабеля
SG | Сигнальная (схемная) земля, относительно которой действуют уровни сигналов
TD | Последовательные данные – выход передатчика
RD | Последовательные данные – вход приемника
RTS | Выход запроса передачи данных: состояние “включено” уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением – состояние «включено» является сигналом модему на переключение в режим передачи
CTS | Вход разрешения терминалу передавать данные. Состояние “выключено” аппаратно запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных
DTR | Выход сигнала готовности терминала к обмену данными. Состояние “включено” поддерживает коммутируемый канал в состоянии соединения
DSR | Вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)
DCD | Вход сигнала обнаружения несущей удаленного модема
RI | Вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова


Таблица 2. Регистры UART 16550A

Таблица 2. Регистры UART 16550А.

Доступ |  | Регистр |  | Чтение/запись R/W
Смещение | DLAB | Имя | Название
Оh | 0 | THR | Transmit Holding Register | WO
Оh | 0 | RBR | Receiver Buffer Register | RO
Оh | 1 | DLL | Divisor Latch LSB | R/W
Lh | 1 | DLM | Divisor Latch MSB | R/W
Ih | 0 | IER | Interrupt Enable Register | R/W
2h | X | IIR | Interrupt Identification | RO
2h | X | FCR | FIFO Control Register | WO
Зh | 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


Параллельные и последовательные порты