Открыть сервис

UART

UART (Universal Asynchronous Receiver/Transmitter, универсальный асинхронный приёмопередатчик) — это узел цифровых устройств, предназначенный для организации двустороннего последовательного обмена данными между двумя устройствами по асинхронному протоколу. UART преобразует параллельный поток данных (байты) в последовательный для передачи по однопроводной линии (или дифференциальной паре) и обратно — из последовательного потока в параллельный. Является одним из наиболее распространённых и простых интерфейсов для связи микроконтроллеров, датчиков, модулей (например, Bluetooth, GPS) и персональных компьютеров (через порт RS-232 или USB-адаптеры).

История

Протокол асинхронной последовательной передачи данных был разработан в 1960-х годах для телетайпов и модемов. Первые реализации UART выполнялись на дискретных логических элементах (микросхемах серии 7400). В 1970-х годах компания National Semiconductor выпустила первую интегральную микросхему UART — INS8250, которая стала стандартом для IBM PC и совместимых компьютеров. Впоследствии появились более совершенные версии: 16450, 16550 (с аппаратным FIFO-буфером), 16650, 16750. С развитием микроконтроллеров UART стали встраивать непосредственно в кристалл (например, в семействах AVR, PIC, ARM Cortex-M). В современных системах UART часто реализуется программно (bit-banging) или через периферийные модули USART (Universal Synchronous/Asynchronous Receiver/Transmitter), поддерживающие как синхронный, так и асинхронный режимы.

Принцип работы

Асинхронная передача

UART не требует отдельного тактового сигнала — синхронизация приёмника и передатчика осуществляется по стартовому биту. Каждый байт данных передаётся в виде кадра (frame), состоящего из:

  • Стартовый бит — всегда логический ноль (0), сигнализирует о начале передачи.
  • Биты данных — от 5 до 9 бит (обычно 8 бит, реже 7 или 9). Младший бит передаётся первым (LSB first).
  • Бит чётности (опционально) — используется для контроля ошибок (чётность, нечётность или отсутствие).
  • Стоповые биты — от 1 до 2 бит, всегда логическая единица (1), обозначают конец кадра.

Линия передачи (TX) находится в состоянии логической единицы (маркер) в режиме ожидания. Стартовый бит переводит линию в ноль, после чего передаются биты данных, бит чётности и стоповые биты.

Скорость передачи

Скорость обмена измеряется в бодах (бит/с). Стандартные значения: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600. Приёмник и передатчик должны быть настроены на одинаковую скорость. Допустимое отклонение — не более 2-3% (зависит от длины кадра и качества тактового генератора).

Буферизация

В современных UART (например, 16550) используются FIFO-буферы (First In, First Out) глубиной от 16 до 64 байт. Это позволяет снизить нагрузку на процессор: данные накапливаются в буфере, а прерывание генерируется только при заполнении буфера или по тайм-ауту.

Аппаратная реализация

Сигналы UART

  • TX (Transmit) — линия передачи данных.
  • RX (Receive) — линия приёма данных.
  • GND (Ground) — общий провод (земля).
  • RTS (Request to Send) — аппаратный контроль потока (выход).
  • CTS (Clear to Send) — аппаратный контроль потока (вход).
  • DTR (Data Terminal Ready) — сигнал готовности терминала.
  • DSR (Data Set Ready) — сигнал готовности модема.

Для простого соединения (например, микроконтроллер — модуль) достаточно трёх проводов: TX, RX, GND (перекрёстное соединение: TX одного устройства — RX другого).

Контроль потока

  • Аппаратный (RTS/CTS) — устройство устанавливает RTS, когда готово принять данные; передатчик проверяет CTS перед отправкой.
  • Программный (XON/XOFF) — приёмник отправляет символы XOFF (0x13) для остановки передачи и XON (0x11) для возобновления.

