Протоколы последовательной связи - Часть вторая: UART

Mark Harris
|  Создано: 14 Апреля, 2021
Протоколы последовательной связи - UART

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

Последовательная связь является идеальным механизмом для передачи информации между устройствами, такими как микроконтроллеры, периферийные устройства, производящие данные, и другие умные устройства. Мы надеемся, что этот ресурс окажется бесценным, когда вашему проекту потребуется включить в себя шину последовательной связи. UART также часто называют последовательным портом на устройстве. Однако это может быть легко спутано с другим видом последовательного порта, который использует разъем стиля DB9 и использует RS-232 в качестве аппаратного протокола. Не редкость, когда UART подключен к передатчику RS-232 для периферийного устройства UART на микроконтроллере и устройства на основе RS-232 для общения друг с другом.

UART расшифровывается как Универсальный Асинхронный Приемопередатчик. Для работы этой системы связи требуется два контакта, помимо земли. Один обозначается как TX, передатчик, а другой как RX, приемник. Наличие слова "асинхронный" в названии означает, что для работы не требуется сигнал тактирования. Поскольку часы отсутствуют, устройства передачи и приема должны использовать одинаковую скорость передачи данных.

Скорость передачи данных (Bd) является единицей измерения скорости передачи. Этот параметр определяет скорость связи по каналу данных передатчика и приемника. Скорость передачи данных может быть представлена в битах в секунду для упрощения. Таким образом, скорость 1000 Bd означает, что скорость связи составляет 1000 бит в секунду, или длительность одного бита составляет 1/1000 секунды или 1 миллисекунду. Скорости передачи данных имеют стандартные метрические префиксы, такие как kBd (килобод), MBd (мегабод) или GBd (гигабод). Скорость передачи данных включает в себя не только данные, но и служебные части сообщения, такие как стартовые и стоповые биты, что означает, что скорость передачи полезной информации от передатчика к приемнику будет немного меньше.

Некоторые из более популярных стандартных скоростей передачи данных UART включают:

  • 110 Бод
  • 300 Бод
  • 1200 Бод
  • 4800 Бод
  • 9600 Бод
  • 19200 Бод
  • 38400 Бод
  • 115200 Бод

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

Таким образом, для соединения двух устройств с использованием UART, вывод передатчика TX должен быть подключен к выводу приемника RX:

UART

Базовое подключение UART с выводами TX, RX и землей

В некоторых конфигурациях у вас будут выводы RX и TX на обоих устройствах, что позволит вам отправлять команды с микроконтроллера на специализированную микросхему и получать обратно команды или информацию. Это называется двухсторонним соединением. Также существуют приложения, когда обратная связь от второго устройства не требуется. Следовательно, коммуникация необходима только в одном направлении; поэтому нужна только одна линия передачи TX на RX. Это называется симплексным соединением.

UART

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

UART

Устройство UART отправляет стартовый бит (начало коммуникации)

Затем данные передаются в виде восьмибитного потока, представляющего реальные данные, где старший значащий бит (MSB) обозначен как D7, а наименее значимый бит (LSB) обозначен как D0.

UART

Первое устройство в коммуникации UART отправляет биты данных после первого стартового бита.

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

UART

UART

Первое устройство в коммуникации UART отправляет стоповый бит после битов данных.

Как мы видим в данном случае; полное сообщение UART будет состоять из 10 бит. В режиме ожидания шина UART подтягивается вверх, она отправляет стартовый бит, который является низким, а после этого идут 8 бит данных, за которыми следует стоповый бит. Стоповый бит не ограничивается только одним битом; он может иметь различные конфигурации в зависимости от скорости коммуникации. Эта конфигурация означает, что весь набор битов сообщения постоянно изменяет уровень напряжения сигнала шины от низкого к высокому хотя бы один раз:

Sampling Points

Пример пакета последовательной коммуникации UART

Наиболее значимый бит D7 также может использоваться как бит четности. Этот бит предоставляет примитивный механизм проверки ошибок, который появляется в самых маленьких блоках коммуникаций. Бит четности может использоваться для обеспечения того, чтобы общее количество высоких битов или единиц было либо нечетным, либо четным, в зависимости от кодировки. Для проверки на четность, если установлены биты данных D0 до D6 и они состоят из четного числа высоких битов, то бит четности устанавливается в 0 (низкий). Напротив, если этот набор битов имеет нечетное количество высоких битов, то бит четности устанавливается в 1 (высокий). Это обеспечивает четное общее количество высоких битов в сообщении. В случае проверки на нечетность, если биты данных D0 до D6 установлены так, что они состоят из четного числа высоких битов, бит четности устанавливается в 1 (высокий). Напротив, если этот набор битов имеет нечетное количество высоких битов, то бит четности устанавливается в 0 (низкий). Это обеспечивает нечетное общее количество высоких битов в сообщении.

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

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

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

Существует также вариант UART, который называется USART. Это Универсальный Синхронно-Асинхронный Приемопередатчик. Он может работать как в асинхронном режиме (как и UART), так и в синхронном режиме, когда данные синхронизируются по тактовому сигналу. Тактовый сигнал может быть извлечен из самих данных или передан как отдельный внешний сигнал.

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

 

UART

Пример коммуникации USART

UART

USART

Для UART требуется только сигнал данных

Для синхронного режима USART требуются как данные, так и тактовый сигнал.

В UART данные могут передаваться с переменной скоростью.

В синхронном режиме USART данные передаются с фиксированной скоростью.

В UART данные обычно передаются по одному байту за раз.

В USART синхронные данные обычно передаются блоками данных.

В UART скорость передачи данных устанавливается на определенных значениях, таких как 4800, 9600, 38400 бит/с и т.д.

В USART синхронный режим позволяет достигать более высокой скорости передачи данных (DTR), чем асинхронный режим при прочих равных условиях.

Скорость UART ограничена примерно 115200 бит/с.

USART может достигать скоростей выше 115 кбит/с.

Дуплексная связь: данные могут передаваться одновременно в обоих направлениях.

Полудуплексная связь: данные могут передаваться только в одном направлении за раз.

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

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

Краткое содержание

В этой статье были рассмотрены некоторые популярные функции устройств UART и обсуждены некоторые из их преимуществ и деталей реализации. В следующей статье, Протоколы последовательной связи - Часть Три: RS-232, мы рассмотрим некоторые доступные протоколы последовательной связи. Пропустили что-то? Ознакомьтесь с введением в Протоколы последовательной связи.

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

Об авторе

Об авторе

Марк Харрис (Mark Harris) является квалифицированным инженером с более чем 12-летним опытом в различных областях электронной промышленности – от контрактов в области аэрокосмической и оборонной отрасли до небольших стартапов и хобби. До переезда в Великобританию Марк работал в одной из крупнейших исследовательских компаний в Канаде, где каждый день участвовал в различных проектах и решениях задач, связанных с электроникой, механикой и программным обеспечением. Он также опубликовал самую обширную открытую библиотеку компонентов Altium Designer, названную Celestial Database Library. Марк увлекается проектами аппаратного и программного обеспечения с открытым исходным кодом и инновационными решениями повседневных проблем, которые они предлагают. Электроника – его страсть, а наблюдение за тем как изделие из идеи воплощается в реальность и начинает взаимодействовать с миром – источник бесконечного удовольствия.
Вы можете связаться с Марком напрямую: mark@originalcircuit.com.

Связанные ресурсы

Вернуться на главную
Thank you, you are now subscribed to updates.