Последовательные порты (Serial) в Betaflight
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, ЛИБО с телеметрией.
Конфигурация через 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
- для устройства на UART2serialpassthrough 5 0 rxtx 1
- для UART6 с DTR на PINIO1Для выхода из сквозного режима перезагрузите полетный контроллер.
Сквозной режим между UART
В BetaFlight 4.1 и выше можно организовать сквозной режим передачи данных между UART.
serialpassthrough 0 115200 rxtx none 4 19200