Уровни напряжения

  • TTL (0–5 В или 0–3,3 В) — логический ноль: 0–0,8 В; логическая единица: 2,4–5 В (или 2,0–3,3 В). Используется в микроконтроллерах.
  • RS-232 (±12 В) — логический ноль: +3…+15 В; логическая единица: -3…-15 В. Для преобразования используются микросхемы MAX232 или аналоги.

Протоколы на основе UART

UART является физическим и канальным уровнем для ряда протоколов:

  • RS-232стандарт последовательного интерфейса для ПК (DB-9, DB-25). Использует уровни ±12 В, поддерживает до 20 кбит/с на расстоянии до 15 м.
  • RS-485 — дифференциальный интерфейс для промышленных сетей (до 10 Мбит/с, до 1200 м). Требует преобразователь UART-RS-485.
  • MIDI — музыкальный интерфейс (31,25 кбит/с, 8 бит, 1 стоповый бит).
  • DMX512 — управление световым оборудованием (250 кбит/с).
  • LIN (Local Interconnect Network)автомобильная шина (до 20 кбит/с).

Применение

Встраиваемые системы

UART является стандартным интерфейсом для отладки микроконтроллеров (вывод отладочной информации через UART на консоль ПК). Используется для связи с модулями:

  • Bluetooth (HC-05, HC-06)
  • GPS (NMEA-0183)
  • GSM/GPRS (SIM800, SIM900)
  • Wi-Fi (ESP8266, ESP32)
  • RFID-считыватели
  • Дисплеи (символьные и графические)

Промышленность

  • Программируемые логические контроллеры (ПЛК) — обмен по Modbus RTU (поверх RS-485).
  • Системы сбора данных (SCADA).
  • Конфигурация промышленного оборудования.

Потребительская электроника

  • Компьютерные мыши и клавиатуры (устаревшие модели с портом PS/2 или COM).
  • Модемы (внешние и внутренние).
  • Принтеры (последовательный порт).

Программная реализация

В современных микроконтроллерах UART реализуется аппаратно (периферийный модуль). Однако при отсутствии аппаратного UART возможна программная эмуляция (bit-banging) — управление выводами GPIO через таймеры. Это требует точной синхронизации и увеличивает нагрузку на процессор. Примеры библиотек: SoftwareSerial (Arduino), AltSoftSerial, NeoSWSerial.

Достоинства и недостатки

Достоинства

  • Простота реализации (всего 2-3 провода).
  • Низкая стоимость (не требует сложных компонентов).
  • Широкая распространённость и поддержка.
  • Не требует тактового сигнала.
  • Возможность работы на больших расстояниях (с преобразователями RS-485/RS-422).

Недостатки

  • Низкая скорость по сравнению с современными интерфейсами (USB, Ethernet, SPI).
  • Отсутствие встроенной адресации (только точка-точка).
  • Чувствительность к помехам (особенно TTL-уровни).
  • Необходимость точной настройки скорости на обоих устройствах.
  • Ограниченная длина кабеля (для TTL — до 1-2 м, для RS-232 — до 15 м).

Интересные факты

  • В первых IBM PC UART был реализован на микросхеме INS8250, которая не имела буфера FIFO — каждое прерывание обрабатывало один байт.
  • Скорость 115200 бит/с является стандартной для отладки микроконтроллеров, так как она легко получается из тактовой частоты 11,0592 МГц (делитель 96).
  • В некоторых микроконтроллерах (например, STM32) UART может работать в режиме «один провод» (half-duplex) — TX и RX объединяются через резистор.
  • Протокол UART используется в стандарте IrDA (инфракрасная связь) с модуляцией 3/16 от битового интервала.

Источники

  • Гук М. Аппаратные интерфейсы ПК. — СПб.: Питер, 2002.
  • Tanenbaum A. S., Wetherall D. J. Computer Networks. — 5th ed. — Pearson, 2011.
  • Datasheet National Semiconductor INS8250.
  • Datasheet MAX232 (Texas Instruments).
  • Спецификация RS-232 (EIA/TIA-232).
  • Спецификация RS-485 (EIA/TIA-485).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →