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 на платах F4
- разбирать типовые неисправности по таблице
2. Монтаж приёмника
Проводное подключение приёмника FrSky к полётному контроллеру: SBUS_OUT приёмника идёт на RX-пин свободного UART, питание — 5 В с BEC, GND — общий. Телеметрия SmartPort подключается отдельным проводом на TX-пин другого UART.
Три обязательных соединения:
- Питание 5 В — с площадок 5V/G полётного контроллера. Логика 3,3 В приёмнику не подходит: под нагрузкой напряжение просядет, и приёмник уйдёт в перезагрузку.
- Сигнал — SBUS_OUT (или IBUS) приёмника на RX-пин выбранного UART.
- GND — общий провод контроллера и приёмника, обязателен.
Распиновки популярных приёмников (порядок контактов у разных моделей отличается — сверяйся с маркировкой):
| Приёмник | Протокол | Контакты (типовые) |
|---|---|---|
| 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 |
|---|---|---|
| F3 / F4 | аппаратной инверсии нет | программная инверсия (опция Serial RX Inverted, только пины с таймерами) или неинвертированная площадка приёмника (у R-XSR для SBUS — «B») |
| 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 — частая причина «невидимого» приёмника на половине F4-плат: SBUS-порт конфликтует с DMA, и каналы не читаются. После изменения параметра — перезагрузка.
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 |
| Каналы дрожат, значения хаотичны | не настроена инверсия (F4) или перепутан протокол | опция Serial RX Inverted или неинвертированный вывод; сверить тип SBUS/IBUS |
| Приёмник не биндится | несовпадение протокола передатчика и приёмника, разные версии прошивки | сверить протокол и регион; для ELRS — binding phrase и ветку версий (4.x/3.x) |
| Связь есть, но при выключении пульта моторы не останавливаются | не настроен failsafe | настроить failsafe в пульте и приёмнике, проверить флаги кадра |
| ArduPilot не получает каналы на F4 | DMA-конфликт порта | BRD_ALT_CONFIG = 1, перезагрузка |
| На выходе ELRS-приёмника нет SBUS | в прошивке выбран выход CRSF | переключить выход приёмника: Web UI или Lua → Output → SBUS |
7. Для программиста
💻 Для программиста
SBUS — это UART с нестандартными параметрами: 100000 бод, 8 бит, чётный паритет, 2 стоповых бита. Стандартные настройки библиотек (8N1) не подойдут — кадр не совпадёт, и все байты прочитаются с ошибками. Второй нюанс — инверсия: если читаешь сигнал напрямую, добавь инвертор (транзистор или логический элемент) либо используй вход с аппаратной инверсией.
Логический анализатор с декодером UART здесь незаменим: задал 100000 бод, 8E2, инверсию — и видишь кадры с маркерами 0x0F/0x00, а не белый шум.
8. Чек-лист самопроверки
Урок освоен, если каждый пункт выполнен на практике:
- Подключил SBUS-приёмник и увидел движение каналов в конфигураторе
- Проверил мультиметром уровень покоя на сигнальной линии
- Подключил приёмник через неинвертированный вывод (если контроллер F4)
- Настроил SERIALn_PROTOCOL = 23 в ArduPilot
- Знаю, зачем BRD_ALT_CONFIG на F4-платах
9. Что дальше
- Предыдущий урок: Урок 13. SBUS и IBUS: кадры и параметры
- Следующий урок: Урок 15. CRSF и ExpressLRS: современный стек управления
- Полный перечень тем — в статье «Содержание курса».


