Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ADuC70xx_K02.docx
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
1.68 Mб
Скачать

Последовательный интерфейс uart

Интерфейс UART – это полнодуплексный универсальный асинхронный приемопередатчик, полностью совместимый с подмножеством стандартапоследовательного обменаRS232C, реализованным в микросхемах 16450. Интерфейс UART производит преобразование из последовательной в параллельную форму данных, принятых от периферийного устройства или из модема, и преобразование из параллельной в последовательную форму данных, поступивших от процессора.

Временная диаграмма последовательной передачи в соответствии со спецификацией RS232C, имеет следующий вид.

Структурная схема передатчика и приёмника

В дополнение к возможностям спецификации 16450, интерфейс UART вADuC70xx содержит так называемый «дробный» делитель частоты для задания точных значенийчастоты следования битовых интервалов, а также имеет режим сетевой адресации, позволяющий организовать на базе UARTлокальную сеть с несколькими абонентами. Интерфейс UART задействует до 8 выводов микроконтроллеров ADuC7019-ADuC7028 (см. табл. выше).

Набор линий интерфейса и протокол канального уровня

Для лучшего понимания настроек подсистемы последовательного интерфейса далее описаны основные принципы асинхронной последовательной передачи данных, используемые в интерфейсе UART.

Исходно, интерфейс RS232Cпредназначался для двунаправленного соединения двух абонентов в соответствии со структурой, изображенной на рис.

Каждый абонент содержит два устройства: передатчик и приемник. На рисунке использованы общепринятые обозначения: Tx(от англ. Transmitter) – для выхода передатчика и Rx (от англ. Receiver) – для входа приемника. Для передачи данных в двух направлениях спецификация RS232-C предусматривает использование двух однонаправленных линий.

Передатчик и приёмник одного абонента способны работать независимо один от другого. Это означает, что при работе передатчика Tx1 происходят изменения сигнала на входе Rx2 другого абонента, которые активируют приемник Rx2. В это же время пара связанных устройств Rx2Tx2 может как работать, так и находиться в покое.

Данные по каждой из линий передаются последовательно, бит за битом, причем время передачи каждого бита ( и обратная величина ‑частота следования интервалов постоянства сигналаBaudrate1) определяется настройкой тактового генератора передатчика.

Функциональная схема управляемого генератора частоты тактирования асинхронного последовательного интерфейса изображена на рис.??? (см. ниже). Генератор содержит вычитающий счетчик с автоперезагрузкой (см. ??? раздел ??? описание таймерных каналов). Частота переполнения счетчика, определяемая входной частотой счетчика и константой автоперезагрузкиDL (делителем),равна

Fвх/(Делитель)

и обычно в 16 раз больше частоты следования битовых интервалов. DL должен быть заранее программно записан в регистр автоперзагрузкиDivisorLatch(от этого словосочетания и образовалось широко используемое обозначение DL.

Частота следования битовых интервалов (Baudrate) выражается формулой

Baud = (Fвх/16)/(Делитель)

Эта формула используется для определения величины делителя по требуемому Baud.

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

Подобная структура тактирования должна быть реализована во втором из двух абонентов, связанных асинхронным интерфейсом. Заметим, что при организации связи двух абонентов А1 и А2 в передатчике А1 и в приемнике А2 могут использоваться различные значения Fвх, и различные разрядностиnавтоперезагружаемого счетчика. Должно лишь соблюдаться требование, чтобы можно было подобрать на приемнике и на передатчике такие (м.б. различные, с учетом различных Fвх и n) значения делителей, чтобы битовые частоты передатчика Tx1 одного абонента и приемникаRx2 другого абонента различались заметно меньше, чем на половину длины интервала постоянства сигнала. В наихудшем случае это требует относительной нестабильности задающих генераторов на передатчике и на приёмнике, меньшей, чем 4%.

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

Фазирование осуществляется следующим образом. Передача в соответствии со спецификацией RS232C происходит пакетами (кадрами, фреймами) небольшой длины. Перед началом пакета сигнал в линии соответсвует логической 1. В начале пакета всегда должен присутствовать стартовый бит со значением 0. Начало стартового бита в передатчике совпадает с состоянием 0000 его СД16. Схемотехника приемника выявляет наличие в линии перепада 10, соответствующего началу стартового бита, и по этому событию формирует сигнал сброса своего СД16, в результате чего его состояние также становится равным 0000, т.е. состояния СД16 в передатчике и приемнике оказываются синхронизированными. Это позволяет приемнику определять моменты времени, которые наиболее удалены от границ битового интервала, и в которые наиболее безопасно выполнять считывание значения передаваемого бита.

В значительной части реализаций приемников UART считывание выполняется трижды, при состояниях 7, 8 и 9 (0111, 1000 и 1101) в счетчике СД16. Решение о значении считанного бита производится «по большинству голосов». Такая организация позволяет не только повысить достоверность считывания бита, передаваемого по «зашумленной» линии но и выявить факт наличия шума (если «голосование» оказывается не единогласным).

Спецификация RS232Cпредусматривает после стартового бита наличие от 5 до 8 информационных битов (их количество может быть установлено программно), затем необязательный контрольный бит, а в конце пакета – стоповый интервал, в котором значение сигнала должно быть равно логической 1 (т.е. как перед началом стартового бита). Длительность стопового интервала программист может выбрать равным 1, либо 1.5 (только для формата с 5-ю информационными битами), либо 2-м битовым интервалам. Таким образом, длина пакета может составлять от 7 до 12 битовых интервалов.

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

В реализациях интерфейса RS232C в персональных компьютерах IBMPC для задания частоты следования битовых интервалов была выбрана частота задающего генератора 1843200 Гц, а структура формирователя битовой частоты соответствовала только что описанной. При величине DL=1, частота следования битовых интервалов в стандартном COM-порте ПК равна (1843200/16)/1=115200 бит/с. Задавая делитель отличным от 1, можно получить более низкие скорости передачи. Отдельные скорости приняты как стандартные: 4800, 9600, 19200, 115200 и ряд других.

В некоторых реализациях последовательного асинхронного интерфейса возможно производить перечисленные настройки независимо и по-разному для находящихся в одном абоненте передатчика и приемника. Это позволяет вести передачу в разных направлениях с различными скоростями и в разных форматах.Где-то я такое встречал, но где, не помню. В i386EX сделано, как в станд.PC.

В микроконтроллере ADuC70xx, как и в COM-порте стандартного персонального компьютера, возможно задать лишь один набор параметров, который относится одновременно и к приемнику и к передатчику одного абонента, независимые и различные установки параметров для приема и передачи невозможны.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]