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

Последовательный интерфейс UART

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

История

Протокол UART ведёт происхождение от телеграфных и телетайпных систем XIX — начала XX века, где использовалась последовательная передача символов по одному проводу. В 1960-х годах с развитием компьютерной периферии (терминалов, модемов) возникла потребность в стандартизации асинхронного обмена. В 1969 году был принят стандарт RS-232 (Recommended Standard 232), который определил электрические характеристики, сигналы и разъёмы для последовательного интерфейса. Первые интегральные микросхемы UART появились в начале 1970-х годов: например, UART 8250 компании Intel (1978 год) стал основой для портов COM в персональных компьютерах IBM PC. В 1980-х годах появились более совершенные модели — 16450, 16550 (с буфером FIFO), которые повысили скорость и надёжность передачи. С развитием USB и Ethernet в 1990-х годах UART утратил роль основного интерфейса для подключения периферии к ПК, но остался незаменимым во встраиваемых системах, где требуется простота, низкое энергопотребление и минимальное количество выводов.

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

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

Формат кадра

Передача одного байта (или символа) осуществляется в виде кадра фиксированной структуры:

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

После стоповых битов линия остаётся в состоянии «1» до следующего стартового бита.

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

Скорость измеряется в бодах (бит/с). Стандартные значения: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1000000 и выше. Наиболее распространённая скорость в современных встраиваемых системах — 115200 бод. Оба устройства должны быть настроены на одинаковую скорость.

Буферизация и FIFO

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

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

UART может быть реализован как:

  • Отдельная микросхема (например, MAX232, FT232, CH340, CP2102) — часто используется для преобразования уровней сигналов (RS-232, USB, TTL).
  • Встроенный периферийный модуль в микроконтроллере (например, USART в AVR, STM32, ESP32, PIC).
  • Программная эмуляция (Software UART, bit-banging) — реализация протокола на обычных цифровых выводах GPIO с помощью таймеров и прерываний, без аппаратного модуля.

Сигнальные линии

Минимальная конфигурация для полнодуплексной передачи требует трёх проводов:

Для полудуплексной передачи (например, по протоколу RS-485) используется одна дифференциальная пара проводов, а направление переключается управляющим сигналом.

Электрические уровни

Внутри микросхем UART обычно работают с уровнями TTL (0–5 В или 0–3,3 В): логический «0» — 0 В, логическая «1» — напряжение питания. Для связи на большие расстояния или с устаревшим оборудованием применяются преобразователи уровней:

  • RS-232 — уровни ±3…±15 В (инвертированные относительно TTL).
  • RS-422 / RS-485 — дифференциальные сигналы (от –6 до +6 В), устойчивые к помехам.

Классификация и варианты

По типу передачи

  • Полнодуплексный (Full-duplex) — одновременная передача и приём по двум отдельным линиям (TX, RX).
  • Полудуплексный (Half-duplex) — поочерёдная передача и приём по одной линии (например, RS-485).

По стандартам электрического интерфейса

  • TTL UART — для внутриплатного соединения (расстояние до 1–2 м).
  • RS-232 — для связи с периферией (до 15–20 м, скорость до 115200 бод).
  • RS-422 — дифференциальный, для промышленных сетей (до 1200 м, до 10 Мбод).
  • RS-485 — дифференциальный, многоточечный (до 32 устройств на одной линии, до 1200 м, до 10 Мбод).
  • USB-UART — преобразователь USB в последовательный порт (например, на микросхемах FT232, CH340, CP2102).

По функциональности

  • UART — базовая асинхронная передача.
  • USART (Universal Synchronous/Asynchronous Receiver-Transmitter) — поддерживает также синхронный режим (с тактовым сигналом).
  • LIN UART — для автомобильной шины LIN (Local Interconnect Network), с поддержкой протокола LIN.

Применение

UART используется в широком спектре устройств и систем:

  • Вычислительная техника: COM-порты (RS-232) на материнских платах (ныне редко), отладочные консоли, связь с модемами, принтерами, сканерами штрих-кодов.
  • Встраиваемые системы: отладка и прошивка микроконтроллеров (через UART-загрузчик), связь с датчиками (GPS, датчики температуры, влажности, давления), модулями Bluetooth, Wi-Fi (ESP8266, ESP32), GSM/GPRS, RFID-считывателями.
  • Промышленная автоматика: сети RS-485 (Modbus RTU, Profibus) для управления контроллерами, приводами, датчиками.
  • Телекоммуникации: управление сетевым оборудованием (консольный порт роутеров, коммутаторов, серверов).
  • Автомобильная электроника: шина LIN для управления дверями, стеклоподъёмниками, климат-контролем.
  • Радиоэлектроника: связь между модулями радиопередатчиков, приёмников, трансиверов.

Преимущества и недостатки

Преимущества

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

Недостатки

  • Ограниченная скорость передачи (обычно до 1–10 Мбод, в зависимости от реализации).
  • Низкая помехозащищённость при использовании TTL-уровней на длинных линиях.
  • Отсутствие встроенного контроля целостности данных (кроме бита чётности) — требуется программная реализация CRC или контрольных сумм.
  • Ограниченное количество устройств в сети (для RS-232 — только два, для RS-485 — до 32 без повторителей).
  • Асинхронность требует точной настройки скорости на обоих концах.

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

  • Название «UART» часто используется как синоним последовательного порта, хотя технически UART — это контроллер, а порт — разъём с соответствующими электрическими сигналами.
  • В персональных компьютерах IBM PC последовательный порт (COM1, COM2) традиционно адресовался по портам ввода-вывода 0x3F8 и 0x2F8 и использовал прерывания IRQ4 и IRQ3.
  • Протокол UART лёг в основу многих более сложных протоколов: MIDI (музыкальный интерфейс), DMX512 (управление освещением), I²C (с некоторыми модификациями), LIN (автомобильная шина).
  • В современных микроконтроллерах UART может автоматически определять скорость передачи (auto-baud detection) по анализу стартового бита.
  • Максимальная длина кабеля для RS-232 без потери данных — около 15 метров, но с качественным экранированным кабелем и низкой скоростью может достигать 30–50 метров.

Источники

  • Стандарт EIA RS-232 (1969, последняя редакция — TIA-232-F).
  • Техническая документация микросхем UART 8250, 16450, 16550 (Intel, National Semiconductor).
  • Руководства по микроконтроллерам AVR, STM32, ESP32 (разделы USART/UART).
  • Книга: «The Art of Electronics» (Horowitz, Hill), глава 10 — последовательные интерфейсы.
  • Спецификация протокола Modbus over Serial Line (Modbus.org).
  • Стандарт ISO 9141 (автомобильная шина LIN).

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

На главную BFOmetr →