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 →