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




UART

Выполнил: студент 3го курса
Омаров М.Ш.

Принял:ст.п. Семиляк А.И.

 

Махачкала 2015г.

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

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

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

Метод передачи и приёма

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

Помимо собственно информационного потока, 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 байт/с.


Контроль чётности

 

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

 

Управление потоком

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

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

Сеть

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

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

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

MicrosoftWindows

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

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

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000,

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: