Перейти к содержимому
Последовательные порты (Serial) в Betaflight

Последовательные порты (Serial) в Betaflight

Технику БПЛА
Разработчику
11 октября 2025

Betaflight обеспечивает расширенную гибкость работы с последовательными портами, но в результате их конфигурация стала несколько сложнее.

В Betaflight существует концепция функции (MSP, GPS, Serial RX и т.д.) и порта (VCP, UARTx, SoftSerial x, LPUART1). Не все функции могут быть использованы на всех портах из-за аппаратной разводки пинов (pin mapping), конфликтующих функций, а также аппаратных и программных ограничений.

Типы последовательных портов

  • Виртуальный COM-порт (VCP) через USB — выводы USB на порту USB, подключенные напрямую к процессору, без необходимости в отдельном адаптере USB-UART. VCP не «использует» физический UART-порт.
  • UART — пара выделенных аппаратных выводов для передачи (TX) и приема (RX), где обнаружение и генерация сигнала выполняются на аппаратном уровне.
  • SoftSerial — пара аппаратных выводов для передачи (TX) и приема (RX), где обнаружение и генерация сигнала выполняются программно.
  • LPUART — UART с «низким энергопотреблением», доступный на MCU серии G4 и других, поддерживается в Betaflight 4.5 и выше. По умолчанию LPUART ограничены скоростью 9600 бод, но Betaflight перенастраивает их для работы как обычный UART.

«Настоящий» / ''real" UART наиболее эффективен с точки зрения использования ЦП. SoftSerial — наименее эффективен и самый медленный. SoftSerial следует использовать только для приложений с низкой пропускной способностью и низким приоритетом, таких как отправка или прием телеметрии.

Конфигурация последовательных портов

Конфигурацию последовательных портов лучше всего производить через Конфигуратор.

Сначала настройте последовательные порты, затем включите/отключите функции, которые их используют. Для настройки портов SoftSerial функция SOFTSERIAL должна быть включена.

Ограничения

Если конфигурация недопустима, конфигурация последовательного порта сбросится к значениям по умолчанию, а функции могут быть отключены.

  • Всегда должен быть доступен порт для использования MSP/CLI.
  • Количество портов MSP по умолчанию — 3. Начиная с прошивки 2025.12, вы можете использовать пользовательский define для добавления дополнительных портов MSP.
  • Чтобы использовать порт для функции, соответствующая функция также должна быть включена.
  • Если используется SoftSerial, то все порты SoftSerial должны использовать одинаковую скорость.
  • SoftSerial ограничен скоростью 19200 бод.
  • Все телеметрические системы, кроме MSP, игнорируют любые попытки изменить скорость.
  • MSP/CLI может быть разделен ЛИБО с Blackbox, ЛИБО с телеметрией.
Примечание: Телеметрия Smartport не может быть разделена с MSP. Никакие другие комбинации разделения последовательных портов недопустимы.

Конфигурация через CLI

Команда serial в CLI принимает 6 аргументов:

serial <идентификатор порта> <функция порта> <скорость MSP> <скорость GPS> <скорость телеметрии> <скорость Blackbox>

1. Идентификатор последовательного порта

ИдентификаторЗначение
SERIAL_PORT_NONE -1
SERIAL_PORT_USART1 0
SERIAL_PORT_USART2 1
SERIAL_PORT_USART3 2
SERIAL_PORT_UART4 3
SERIAL_PORT_UART5 4
SERIAL_PORT_USART6 5
SERIAL_PORT_USART7 6
SERIAL_PORT_USART8 7
SERIAL_PORT_UART9 8
SERIAL_PORT_USART10 9
SERIAL_PORT_USB_VCP 20
SERIAL_PORT_SOFTSERIAL1 30
SERIAL_PORT_SOFTSERIAL2 31
SERIAL_PORT_LPUART1 40

2. Функция последовательного порта

ФункцияЗначениеБит
FUNCTION_NONE 0 0
FUNCTION_MSP 1 1 << 0
FUNCTION_GPS 2 1 << 1
FUNCTION_TELEMETRY_FRSKY_HUB 4 1 << 2
FUNCTION_TELEMETRY_HOTT 8 1 << 3
FUNCTION_TELEMETRY_LTM 16 1 << 4
FUNCTION_TELEMETRY_SMARTPORT 32 1 << 5
FUNCTION_RX_SERIAL 64 1 << 6
FUNCTION_BLACKBOX 128 1 << 7

3. Скорости MSP

9600
19200
38400
57600
115200
230400
250000
500000
1000000

4. Скорости GPS

9600
19200
38400
57600
115200

5. Скорости телеметрии

AUTO
9600
19200
38400
57600
115200

6. Скорости Blackbox

19200
38400
57600
115200
230400
250000
400000
460800
500000
921600
1000000
1500000
2000000
2470000

Сквозной режим (Passthrough)

Betaflight может войти в специальный сквозной режим (passthrough mode), при котором он передает последовательные данные на устройство, подключенное к порту UART/SoftSerial.

Для запуска сквозного режима используйте CLI-команду serialpassthrough:

serialpassthrough <id порта1> [скорость порта1] [режим порта1] [DTR PINIO порта1] [id порта2] [скорость порта2] [режим порта2]
Пример:
serialpassthrough 1 - для устройства на UART2
serialpassthrough 5 0 rxtx 1 - для UART6 с DTR на PINIO1

Для выхода из сквозного режима перезагрузите полетный контроллер.

Сквозной режим между UART

В BetaFlight 4.1 и выше можно организовать сквозной режим передачи данных между UART.

Пример:
serialpassthrough 0 115200 rxtx none 4 19200
Запускает сквозной режим между UART1 и UART5
Последовательные порты (Serial) в Betaflight
14