CRSF vs ELRS Печать
Добавил(а) microsin   

Хотя ExpressLRS (ELRS) использует протокол CRSF для связи с полетным контроллером, их прямое сравнение не совсем корректно, так как CRSF — это протокол передачи данных [1], а ExpressLRS — это полная радиосистема (в виде набора аппаратных и программных решений [2]), которая этот протокол использует. Сравнение уместно проводить между радиосистемами ExpressLRS и TBS Crossfire (родоначальником протокола CRSF).

[Ключевые различия ExpressLRS и TBS Crossfire]

В следующей таблице наглядно показаны основные технические и потребительские характеристики двух систем:

Параметр ExpressLRS (ELRS) TBS Crossfire
Статус проекта Проект с открытым исходным кодом (Open Source) Проприетарная разработка Team BlackSheep (TBS)
Частотные диапазоны 2.4 ГГц и 900 МГц Только 900 МГц
Макс. частота обновления (Гц) До 500 Гц (2.4 ГГц) / До 200 Гц (900 МГц) До 150 Гц
Модуляция LoRa на всех скоростях передачи LoRa (в основном в режиме 50 Гц), FSK для высоких скоростей
Макс. мощность передатчика Как правило, до 1 Вт До 2 Вт
Задержка (Latency) Очень низкая, одна из самых низких на рынке Низкая, но выше, чем у ELRS на высоких частотах обновления
Ценовая политика Более доступная, широкий выбор бюджетного оборудования Премиальный сегмент, высокая стоимость приемников и модулей
Экосистема и совместимость Совместим с большинством пультов, поддерживающих CRSF Глубокая интеграция с экосистемой TBS (Tango 2, Fusion, Cloud)

[Рекомендации по выбору]

Исходя из этих различий, можно сделать осознанный выбор в зависимости от ваших задач и бюджета.

Выбирайте ExpressLRS, если:

● Вам критически важна максимально низкая задержка для гоночных дронов или фристайла.
● Вы хотите сэкономить, так как оборудование ELRS значительно дешевле, особенно приемники.
● Вы предпочитаете открытые технологии и активное сообщество, которое быстро выпускает обновления.
● Вы хотите использовать преимущества диапазона 2.4 ГГц (меньшие антенны, высокая скорость) или иметь гибкость выбора между 2.4 ГГц и 900 МГц.

Выбирайте TBS Crossfire, если:

● Для вас приоритетом является максимальная дальность полета, и вы готовы использовать передатчик мощностью до 2 Вт.
● Вы цените отработанную надежность и проверенную годами репутацию системы.
● Вы уже используете или планируете использовать другие продукты экосистемы TBS, такую как пульт Tango 2, видео-ресивер Fusion или сервис TBS Cloud.

Важное примечание о совместимости. ExpressLRS и TBS Crossfire используют один и тот же протокол CRSF для передачи данных по UART между приемником и полетным контроллером. Это означает, что с точки зрения полетного контроллера (например, Betaflight, INAV, PX4) настройка подключения и прием сигналов управления идентичны для обеих систем.

[Максимальный размер пакета UART]

Поскольку и ExpressLRS (ELRS), и TBS Crossfire используют один и тот же протокол CRSF, максимальный размер пакета UART будет 64 байта. Есть только отличия в том, как в этих системах пакеты передаются и обрабатываются.

CRSF. Согласно техническим данным протокола CRSF, максимальный размер пакета составляет 64 байта.

Структура CRSF-пакета. Любой пакет в этом протоколе имеет следующую структуру:

Элемент Описание
SYNC / Device Address Синхробайт или адрес устройства. Например, 0xC8 для полетного контроллера, 0xEE для передатчика.
LEN / Frame Size Длина последующих данных (тип, полезная нагрузка и CRC). Размер пакета = (LEN + 2) байта.
TYPE Тип фрейма, определяющий формат полезной нагрузки (например, 0x16 для данных RC-каналов).
Payload Полезные данные. Максимальный размер — 60 байт.
CRC Контрольная сумма, рассчитываемая для байтов от TYPE до конца Payload.

Таким образом, максимальный размер достигается при полной загрузке полезных данных: 1 байт (SYNC) + 1 байт (LEN, значение 62) + 60 байт (Payload) + 1 байт (TYPE) + 1 байт (CRC) = 64 байта.

Лимит размера пакета 64 байта очень важен для разработки. При работе с UART на микроконтроллерах необходимо убедиться, что размер приемного буфера драйвера UART составляет не менее 64 байт, чтобы вместить целый пакет без потерь.

ELRS. В спецификациях ExpressLRS не указывается максимальный размер пакета UART в байтах, так как система использует очень компактные и высокооптимизированные пакеты, а пропускная способность зависит от выбранной скорости передачи данных (Packet Rate).

Соответствие скорости пакета и пропускной способности ELRS. Следующая таблица основана на данных функции AirPort, которая преобразует UART-поток в радиоканал и наглядно демонстрирует ограничения пропускной способности ExpressLRS:

Скорость пакета (Packet Rate) Рекомендуемая скорость UART (бод)
50 Гц 115200
100 Гц (Full Res) 400000
150 Гц 420000
200 Гц (Full Res) 921600
250 Гц 1870000
333 Гц (Full Res) 2250000
500 Гц 3750000
1000 Гц (Full Res) 5250000

Почему нет фиксированного размера пакета и как с этим работать. ExpressLRS использует динамическую структуру пакетов, которая меняется в зависимости от режима работы и типа передаваемых данных. В результате ELRS отличается следующими особенностями:

- Компактность радиоканала: основной канал управления (RC link) кодирует до 12 каналов в чрезвычайно компактные пакеты.
- Буферизация UART: при использовании UART данные помещаются в буфер размером 64 байта. Если буфер переполняется, все 64 байта отбрасываются.
- Настройка скорости: для стабильной работы скорость UART на подключенном устройстве (например, полетном контроллере) должна быть равна или ниже значения из таблицы.

Практические рекомендации:

- Для основного канала управления: настройка не требуется, протокол CRSF автоматически оптимизирует передачу данных управления с полетного контроллера.
- Для передачи пользовательских данных: Если вы используете UART для передачи собственных данных, устанавливайте скорость обмена согласно таблице. Для высокоскоростных режимов (500 Гц, 1000 Гц) требуется минимальная скорость UART 921600 бод между радиоаппаратурой и TX-модулем.

[Ссылки]

1. Протокол CRSF.
2. ExpressLRS.