Последовательный интерфейс 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 %).
Формат кадра
Передача одного байта (или символа) осуществляется в виде кадра фиксированной структуры:
- Стартовый бит — всегда логический «0» (пространство). Он сигнализирует приёмнику о начале передачи.
- Биты данных — от 5 до 9 бит (чаще всего 8 бит). Передаются последовательно, начиная с младшего бита (LSB first).
- Бит чётности (опционально) — для контроля ошибок (чётный, нечётный, маркерный или пробельный).
- Стоповые биты — от 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 с помощью таймеров и прерываний, без аппаратного модуля.
Сигнальные линии
Минимальная конфигурация для полнодуплексной передачи требует трёх проводов:
- TX (Transmit Data) — передача данных.
- RX (Receive Data) — приём данных.
- GND (Ground) — общий провод.
Для полудуплексной передачи (например, по протоколу 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 →


