Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







UART - универсальный асинхронный приемопередатчик.





Последовательный порт ввода-вывода UART (Universal Asynchronous Receiver-Transmitter) предназначен для передачи и приема байтов данных по двухпроводным линиям связи (например, по интерфейсу RS-232C или "токовая петля"). Прием и передача могут вестись одновременно. При передаче байта формируется последовательность из десяти или одиннадцати битов (кадр), содержащая стартовый бит, имеющий нулевое значение, восемь битов байта (D0, D1,... D7) и столовый бит, имеющий единичное значение. Между старшим битом байта (D7) и стоповым битом может помещаться дополнительный бит.

Порт UART входит в состав периферийных устройств микрокон­троллеров типа 2313, 4433, 8515, 8535, m163 и m103.

Микроконтроллеры ATmega603/103 оснащены полнодуплексными универсальными приемопередатчиками. Их основные возможности следующие:

- Генератор обеспечивает любую скорость передачи информации в бодах;

- Высокая скорость передачи при низкой частоте XTAL;

- 8-разрядный или 9-разрядный форматы данных;

- Фильтрация шума;

- Обнаружение переполнения;

- Обнаружение ошибок формирования кадров;

- Детектирование бита ложного старта.

Три отдельных прерывания: по завершению передачи (TX Complete), по пустому регистру передаваемых данных (TX Data Register Empty) и по завершению приема (RX Complete).

Передача данных. Передача данных инициируется записью передаваемых данных в регистр данных I/O UART (UDR). Данные пересылаются из UDR в сдвиговый регистр передачи в следующих случаях:

- Новый символ записан в UDR после того как был выведен из регистра стоповый бит предшествовавшего символа. Сдвиговый регистр загружается немедленно.

- Новый символ записан в UDR прежде, чем был выведен стоповый бит предшествовавшего символа. Сдвиговый регистр загружается после выхода стопового бита передаваемого символа, находившегося в сдвиговом регистре.

Если из 10 (11)-разрядного сдвигового регистра передачи выведена вся информация (сдвиговый регистр передачи пуст) данные из UDR пересылаются в сдвиговый регистр. В это время устанавливается бит UDRE (UART Data Register Empty) регистра статуса UART (USR). При установленном в состояние 1 бите UDRE UART готов принять следующий символ. Запись в UDR очищает бит UDRE. В то самое время, когда данные пересылаются из UDR в 10(11)-разрядный сдвиговый регистр, бит 0 сдвигового регистра сбрасывается в состояние 0 (состояние 0 - стартовый бит), а бит 9 или 10 устанавливается в состояние 1 (состояние 1 - стоповый бит). Если в регистре управления UART (UCR) установлен бит CHR9 (т.е. выбран режим 9-разрядного слова данных), то бит TXB8 регистра UCR пересылается в бит 9 сдвигового регистра передачи.

Сразу после пересылки данных в сдвиговый регистр тактом бод-генератора стартовый бит сдвигается на вывод TXD. За ним следует LSB данных. Когда будет выдан стоповый бит сдвиговый регистр загружается новой порцией данных, если она была записана в UDR во время передачи. В процессе загрузки бит UDRE находится в установленном состоянии. Если же новые данные не будут загружены в UDR до выдачи стопового бита, флаг UDRE остается установленным. В этом случае, после того как стоповый бит будет присутствовать на выводе TXD в течение одного такта, в регистре статуса UART (USR) устанавливается флаг завершения передачи TXC (TX Complete Flag).

Установленный в состояние 1 бит TXEN регистра UCR разрешает передачу UART. При очищенном бите TXEN (сброшенном в состояние 0) вывод PE1 может быть использован в качестве вывода I/O общего назначения. При установленном бите TXEN передатчик UART подключается к PE1 и использует его в качестве вывода выхода, независимо от установки бита DDE1 в DDRE.

Прием данных. Логика восстановления данных производит выборку состояний вывода RXD с частотой в 16 раз большей, чем частота бодов. При нахождении линии в пассивном состоянии одиночная выборка нулевого логического уровня будет интерпретироваться, как падающий фронт стартового бита и будет запущена последовательность детектирования стартового бита. Считается, что первая выборка обнаружила первый нулевой логический уровень вероятного стартового бита. На выборках 8, 9 и 10 приемник вновь тестирует вывод RXD на изменение логических состояний. Если две или более из этих трех выборок обнаружат логические 1, то данный вероятный стартовый бит отвергается как шумовой всплеск и приемник начнет выявлять и анализировать следующие переходы из 1 в 0.

Если же был обнаружен действительный стартовый бит, то начинает производиться выборка следующих за стартовым битом информационных битов. Эти биты также тестируются на выборках 8, 9 и 10. Логическое состояние бита принимается по двум и более (из трех) одинаковым состояниям выборок. Все биты вводятся в сдвиговый регистр приемника с тем значением, которое было определено тестированием выборок.

Тестирование выборок битов принимаемых символов показано на рис. 44.

Рис. 44. Тестирование выборок принимаемых данных

При поступлении стопового бита необходимо, чтобы не менее двух выборок из трех подтвердили прием стопового бита (показали высокий уровень). Если же две или более выборок покажут состояния 0, то, при пересылке принятого байта в UDR, в регистре статуса UART (USR) устанавливается бит ошибки кадра FE (Framing Error). Для обнаружения ошибки кадра пользователь перед чтением регистра UDR должен проверять состояние бита FE. Флаг FE очищается при считывании содержимого регистра данных UART (UDR).

Вне зависимости от того принят правильный стоповый бит или нет, данные пересылаются в регистр UDR и устанавливается флаг RXC в регистре статуса UART (USR). Регистр UDR фактически является двумя физически отдельными регистрами, один из которых служит для передачи данных и другой для приема. При считывании UDR обращение ведется к регистру приема данных, при записи обращение ведется к регистру передачи. Если выбран режим обмена 9-разрядными словами данных (установлен бит CHR9 регистра UCR), при пересылке данных в UDR бит RXB8 регистра UCR загружается в бит 9 сдвигового регистра передачи. Если после получения символа к регистру UDR не было обращения, начиная с последнего приема, в регистре UCR устанавливается флаг переполнения (OR). Это означает, что новые данные, пересылаемые в сдвиговый регистр не могут быть переданы в UDR и потеряны. Бит OR буферирован и доступен тогда, когда в UDR читается байт достоверных данных. Пользователю, для обнаружения переполнения, необходимо всегда проверять флаг OR после считывания содержимого регистра UDR.

При очищенном (сброшенном в логическое состояние 0) бите RXEN регистра UCR приемник запрещен. Это означает, что вывод PE0 может использоваться в качестве вывода I/O общего назначения. При установленном бите RXEN, приемник UART подключается к выводу PE0, который работает как вывод входа, вне зависимости от установки бита DDE0 в DDRE.

При установке UART вывода PE0 на работу в качестве входа, бит PORTE0 может использоваться для управления нагрузочным резистором вывода.

Регистр данных UART - UDR (адрес $0C ($2C)). В действительности регистр UDR является двумя физически разделенными регистрами - регистром передачи данных и регистром приема данных, использующими одни и те же адреса I/O. При записи в регистр запись производится в регистр передачи данных UART, при чтении происходит чтение содержимого регистра приема данных UART.







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.