UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приёмопередатчик, интерфейс для связи цифровых устройств, предназначенный для передачи данных в последовательной форме.
USART (Universal Synchronous-Asynchronous Receiver/Transmitter) — универсальный синхронно-асинхронный приёмопередатчик — аналогичный UART интерфейс, но дополнительно к возможностям UART, поддерживает режим синхронной передачи данных — с использованием дополнительной линии тактового сигнала.
UART и USART: введение
Интерфейсы UART/USART, несмотря на их солидный возраст, до сих пор находят широкое применение, очень распространены и весьма востребованы. Имеют аппаратную реализацию во многих микроконтроллерах. Например, микроконтроллеры STM32 из семейства STM32F100xx, в зависимости от варианта исполнения, содержат 2 или 3 USART. Синхронная передача используется гораздо реже асинхронной и обычно USART используется в режиме UART.
UART может применяться как для осуществления взаимодействия компонентов внутри одного устройства, так и для подключения устройств между собой. Для внешних подключений сигналы с уровнями логики ТТЛ или КМОП подходят мало из-за низкой помехоустойчивости. Распространённым стандартом физического уровня для UART, который подходит для подключения внешних устройств является RS-232. Этому стандарту, в частности, соответствует последовательный порт (COM-порт) компьютера. Так что, микроконтроллер с помощью схемы преобразования уровней может обмениваться информацией с COM-портом компьютера, но об этом чуть позже.
Варианты подключения UART
В UART передача данных происходит в последовательной форме, т.е. по одному биту. Поэтому для передачи в одном направлении требуется один проводник; для полнодуплексной двунаправленной связи потребуется два проводника.
Выход обозначают TD или TX (transmitted data), вход — RD или RX (received data). Для подключения двух устройств выход одного подключают ко входу другого и вход первого — к выходу второго.
Рис. %img:uc1
Возможен вариант использования UART для полудуплексной двунаправленной связи по одному проводу. В этом случае выводы TX и RX каждого устройства соединяют вместе. Всё время, пока устройства не передаёт данных, оно держит выход в отключённом состоянии (переводит в Z-состояние, состояние с высоким сопротивлением; можно использовать режим работы с открытым стоком — во время паузы в передаче на выходе UART формируется лог. 1, что равносильно переходу в Z-состояние). Устройство может иметь аппаратную поддержку полудуплексного обмена данными, тогда требуется лишь выбрать нужный режим работы. Если аппаратной поддержки нет, полудуплексный режим легко реализуется программно. Для этого нужно отключать передатчик, когда устройство не передаёт данных, чтобы освободить линию для осуществления передачи другими устройствами и отключать приёмник во время работы своего передатчика, чтобы не принимать собственную передачу (либо программно отбрасывать данные, передаваемые своим передатчиком).
Видео:Урок 7. Fermi. UART - последовательный интерфейс передачи данных.Скачать
К однопроводной линии можно подключить несколько устройств, которые будут образовывать сеть для передачи данных. Арбитраж в этой сети должен быть реализован программно.
Как видим, объединять устройства с помощью UART очень просто. Для двунаправленного подключения требуются только три проводника (с учётом общего провода), а для однонаправленного или двунаправленного полудуплексного — всего два.
Формат передачи данных UART
В отсутствии передачи на выходе UART присутствует уровень лог. 1.
Данные передаются в виде посылок (фреймов), каждая из которых состоит из стартового бита, битов данных и одного или нескольких стоп-битов. Длительность всех битов одинакова, связана со скоростью передачи соотношением T=1/S. Существует ряд стандартных скоростей передачи: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 бод. Если внутри одного устройства связь можно осуществлять на произвольной скорости, то для связи с внешними устройствами следует придерживаться стандартных величин.
Посылка начинается со стартового бита, он всегда имеет значение лог. 0. После стартового бита передаются биты данных. Количество битов данных может составлять 5-9 в зависимости от настроек UART. Обычно передаётся 8 бит данных или 9 бит (8 бит собственно данных и один бит чётности). Завершается посылка стоп-битами, их значение — всегда лог. 1, количество обычно составляет 1, 1.5 или 2. Под количеством стоп-битов понимается длительность соответствующего им единичного импульса по отношению к длительности битов данных и старт-бита. Этим объясняется возможность выражать количество битов дробным числом. Сразу же после стоп-битов может начинаться передача следующей посылки или может быть пауза произвольной длительности, во время которой на выходе также формируется уровень лог. 1.
Так как во время передачи стоп-бита и пока линя свободна, на выходе присутствует единичное значение, а старт-бит имеет значение лог. 0, старт-бит позволяет выявить момент начала передачи данных, разделить две последовательные посылки и осуществить синхронизацию передатчика и приёмника.
Если передатчик и приёмник работают на одной скорости, настроены на работу с одинаковым количеством битов данных, стоп битов, одинаково сконфигурированы в отношении бита чётности, то для обмена данными не требуется передавать отдельно тактовый сигнал — он может быть восстановлен приёмником самостоятельно.
Читайте также: Шины бриджстоун зимние bridgestone blizzak spike 02
Обнаружив начало старт-бита, приёмник ждёт в течение половины длительности передачи бита, после чего начинает считывать сигнал на входе с частотой, равной скорости передачи данных. В идеальном случае момент каждого считывания приходится на середину принимаемого бита. В реальности генераторы тактовых импульсов передатчика и приёмника имеют рассогласование по частоте, в результате каждое новое считывание всё больше смещается относительно середины очередного бита. Важно, чтобы за время передачи одной посылки, смещение не превысило половины длительности бита, а с учётом переходных процессов — смещению лучше не превышать четвёртой части длительности бита. Иначе вместо считывания бита произойдёт считывание соседнего бита (или считывание линии во время переходного процесса) и посылка будет принята неверно.
Управление потоком данных
Для управления потоком данных UART используется программный или аппаратный метод. В случае программного метода, информация о готовности устройства принимать данные или о необходимости остановить передачу передаётся по тем же каналам, что и данные. Принимающая сторона программно разделяет данные и управляющие сигналы в соответствии с принятым протоколом.
Видео:Цифровые интерфейсы: 02. UART (Последовательный интерфейс)Скачать
Интерфейс UART предусматривает возможность использования дополнительных сигналов (CTS, RTS) для аппаратного управления потоком данных. Аппаратное управление может использоваться некоторыми медленными устройствами или устройствами с простой схемной реализацией. Однако оно потребует двух дополнительных линий для подключения устройства.
Рис. %img:ufc
Если в UART включён контроль состояния CTS, передатчик перед отправкой очередного фрейма проверяет вход CTS. Если на CTS низкий уровень, передача происходит, иначе — нет. Если сигнал CTS будет установлен во время передачи посылки (фрейма), текущая передача всё равно будет завершена перед остановкой.
Приёмник, в свою очередь, устанавливает на выходе RTS значение лог. 0, если он готов принимать данные и устанавливает лог. 1, требуя от передатчика остановить передачу.
COM-порт (интерфейс стандарта RS-232)
COM-порт — интерфейс компьютера, соответствующий стандарту RS-232. Раньше компьютеры, как правило, имели два COM-порта. Затем COM-порт начал вытесняться USB-интерфейсом и сейчас у компьютера может быть всего один COM-порт или вообще ни одного. Если в компьютере отсутствует COM-порт, то можно использовать переходник USB-COM.
Хотя он и считается устаревшим для использования в компьютерах, тем не менее, интерфейс стандарта RS-232 ещё не утратил полностью своего значения и существует оборудование, где он используется. Интерфейс не обеспечивает высокой скорости передачи данных (максимум 115200 бод), но зато прост и дёшев в реализации, надёжен.
RS-232 является стандартом физического уровня для интерфейса UART. Он определяет набор используемых сигнальных линий и уровни для сигналов. Используемые уровни сильно отличаются от традиционных ТТЛ или КМОП-уровней. Во-первых, используются двухполярные сигналы, во-вторых — сигнал положительной полярности соответствует логическому нулю. Для согласования уровней сигналов интерфейса RS-232 и остальной части схемы на обычной логике, используются специализированные микросхемы для преобразования уровней.
Для сигналов используются следующие уровни.
Для драйвера (выход):
+5..+15 В — лог. 0 (SPACE);
-5..-15 В — лог. 1 (MARK).
Видео:Принцип работы UARTСкачать
Вход должен иметь сопротивление в пределах 3..7 кОм и должен быть рассчитан на сигналы:
+3..+25 В — лог. 0;
-3..-25 В — лог. 1.
Требуется, чтобы любой вывод интерфейса выдерживал замыкание на любой другой вывод и на источник напряжения 5 В.
В таблице указаны обозначения для сигналов принятые для COM-порта, обозначения в соответствии с RS-232, номера выводов в разъёмах и краткое описание назначения сигналов.
Для подключения к интерфейсу используются 25-контактные или 9-контактные разъёмы (DB25, DB9). Первоначально применялись 25-контактные разъёмы, но многие сигналы не использовались устройствами. В связи с этим произошёл переход к 9-контактным разъёмам. В оконечном оборудовании используются разъёмы типа вилка (Pin): DB-9P. В аппаратуре передачи данных (модемы, например) используются разъёмы типа розетка (Socket): DB-9S.
Читайте также: Как хранить автомобильные шины без дисков лежа или стоя
Гальваническая развязка для COM-порта
Рис. %img:rss
Для преобразования сигналов между уровнями ТТЛ/КМОП логики и уровнями RS-232 существуют специализированные микросхемы.
Также есть варианты очень простых схем на оптронах, которые обеспечивают не только согласование уровней, но и гальваническую развязку между подключаемыми устройствами — очень ценное свойство схемы. Выше приведён пример такой схемы. С указанными номиналами элементов обеспечивает скорость передачи до 2400 бод. Уменьшая сопротивление резистора R5, можно увеличить быстродействие (скорость 9600 бод достижима практически на любых оптронах).
Аппаратный контроль потоком данных по линиям CTS/RTS здесь не используется. Питание схемы со стороны COM-порта осуществляется от сигнальных линий самого COM-порта, но для её работы требуется программная конфигурация COM-порта: на выходе RTS должен быть установлен уровень лог. 1 (-5..-15 В), а на выходе DTR — уровень лог. 0 (+5..+15 В). Это существенный недостаток схемы, требующий учёта в программе для компьютера, обычные программы-терминалы не будут правильно работать. Недостаток устраним, но тогда схема станет менее простой.
Работает предложенная схема гальванической развязки для COM-порта следующим образом. Когда на TD выходе UART установлен уровень лог. 0 (обычные КМОП-уровни для микроконтроллеров), ток через светодиод оптрона U1 отсутствует, транзистор оптрона заперт, за счёт резистора R1 от выхода DTR(+) COM-порта на входе RD устанавливается положительный относительно общего провода потенциал, что соответствует уровню лог. 0 для RS-232. Если на выходе TD устройства UART установлена лог. 1, транзистор оптрона U1 открывается и RD вход COM-порта подключается к выходу RTS (-), за счёт чего на входе RD формируется отрицательный потенциал (лог. 1 для RS-232).
Видео:Передача данных - шина SPIСкачать
Оптрон U2 отвечает за передачу данных в обратном направлении. Когда на TD выходе COM-порта установлен уровень лог. 0 (положительный потенциал), транзистор оптрона U2 открывается, формируя лог. 0 на входе UART. Если на выходе TD COM-порта устанавливается лог. 1 (отрицательный потенциал), транзистор оптрона U2 закрывается и за счёт подтягивающего к высокому уровню резистора на входе RD устройства UART формируется логическая 1.
Если разъём P1 отключён от COM-порта, или компьютер выключен, то это будет восприниматься как «линия свободна» (отсутствие передачи данных), на вход USART микроконтроллера при этом будет подаваться лог. 1. Допускается подключение разъёма P1 к COM-порту работающего компьютера, это не приведёт к повреждению оборудования, но в некоторых случаях, в момент подключения, компьютер может получить какое-то количество случайных байтов.
D1, D2 — защищают светодиоды оптронов от обратного напряжения.
R1 — формирует смещение на входе RD COM-порта при закрытом транзисторе оптрона U1.
R2, R3 — ограничивают ток через светодиоды оптронов.
R4 — защищает вывод микроконтроллера от неправильного подключения или неправильного конфигурирования его режима работы, можно заменить перемычкой.
R5 — внешний подтягивающий резистор. Сопротивление внутреннего подтягивающего резистора микроконтроллера довольно велико и подключение внешнего улучшает скоростные характеристики канала передачи от COM-порта к UART микроконтроллера (уменьшает время переключения из состояния лог. 0 в лог. 1 на входе RD устройства UART). Может быть исключён.
Для однонаправленной связи можно оставить только соответствующую часть схемы. Если используется только передача данных от COM-порта к UART микроконтроллера, то отпадает необходимость в описанном выше программном конфигурировании COM-порта.
USART в STM32 (STM32F100xx)
USART в микроконтроллерах STM32 предоставляет гибкие средства для полнодуплексного обмена данными с внешними устройствами в последовательном формате с возможностью поддержки сигналов CTS/RTS; поддерживает полудуплексный обмен по однопроводной линии; может работать в широком диапазоне скоростей передачи. В мультибуферном режиме DMA достигается высокая скорость передачи данных, максимальное значение составляет 3 Мбит/с. Также поддерживается однонаправленная передача в синхронном режиме; мультипроцессорная связь; LIN (local interconnection network) — сеть для локальной связи; smartcard протокол; инфракрасный протокол в соответствии со спецификацией IrDA (infrared data association) SIR ENDEC.
- Асинхронная полнодуплексная связь.
- Асинхронная однопроводная полудуплексная связь.
- Настраиваемый метод оверсэмплинга (супердискретизации) даёт возможность выбора между скоростью передачи и допустимым отклонением скорости.
- Передатчик и приёмник используют общую программируемую скорость передачи, которая может настраиваться в широких пределах; максимальное значение достигает 3 Мбит/с при 8-кратном оверсэмплинге.
- Программируемая длина слова (8 или 9 бит).
- Настраиваемое количество стоп-битов (1 или 2).
- В LIN режиме поддерживается отправка и обнаружение приёмником Break-посылки (генерируется 13-битная и детектируется 10/11 битная).
- Имеется выход тактового сигнала для синхронной передачи.
- IrDA SIR кодек для инфракрасной связи (поддерживается длительность бита 3/16 в нормальном режиме).
- Интерфейс Smartcard поддерживает асинхронный протокол смарт-карт как определено в стандарте ISO 7816-3; используется 0.5, 1.5 стоп-битов в операциях со смарт-картой.
- Конфигурируемая мультибуферная связь с использованием DMA (direct memory access).
- Флаги, устанавливаемые при обнаружении событий во время обмена данными (приёмный буфер заполнен; буфер для передачи пуст; передача завершена).
- Контроль чётности (можно настроить передатчик на формирование бита чётности и приёмник на контроль бита чётности).
- Четыре флага, устанавливаемые при обнаружении ошибок (ошибка переполнения; обнаружен шум в принимаемом сигнале; ошибка фрейма; ошибка чётности).
- 10 источников прерывания USART, связанных с флагами регистра состояния SR (изменение состояния CTS; обнаружение посылки LIN Break; регистр данных передатчика пуст; передача завершена; регистр данных приёмника заполнен; обнаружение события «линия свободна» (Idle line); ошибка переполнения; ошибка фрейма; обнаружение шума; ошибка чётности).
- Мультипроцессорная связь (переход в тихий режим, если не произошло сопоставление адреса).
- Пробуждение из тихого режима при обнаружении свободной линии (Idle line) или при обнаружении адресной метки.
- Два режима пробуждения приёмника — по адресному биту (9-й, старший бит) или при обнаружении, что линия свободна.
Читайте также: Набор для ремонта шин латки
Функциональная схема USART в микроконтроллерах STM32.
SW: Single Wire — вывод для однопроводного подключения устройств.
В обычном двунаправленном полнодуплексном режиме требуется как минимум два вывода для подключения USART: RX (Receive Data In) и TX (Transmit Data Out).
Видео:FLprog урок №2 шины данных Uart\I2C\ICSP\OneWireСкачать
RX: вход для последовательных данных. Для извлечения данных используется техника оверсэмплинга (супердискретизации), когда чтение входа осуществляется с частотой, в несколько раз превышающей скорость передачи данных (в данном случае в 8 или 16 раз). Сопоставление считанной последовательности с предопределёнными шаблонами позволяет выделить фронт сигнала, определить значение принимаемого бита и обнаружить шум при его наличии в принимаемом сигнале.
TX: выход для передачи данных в последовательной форме. Когда передатчик отключён, вывод возвращается в состояние, заданное конфигурацией порта ввода-вывода. Когда передатчик включён, но никаких данных не передаётся, на выходе TX устанавливается высокий уровень (паузе в передаче данных, или свободной линии соответствует наличие лог. 1 в линии). В однопроводном режиме или режиме смарт-карты этот вывод используется как для передачи, так и для приёма данных (поэтому на схеме он обозначен как TX/SW).
SCLK: выход для тактового сигнала при синхронной передаче данных, соответствует мастер-режиму SPI. Тактовые импульсы не формируются во время старт и стоп-битов. Наличие импульса во время передачи последнего бита данных определяется программно. Параллельно может происходить синхронный приём данных на входе RX. Фаза и полярность импульсов задаются программно. В режиме смарт-карты вывод SCLK может формировать тактовый сигнал для смарт-карты.
IrDA_RDI: Receive Data Input — вход для получаемых данных в IrDA режиме.
IrDA_TDO: Transmit Data Output — выход для передаваемых данных в IrDA режиме.
nCTS: Clear To Send — высокий уровень на входе приостанавливает передачу данных после завершения текущей посылки.
nRTS: Request to send — низкий уровень на этом выходе сигнализирует о готовности USART принимать данные.
Программно приём и передача данных через интерфейс USART осуществляется путём чтения и записи регистра данных DR. Записываемые в регистр данные помещаются в регистр передаваемых данных TDR, а затем, когда завершится текущая передача, копируются в передающий сдвигающий * регистр. Если в данный момент ничего не передаётся, данные сразу помещаются в сдвигающий регистр. Сдвигающий регистр преобразует данные из параллельной формы представления в последовательную: схема управления с заданной тактовой частотой сдвигает содержимое регистра на 1 бит вправо. Сдвигаемые биты, начиная с младшего, подаются на выход USART. Кроме того, схема управления формирует стартовый бит, бит чётности (если используется) и стоп-биты.
* Сдвигающий регистр также называют регистром сдвига или сдвиговым регистром.
После того, как содержимое TDR копируется в сдвигающий регистр, в DR можно записывать очередной байт, без риска повредить предыдущее содержимое.
Принимаемые данные попадают в приёмный сдвигающий регистр. Когда приём фрейма завершается, данные из приёмного сдвигающего регистра помещаются в регистр принимаемых данных (RDR), откуда они могут быть прочитаны путём чтения регистра данных DR. Такое устройство регистра данных позволяет одновременно передавать и получать данные.
Видео:Урок 26.1 Соединяем две arduino по шине UARTСкачать
Далее смотрите подробное описание всех регистров устройства USART в микроконтроллерах STM32: «Регистры USART в микроконтроллерах STM32F100xx».
А также несколько примеров использования USART для передачи данных: «UART и USART. COM-порт. Часть 2».
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
📹 Видео
Протокол обмена данными UARTСкачать
Основы интерфейса UARTСкачать
лекция 359 Atmega8 USARTСкачать
Лекция "Интерфейсы (часть I). RS-232/422/485. SPI"Скачать
Цифровые интерфейсы и протоколыСкачать
FLProg 9. Прием символа из UART и его обработкаСкачать
Лекция 308. Шина I2CСкачать
Особенности работы с аппаратным UART (RX,TX) на примере ATtiny2313Скачать
UIFlow для начинающих. Урок 13. Что такое UART?Скачать
Как работает UART? - Уроки FPGA /#7Скачать
Теория и практика UART, I2C (TWI), SPI на arduino.Скачать
Введение в шину I2CСкачать
Лекция 309. 1-wire интерфейсСкачать
Протокол UART на экране осциллографаСкачать