Аппаратные интерфейсы ПК | страница 46



♦ 16450 — быстродействующая версия 8250 для AT. Ошибок 8250 и полной совместимости с XT BIOS не имеет.

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

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

Микросхемы UART 16550А с программной точки зрения представляют собой набор регистров, доступ к которым определяется адресом (смещением адреса регистра относительно базового адреса порта) и значением бита >DLAB (бита 7 регистра >LCR). В адресном пространстве микросхема занимает 8 смежных адресов. Список регистров UART 16550A и способы доступа к ним приведены в табл. 2.4. Микросхемы 8250 отличаются отсутствием регистра FCR и всех возможностей FIFO и DMA.


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

ДоступРегистрЧтение/запись R/W
СмещениеDLABИмяНазвание
0h0THRTransmit Holding RegisterWO
0h0RBRReceiver Buffer RegisterRO
0h1DLLDivisor Latch LSBR/W
1h1DIMDivisor Latch MSBR/W
1h0IERInterrupt Enable RegisterR/W
2hxIIRInterrupt Identification RegisterRO
2hxFORFIFO Control RegisterWO
3hxLCRLine Control RegisterR/W
4hxMCRModem Control RegisterR/W
5hxLSRLine Status RegisterR/W¹
6hxMSRModem Status RegisterR/W¹
7hxSCRScratch Pad RegisterR/W

¹ Некоторые биты допускают только чтение. Запись в регистр может привести к сбою протокола.


>ТHRпромежуточный регистр данных передатчика (только для записи). Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала >CTS. Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.

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

>DLLрегистр младшего байта делителя частоты.

>DLMрегистр старшего байта делителя частоты