Приемопередатчик UART
Автор: 87075544979 • Май 4, 2019 • Лекция • 1,336 Слов (6 Страниц) • 332 Просмотры
Тема 6. Приемопередатчик UART
Для работы UART необходимы четыре регистра:
- UCR (UART Control Register) - регистр управления;
- USR (UART Status Register) - регистр состояния;
- UDR (UART Data Register) - регистр данных;
- UBRR (UART Baud Rate Register) - регистр настройки требуемой скорости передачи данных.
UART может распознавать два вида ошибок передачи данных и вызывать три различных прерывания.
6.1 Передатчик UART
Схема передатчика (трансмиттера) UART показана на рисунке 6.1. После передачи стоп-бита и записи байта в регистр данных UDR, происходит загрузка байта в сдвиговой регистр, после чего начинается передача.
[pic 1]
Рисунок 6.1 – Структурная схема передатчика UART
Как только байт из регистра данных UDR переносится в сдвиговой регистр, в регистре состояния USR устанавливается флаг готовности UDRE (UART Data Register Empty - регистр данных пуст).
Общее число переданных битов может составлять 10 или 11, в зависимости от того, какая длина слова данных была установлена с помощью разряда CHR9 регистра управления UCR: 8 разрядов (CHR9 = 0) или 9 разрядов (CHR9 = 1). Девятый разряд может быть применен для записи дополнительных данных - как бит четности или как еще один стоп-бит.
В разряды 1-8 сдвигового регистра записывается передаваемый байт, а бит 0 (старт-бит) стирается, и затем устанавливается стоп-бит (разряд 9 при CHR9 = 0 или разряд 10 при CHR9 = 1).
Вместе со следующим тактовым импульсом бит 0 (старт-бит) переносится на вывод TxD, после чего следуют 8/9 разрядов данных (вначале младший разряд) и стоп-бит. Записанный в регистр данных UDR новый байт загружается в сдвиговой регистр только после передачи стоп-бита.
Флаг UDRE сбрасывается при записи в регистр данных UDR нового байта. После пересылки стоп-бита в регистре состояния USR устанавливается флаг ТХС (UART Transmit Complete - передача через UART завершена), указывающий на то, что слово данных было передано, и данные, ожидающие передачи, отсутствуют.
С помощью разряда TXEN регистра управления UCR осуществляется разрешение передачи. Если передачи нет, то вывод PD1 может быть использован в качестве общего входа/выхода.
6.2 Приемник UART
Блок-схема приемника (ресивера) UART показана на рисунке 6.2.
Схема управления опрашивает входной сигнал 16 раз во время каждого периода передачи данных. Начало передачи в ждущем режиме на линии определяется низким уровнем лог. 0 (ниспадающий фронт стартового импульса), являющегося старт-битом.
К 8-му (а также к 9-му и к 10-му) моменту времени опроса линия должна содержать низкий уровень сигнала. Если при этих трех сканированиях два или три раза будет распознан высокий уровень, то будет распознан стоп-бит и схема управления приемника опять начинает ожидание ниспадающего фронта старт-бита.
Логический уровень, который распознается, как минимум, при двух опросах из трех, будет воспринят как значение бита. На рисунке 11.3 показана диаграмма уровней сигналов в линии передачи символа, состоящего из 8 бит (без бита четности).
[pic 2]
Рисунок 6.3 – Диаграмма уровней сигналов в линии передачи
Для стоп-бита как минимум два из трех опросов должны дать в результате 1. Если этого не происходит, то в регистре состояния USR устанавливается флаг ошибки кадрирования FE (Framing Error), указывающий на то, что бит поступившего символа некорректный. Перед чтением регистра UDR необходимо постоянно проверять флаг FE для того, чтобы исключить некорректный прием.
По окончании цикла приема данных в регистре состояния USR всегда устанавливается флаг RXC, и выполняется загрузка прочитанного символа в регистр приема UDR.
Если с помощью разряда CHR9 в регистре управления UCR было указано, что длина слова данных составляет 9 бит (CHR9 = 1), то этот девятый бит переносится в разряд RXB8 регистра UCR.
[pic 3]
Рисунок 6.2 - Структурная схема передатчика UART
Если в сдвиговой регистр поступает новое слово данных еще до того, как будет считан уже принятый и находящийся в регистре UDR байт, то новый символ теряется и в регистре USR устанавливается флаг переполнения OR. После чтения регистра UDR необходимо постоянно проверять флаг OR, чтобы исключить потерю поступившего символа.
...