Универсальный асинхронный приёмопередатчик

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Универсальный асинхронный приёмопередатчик (УАПП, англ. Universal Asynchronous Receiver-Transmitter (UART)) — узел вычислительных устройств, предназначенный для связи с другими цифровыми устройствами. Преобразует заданный набор данных в последовательный вид так, чтобы было возможно передать их по однопроводной цифровой линии другому аналогичному устройству. Метод преобразования хорошо стандартизован и широко применялся в компьютерной технике.

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

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

Метод передачи и приёма[править | править исходный текст]

Передача данных в UART осуществляется по одному биту в равные промежутки времени. Этот временной промежуток определяется заданной скоростью UART и для конкретного соединения указывается в бодах (что в данном случае соответствует битам в секунду). Существует общепринятый ряд стандартных скоростей: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 бод. Скорость (S, бод) и длительность бита (T, секунд) связаны соотношением T = 1/S. Скорость в бодах иногда называют сленговым словом битрейт.

Помимо собственно информационного потока UART автоматически вставляет в поток синхронизирующие метки, так называемые стартовый и стоповый биты. При приёме эти лишние биты удаляются из потока. Обычно стартовый и стоповый биты обрамляют один байт информации (8 бит), однако встречаются реализации UART, которые позволяют передавать по 5,6,7, 8 или 9 бит. Обрамленные стартом и стопом биты являются минимальной посылкой. Некоторые реализации UART позволяют вставлять два стоповых бита при передаче для уменьшения вероятности рассинхронизации приёмника и передатчика при плотном трафике. Приёмник игнорирует второй стоповый бит, воспринимая его как короткую паузу на линии.

Принято соглашение, что пассивным (в отсутствие потока данных) состоянием входа и выхода UART является логическая 1. Стартовый бит всегда логический 0, поэтому приёмник UART ждёт перепада из 1 в 0 и отсчитывает от него временной промежуток в половину длительности бита (середина передачи стартового бита). Если в этот момент на входе всё ещё 0, то запускается процесс приёма минимальной посылки. Для этого приёмник отсчитывает 9 битовых длительностей подряд (для 8-бит данных) и в каждый момент фиксирует состояние входа. Первые 8 значений являются принятыми данными, последнее значение проверочное (стоп-бит). Значение стоп-бита всегда 1, если реально принятое значение иное, UART фиксирует ошибку.

Для формирования временных интервалов передающий и приёмный UART имеют источник точного времени (тактирования). Точность этого источника должна быть такой, чтобы сумма погрешностей (приёмника и передатчика) установки временного интервала от начала стартового импульса до середины стопового импульса не превышала половины (а лучше хотя бы четверти) битового интервала. Для 8-бит посылки 0,5/9,5 = 5 % (в реальности не более 3 %). Поскольку эта сумма ошибок приёмника и передатчика плюс возможные искажения сигнала в линии, то рекомендуемый допуск на точность тактирования UART не более 1,5 %.

Поскольку синхронизирующие биты занимают часть битового потока, то результирующая пропускная способность UART не равна скорости соединения. Например, для 8-битных посылок формата 8-N-1 синхронизирующие биты занимают 20 % потока, что для физической скорости 115 200 бод даёт битовую скорость данных 92160 бит/с или 11 520 байт/с.


Puerto serie Rs232.png

Контроль чётности[править | править исходный текст]

Многие реализации UART имеют возможность автоматически контролировать целостность данных методом контроля битовой чётности. Когда эта функция включена, последний бит данных в минимальной посылке («бит чётности») контролируется логикой UART и содержит информацию о чётности количества единичных бит в этой минимальной посылке.

Короткая запись параметров[править | править исходный текст]

Был выработан и прижился короткий способ записи параметров UART, таких как количество бит данных, наличие и тип бита четности, количество стоп-бит. Выглядит как запись вида цифра-буква-цифра, где:

  • Первая цифра обозначает количество бит данных, например 8.
  • Буква обозначает наличие и тип бита четности. Встречаются N (No parity) — без бита четности; E (Even parity) — с битом проверки на четность, O (Odd parity) — с битом проверки на нечетность;
  • Последняя цифра обозначает длительность стоп-бита. Встречаются значения 1, 1.5 и 2 для длительности стоп-бита в 1, 1.5 и 2 битовых интервала соответственно.

Например, запись 8-N-1 обозначает что UART настроен на 8 бит данных без бита четности и один стоповый бит. Для полноты параметров эту запись снабжают указанием скорости UART, например 9600/8-N-1.

Break[править | править исходный текст]

Некоторые UART обладают возможностью посылать и принимать специальную посылку, называемую Break. Она состоит из непрерывного нулевого состояния линии длительностью заведомо больше минимальной посылки, обычно 1,5 минимальных посылки (для 8N1 это 15 битовых интервалов). Некоторые коммуникационные протоколы используют это свойство, например протокол LIN использует Break для обозначения нового кадра.

Управление потоком[править | править исходный текст]

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

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

Физический уровень[править | править исходный текст]

Логическая схема UART имеет входы-выходы с логическими уровнями, соответствующими полупроводниковой технологии схемы: КМОП, ТТЛ и т. д. Такой физический уровень может быть использован в пределах одного устройства, однако непригоден для коммутируемых длинных соединений по причине низкой защищённости от электрического разрушения и помехоустойчивости. Для таких случаев были разработаны специальные физические уровни, такие, как токовая петля, RS-232, RS-485, LIN и тому подобные.

Специфической разновидностью физического уровня асинхронного интерфейса является физический уровень IrDA.

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

Дуплекс[править | править исходный текст]

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

Сеть[править | править исходный текст]

Некоторые физические уровни позволяют связывать более двух UART по принципу «один говорит — несколько слушает». Такие физические уровни называют сетевыми. Существуют реализации типа общая шина (когда все приемопередатчики подключены к одному проводу) и кольцо (когда приемники и передатчики соединяют попарно в замкнутое кольцо). Первый вариант проще и встречается гораздо чаще. Второй вариант сложнее, но надежнее и быстрее: гарантируется работоспособность всех узлов (передающий узел услышит эхо своего сообщения только если оно успешно ретранслировано всеми узлами); любой узел может начинать передачу в любой момент не заботясь о риске коллизии.

Коммуникационные протоколы[править | править исходный текст]

Только в очень редких задачах допустимо слать через UART прямой поток данных. Как правило, необходимо указывать начало и конец блока данных; обеспечивать контроль целостности данных и выполнять восстановление потерянных элементов; управлять потоком данных для предотвращения перегрузки входного буфера и т. п. Для этих и многих других целей придумывают протоколы связи — соглашения о специальных наборах данных, которыми обмениваются обе вычислительные системы для успешного выполнения задачи по установлению связи и передаче основных данных. Алгоритмы протоколов зависят от задач которые поставлены перед системой и особенностей физического уровня UART. Алгоритм протокола обычно реализуются программно а не аппаратно.

Существует большое количество разнообразных протоколов связи, предназначенных для использования с UART. Наиболее известные:

  • MODBUS. Семейство протоколов типа «запрос-ответ», популярное в промышленной автоматике. Ориентированы на управление оборудованием короткими командами.
  • AT-команды телефонных модемов. Набор текстовых команд, позволяющих управлять работой модема при установлении соединения.
  • PPP — протокол широко использовался при подключениях к интернету через модем. Позволял выполнять аутентификацию пользователя у провайдера, шифровать данные и т. п.
  • IrDA — семейство протоколов для оптического беспроводного физического уровня.

Стандартизация[править | править исходный текст]

Идея асинхронной передачи данных появилась в те далёкие времена, когда о стандартизации ещё мало заботились и лучшее, что можно было ожидать от поставщиков разрозненных решений, так это открытой публикации алгоритмов работы своих изделий. Собственно, поэтому стандарта UART как такового нет, но логика работы UART описана как часть продукта во многих других стандартах: токовая петля, RS-232, ISO/IEC 7816 и т. п.

Ссылки[править | править исходный текст]

См. также[править | править исходный текст]