Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

UART - универсальный последовательный порт

Читайте также:
  1. В 1980-е годы наблюдается последовательный и стабильный подъем отрасли. К 1990 году количество коз в СССР достигает 7 миллионов.
  2. Вероятность ошибки на выходе преобразователя параллельного кода в последовательный код
  3. ОБЩЕНИЕ – ЭТО УНИВЕРСАЛЬНЫЙ РАСТВОРИТЕЛЬ. ОНО РАСТВОРЯЕТ ВСЁ.
  4. Они искали универсальный растворитель — философский Камень, надеясь с его помощью преобразовать обычные металлы в золото, а также до бесконечности продлить человеческую жизнь.
  5. Поддержание сотрудничества как универсальный способ предотвращения конфликтов
  6. Последовательный выбор исходящих ТПС

 

Универсальный асинхронно-синхронный приемопередатчик (USART) предназначен для последовательной связи микроконтроллера с другими или с персональным компьютером. Модуль USART обеспечивает полнодуплексный обмен данными (одновременно в обе стороны).

В модуле обеспечивается:

- преобразование параллельного формата байта данных при передаче в последовательный и обратного преобразования при приеме;

- синхронный и асинхронный режимы работы;

- контроль по четности;

- установку скорости передачи;

- установку различной разрядности данных;

- прерывания последовательного канала: “передача завершена”, “регистр данных передатчика пуст”, “прием завершен”.

В интерфейсе используются три разряда портов (рисунок 36): выход сигнала передачи TXD (PIND.1), вход сигнала приема RXD(PIND.0) и вывод импульсов тактовой частоты канала в синхронном режиме XCK(PINB.0). В асинхронном режиме данные передаются последовательно, начиная с младшего разряда через контакт TXD микроконтроллера, а принимаются через контакт RXD. В синхронном режиме работы биты передаются через вывод TXD, а через вывод ХСК передаются импульсы синхронизации. Принимаются данные через вывод RXD. Импульсы синхронизации могут передаваться либо от передатчика, либо от приемника, т.е. вывод ХСК является двунаправленным.

 

 

Рисунок 36

 

В асинхронном режиме работы передаче младшего (нулевого) бита предшествует посылка стартового бита, значение которого равно нулю. После передачи старшего бита данных (d7) передается стоповый бит, значение которого равно единице. Стартовый и стоповый биты необходимо для синхронного приема данных. Формат кадра приведен на рис.37.

 

Рисунок 37

Частоты синхронизации передатчика и приемника хотя и устанавливаются равными, но точно не равны, так как формируются разными устройствами. Из-за этого будут ошибки при приеме. Если частота приемника меньше частоты передатчика, то когда-нибудь будет пропущен один бит. Если частота преемника выше частоты передатчика, то когда-нибудь один бит будет принят два раза. При асинхронном способе такие ошибки будут отсутствовать, так как частоты синхронизации близки и ошибка за время передачи 8 разрядов не возникнет. Стоповый и стартовый биты изменят “подгонят” частоту приемника близкой к частоте передатчика.

В синхронном режиме каждый бит данных принимается в приемнике по фронту или срезу импульса синхронизации ХСК. Временные диаграммы сигналов в синхронном режиме приведены на рис.38.

 

 

Рисунок 38

Основным устройством последовательного канала является сдвиговый регистр. В передатчике в сдвиговом регистре производится преобразование параллельного кода данных в последовательный, а в сдвиговом регистре приемника производится обратное преобразование.

Аппаратно регистр представляет собой универсальный регистр. Подлежащие передаче данные загружаются в регистр параллельно, а затем регистр переключается в режим сдвига. В приемнике биты данных из канала связи накапливаются в сдвиговом регистре, при заполнении которого принятые данные считываются из регистра параллельно.

Структура приемопередатчика USART микроконтроллера приведена на рис. 39.

Модуль USART состоит из: блоков тактирования, передатчика и приемника.

Регистр данных передатчика UDR предназначен для хранения данных, подлежащих передаче. Сдвиговый регистр передатчика выполняет функции преобразования параллельного формата данных в последовательный. В асинхронном режиме работы сдвиг данных в регистре производится импульсами с контроллера скорости передачи. В синхронном режиме, если микроконтроллер является ведущим, сдвиг производится импульсами с контроллера скорости. Если микроконтроллер является ведомым, то сдвиг производится импульсами со входа ХСК, синхронизированными импульсами тактового генератора OSC.

В асинхронном режиме байт данных в регистре UDR обрамляется стартовым и стоповым битами. Бит контроля по четности включается в кадр из схемы формирователя бита четности.

