Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия
Назначение бит регистра IER:
♦ биты [7:4]=0 — не используются;
♦ бит 3 — Mod_IE — по изменению состояния модема (любой из линий CTS, DSR, RI, DCD);
♦ бит 2 — RxL_IЕ — по обрыву/ошибке линии;
♦ бит 1 — TxD_IE — по завершении передачи;
♦ бит 0 — RxD_IЕ — по приему символа (в режиме FIFO — прерывание по тайм-ауту).
IIR — регистр идентификации прерываний и признака режима FIFO (только для чтения). Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение регистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника. Ниже описано назначение бит регистра IIR.
♦ Биты [7:6] — признак режима FIFO:
• 11 — режим FIFO 16550A;
• 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 — изменение состояния модема (CIS, DSR, RI или DCD). Сброс выполняется чтением регистра MSR.
FCR — регистр управления FIFO (только для записи). Ниже описано назначение бит регистра FCR:
♦ Биты [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-передатчика (записью единицы; сдвигающий регистр не сбрасывается).
♦ Бит 1 — RESETRF (Reset Receiver FIFO) — сброс счетчика FIFO-приемника (записью единицы; сдвигающий регистр не сбрасывается).
♦ Бит 0 — TRFIFOE (Transmit And Receive FIFO Enable) — разрешение (единицей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.
LCR — регистр управления линией (настройки параметров канала). Ниже описано назначение бит регистра LCR.
♦ Бит 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 — STOPВ (Stop Bits) — количество стоп-бит:
• 0–1 стоп-бит;
• 1–2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бит).
♦ Биты [1:0] — SERIALDB (Serial Data Bits) — количество бит данных:
• 00 — 5 бит;
• 01 — 6 бит;
• 10 — 7 бит;
• 11 — 8 бит.
MCR — регистр управления модемом. Ниже описано назначение бит регистра MCR.
♦ Биты [7:5]=0 — зарезервированы.
♦ Бит 4 — LME (Loopback Mode Enable) — разрешение режима диагностики:
• 0 — нормальный режим;
• 1 — режим диагностики (см. ниже).
♦ Бит 3 — IE (Interrupt Enable) — разрешение прерываний с помощью внешнего выхода OUT2; в режиме диагностики поступает на вход MSR.7:
• 0 — прерывания запрещены;
• 1 — прерывания разрешены.
♦ Бит 2 — OUT1C (OUT1 Bit Control) — управление выходным сигналом 1 (не используется); в режиме диагностики поступает на вход MSR.6.
♦ Бит 1 — RTSC (Request To Send Control) — управление выходом RTS; в режиме диагностики поступает на вход MSR.4:
• 0 — активен (-V);
• 1 — пассивен (+V).
♦ Бит 0 — DTRC (Data Terminal Ready Control) — управление выходом DTR; в режиме диагностики поступает на вход MSR.5:
• 0 — активен (-V);
• 1 — пассивен (+V).
LSR — регистр состояния линии (точнее, состояния приемопередатчика). Ниже описано назначение бит регистра LSR.
♦ Бит 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 — РЕ (Parity Error) — ошибка контрольного бита (паритета или фиксированного).
♦ Бит 1 — ОЕ (Overrun Error) — переполнение (потеря символа). Если прием очередного символа начинается до того, как предыдущий выгружен из сдвигающего регистра в буферный регистр или в регистр FIFO, прежний символ в сдвигающем регистре теряется.
♦ Бит 0 — DR (Receiver Data Ready) — принятые данные готовы (в DHR или FIFO- буфере). Сброс — чтением приемника.
Индикаторы ошибок — биты [4:1] — сбрасываются после чтения регистра LSR. В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один «обрывной» символ, и UART ждет восстановления и последующего старт-бита.
MSR — регистр состояния модема. Ниже описано назначение бит регистра MSR:
♦ Бит 7 — DCD (Data Carrier Detect) — состояние линии DCD:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 6 — RI (Ring Indicator) — состояние линии RI:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 5 — DSR (Data Set Ready) — состояние линии DSR:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 4 — CTS (Clear To Send) — состояние линии CTS:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 3 — DDCD (Delta Data Carrier Detect) — изменение состояния DCD.
♦ Бит 2 — ТЕRI (Trailing Edge Of Ring Indicator) — спад огибающей RI (окончание звонка).
♦ Бит 1 — DDSR (Delta Data Set Ready) — изменение состояния DSR.
♦ Бит 0 — DCTS (Delta Clear To Send) — изменение состояния CTS.
Признаки изменения (биты [3:0]) сбрасываются по чтению регистра.
SCR — рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 отсутствует).
В диагностическом режиме (при LME=1) внутри UART организуется внутренняя «заглушка»:
♦ выход передатчика переводится в состояние логической единицы;
♦ вход приемника отключается;
♦ выход сдвигающего регистра передатчика логически соединяется со входом приемника;
♦ входы DSR, CIS, RI и DCD отключаются от входных линий и внутренне управляются битами DTRC, RISC, OUT1C, IE;