| Доступ |
Регистр |
Чтение/запись R/W |
| Смещение |
DLAB |
Имя |
Название |
| 0h |
0 |
THR |
Transmit Holding Register |
WO |
| 0h |
0 |
RBR |
Receiver Buffer Register |
RO |
| 0h |
1 |
DLL |
Divisor Latch LSB |
R/W |
| 1h |
1 |
DIM |
Divisor Latch MSB |
R/W |
| 1h |
0 |
IER |
Interrupt Enable Register |
R/W |
| 2h |
x |
IIR |
Interrupt Identification Register |
RO |
| 2h |
x |
FOR |
FIFO Control Register |
WO |
| 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 |
¹ Некоторые биты допускают только чтение. Запись в регистр может привести к сбою протокола.
ТHR— промежуточный регистр данных передатчика (только для записи). Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS. Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.
RBR— буферный регистр принимаемых данных (только для чтения). Данные, принятые входным сдвигающим регистром, помещаются в регистр RBR, откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие биты в регистре имеют нулевое значение.
DLL— регистр младшего байта делителя частоты .
DLM— регистр старшего байта делителя частоты . Делитель определяется по формуле D=115200/V, где V — скорость передачи, бит/с. Входная частота синхронизации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных.
IER— регистр разрешения прерываний . Единичное значение бита разрешает прерывание от соответствующего источника.
Назначение бит регистра 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:
Читать дальше