ELRS(ExpressLRS)接收机协议的数据格式设计围绕其核心目标(低延迟、长距离、高可靠性)展开,主要基于 CRSF(Crossfire Serial Protocol) 协议实现双向通信,同时兼容SBUS、PWM等输出格式。以下从数据帧结构、编码方式、校验机制及版本兼容性四个维度进行系统分析:
一、数据帧结构
ELRS的核心数据格式遵循 CRSF协议规范,其帧结构分为通用帧和扩展帧两类,均采用二进制串行传输(UART接口,波特率420kbps)。
1. 通用帧结构
字段 | 长度(字节) | 描述 |
---|---|---|
设备地址(Device Address) | 1 | 目标设备地址(如广播地址0x00、飞控地址0xC8等) |
帧长度(Frame Size) | 1 | 包含类型、载荷及CRC的总字节数(不含地址与长度字段) |
帧类型(Frame Type) | 1 | 标识数据类型(如0x16=遥控通道,0x1E=链路统计) |
有效载荷(Payload) | 可变 | 具体数据内容(长度由帧长度决定) |
CRC校验码 | 1 | 基于多项式0xD5的CRC-8校验值,覆盖地址外的所有字段 |
示例:遥控通道数据帧(Type=0x16)
载荷结构:16个通道数据,每通道11位(共22字节),按Big-Endian排列
[Ch1低8位][Ch1高3位 + Ch2低5位][Ch2高6位 + Ch3低2位]…
分辨率:前4通道为10位(0-1023),其余可配置为8/10位
2. 扩展帧结构
用于传输复杂数据(如GPS、姿态信息),在通用帧基础上增加子协议标识:
扩展头:1字节标识子类型(如0x02=GPS数据)
扩展载荷:结构化数据(如GPS帧包含经纬度、速度、海拔)
二、编码方式与调制技术
1. 物理层编码
LoRa调制:采用Semtech SX1280(2.4GHz)或SX127x(915MHz)射频芯片,使用LoRa扩频技术提升抗干扰性与传输距离
FLRC模式:高速率(500Hz/1000Hz),低延迟但距离较短
DVDA模式:重复发送数据包(如D250=重复2次),增强复杂环境可靠性
频率捷变:基于密码短语(Bind Phrase)生成跳频序列,避免信道冲突
2. 协议层编码
纠错编码(FEC) :添加冗余比特,允许接收端自动修复少量误码
多路径传输:关键数据通过多条路径发送,降低丢包率
三、校验机制
采用 双重校验策略 确保数据完整性:
CRC-8校验
多项式:0xD5(标准CRC-8-D5算法)
覆盖范围:从帧长度到载荷结束的所有字节
计算示例(Python):
def crc8_d5(data):
crc = 0
for byte in data:
crc ^= byte
for _ in range(8):
crc = (crc << 1) ^ 0xD5 if (crc & 0x80) else crc << 1
return crc & 0xFF
数据包序号验证:每个数据包携带序列号,接收端检测丢包并触发重传
四、版本兼容性差异
ELRS协议迭代中,数据格式兼容性主要受固件版本影响:
版本 | 关键变更与兼容性说明 |
---|---|
ELRS V2.x | – 新增SBUS输出(Type=0x00),兼容传统飞控 – 引入PWM多通道映射(通过WiFi配置) |
ELRS V3.0+ | – 移除STM32硬件支持,仅保留ESP32/ESP8285平台 – CRSF帧扩展遥测字段(如电池电压结构优化) |
跨版本兼容 | – 发射端与接收端固件需严格一致,否则绑定失败 – 旧版硬件(如STM32)最高支持V3.5 |
五、实际应用建议
配置优化
通用场景:500Hz刷新率 + 100mW功率,平衡延迟与能耗
远距离场景:启用DVDA模式(如D250) + LoRa调制
调试工具
使用ExpressLRS Configurator解析CRSF数据流
通过Lua脚本实时调整数据包速率与功率
ELRS通过紧凑的帧结构(最小帧仅4字节)、高效的纠错编码与严格的版本管理,实现了无人机领域极致的3-7ms端到端延迟。其开源生态持续演进,未来将支持MAVLink等协议扩展应用场景。