В блоке приемника биты кадра поступают из линии через блок восстановления данных, в котором производится восстановление фронтов принятых импульсов, на вход данных сдвигового регистра приема. В асинхронном режиме работы USART, сдвиг битов данных в регистре сдвига производится импульсами от контроллера скорости передачи, согласованными по фазе с битами данных в блоке в блоке восстановления тактового сигнала. В синхронном режиме сдвиг производится импульсами со входа ХСК (ведомый), или от контроллера скорости (ведущий).

Принятое слово данных из регистра сдвига помещается в регистр данных прием UDR. Этот регистр состоит из двух регистров, соединенных цепочкой. Образуется так называемый двойной буфер.

Передача данных. Передача данных инициируется записью передаваемых данных в регистр UDR передатчика. Если сдвиговый регистр пуст, то из этого регистра данные пересы­лаются в сдвиговый регистр сразу. Если передача предыдущих данных не закончена (сдвиговый регистр не пуст), то загрузка сдвигового регистра из регистра данных будет произведена по окончании передачи предыдущих данных.

 

 

Рисунок 39

Если 10 (11)-разрядный сдвиговый регистр передатчика пуст, данные из регистра UDR передаются в сдвиговый регистр. При этом устанавли­вается бит UDRE (регистр данных пуст) регистра управления UСSRА. Это означает, что в регистр UDR может быть загружен следующий байт данных. Запись данных в регистр UDR очищает бит UDRE. Когда данные переданы из регистра UDR в сдвиговый регистр, к его коду вначале добавляется стартовый бит (состояние 0 - стартовый бит), а в конце - стоповый бит (состояние 1 - стоповый бит). Если в ре­гистре управления UCR установлен бит CHR9 (т.е. выбран режим 9-разрядного слова данных – с битом контроля), то бит ТхВ8 регистра UCR пересылается в бит 9 сдвигового регистра передатчика.

Сразу после пересылки данных в сдвиговый регистр импульсом синхросигнала стартовый бит выдвигается на вывод TxD. За ним следуют биты данных, младший бит первым. После выдвижения стопового бита сдвиговый регистр загружается новыми данными, если символ был запи­сан в регистр UDR во время передачи. В процессе загрузки бит UDRE находится в установленном состоянии. Если новые данные не будут за­гружены в UDR до выдачи стопового бита, флаг UDRE останется уста­новленным. В этом случае в регистре порта UART (UCSRA) уста­навливается флаг ТхС завершения передачи.

Установленный бит TxEN регистра UCSRB разрешает передачу. При очищенном бите TxEN вывод TXD может быть использован в качестве вывода общего назначения. При установленном бите TxEN передатчик UART подключается к выводу TXD и использует его как выход, независимо от установки бита направления передачи DDRD.1 в регистре DDRD.

Прием данных. Работа приемника разрешается установкой разряда разрешения приема RXEN регистра UCSRB. При установке этого разряда вход приемника подключается к выводу RXD микроконтроллера независимо от значения разряда установки направления регистра DDRD. Если установлен синхронный режим работы, то также переопределяется функционирование вывода ХСК.

Приемник проверяет состояние линии RxD с частотой в 16 раз большей, чем частота передачи, т.е. за время одного бита проводится 16 выборок. Если передача не ведется, то в линии установлен единичный уровень. При пассивном состоянии линии перепад 1— 0 воспринимается как начало стартового бита и запус­кается последовательность его проверок. Вслед за переходом 1- 0 на вы­борках 8, 9 и 10 приемник вновь проверяет линию RxD на изменение ло­гического состояния. Если две или три из этих трех выборок равны логической 1, то стартовый бит отвергается как шумовой всплеск и при­емник начинает выявлять и анализировать следующие переходы из 1 в 0.

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

При поступлении стопового бита необходимо, чтобы не менее двух выборок из трех показали уровень 1. Если две или более выборок покажут состояние 0, то при пересылке принятого байта в регистр UDR, в регистре управления UСSRА устанавливается бит ошибки кадра FE. Пользователь перед чтением регистра UDR должен проверять состояние бита FE. Флаг FE очищается при чтении содержимого регистра данных UDR. Вне зависимости от того, принят правильный стоповый бит или нет, данные пересылаются в регистр UDR и устанавливается флаг завершения приема RxC в регистре статуса UСSRА.

Регистр UDR фактически объединяет два физически от­дельных регистра: передатчика и приемника. При чтении регистра UDR читается регистр приемника, а при записи обращение осуществляется к регистру передатчика. Если выбран режим обмена 9-разрядными словами данных (установлен бит CHR9 регистра UCSRB), то при пересылке данных в регистр UDR бит RxB8 регистра UCSRB загружается в бит 9 сдвигового регистра передачи. Если после получения символа к регистру UDR не было обращения, начиная с последнего приема, в регистре UCSRA устанав­ливается флаг переполнения OR. Это означает, что данные, принятые в сдвиговый регистр, потеряны. Бит OR доступен тогда, кода из регистра UDR прочи­тан байт данных. Пользователю, для обнаружения потери данных, необ­ходимо всегда проверять флаг OR после чтения регистра UDR.

При очищенном бите RxEN регистра UCSRB прием запрещен и вывод RXC может использоваться в качестве вывода общего назначения.

 

 

Регистр данных UART – UDR

                   
  MSB             LSB
                 

 

Рисунок 40

 

В действительности регистр UDR представляет собой сдвоенный регистр данных - регистр передатчика и регистр приемника используют один и то же адрес. При записи в регистр обращение производится к ре­гистру передатчика, а при чтении - к регистру приемника.

Регистр статуса UART – UCSRA

                 
  RxC TxC UDRE FE OR PE U2X MPCM
                 

 

Рисунок 41

 

UCSRA.7 - RxC: Прием завершен. Этот бит устанавливается при пересылке принятого символа из сдвигового регистра приемника в регистр UDR,,Бит устанавливается вне зависимости от отсутствия или наличия ошибки приема кадра. При установленном в регистре UCR бите RxCIE и установленном бите RxC выполняется прерывание по завершению приема UART. Бит RxC очищается при чтении регистра UDR. При приеме дан­ных по прерыванию, процедура обработки прочитать UDR для очистки бита RxC, иначе после ее завершения произойдет новое прерывание.

UCSRA.6 - ТхС: Передача завершена. Этот бит устанавливается, когда весь кадр (включая стоповый бит) выведен из сдвигового регистра пере­датчика, а в регистр UDR не записаны новые данные. Этот флаг исполь­зуется при полудуплексном протоколе обмена, когда нужно освободить коммуникационную линию сразу после завершения передачи.

При установленном в регистре UCR бите TxCIE установка ТхС приведет к выполнению прерывания по завершению передачи UART. Флаг ТхС очищается аппаратно при переходе по соответствующему вектору прерывания. Очистить бит ТхС можно записью в бит логической «1».

UCSRA.5 - UDRE: Регистр данных пуст. Этот бит устанавливается, когда весь символ, записанный в UDR, пересылается в сдвиговый регистр передатчика. Установка этого бита означает, что передатчик готов к получению нового символа.

Если бит UDRIE в UCR установлен, при установленном бите UDRE существует запрос прерывания по завершению передачи UART. Бит UDRE очищается при записи в регистр UDR. При приеме данных по прерыванию, процедура обработки прерывания должна прочитать регистр UDR, чтобы очистить бит UDRE, иначе после завершения процедуры произойдет новое прерывание.

UCSRA.4 - FE: Ошибка кадра. Этот бит устанавливается, если при приеме стопового бита обнаружено состояние 0. Бит FE очищается при приеме стопового бита с логическим уровнем 1.

UCSRA.3 - OR: Флаг переполнения. Устанавливается в 1, если заполнен два регистра данных приемника, заполнен сдвиговый регистр приема и обнаружен старт-бит на входе RXD.

UCSRA.2 – РЕ: Флаг ошибки контроля четности. Устанавливается в 1, если в данных буфера приема выявлена ошибка четности.

UCSRA.1 – U2X: Удвоение скорости обмена. Если разряд установлен, то коэффициент деления предделителя контроллера скорости уменьшается с 16 до 8; тем самым увеличивается скорость обмена в асинхронном режиме.

UCSRA.0 – МРСМ: Установка режима мультипроцессорного обмена.

 

 

Регистр управления UART – UCSRB

                   
  RxCIE TxCIE UDRIE FxEN TxEN CHR9 RxB8 TxB8
                 

 

Рисунок 42

UCSRB.7 - RxCIE: Разрешение прерывания по завершению приема. При установленном (=1) бите RxCIE и общем разрешении прерываний установка бита RxC приведет к прерыванию по заверше­нию приема.

UCSRB.6 - TxCIE: Разрешение прерывания по завершению передачи. При установленном бите TxCIE и общем разрешении всех прерываний установка бита ТхС приведет к прерыванию по заверше­нию передачи.

UCSRB.5 - UDRIE: Разрешение прерывания по пустому регистру данных. При установленном бите UDRIE и общем разрешении прерываний установка бита UDRE приведет к прерыванию регистр данных UART пуст.

