Изменения в регистрах UART 16550A
Изменения в регистрах UART 16550A
В этой главе мы рассмотрим изменения в форматах регистров UART 16550A по сравнению с UART 8250.
Начнем с регистра идентификации прерывания. Этот регистр доступен только для чтения. По сравнению с UART 8250 в нем добавлены два бита - D6 и D7, которые показывают статус буфера FIFO.
Если биты D7 и D6 оба равны единице, то разрешено использование буферизации (FIFO). Если же только бит D7 содержит единицу, это означает, что вы имеете дело с микросхемой UART 16550. В ней режим буферизации реализован с ошибками, и использовать его не надо.
Бит D3 используется для сигнализации таймаута. Он устанавливается в том случае, если буфер FIFO содержит данные, которые необходимо прочитать. Это случается после небольшого промежутка времени, если в буфер не поступают новые символы.
Если бит D3 содержит единицу, то бит D2 также содержит единицу. Это означает, что буфер приемника содержит данные.
Для микросхем UART 8250 и 16450 биты D3, D6 и D7 всегда содержат нули. Биты D4 и D5 не используются во всех рассматриваемых микросхемах.
Для управления режимом буферизации UART 16550A имеет дополнительный регистр - регистр управления буферизацией FIFO. Этот регистр разделяет общий адрес с регистром идентификации прерываний - base_adr+ 2. Но в отличие от регистра идентификации прерываний, доступного только для чтения, этот регистр доступен только для записи.
Итак, регистр управления режимом буферизации имеет следующий формат:
7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ LT- ¦ ¦ ¦ L= Разрешение буферизации. При D0, равном ¦ ¦ ¦ ¦ ¦ ¦ единице, буферизация разрешена ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=== Сброс приемного буфера ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===== Сброс буфера передатчика ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= Выбор режима прямого доступа ¦ ¦ ¦ ¦ ¦ L========== Не используются ¦ ¦ ¦ L============= Триггер приемника (LSB) ¦ L=============== Триггер приемника (MSB)
Этот бит должен содержать единицу, если какой-либо из других битов содержит единицу.
Биты D7 D6 | Количество символов |
00 | 1 байт |
01 | 4 байта |
10 | 8 байт |
11 | 14 байт |