Урок 14 из 18 · Модуль 5. SBUS и IBUS: монтаж, инверсия и диагностика
Протоколы в БАС: полный курс · Урок 14 из 18 · Модуль 5. Приёмники и радиоканалы
Подключение, настройка в Betaflight и ArduPilot, неинвертированный вывод приёмника — и таблица неисправностей «приёмник не работает».
Инверсия — причина половины проблем с SBUS: контроллеры F4 не умеют инвертировать сигнал аппаратно. Быстрый тест: в состоянии покоя на инвертированном SBUS — 0 В, на обычном UART — 3,3 В.
Содержание
1. Цели урока
После этого урока вы сможете:
- подключать приёмник SBUS/IBUS: питание, сигнал, общий провод
- решать проблему инверсии на F4 — программная инверсия или неинвертированный вывод приёмника
- настраивать Serial RX в Betaflight/INAV и SERIALn_PROTOCOL = 23 в ArduPilot
- понимать, что такое BRD_ALT_CONFIG и почему его не нужно включать «для CRSF»
- разбирать типовые неисправности по таблице
2. Монтаж приёмника
Проводное подключение приёмника FrSky к полётному контроллеру: SBUS_OUT приёмника идёт на RX-пин свободного UART, питание — 5 В (от контроллера или от BEC), GND — общий. Телеметрия SmartPort подключается отдельным проводом на TX-пин другого UART.
Три обязательных соединения:
- Питание 5 В — с площадок 5V полётного контроллера. Логика 3,3 В приёмнику не подходит: под нагрузкой напряжение просядет, и приёмник уйдёт в перезагрузку.
- Сигнал — SBUS_OUT (или IBUS) приёмника на RX-пин выбранного UART.
- GND — общий провод контроллера и приёмника, обязателен.
Распиновки популярных приёмников (порядок контактов у разных моделей отличается — сверяйся с маркировкой). Приёмнику нужно питание 5 В от BEC: логика сигнала при этом 3,3 В, а вот питание ниже ~4,5 В уже приводит к перезагрузкам приёмника под нагрузкой.
| Приёмник | Протокол | Контакты (типовые) |
|---|---|---|
| FrSky R-XSR | SBUS / F.Port | GND · +5V · S.Port · SBUS_OUT/CPPM |
| FrSky XM+ | SBUS | GND · +5V · SBUS_OUT |
| FlySky FTr16S | IBUS / SBUS | сигнал (IBUS/SBUS) · +5V · GND |
3. Инверсия сигнала
SBUS — это UART, у которого все уровни перевёрнуты: состояние покоя — низкий уровень вместо высокого, каждый бит инвертирован. Причина историческая (помехоустойчивость), а следствие практическое: сигнал нельзя напрямую подавать на входы, которые не умеют его переворачивать.
Инверсия: обычный UART в состоянии покоя держит высокий уровень, инвертированный SBUS — низкий. Все биты перевёрнуты.
| Контроллер | Возможности | Что делать с SBUS |
|---|---|---|
| F4 | инверсия RX поддерживается самим USART (бит RXINV) — это не «программная» инверсия и не DMA-трюк | Betaflight включает инверсию сам (опция Serial RX Inverted); если конкретная плата её не поддерживает — возьмите неинвертированный выход приёмника (у R-XSR для SBUS это площадка «B») |
| F3 (и часть бюджетных F4-плат) | аппаратной инверсии на нужном пине может не быть | неинвертированная площадка приёмника, внешний инвертор (транзистор или логический элемент) или другой UART |
| F7 / H7 | аппаратная инверсия на всех UART | подключается напрямую, без дополнительных действий |
| ArduPilot (F4 и новее) | программная инверсия | параметр SERIALn_OPTIONS — бит инверсии RX |
Неинвертированные сигналы снимаются с дополнительных площадок на плате приёмника. Внимание: обозначения у разных моделей различаются — сверяйся с маркировкой конкретного приёмника. У FrSky R-XSR площадка «P» — это неинвертированный S.Port (телеметрия), а неинвертированный SBUS выведен на площадку «B». У приёмников без телеметрии (например, XM+) неинвертированный SBUS обозначен площадкой «P».
Площадки неинвертированных сигналов на приёмнике FrSky R-XSR: «P» — неинвертированный S.Port (телеметрия), «B» — неинвертированный SBUS. У приёмников других моделей обозначения могут отличаться — сверяйся с маркировкой.
Быстрый тест мультиметром: на сигнальном пине работающего приёмника в состоянии покоя: инвертированный SBUS — 0 В, обычный UART — ~3,3 В. Два измерения — и тип сигнала ясен.
↑ К оглавлению4. Настройка в Betaflight, INAV и ArduPilot
Betaflight / INAV:
- Вкладка Ports → на выбранном UART включить Serial RX.
- Вкладка Receiver → режим Serial (via UART), тип — SBUS (для FlySky — IBUS).
- Для F4 при обычном (инвертированном) выводе — опция Serial RX Inverted; если сигнал взят с неинвертированного вывода приёмника — опция не нужна.
- Проверка: вкладка Receiver — столбики каналов должны изменяться плавно в пределах 988–2012.
ArduPilot:
SERIALn_PROTOCOL = 23 # RCIN: SBUS / IBUS / DSM на выбранном порту
BRD_ALT_CONFIG = 1 # для плат на F4: освободить DMA для SBUS-порта
BRD_ALT_CONFIG = 1 включает альтернативную карту пинов конкретной платы — её содержимое описано в таблице платы в документации ArduPilot. Параметр не «освобождает DMA» и для работы приёмника или CRSF не требуется: это распространённое заблуждение. Включать его «на всякий случай» нельзя — устройства могут оказаться на других пинах и перестать работать. Если каналы не приходят, сначала проверьте номер порта и инверсию сигнала, и только затем сверяйтесь с альтернативной распиновкой своей платы. После изменения параметра нужна перезагрузка.
5. F.Port — два в одном
F.Port — протокол FrSky, объединяющий SBUS и телеметрию SmartPort в одном проводе на скорости 115200 бод. Один провод вместо двух: и каналы, и телеметрия на пульт.
- В Betaflight: вкладка Ports → на выбранном UART включить Serial RX и переключатель Half-duplex.
- Актуален для систем FrSky; на новых сборках целесообразно использовать ELRS с CRSF, где телеметрия встроена в протокол.
6. Диагностика «приёмник не работает»
| Симптом | Типичная причина | Действие |
|---|---|---|
| Каналы не реагируют на стики | сигнал не доходит до RX-пина | проверить провод (SBUS_OUT → RX), питание 5 В, общий GND |
| Каналы дрожат, значения хаотичны | не включена инверсия сигнала или перепутан протокол | опция Serial RX Inverted либо неинвертированный выход приёмника (у FrSky R-XSR неинвертированный SBUS — площадка «B», «P» — это неинвертированный S.Port); сверить тип SBUS/IBUS; в ArduPilot — бит инверсии RX в SERIALn_OPTIONS и бит SBUS в RC_PROTOCOLS |
| Приёмник не биндится | несовпадение протокола передатчика и приёмника, разные версии прошивки | сверить протокол и регион; для ELRS — binding phrase и ветку версий (4.x/3.x) |
| Связь есть, но при выключении пульта моторы не останавливаются | не настроен failsafe | настроить failsafe в пульте и приёмнике, проверить флаги кадра |
| ArduPilot не получает каналы | неверный номер порта или инверсия сигнала; RC_PROTOCOLS не включает нужный протокол |
проверить SERIALn_PROTOCOL = 23, бит инверсии RX в SERIALn_OPTIONS и биты протоколов в RC_PROTOCOLS; перезагрузить ФК |
| На выходе ELRS-приёмника нет SBUS | в прошивке выбран выход CRSF | переключить выход приёмника: Web UI или Lua → Output → SBUS |
7. Для программиста
💻 Для программиста
SBUS — это UART с нестандартными параметрами: 100000 бод, 8 бит, чётный паритет, 2 стоповых бита. Стандартные настройки библиотек (8N1) не подойдут — кадр не совпадёт, и все байты прочитаются с ошибками. Второй нюанс — инверсия: если читаешь сигнал напрямую, добавь инвертор (транзистор или логический элемент) либо используй вход с аппаратной инверсией.
Логический анализатор с декодером UART здесь незаменим: задал 100000 бод, 8E2, инверсию — и видишь кадры с маркерами 0x0F/0x00, а не белый шум.
8. Чек-лист самопроверки
Урок освоен, если каждый пункт выполнен на практике:
- Подключил SBUS-приёмник и увидел движение каналов в конфигураторе
- Проверил мультиметром уровень покоя на сигнальной линии
- Подключил приёмник через неинвертированный вывод, если инверсия на выбранном пине недоступна
- Настроил SERIALn_PROTOCOL = 23 в ArduPilot
- Знаю, что BRD_ALT_CONFIG меняет альтернативную карту пинов платы и «для CRSF» не требуется
9. Что дальше
- Предыдущий урок: Урок 13. SBUS и IBUS: кадры и параметры
- Следующий урок: Урок 15. CRSF и ExpressLRS: современный стек управления
- Полный перечень тем — в статье «Содержание курса».

