|
|
Структура регистров UART (Продолжение)
В дальнейшем мы примем в качестве COM1 порт с базовым адресом Base=3F8h, и будем использовать адресацию его регистров от 3F8h до 3FFh.
После определения базового адреса необходимо установить параметры обмена: портовую скорость, способ контроля четности, число информационных и стоповых битов. Параметры линии, кроме скорости, устанавливаются в регистре, который называется Line Control Register или LCR, регистр управления линией, расположенном по адресу Base+3. В нашем случае это регистр 3FBh.
Скорость передачи устанавливается отдельно от остальных параметров. Для этого в регистре LCR нужно установить бит 7 в "1". Этот бит называется Divisor Latch Access Bit (DLAB) — бит загрузки делителя, который отвечает за переназначение регистров Base+0 и Base+1. В общем случае регистр 3F8h используется как буфер обработки данных, а регистр 3F9h — как регистр управления прерываниями (Interrupt Enable Register). В случае установки бита DLAB эти регистры становятся регистрами, где хранятся соответственно младший байт (Divisor Latch Low Byte) и старший байт (Divisor Latch High Byte) делителя скорости обмена — Baud Rate Divisor. Такой подход объясняется тем, что для получения частоты битовой синхронизации из входной тактовой частоты, используется два последовательно включенных делителя, один из которых имеет фиксированный коэффициент, равный 16, а второй — обеспечивает программируемый коэффициент деления, равный значению, записанному в 16-битовый регистр Baud Rate Divisor.
Результирующий коэффициент деления частоты равен произведению коэффициентов двух рассмотренных делителей, поэтому результирующая скорость передачи данных определяется формулой:
S = F/(16*D), где
S = Скорость приема/передачи в бодах.
F = Частота тактирования микросхемы UART в герцах.
D = Значение 16-битового регистра Baud Rate Divisor.
При использовании UART со стандартной частотой тактирования в 1.8432MHz, для получения скорости в 115200 бод используется Divisor=1. Коммуникационные устройства, поддерживающие скорости выше 115200 бод, используют частоты тактирования UART, превышающие 1.8432MHz в 2, 4 или 8 раз.
Продолжение
|
|