Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программная реализация UART. ⇐ ПредыдущаяСтр 2 из 2
UART состоит из 12 регистров, к которым можно обратиться по восьми адресам портов ввода-вывода.
Рис.13 Функциональная схема UART PC16550. THR-регистр данных ожидающих передачи(только для записи) Рис.14 Регистр THR (Адрес=00h, DLAB=0, WR) В этот регистр записывают байт данных, определённый как символ (от 5 до 8 бит) который будет передан в линию связи. Символ, принятый в THR передаётся далее в сдвигающий регистр младшем битом вперед (см. рис.5). В начало символа добавляется стартовый бит, в конец символа добавляется стоповый бит. Перед стоповым битом может находиться бит паритета. Если символ короче 8 бит, то старшие биты регистра THR игнорируются (не используются, хотя записываются в этот регистр). Регистр THR может принять всего один байт данных и передать его в регистр последовательного сдвига. В большинстве UART имеется режим FIFO, в котором данные загружаются не в THR, а в регистр FIFO. Например, UART PC16550 имеет регистр FIFO, который может принять 16 байт данных. Кроме этого у некоторых UART существует режим DMA, в этом режиме сдвигающий регистр заполняется байтами данных непосредственно из оперативной памяти без участия микропроцессора.
RBR- буферный регистр приемника(только для чтения) Рис.15 Регистр RBR (Адрес=00h, DLAB=0, RD) В этот регистр байты(символы) принимаются из приемного сдвигающегося регистра. Регистр RBR может принять только один байт из сдвигающего приемного регистра. Аналогично передающей части UART здесь есть регистр FIFO, который может принимать больше одного байта данных минуя регистр RBR. К моменту заполнения сдвигающего приёмного регистра регистр RBR должен быть освобожден для приема очередного байта, иначе произойдет ошибка переполнения. Освобождение регистра RBR происходит, когда данные из него читаются микропроцессором. О том, что символ потерян в результате переполнения сообщает бит 1 регистра LSR. Этот бит называется ОЕ (Overrun Error)-"ошибка переполнения", OE=1 означает что один из переданных символов потерян.
DLL-младший байт делителя частоты:16 (чтение/запись) Рис.16 Регистр RBR (Адрес=00h, DLAB=1, RD/WR) В это регистре находится младший байт делителя частоты деленного на 16. DIM-старший байт делителя частоты:16 (чтение/запись) Рис.17 Регистр RBR (Адрес=01h, DLAB=1, RD/WR) В этом регистре находится старший байт делителя частоты деленного на 16. D=115200/V, где V-скорость в бит/сек, D=делитель частоты:16 Для кварца UART частотой f=24 МГц, делитель частоты:16 считается по формуле:
D=1 500 000/V, где V-скорость в бит/сек, D=делитель частоты:16
IER-регистр разрешения прерывания(чтение/запись) Рис.18 Регистр IER (Адрес=01h, DLAB=0, RD/WR) Регистр разрешения прерываний дает разрешения определённым событиям вызывать прерывание микропроцессора. Бит 1. TxD_IE — если TxD_IEЕ=1,то разрешено прерывание для передачи данных, это прерывание возникает когда передающий буфер пуст и необходимо загрузить байт в регистр THR. Бит 2. RxL_IЕ — если RxL_IЕ=1,то разрешено прерывание при обрыве линии связи или ошибке в приёме данных, это прерывание возникает когда в регистре состояния линии связи LSR будут выставлены биты этих ошибок. Бит 3. Mod_IЕ — если Mod_IЕ =1,то разрешено прерывание при изменении состояния любого из входных сигналов RST,CTS,DCD,RI, это прерывание возникает когда состояние входных сигналов COM-порта изменились. Бит 4..7. Не используются и всегда равны 0. IIR-регистр идентифицирующий прерывания (чтение) Рис.19 Регистр IIR (Адрес=02h, RD) Чтобы минимизировать программное обеспечение, UART располагает по приоритетам прерывания в четыре уровня и делает запись этих прерываний в IIR. Четыре уровня прерывания располагаются в порядке приоритета условий прерывания заданных регистрами - RLS; RDR; THR; и MSR. Когда CPU обращается к IIR, UART замораживает все прерывания и указывает самое высокое приоритетное отложенное прерывание для CPU. Во время обработки прерывания, UART делает запись новых прерываний, но не изменяет их текущий признак, до полной обработки.
Бит 0. IP (Interrupt Pending)— если IP=1, то все прерывания обработаны. Если IP=0,то есть необработанные прерывания. Бит 1. I_ID0 (Interrupt ID Bit0)- нулевой бит идентификатора прерываний
Бит 6. FE_ID0 (FIFOs Enabled ID Bit0)- нулевой бит идентификатора режима FIFO
FCR-регистр управления режимом FIFO (запись)
Рис.20 Регистр FCR (Адрес=02h, WR) Это регистр используется только для записи, его данные расположены как в регистре IIR. Этот регистр используется, чтобы разрешить режимы FIFO, очистить буферы FIFO, задать уровень заполнения буферов FIFO, и выбрать тип DMA(прямого обращения к памяти). Бит 0. TRFIFOE (Transmit And Receive FIFO Enable)— Запись 1 в этот бит допускает оба режима FIFO передатчика(XMIT) и приемника(RCVR). Сброс бита в 0 очистит все байты в обоих буферов FIFO. При изменении режима FIFO к 16450 и наоборот, буферы FIFO автоматически очищаются. Этот бит должен быть в 1, когда производится запись других битов регистра FCR, иначе они не будут запрограммированы. Бит 1. RESETRF (Reset Receiver FIFO)-Запись 1 в этот бит очищает все байты в приемном буфере FIFO и сбрасывает его счетчик в 0. Сдвиговый регистр при этом не очищается. После этого 1 в этом бите сбрасывается в 0. Бит 2. RESETTF (Reset Transmitter FIFO)- Запись 1 в этот бит очищает все байты в передающем буфере FIFO и сбрасывает его счетчик в 0. Сдвиговый регистр при этом не очищается. После этого 1 в этом бите сбрасывается в 0. Бит 3. DMAE (DMA Enabled)- Запись 1 в этот бит приводит к изменению сигналов UART RxRDY и TxRDY с 0 к 1,при условии что FCR(bit0)=1. Эти аппаратные сигналы используются для организации правильной работы режима DMA в микропроцессорной системе. Бит 4..5.Зарезервированные. Бит 6. ITL_ID0 (Interrupt Trigger Level ID bit0) - нулевой бит идентификатора триггера уровня прерывания.
LCR-регистр управления линией связи(запись/чтение) Рис.21 Регистр LCR (Адрес=03h, RD/WR) Данный регистр служит для определения(задания) формата асинхронного обмена передачи данных. Также в этом режиме устанавливается бит DLAB, который позволяет программисту записывать и читать данные из нужных регистров.. Программист может не только записывать, но и читать содержимое регистра LCR. Способность чтения упрощает системное программирование и устраняет потребность в отдельной области в системной памяти для хранения характеристик линии. Бит 0. SDB_ID0 (Serial Data Bits ID0)- нулевой бит идентификатора количества бит в передаваемом символе.
Бит 3. PAREN (Parity Enable) -Если PAREN=1, то разрешено использование бита паритета и данный бит вставляется между последним битом данных и стоповым битом. Если PAREN=0, то бит паритета не выставляется и не входит в состав передаваемого символа. Бит 4. EVENPAR (Even Parity Select) - Бит выбора типа контроля паритета. Если EVENPAR=1, то происходит проверка на четность. Если EVENPAR=0, то происходит проверка на нечетность. Бит 5. STICPAR (Sticky Parity)- Если STICPAR=0, то бит паритета бит генерируется в соответствии с паритетом выводимого символа. Если STICPAR=1, то постоянное значение контрольного бита: при EVENPAR=1 — нулевое, при EVENPAR=0 — единичное. Бит 6. BRCON (Break Control)- Управляющий бит обрыва связи. Если BRCON=1, то вслучае возникновения перерыва в приеме данных, передатчик UART начнёт передавать в линию нули. Бит 7. DLAB (Divisor Latch Access Bit)- Этот бит доступа к делителю частоты. Если DLAB=1, то можно обратиться к регистрам DIM, DLL в которых хранятся младший и старший байт делителя частоты:16.Если DLAB=0, то можно обратиться к регистрам THR,RBR,IER. MCR-регистр управления модемом (запись/чтение) Рис.22 Регистр MCR (Адрес=04h, RD/WR) Этот регистр управляет интерфейсом модема или периферийным устройством. Бит 0. DTR (Serial Data Bits ID0)(Data Terminal Ready)- Этот бит управляет выходным сигналом DTR (Готовность терминала данных). Бит 1. RTS (Request To Send)- Этот бит управляет выходным сигналом RTS (Запрос на передачу). Бит 2. OUT1 (OUT1 Bit Control) - Управление вспомогательным выходом OUT1. Бит 3. OUT2 (OUT2 Bit Control) - Управление вспомогательным выходом OUT2. Бит 4. LOOP (Loopback Mode Enable)-Бит режима диагностики. Если LOOP=0, то UART работает в обычном режиме. Если LOOP=1, то URAT работет в режиме диагностики с обратной связью, в этом режиме используются вспомогательные сигналы OUT1 и OUT2. Бит 5..7. Зарезервированы. LSR -регистр состояния линии связи (запись/чтение) Рис.23 Регистр LSR (Адрес=05h, RD/WR) Данный регистр показывает состояние приемопередатчика. Бит 0. DR (Receiver Data Ready) — Готовность данных приемника.DR=1 информирует о том, что данные приняты и загружены в регистр RBR или приемный буфер FIFO. Бит сбрасывается в ноль, когда все данные будут прочитаны CPU из регистра RBR или буфера FIFO. Бит 1. OE (Overrun Error) — Бит ошибки переполнения. Бит указывает, что данные в регистре RBR не были прочитаны CPU прежде, чем следующий символ был передан в RBR, что привело к потере предыдущего символа. Бит устанавливается в OE=1 после обнаружения ошибки переполнения и сбрасывать всякий раз, когда SPU читает содержание регистра LSR. Бит 2. PE (Parity Error) —Бит ошибки контрольного бита паритета.PE=1 если символ принят с ошибкой паритета. Бит 3. FE (Framing Error) — ошибка кадра (неверный стопбит). Бит 4. BD (Break Detected) — индикатор обрыва линии (вход приемника находится в состоянии 0 не менее чем время посылки символа). Бит 5. THRE (Transmitter Holding Register Empty) — регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Может являться источником прерывания. Бит 6. TEMPT (Transmitter Empty Status) — регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных регистрах THR или FIFO). Бит 7. FIFOE (FIFO Error Status) —ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, паритета или обрывом). В не FIFO-режиме всегда 0. MSR-регистр состояния модема Рис.24 Регистр MSR (Адрес=06h, RD/WR) Этот регистр позволяет CPU контролировать текущее состояние линий управления модема или периферийного устройства. В дополнение к этому, четыре бита (0..3) регистра MSR контролируют изменения сигналов на входах CTS,RTS,RI,DCD микросхемы и вырабатывают прерывание микропроцессора. Бит 0. DCTS (Delta Clear To Send) — Изменение состояния сигнала CTS(очищен для передачи).Бит устанавливается в DCTS=1 при изменении сигнала CTS на входе микросхемы и сбрасывается при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора. Бит 1. DDSR (Delta Data Set Ready) — Изменение состояния сигнала DSR(установка данных готова).Бит устанавливается в DDSR=1 при изменении сигнала DSR на входе микросхемы и сбрасывается при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора. Бит 2. ТЕRI (Trailing Edge Of Ring Indicator) — Детектор заднего фронта сигнала RI(индикатор звонка). Бит устанавливается в TERI=1, когда сигнал на выводе микросхемы RI изменяет свой уровень с низкого на высокий. Бит сбрасывается в TERI=0 при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора. Бит 3. DDCD (Delta Data Carrier Detect) — Изменение состояния сигнала DCD(обнаружен носитель информации).Бит устанавливается в DDCD=1 при изменении сигнала DCD на входе микросхемы и сбрасывается при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора. Бит 4. CTS (Clear To Send) — Состояние линии CTS. Если CTS=1, то на вход CTS СОМ-порта подано напряжение +12в(сигнал CTS активен).Если CTS=0, то вход СОМ-порта подано напряжение -12В(сигнал CTS пассивен). В режиме диагностики этот бит эквивалентен биту RTS регистра MCR. Бит 5. DSR (Data Set Ready) — Состояние линии DSR. Если DSR=1, то на вход DSR СОМ-порта подано напряжение +12в(сигнал DSR активен).Если DSR=0, то вход СОМ-порта подано напряжение -12В(сигнал DSR пассивен). В режиме диагностики этот бит эквивалентен биту DTR регистра MCR. Бит 6. RI (Ring Indicator) — Состояние линии RI. Если RI=1, то на вход DSR СОМ-порта подано напряжение +12в(сигнал RI активен).Если RI=0, то вход СОМ-порта подано напряжение -12В(сигнал RI пассивен). В режиме диагностики этот бит эквивалентен биту OUT1 регистра MCR. Бит 7. DCD (Data Carrier Detect) — Состояние линии DCD. Если DCD=1, то на вход DCD СОМ-порта подано напряжение +12в(сигнал DCD активен).Если DCD=0, то вход СОМ-порта подано напряжение -12В(сигнал DCD пассивен). В режиме диагностики этот бит эквивалентен биту OUT2 регистра MCR. SCR-регистр временного хранения (чтение/запись) Рис.25 Регистр SCR (Адрес=07h, RD/WR) Регистр временного хранения, на работу UART не влияет, предназначен для временного хранения данных (в UART i8250 отсутствует).
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-21; просмотров: 948; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.173.214.79 (0.125 с.) |