Интерфейс UART¶
UART - это простой последовательный интерфейс передачи данных между двумя устройствами. Расшифровка: Universal Asynchronous Receiver/Transmitter.
В практических проектах обычно говорят "UART", "serial", "TX/RX" или "UART-порт". Для новичка главное: UART передаёт данные по линии TX, принимает по линии RX, а для нормальной работы двум устройствам нужен общий GND.
Где UART используется¶
UART встречается почти везде:
- отладочные логи микроконтроллера;
- прошивка плат через USB-UART адаптер;
- связь хоста с MCU в некоторых Klipper-сценариях;
- GPS, RFID, fingerprint, датчики и другие модули;
- настройка TMC-драйверов шаговых моторов;
- связь двух микроконтроллеров;
- сервисный порт на плате.
UART удобен тем, что требует мало проводов и хорошо подходит для простого обмена текстом, командами и диагностикой.
TX, RX и GND¶
Минимальное подключение:
TX- передача;RX- приём;GND- общий минус.
TX одного устройства подключают к RX другого:

Источник: SparkFun Electronics, CC BY-SA 4.0
Правило:
Самая частая ошибка - соединить TX с TX и RX с RX. Иногда маркировка на модулях бывает запутанной, поэтому если связи нет, сначала перепроверь распиновку и документацию, а не меняй случайно все провода подряд.
UART, USB и USB-UART¶
UART - это не USB.
Компьютер обычно не имеет голых UART-пинов. Поэтому нужен USB-UART адаптер: он с одной стороны подключается к USB компьютера, а с другой даёт линии TX, RX, GND и иногда VCC, DTR, CTS.
Примеры:
- компьютер читает логи с платы через USB-UART;
- USB-UART прошивает плату без встроенного USB;
- хост подключается к MCU по serial;
- адаптер помогает восстановить плату после неудачной прошивки.
Не путай USB-разъём на плате и UART-пины на гребёнке. На некоторых платах USB уже подключён к встроенному USB-UART чипу, а на других USB идёт напрямую в микроконтроллер.
Уровни логики: 3.3V, 5V, RS-232¶
UART описывает способ передачи данных, но не гарантирует безопасный уровень напряжения.
В DIY-электронике чаще всего встречается TTL/CMOS UART:
3.3VUART - ESP32, RP2040, STM32 и многие современные платы;5VUART - Arduino Uno/Nano и часть старых модулей.
Если подать 5V сигнал на вход 3.3V микроконтроллера, можно повредить плату. Для несовместимых уровней нужен преобразователь уровней или другая согласующая схема.
Отдельно существует RS-232. Это не "просто UART на разъёме DB9". У RS-232 другие уровни напряжения и другая электрическая логика. Нельзя подключать настоящий RS-232 порт напрямую к GPIO микроконтроллера. Нужен преобразователь уровня, например MAX232-подобная схема или готовый адаптер.
Скорость и формат¶
У UART должна совпадать скорость передачи. Частые значения:
Если скорость не совпадает, в терминале будет мусор или тишина.
Также есть формат передачи. Часто встречается 8N1:
8- 8 бит данных;N- без parity;1- один stop bit.
В большинстве простых задач достаточно выставить одинаковую скорость и стандартный 8N1, если документация модуля не требует другого.
UART в 3D-принтерах¶
В 3D-принтерах UART часто встречается в трёх разных ролях.
Связь хоста и платы
Некоторые платы могут общаться с хостом по serial/UART. В Klipper это описывается в секции [mcu] через serial.
Настройка драйверов TMC
У некоторых драйверов шаговых моторов UART используется для настройки тока, stealthChop/spreadCycle, диагностики и чтения статуса. Сам мотор при этом обычно управляется не UART, а сигналами STEP и DIR.
Отладка и прошивка
UART может использоваться для логов, bootloader-режима и восстановления платы через USB-UART адаптер.
Один UART - обычно два активных устройства¶
Классический UART - это связь между двумя устройствами. Нельзя бездумно подключать несколько передатчиков к одной RX линии.
Проблемы:
- два устройства одновременно тянут линию
TX; - данные смешиваются;
- один модуль получает команды, предназначенные другому;
- возможна электрическая конфликтная ситуация.
Иногда один TX можно слушать несколькими приёмниками, но это уже осознанное решение и не подходит как универсальное правило. Для новичка безопаснее считать: один UART-порт - одна пара устройств.
Что проверить перед подключением¶
Перед подключением UART проверь:
- где
TX, гдеRX; - нужен ли общий
GND; - уровень логики:
3.3Vили5V; - это TTL UART или RS-232;
- скорость передачи;
- формат, если он указан;
- не занят ли этот UART USB-логами или прошивкой;
- не подключён ли к этой линии другой передатчик;
- нужно ли подключать питание или только
TX/RX/GND.
Питание с UART-адаптера подключают только если понятно, что плата должна питаться именно от него. Часто для диагностики нужны только TX, RX и GND.
Типовые ошибки¶
- соединяют
TXсTX,RXсRX; - забывают общий
GND; - подают
5VUART на3.3Vвход; - путают TTL UART и RS-232;
- выбирают неправильный baud rate;
- подключают питание от USB-UART адаптера к уже запитанной плате;
- используют UART-пины, занятые USB-логами или bootloader;
- подключают несколько передатчиков к одной линии;
- думают, что UART управляет мощной нагрузкой напрямую.
Главное¶
UART - простой интерфейс для обмена данными между двумя устройствами. Нужны перекрёстные TX/RX, общий GND, одинаковая скорость и совместимые уровни логики.
UART не служит питанием и не работает как силовой выход. Он передаёт данные, а не крутит моторы и не включает нагреватели напрямую.
Материалы по теме¶
- SparkFun: Serial Communication - хорошее практическое объяснение UART, TX/RX, baud rate, TTL serial, RS-232 и типовых ошибок.
- SparkFun: Serial Communication - UARTs - что делает UART внутри микроконтроллера и почему нужны TX/RX.
- Adafruit: Serial UART on FT232H - пример USB-UART адаптера и подключение TX/RX/GND к serial-устройству.
- SparkFun: Serial Basic CH340C Hookup Guide - пример USB-UART адаптера, пины RX/TX/VCC/GND и loopback-тест.
- Klipper: Configuration reference -
[mcu]- как serial-соединение MCU описывается в конфигурации Klipper.