Читайте также:
|
|
Для лучшего понимания настроек подсистемы последовательного интерфейса далее описаны основные принципы асинхронной последовательной передачи данных, используемые в интерфейсе UART.
Исходно, интерфейс RS232C предназначался для двунаправленного соединения двух абонентов в соответствии со структурой, изображенной на рис.
Каждый абонент содержит два устройства: передатчик и приемник. На рисунке использованы общепринятые обозначения: Tx (от англ. Transmitter) – для выхода передатчика и Rx (от англ. Receiver) – для входа приемника. Для передачи данных в двух направлениях спецификация RS232-C предусматривает использование двух однонаправленных линий.
Передатчик и приёмник одного абонента способны работать независимо один от другого. Это означает, что при работе передатчика Tx1 происходят изменения сигнала на входе Rx2 другого абонента, которые активируют приемник Rx2. В это же время пара связанных устройств Rx2Tx2 может как работать, так и находиться в покое.
Данные по каждой из линий передаются последовательно, бит за битом, причем время передачи каждого бита (и обратная величина ‑ частота следования интервалов постоянства сигнала Baudrate [1]) определяется настройкой тактового генератора передатчика.
Функциональная схема управляемого генератора частоты тактирования асинхронного последовательного интерфейса изображена на рис.??? (см. ниже). Генератор содержит вычитающий счетчик с автоперезагрузкой (см. аналогию в описании таймерных каналов). Частота переполнения счетчика, определяемая входной частотой счетчика и константой автоперезагрузки DL (делителем), равна
Fвх/(Делитель)
и обычно в 16 раз больше частоты следования битовых интервалов. DL должен быть заранее программно записан в регистр автоперзагрузки Divisor Latch (от этого словосочетания и образовалось широко используемое обозначение 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 в персональных компьютерах IBM PC для задания частоты следования битовых интервалов была выбрана частота задающего генератора 1843200 Гц, а структура формирователя битовой частоты соответствовала только что описанной. При величине DL=1, частота следования битовых интервалов в стандартном COM-порте ПК равна (1843200/16)/1=115200 бит/с. Задавая делитель отличным от 1, можно получить более низкие скорости передачи. Отдельные скорости приняты как стандартные: 4800, 9600, 19200, 115200 и ряд других.
В микроконтроллере ADuC70xx, как и в COM-порте стандартного персонального компьютера, возможно задать лишь один набор параметров, который относится одновременно и к приемнику и к передатчику одного абонента, независимые и различные установки параметров для приема и передачи невозможны.
Дата добавления: 2015-09-10; просмотров: 99 | Поможем написать вашу работу | Нарушение авторских прав |