Программирование модемов

Изменения в регистрах 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)

  • D0. Установка этого бита в единицу разрешает использование буферизации для принимаемых и передаваемых данных.
    Этот бит должен содержать единицу, если какой-либо из других битов содержит единицу.
  • D1. При установке этого бита в единицу буфер приемника очищается. Затем бит автоматически сбрасывается в ноль.
  • D2. При установке этого бита в единицу буфер передатчика очищается. Затем бит автоматически сбрасывается в ноль.
  • D3. Бит не используется на большинстве последовательных асинхронных адаптерах.
  • D7, D6. Управление прерываниями от приемника. Если буферизация отсутствует, то прерывание происходит всякий раз при приеме нового символа. С разрешенной буферизацией UART может генерировать прерывание при получении заданного количества символов:

    Биты D7 D6Количество символов
    001 байт
    014 байта
    108 байт
    1114 байт

    Содержание раздела