UCSRB.4 - RxEN: Разрешение приемника. Установка в единицу подключает вход приемника к разряду PD0(RXD) и настраивает этот разряд порта на вход.

UCSRB.3 - ТxEN: Разрешение передатчика. Установка в единицу подключает выход передатчика к разряду PD1(TXD) и настраивает этот разряд порта на вывод.

UCSRB.2 - CHR9: Формат кадра. Используется для задания размера кадра. Используется совместно с разрядами UCSZ1 и UCSZ регистра UCSRC.

UCSRB. 1 - RxB8: 8-разряд принимаемых данных. При установленном бите CHR9 бит RxB8 является девятым битом данных принятого кадра.

UCSRB.0 - ТхВ8: 8-разряд передаваемых данных. При установленном бите CHR9 бит ТхВ8 является девятым битом данных передаваемого кадра.

 

Регистр управления UART – UCSRС

                   
  URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
                 
                     

 

Рисунок 43

UCSRC.7 – URSEL: разряд определяет в какой регистр производится запись. Если разряд установлен, то запись в регистр UCSRC, иначе запись в регистр установки скорости передачи UBRRH. Регистры UCSRC и UBRRH имеют одинаковый адрес и идентификация регистра производится этим разрядом.

UCSRC.6 – UMSEL: режим работы блока. Если разряд сброшен, то асинхронный режим, если установлен – синхронный.

UCSRC.5 и UCSRC.4 - UPM1 и UPM1: биты управления контролем четности 0 0 – контроль выключен

1 0 – проверка на четность

1 1 - проверка на нечетность.

UCSRC.3 – USBS: количество стоповых битов, если USBS =0, то один стоп-бит, если USBS =1, то два стоповых бита.

UCSRC.2 и UCSRC.1 - UCSZ1 и UCSZ0: Совместно с битом UCSZ2 регистра UCSRB определяют количество битов данных в кадре.

UCSRC.0 – UCPOL: В асинхронном режиме должен быть сброшен. В синхронном режиме разряд определяет момент выдачи и считывания бита на выводах модуля USART. Если равен нулю, то выдача данных на вывод TXD производится срезом импульса ХСК, а считывание бита с вывода RXD производится фронтом импульса ХСК. Если разряд равен единице, то наоборот.

 

Таблица 28 Размер кадра данных

UCSZ2 UCSZ1 UCSZ0 Размер данных
      5 разрядов
      6 разрядов
      7 разрядов
      8 разрядов
      -
      -
      -
      9 разрядов

 

 

Скорость передачи задается контроллером скорости передачи, который представляет собой программируемый делитель частоты. Коэффициент деления задается содержимым регистра контроллера UBRR. Этот регистр фактически состоит из двух: старшего UBRRH – 4 разряда и младшего UBRRL – 8 разрядов. В асинхронном режиме скорость передачи определяется также значением разряда U2X регистра UCSRA, если этот разряд установлен, то скорость передачи в два раза выше.

Скорость передачи в асинхронном режиме приU2X=0:

BAUD = FСK/16(UBRR+1).

Скорость передачи в асинхронном режиме приU2X=1:

BAUD = FСK/8(UBRR+1).

Скорость передачи в синхронном режиме для ведущего:

BAUD = FСK/2(UBRR+1)

 

где: baud - частота в бодах;

fck - частота процессора;

UBRR = содержимое регистра UBRR (0 - 4095).

Необходимо заметить, что стандартные значения скоростей передачи для всего ряда (2400,4800, 9600,19200,38400 и т.д) могут быть получены только при нескольких значениях частоты тактового генератора и определенных значениях коэффициента деления. Ряд этих значений: 1,8432 мГц; 3,6864 мГц, 7,3728 мГц. Для любых других значениях тактовой частоты при любых значения коэффициента деления, полученные в контроллере значения скорости передачи отличаются от стандартных.


Дата добавления: 2015-07-20; просмотров: 317 | Нарушение авторских прав


Читайте в этой же книге: Методы адресации. Форматы команд | Система команд | Команды передачи данных (пересылки) | Команды передачи управления | Команды сдвигов и операций с битами | Встроенные устройства | Подсистема прерываний микроконтроллера | Общие сведения | Режимы быстрой ШИМ №№5,6,7,14,15. | Режимы Точной фазы №№ 1,2,3,10,11. |
<== предыдущая страница | следующая страница ==>
Последовательный периферийный интерфейс - SPI| Аналоговый компаратор

mybiblioteka.su - 2015-2024 год. (0.016 сек.)