Ошибка UART send error чаще всего означает, что микроконтроллер не смог завершить передачу байта через интерфейс UART: линия TX занята, буфер переполнен, либо удалённое устройство не подтверждает приём из-за рассинхронизации скоростей. Первое действие при такой ошибке — проверить совпадение параметров baud rate, data bits, parity и stop bits на обеих сторонах соединения.

Проблема встречается на самых разных платформах: STM32, ESP32, Arduino, Raspberry Pi, а также при работе через USB-UART адаптеры на микросхемах CH340, CP2102 и FTDI. Ниже разберём типовые причины, порядок диагностики и практические способы устранения сбоя.

Что означает ошибка UART send error

Сообщение send error — это обобщённый сигнал о том, что функция передачи вернула код ошибки. В HAL-библиотеках STM32 это может быть состояние HAL_ERROR или HAL_BUSY после вызова HAL_UART_Transmit(), в ESP-IDF — отрицательное значение из uart_write_bytes(), в Arduino — таймаут при записи в Serial.

Конкретная причина зависит от того, на каком этапе произошёл сбой: данные не ушли из программного буфера, аппаратный FIFO переполнен, либо передатчик физически не смог выставить уровни на линии. Поэтому диагностику стоит начинать не с кода, а с проверки самой линии связи.

💡

UART send error — это симптом, а не диагноз. Точную причину определяют по коду возврата функции передачи и состоянию флагов аппаратного UART.