Что такое стоповые биты

универсальный асинхронный приёмопередатчик — universalusis asinchroninis imtuvas siųstuvas statusas T sritis radioelektronika atitikmenys: angl. universal asynchronous receiver/transmitter vok. universeller asynchroner Empfänger/Sender, m rus. универсальный асинхронный приёмопередатчик, m… … Radioelektronikos terminų žodynas

универсальный синхронно-асинхронный приёмопередатчик — universalusis sinchroninis asinchroninis imtuvas siųstuvas statusas T sritis radioelektronika atitikmenys: angl. universal synchronous/asynchronous receiver/transmitter vok. universeller synchroner/asynchroner Empfänger/Sender, m rus.… … Radioelektronikos terminų žodynas

UART — Универсальный асинхронный приёмопередатчик (УАПП, UART, Universal Asynchronous Receiver/Transmitter) вид приёмопередатчика, устройства, которое переводит данные из последовательной в параллельную форму (и обратно). Обычно используется вместе со … Википедия

УАПП — Универсальный асинхронный приёмопередатчик (УАПП, UART, Universal Asynchronous Receiver/Transmitter) вид приёмопередатчика, устройства, которое переводит данные из последовательной в параллельную форму (и обратно). Обычно используется вместе со … Википедия

УАПП — универсальный асинхронный приёмопередатчик устройство автоматического повторного пуска … Словарь сокращений русского языка

КР1816ВЕ51 — Intel P8051 Intel 8051 это однокристальный микроконтроллер (не путать с процессором) гарвардской архитектуры, который был впервые произведен 1980 году, для использования во встраиваемых системах. В течение 1980 ых и начале 1990 ых годов был… … Википедия

Intel 8051 — Intel P8051 Intel 8051 это однокристальный микроконтроллер (не путать с процессором) гарвардской архитектуры, который был впервые произведен Intel в 1980 году … Википедия

16550 UART — Микросхема NS16550AFN 16550 UART (англ. universal asynchronous receiver/transmitter) это интегральная микросхема … Википедия

8250 UART — Микросхема NS 8250B 8250 UART (англ. universal asynchronous receiver/transmitter) это интегральная микросхема для организа … Википедия

récepteur/transmetteur asynchrone universel — universalusis asinchroninis imtuvas siųstuvas statusas T sritis radioelektronika atitikmenys: angl. universal asynchronous receiver/transmitter vok. universeller asynchroner Empfänger/Sender, m rus. универсальный асинхронный приёмопередатчик, m… … Radioelektronikos terminų žodynas

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

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

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

Содержание

Метод передачи и приёма [ править | править код ]

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

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

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

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

Читайте также:  Резцы канавочные для наружных канавок гост

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

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

данные количество единичных бит бит четности
even odd
0000000 1
1010001 3 1
1101001 4 1
1111111 7 1

Многие реализации UART имеют возможность автоматически контролировать целостность данных методом контроля битовой чётности. Когда эта функция включена, последний бит данных в минимальной посылке («бит чётности») контролируется логикой UART и содержит информацию о чётности количества единичных бит в этой минимальной посылке. Различают контроль на четность (англ. Even parity ), когда сумма количества единичных бит в посылке является четным числом, и контроль на нечетность (англ. Odd parity ), когда эта сумма нечетна. При приеме такой посылки 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 приостанавливал передачу.

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

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

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

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

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

Драйвер физического уровня [ править | править код ]

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

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

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

Сеть [ править | править код ]

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

Читайте также:  Поплавковый клапан подачи воды

Поддержка UART в массовых операционных системах [ править | править код ]

Широкое распространение UART в цифровой технике предопределило встраивание поддержки этого интерфейса в API многих операционных систем. Как правило, этот интерфейс фигурирует в документации ОС как COM-порт или последовательный порт.

Microsoft Windows [ править | править код ]

Имеется викиучебник по теме «Программирование COM-порта в Windows»

С последовательными портами в Win32 работают, как с файлами. Для открытия порта используется функция CreateFile. Портов может быть много, поэтому они обозначаются как COM1, COM2 и т. д. по порядку обнаружения драйверов соответствующих устройств. Первые 9 портов доступны в том числе как именованные каналы для передачи данных (доступны по именам «COM1», «COM2», …), такой метод доступа считается устаревшим. Рекомендуется ко всем портам обращаться как к файлам (по именам «\.COM1», «\.COM2»,… «\.COMx»).

Поиск PnP-имен устройств в системе осуществляется вызовом SetupDiGetClassDevs. В реестре существует раздел HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM, в котором отображаются имеющиеся в данный момент COM-порты.

Для каждого порта в реестре имеется раздел. Эти разделы имеют такие имена:

где последнее значение «Serial10000» — уникальный номер для каждого нового добавленного в систему COM-порта, для второго — «Serial10001» и т. д.

UNIX [ править | править код ]

COM-порты в операционной системе Unix (Linux) — это файлы символьных устройств. Обычно эти файлы располагаются в каталоге /dev и называются

Для программного доступа к СОМ-порту необходимо открыть на чтение/запись соответствующий файл и сделать вызовы специальных функций tcgetattr (для того, чтобы узнать текущие настройки) и tcsetattr (чтобы установить новые настройки). Также может потребоваться сделать вызовы ioctl с определенными параметрами. После этого при записи в файл данные будут отправляться через порт, а при чтении программа будет получать уже принятые данные из буфера СОМ-порта.

Устройства с именами «ttyxx» используются как серверные, то есть приложение, открывшее данное устройство, обычно ожидает входящего звонка от модема. Классическим таким приложением, используемым по умолчанию, является getty, которая ожидает входящего звонка, далее настраивает COM-порт в соответствии с файлами конфигурации, выводит туда "login: ", принимает имя пользователя и запускает как потомка команду «login ИмяПользователя», со стандартным вводом и выводом, перенаправленными в COM-порт. Эта команда, в свою очередь, запрашивает и проверяет пароль, и в случае успеха запускает (не как потомка, а вместо себя вызовом execve в том же процессе) default user shell, прописанный в файле /etc/passwd.

Эта технология исторически возникла в 1970-е годы, когда под ОС UNIX использовались компьютеры вроде PDP-11 (в СССР серия называлась СМ ЭВМ) или VAX, допускающие подключение многих терминалов для работы многих пользователей. Терминалы — а значит, и весь интерфейс пользователя — при этом подключались через последовательные порты, с возможностью подключения вместо терминала модема и дальнейшего дозвона на компьютер по телефону. До сих пор в UNIX-подобных ОС существует терминальный стек, и обычно 3 реализации терминалов — последовательный порт, консоль текстового режима экрана+клавиатура, и «обратная петля» в один из открытых файлов управляющего приложения (так реализованы telnetd, sshd и xterm).

Клиентские устройства последовательного порта, предназначенные для совершения звонков вовне, во многих UNIX (не во всех) называются cuaxx.

Так как последовательный порт в UNIX доступен только через терминальный стек, он может быть управляющим терминалом для процессов и групп (посылать SIGHUP при разрыве связи от модема и SIGINT при нажатии Ctrl-C), на уровне ядра поддерживать редактирование последней введенной строки клавишами стрелочек, и т. д. Для отключения этой возможности с целью превращения устройства в «трубу» для потока байт необходимы вызовы ioctl.

OS/2 [ править | править код ]

Имеющийся драйвер COM.SYS поддерживает только 4 COM-порта, каждый из которых должен иметь свою линию прерываний. Для обслуживания COM-портов с общей линией прерывания необходимо воспользоваться драйвером SIO [2] .

Android [ править | править код ]

Так как Android работает на ядре Linux, то и работа с COM-портами в Android в принципе аналогична работе в Linux, но надо учесть, что для работы в Android нужны root-права.

Виртуальные порты [ править | править код ]

В настоящее время физические интерфейсы на основе UART практически исчезли из бытовой цифровой техники. Однако удобство пользования и обилие программного обеспечения, использовавшего доступ к внешним устройствам через COM-порт, вынудило разработчиков подключаемых к компьютерам устройств создавать драйвера виртуальных COM-портов (VCP — virtual COM port). То есть COM-портов, для которых не существует соответствующего аппаратного UART.

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

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

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

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

Стандартизация [ править | править код ]

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

Передача данных производится посылками. Каждая посылка состоит из бит данных, бит синхронизации (старт- и стоп-биты) и опционального бита паритета для проверки ошибок. Обратите внимание, что сказанное не распространяется на работу в режиме SPI (см. раздел 21.4.2 "SPI-совместимые форматы посылок").

Допустимы следующие форматы посылок USART (всего 30 комбинаций):

  • 1 старт-бит
  • 5, 6, 7, 8 или 9 бит данных
  • бит паритета (четность или нечетность) или передача без бита паритета
  • 1 или 2 стоп-бита

Посылка всегда начинается со старт-бита, вслед за которым передается младший бит данных и все остальные биты данных вплоть до старшего бита. Если разрешена передача бита паритета, то он вставляется между передачей бит данных и первым стоп-битом. Сразу по завершении передачи посылки может быть передан старт-бит и новая посылка. Если дальнейшая передача не требуется, линия остается в состоянии IDLE (высокий уровень). Возможные комбинации форматов посылки проиллюстрированы на рисунке 21.5. Биты, показанные в квадратных скобках, являются опциональными.


Рисунок 21.5. Форматы посылок

St Старт-бит, всегда имеет низкий уровень.
(n) Биты данных (0…8).
P Бит паритета. Может быть четным или нечетным.
Sp Стоп-бит, всегда имеет высокий уровень.
IDLE Состояние линий RxD и TxD, когда по ним не выполняется передача.
Линия в состоянии IDLE всегда имеет высокий уровень.

21.4.1. Вычисление бита паритета

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

21.4.2. SPI-совместимые форматы посылок

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

  • 8-бит данных с передачей первым старшего бита
  • 8-бит данных с передачей первым младшего бита

По завершении передачи посылки из 8 бит, можно сразу передать новую посылку. В противном случае, линия передачи данных переходит в состояние IDLE (высокий уровень).

21.5. Инициализация USART

Инициализация USART выполняется по следующей последовательности:

  1. Установка высокого уровня на выводе TxD и опционально низкого уровня на выводе XCK.
  2. Настройка TxD и опционально XCK на вывод
  3. Настройка скорости и формата посылки.
  4. Задание режима работы (при выборе синхронного режима разрешается работа выхода XCK).
  5. Разрешение работы передатчика и/или приемника в зависимости от необходимости.

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

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

21.6. Отправка данных передатчиком USART

После разрешения работы передатчика, нормальная работа порта на выводе TxD перекрывается сигналом с выхода передатчика модуля USART. Дополнительно, в регистре направления вывод TxD должен быть настроен как выход. Подробности по управлению портом см. разделе 13 "Порты ввода-вывода".

21.6.1. Отправка посылок

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

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

Запись в регистр передаваемых данных (DATA) возможна только, когда установлен флаг опустошения регистра данных (DREIF). Это сигнализирует о том, что регистр свободен и готов для записи новых данных.

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

21.6.2. Отключение передатчика

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

Ссылка на основную публикацию
Adblock detector