# MR16 - 2.4GHz 无线通信模块 ## 产品简介 **MR16** 是一款高性能 2.4GHz 无线通信模块,基于 **SX1281** 芯片设计,适用于遥控、传感器数据传输等应用场景。 ### 核心特性 | 特性 | 规格 | | ------------ | ------------------ | | **无线芯片** | SX1281 (2.4GHz) | | **主控芯片** | STM32F103C8T6 | | **通信协议** | BLE/LoRa/GFSK/FLRC | | **最大距离** | > 1km (开阔环境) | | **数据速率** | 125bps - 2Mbps | | **用户接口** | UART2 + CLI命令行 | | **显示屏** | 240×135 彩色LCD | | **状态指示** | WS2812 RGB LED | --- ## 数据流 ### TX 端 (发送端) ``` 用户数据 (UART2) ↓ MR16_PackTxBuffer() ← 自动添加 TX_ID ↓ 完整数据包 ↓ SX1281 无线射频发送 ← 自动添加 同步字节 + CRC ``` ### RX 端 (接收端) ``` SX1281 无线接收 ← 自动校验数据包 ↓ 分通道 ← 自动校验数据包TXID (与三个RX_ID之一 匹配) ↓ 输出数据包 ↓ DBUS ``` --- ## 代码结构 ### 文件组织 ``` mr16.c - 主实现文件 (1788行) ├─ [PART 1] 核心功能 (MR16 CORE FUNCTIONS) │ ├─ 无线事件回调 │ ├─ 系统初始化 │ ├─ 主循环 │ └─ 数据包处理 ├─ [PART 2] UI显示 (UI DISPLAY FUNCTIONS) │ ├─ 开机动画 │ ├─ 主界面显示 │ └─ 状态更新 └─ [PART 3] CLI命令 (CLI COMMAND FUNCTIONS) ├─ 帮助文本 ├─ MR16命令处理器 ├─ Radio命令处理器 └─ CLI初始化 ``` ## PART 1: 核心功能模块 ### 1.1 数据格式 (Data Format) #### 可变长度模式 (VARIABLE) - 触发方式: UART 空闲中断 - 长度: 动态,根据实际接收数据 - 适用场景: 不定长数据传输 - 注意:在VARIABLE模式下,数据包属性中的payloadlenth表示可能的最大数据包长度 #### 固定长度模式 (FIXED) - 长度: 预定义 (默认122字节) - 可调范围: 1-123 字节 (纯用户数据) - 适用场景: 固定格式数据,如遥控器 ### 1.2 数据包格式 ``` 完整数据包结构 (最大127字节): ┌─────────┬──────────────────┬─────────┐ │ Header │ User Data │ CRC │ │ 2 bytes │ 1-123 bytes │ 2 bytes │ └─────────┴──────────────────┴─────────┘ ``` #### Header (2字节) - Byte 0: TX_ID 高字节 - Byte 1: TX_ID 低字节 - 用途: 识别发送端,支持多机接收 #### User Data (1-123字节) - 用户纯数据,不包含 Header 和 CRC - VARIABLE 模式: 实际接收长度 - FIXED 模式: 配置的 `fixedLength` 值 - **⚠️ 不同协议的数据长度限制详见下表** #### CRC (2字节) - 算法: CRC16 - 校验范围: Header + User Data - Byte N+2: CRC 高字节 - Byte N+3: CRC 低字节 --- ### **各协议用户数据长度限制** 根据 SX1281 硬件限制,不同协议支持的最大用户数据长度不同: | 协议 | 硬件最大总包长 | 最大用户数据 | |------|---|---| | **FLRC** | 124字节 | **120字节** | | **GFSK** | 252字节 | **248字节** | | **LoRa** | 253字节 | **249字节** | #### 建议将数据包长度留出百分之5左右的裕度确保射频稳定工作 ### 1.3 失控保护 **仅在 RX 端启用** #### 触发条件 - 100ms 未接收到有效数据 #### 安全帧格式 ``` 安全帧结构: ┌─────────┬────────────────────────┬─────────┐ │ Header │ 0xFF 0x00 0xFF 0x00 │ 0x00... │ │ 2 bytes │ 4 bytes (安全标识) │ 填充0 │ └─────────┴────────────────────────┴─────────┘ ``` --- ## PART 2: UI 显示模块 ### 2.1 显示界面 #### 开机动画 (`MR16_UI_PowerON`) - MR16 Logo - "Initializing..." 提示 #### 主界面 (`MR16_UI_Home`) **TX 模式显示:** ``` ┌──────────────────────────────┐ │ MR16 Status [TX] │ ├──────────────────────────────┤ │ Mode: FIXED Power: 10dBm │ │ Radio: FLRC DataLen: 122B│ │ Freq: 2450MHz │ │ TXID: 0x1234 │ └──────────────────────────────┘ ``` **RX 模式显示:** ``` ┌──────────────────────────────┐ │ MR16 Status [RX] │ ├──────────────────────────────┤ │ Mode: FIXED rxcount: │ │ Radio: FLRC ch1: 1234 │ │ Freq: 2450MHz ch2: 567 │ │ rxid: 0x1234 0x5678 0x9ABC │ └──────────────────────────────┘ ``` --- ## PART 3: CLI 命令模块 ### 3.1 MR16 系统命令 ``` mr16 [args] - MR16 系统控制命令 ``` #### 配置管理 - `save` - 保存当前配置到Flash - `get` - 从Flash加载配置 - `reset` - 恢复默认配置 - `mode ` - 设置/查看数据格式 - `fixedlen <1-123>` - 设置用户数据长度(仅FIXED模式) - `power <-18 to +13>` - 设置/查看TX功率(dBm) #### 接收ID配置 - `rxid1 ` - 设置/查看RX ID通道1 - `rxid2 ` - 设置/查看RX ID通道2 - `rxid3 ` - 设置/查看RX ID通道3 - `rxid` - 显示所有三个RX ID #### 操作命令 - `tx` - 启动发送模式 - `rx` - 启动连续接收模式 #### 信息显示 - `show` - 显示所有MR16配置 - `mode help` - 显示模式详细信息 #### 使用示例 ```bash mr16 mode FIXED # 切换到固定长度模式 mr16 fixedlen 32 # 设置用户数据长度为32字节 mr16 power 10 # 设置TX功率为+10dBm mr16 rxid1 0x1234 # 设置RX ID通道1为0x1234 mr16 tx # 启动发送 mr16 rx # 启动接收 ``` #### 重要说明 1. **fixedlen设置的是仅用户数据长度**,不包含总包长度 2. MR16自动添加:Header(2字节) + 用户数据 + CRC(2字节) 3. 有效RX ID范围:0x0001 到 0xFFFE(0x0000和0xFFFF为保留值) --- ### 3.2 Radio 无线命令 ``` radio [args] - SX1281 无线控制命令 ``` #### 基本操作命令 - `mode ` - 更改无线工作模式 - `rffreq ` - 设置RF频率(单位: Hz) - `power ` - 设置TX功率(-18 到 +13 dBm) - `ramptime ` - 设置上升时间: 2, 4, 6, 8, 10, 12, 16, 20 微秒 - `baudrate [index]` - 设置当前模式的波特率 #### 参数配置命令 - `modulation ` - 设置调制参数 - **BLE/GFSK可用字段**: `br_bw`, `modindex`, `shaping` - **LoRa可用字段**: `sf`, `bw`, `cr` - **FLRC可用字段**: `br_bw`, `cr`, `shaping` - `packet ` - 设置数据包参数 - **BLE可用字段**: `ConnectionState`, `CrcField`, `BlePacketType`, `Whitening` - **GFSK可用字段**: `Preamble`, `SyncWordLength`, `SyncWordMatch`, `SyncWord1`, `SyncWord2`, `SyncWord3`, `SyncWord`, `Header`, `Payload`, `Crc`, `Whitening` - **LoRa可用字段**: `Preamble`, `Header`, `Payload`, `Crc`, `InvertIQ` - **FLRC可用字段**: 与GFSK相同(SyncWord最大4字节) #### 详细帮助命令 - `modulation help` - 显示调制参数详细帮助 - `packet help` - 显示数据包参数详细帮助 - `baudrate help` - 显示波特率配置详细信息 #### 使用示例 ```bash radio mode LORA # 切换到LoRa模式 radio rffreq 2400000000 # 设置频率为2.4GHz radio power 10 # 设置TX功率为+10dBm radio baudrate 2 # 为当前模式设置波特率索引2 ``` --- #### 调制参数 (modulation) 完整说明 **br_bw - 比特率与带宽** ``` 0x04 = 2.0Mbps / 2.4MHz 0x28 = 1.6Mbps / 2.4MHz 0x4C = 1.0Mbps / 2.4MHz 0x45 = 1.0Mbps / 1.2MHz 0x70 = 0.8Mbps / 2.4MHz 0x69 = 0.8Mbps / 1.2MHz 0x8D = 0.5Mbps / 1.2MHz 0x86 = 0.5Mbps / 0.6MHz 0xB1 = 0.4Mbps / 1.2MHz 0xAA = 0.4Mbps / 0.6MHz 0xCE = 0.25Mbps / 0.6MHz 0xC7 = 0.25Mbps / 0.3MHz 0xEF = 0.125Mbps / 0.3MHz ``` **modindex - 调制指数** ``` 0 = 0.35 1 = 0.50 2 = 0.75 3 = 1.00 4 = 1.25 5 = 1.50 6 = 1.75 7 = 2.00 8 = 2.25 9 = 2.50 10 = 2.75 11 = 3.00 12 = 3.25 13 = 3.50 14 = 3.75 15 = 4.00 ``` **shaping - 调制整形** ``` 0x00 = OFF (无整形) 0x10 = BT=1.0 (高斯整形) 0x20 = BT=0.5 (高斯整形) ``` ##### LoRa模式参数 **sf - 扩频因子** ``` 0x50 = SF5 0x60 = SF6 0x70 = SF7 0x80 = SF8 0x90 = SF9 0xA0 = SF10 0xB0 = SF11 0xC0 = SF12 ``` **bw - 带宽** ``` 0x34 = 200kHz 0x26 = 400kHz 0x18 = 800kHz 0x0A = 1600kHz ``` **cr - 编码率** ``` 0x01 = 4/5 0x02 = 4/6 0x03 = 4/7 0x04 = 4/8 0x05 = Long Interleaving 4/5 0x06 = Long Interleaving 4/6 0x07 = Long Interleaving 4/7 ``` ##### FLRC模式参数 **br_bw - 比特率与带宽** ``` 0x04 = 2.6Mbps / 2.4MHz 0x28 = 2.08Mbps / 2.4MHz 0x45 = 1.3Mbps / 1.2MHz 0x69 = 1.04Mbps / 1.2MHz 0x86 = 0.65Mbps / 0.6MHz 0xAA = 0.52Mbps / 0.6MHz 0xC7 = 0.325Mbps / 0.3MHz 0xEB = 0.26Mbps / 0.3MHz ``` **cr - 编码率** ``` 0x00 = CR_1/2 0x02 = CR_3/4 0x04 = CR_1/0 ``` **shaping - 调制整形** ``` 0x00 = OFF (无整形) 0x10 = BT=1.0 (高斯整形) 0x20 = BT=0.5 (高斯整形) ``` **使用示例:** ```bash radio modulation br_bw 0x4C # 设置GFSK比特率为1.0Mbps / 2.4MHz radio modulation sf 0x70 # 设置LoRa扩频因子为SF7 radio modulation br_bw 0x45 # 设置FLRC比特率为1.3Mbps / 1.2MHz ``` **注意:** 更改立即生效。使用`radio modulation`查看当前值。 #### 数据包参数 (packet) 详细说明 ##### BLE模式参数 **ConnectionState - 连接状态** ``` 0 = MASTER_SLAVE 1 = ADVERTISER 2 = TX_TEST 3 = RX_TEST 4 = RXTX_TEST ``` **CrcField - CRC字段配置** ``` 0 = OFF 1 = CRC_3B (3字节CRC) ``` **BlePacketType - BLE数据包类型** ``` 0 = PRBS_9 1 = PRBS_15 2 = EYELONG_1_0 3 = EYELONG_0_1 4 = EYESHORT_1_0 5 = EYESHORT_0_1 6 = ALL_1 7 = ALL_0 ``` **Whitening - 白化模式** ``` 0x00 = ON 0x08 = OFF ``` ##### GFSK模式参数 **Preamble - 前导码长度** ``` 0x00 = 4bits 0x10 = 8bits 0x20 = 12bits 0x30 = 16bits 0x40 = 20bits 0x50 = 24bits 0x60 = 28bits 0x70 = 32bits ``` **SyncWordLength - 同步字长度** ``` 0x00 = 1byte 0x02 = 2bytes 0x04 = 3bytes 0x06 = 4bytes 0x08 = 5bytes ``` **SyncWordMatch - 同步字匹配** ``` 0x00 = OFF 0x10 = 1 0x20 = 2 0x30 = 1_2 0x40 = 3 0x50 = 1_3 0x60 = 2_3 0x70 = 1_2_3 ``` **SyncWord1/2/3 - 设置同步字字节** - 格式: `` (例如: 0x12345678) - GFSK最大5字节 - 使用`radio packet SyncWord`显示所有已配置的同步字 **Header - 包头类型** ``` 0x00 = VARIABLE (可变长度) 0x20 = FIXED (固定长度) ``` **Payload - 载荷长度** - 范围: 1-255 字节 **Crc - CRC长度** ``` 0x00 = OFF 0x10 = 1byte 0x20 = 2bytes 0x30 = 3bytes ``` **Whitening - 白化模式** ``` 0x00 = ON 0x08 = OFF ``` ##### LoRa模式参数 **Preamble - 前导码符号数** - 范围: 0-255 **Header - 包头类型** ``` 0x00 = VARIABLE/EXPLICIT (可变长度/显式) 0x80 = FIXED/IMPLICIT (固定长度/隐式) ``` **Payload - 载荷长度** - 范围: 1-255 字节 **Crc - CRC模式** ``` 0x00 = OFF 0x20 = ON ``` **InvertIQ - IQ反转** ``` 0x40 = NORMAL (正常) 0x00 = INVERTED (反转) ``` ##### FLRC模式参数 与GFSK大部分参数相同 **SyncWord1/2/3 - 设置同步字字节** - FLRC最大4字节 **使用示例:** ```bash radio packet Payload 64 # 设置载荷长度为64字节 radio packet Crc 0x20 # 启用2字节CRC radio packet SyncWord1 0x1234 # 设置同步字1为0x1234 radio packet SyncWord # 显示所有同步字 ``` **注意:** 使用`radio packet`不带参数可查看当前参数。 #### 波特率配置 (baudrate) 详细说明 ##### BLE模式波特率 ``` Index 0 = 250 Kbps Index 1 = 500 Kbps Index 2 = 1 Mbps ``` ##### LoRa模式波特率 ``` Index 0 = 216 bps Index 1 = 1 Kbps Index 2 = 5 Kbps Index 3 = 10 Kbps Index 4 = 20 Kbps Index 5 = 61 Kbps Index 6 = 127 Kbps Index 7 = 203 Kbps ``` ##### GFSK模式波特率 ``` Index 0 = 125 Kbps Index 1 = 250 Kbps Index 2 = 500 Kbps Index 3 = 1 Mbps ``` ##### FLRC模式波特率 ``` Index 0 = 130 Kbps Index 1 = 260 Kbps Index 2 = 520 Kbps Index 3 = 1040 Kbps ``` **使用示例:** ```bash radio baudrate # 显示当前所有模式的波特率 radio baudrate 2 # 为当前模式设置波特率索引2 ``` **重要说明:** 1. 波特率索引必须对当前无线模式有效 2. 更高的波特率提供更快的数据速率但会减少传输距离 3. 更低的波特率增加传输距离但会降低数据速率 #### 配置示例 **配置 FLRC模式 :** ```bash radio mode FLRC # 切换到FLRC模式 radio rffreq 2450000000 # 设置频率2450MHz radio power 10 # 设置功率+10dBm radio ramptime 10 # 设置上升时间10us radio baudrate 2 # 设置波特率索引2 (520Kbps) radio modulation br_bw 0x45 # 1.3Mbps / 1.2MHz radio modulation cr 0x00 # 编码率CR_1/2 radio modulation shaping 0x10 # BT=1.0高斯整形 radio packet Preamble 0x30 # 16bits前导码 radio packet Payload 114 # 载荷114字节 radio packet Crc 0x20 # 2字节CRC mr16 mode FIXED # 固定长度模式 mr16 fixedlen 110 # 用户数据110字节 mr16 save # 保存配置 ``` --- ### 3.3 命令特性 - **不区分大小写** - **参数自动解析**: 支持十进制、十六进制 (0x前缀) - **帮助系统**: 所有命令支持 `help` 子命令 - **实时生效**: 参数修改后立即更新硬件 - **自动刷新**: 参数变更后自动更新 LCD 显示 - **手动保存**: 需要手动使用 `mr16 save` 命令写入flash --- ### 默认配置 ```c /* MR16基本参数 */ format = MR16_FORMAT_VARIABLE // 固定长度模式 fixedLength = 110 // 用户数据长度110字节 TX_ID = 0x0001 // 发送端ID RX_ID[0] = 0x0001 // 接收端ID通道1 RX_ID[1] = 0x0002 // 接收端ID通道2 RX_ID[2] = 0x0003 // 接收端ID通道3 RadioRole = RadioRoleTX // 默认发送端模式 /* 射频基本参数 */ radioMode = RADIOMODE_FLRC // FLRC模式 rfFrequency = 2426000000 // 频率2426MHz txOutputPower = 13 // 发射功率+13dBm rampTime = RADIO_RAMP_02_US // 上升时间2us /* 波特率索引 */ baudrate.ble = RF_BAUDRATE_BLE_1M // BLE: 1Mbps baudrate.lora = RF_BAUDRATE_LORA_005K // LoRa: 5Kbps baudrate.gfks = RF_BAUDRATE_GFSK_125K // GFSK: 125Kbps baudrate.flrc = RF_BAUDRATE_FLRC_130K // FLRC: 130Kbps /* BLE调制参数 */ BLE.BitrateBandwidth = GFS_BLE_BR_1_000_BW_2_4 // 1.0Mbps / 2.4MHz BLE.ModulationIndex = GFS_BLE_MOD_IND_0_50 // 调制指数0.50 BLE.ModulationShaping = RADIO_MOD_SHAPING_BT_0_5 // BT=0.5高斯整形 /* BLE数据包参数 */ BLE.BlePacketType = BLE_EYELONG_1_0 // Eye pattern长序列1_0 BLE.ConnectionState = BLE_ADVERTISER // 广播模式 BLE.CrcField = BLE_CRC_3B // 3字节CRC BLE.Whitening = RADIO_WHITENING_ON // 启用白化 /* LoRa调制参数 */ LoRa.SpreadingFactor = LORA_SF12 // 扩频因子SF12 LoRa.Bandwidth = LORA_BW_0200 // 带宽200kHz LoRa.CodingRate = LORA_CR_LI_4_7 // 编码率4/7 (Long Interleaving) /* LoRa数据包参数 */ LoRa.PreambleLength = 12 // 前导码12符号 LoRa.HeaderType = LORA_PACKET_VARIABLE_LENGTH // 可变长度 LoRa.PayloadLength = BUFFER_SIZE // 载荷长度 LoRa.CrcMode = LORA_CRC_ON // 启用CRC LoRa.InvertIQ = LORA_IQ_NORMAL // 正常IQ /* GFSK调制参数 */ GFSK.BitrateBandwidth = GFS_BLE_BR_0_125_BW_0_3 // 0.125Mbps / 0.3MHz GFSK.ModulationIndex = GFS_BLE_MOD_IND_0_50 // 调制指数0.50 GFSK.ModulationShaping = RADIO_MOD_SHAPING_BT_0_5 // BT=0.5高斯整形 /* GFSK数据包参数 */ GFSK.PreambleLength = PREAMBLE_LENGTH_32_BITS // 32bits前导码 GFSK.SyncWordLength = GFS_SYNCWORD_LENGTH_5_BYTE // 5字节同步字 GFSK.SyncWordMatch = RADIO_RX_MATCH_SYNCWORD_1 // 匹配同步字1 GFSK.HeaderType = RADIO_PACKET_VARIABLE_LENGTH // 可变长度 GFSK.PayloadLength = BUFFER_SIZE // 载荷长度 GFSK.CrcLength = RADIO_CRC_3_BYTES // 3字节CRC GFSK.Whitening = RADIO_WHITENING_ON // 启用白化 /* FLRC调制参数 */ FLRC.BitrateBandwidth = FLRC_BR_0_260_BW_0_3 // 0.26Mbps / 0.3MHz FLRC.CodingRate = FLRC_CR_1_2 // 编码率1/2 FLRC.ModulationShaping = RADIO_MOD_SHAPING_BT_1_0 // BT=1.0高斯整形 /* FLRC数据包参数 */ FLRC.PreambleLength = PREAMBLE_LENGTH_32_BITS // 32bits前导码 FLRC.SyncWordLength = FLRC_SYNCWORD_LENGTH_4_BYTE // 4字节同步字 FLRC.SyncWordMatch = RADIO_RX_MATCH_SYNCWORD_1 // 匹配同步字1 FLRC.HeaderType = RADIO_PACKET_VARIABLE_LENGTH // 可变长度 FLRC.PayloadLength = BUFFER_SIZE // 载荷长度 FLRC.CrcLength = RADIO_CRC_3_BYTES // 3字节CRC FLRC.Whitening = RADIO_WHITENING_OFF // 禁用白化 /* 同步字默认值 */ GFSK.SyncWord1 = 0x12 0x34 0x56 0x78 0x9A GFSK.SyncWord2 = 0x23 0x45 0x67 0x89 0xAB GFSK.SyncWord3 = 0x34 0x56 0x78 0x9A 0xBC FLRC.SyncWord1 = 0x12 0x23 0x34 0x45 FLRC.SyncWord2 = 0x56 0x67 0x78 0x89 FLRC.SyncWord3 = 0x9A 0xAB 0xBC 0xCD ``` --- ## 性能指标 | 参数 | 值 | | -------------- | --------------- | | 最大数据包长度 | 127 字节 | | 最大用户数据 | 123 字节 | | DBUS 输出频率 | 71Hz (14ms间隔) | | 失控检测延迟 | 100ms | | UI 刷新频率 | 1Hz (RX模式) | | 命令响应 | <10ms | --- ## ⚠️ 注意事项 ### · 数据长度限制 **根据不同协议,用户数据长度有严格限制:** ``` ┌─────────────────────────────────────────────────────────────────┐ │ 各协议数据长度对照表 │ ├─────────────────────────────────────────────────────────────────┤ │ FLRC: 最大 120 字节 | 推荐 ≤ 110 字节 │ │ GFSK: 最大 248 字节 | 推荐 ≤ 240 字节 │ │ LoRa: 最大 249 字节 | 推荐 ≤ 240 字节 │ └─────────────────────────────────────────────────────────────────┘ ``` ### · ID 配置规则 | 规则 | 说明 | |------|------| | **有效范围** | `0x0001` - `0xFFFE` | | **保留值** | `0x0000` 和 `0xFFFF` (禁用通道) | | **TX_ID** | 发送端唯一标识 | | **RX_ID** | 接收端最多配置3个,自动匹配 | | **多机通信** | 一个TX可以被多个RX接收 一个RX可以接收至多3个TX| ```bash # ❌ 无效配置 mr16 rxid1 0x0000 # 保留值,无效 mr16 rxid1 0xFFFF # 保留值,无效 # ✅ 有效配置 mr16 rxid1 0x1234 # 有效 mr16 rxid2 0x5678 # 有效 mr16 rxid3 0x9ABC # 有效 ``` ### · 失控保护 | 特性 | 说明 | |------|------| | **启用范围** | 仅RX端 | | **触发条件** | 100ms 未接收有效数据 | | **安全帧标识** | `0xFF 0x00 0xFF 0x00` (4字节) | **安全帧示例:** ``` 接收无效 100ms → 自动生成安全帧 ┌─────────┬────────────────────┬──────────────────┐ │ TX_ID │ 0xFF 0x00 0xFF 0x00│ 剩余数据填充0x00 │ │ 2 bytes │ 4 bytes │ 变长 │ └─────────┴────────────────────┴──────────────────┘ ``` **下游应用处理:** ```c // 检测安全帧 if (data[2]==0xFF && data[3]==0x00 && data[4]==0xFF && data[5]==0x00) { // RC失控,执行安全动作 motor_stop(); printf("RC Failsafe Triggered!\n"); } ``` ⚠️ **避免冲突**: 正常数据不应包含连续的 `0xFF 0x00 0xFF 0x00` 模式 ### · 通信要求 > **重要提醒**:发送端和接收端必须配置完全一致,否则无法通信! | 参数 | 命令 | 说明 | 示例 | | ----------------- | ----------------------- | --------------------------- | -------------------------- | | **1. 无线协议** | `radio mode <协议>` | 双方必须使用相同协议 | `radio mode FLRC` | | **2. 波特率** | `radio baudrate <索引>` | 同协议下必须相同 | `radio baudrate 2` | | **3. 调制属性** | `radio modulation ...` | 关键项必须一致 | `radio modulation sf 0x70` | | **4. 数据包属性** | `radio packet ...` | 关键项必须一致/强烈建议一致 | `radio packet Preamble 8` | | **5. 中心频率** | `radio channel ` | 工作频率必须一致 | `radio channel 2450` | | **6. 设备ID** | `mr16 txid/rxid ` | TX端ID = RX端ID | `mr16 txid 0x1234` | > 说明: > > ​ 文档中的 `radio baudrate` 列表为开发者提供的若干示例调制参数预设,便于快速配置。用户也可以通过 `radio modulation` 命令自行精细配置调制属性。为了确保通信成功, **调制属性 (modulation )**和 **包属性()** 必须在发送端和接收端保持一致。 ### --- ## 开发者信息 - **版本**: 2.0 - **最后更新**: 2024-12-09 - **开发团队**: MR16 Development Team ## 相关文件 - `mr16.c` - 主实现文件 - `mr16.h` - 头文件定义 - `config.c` - 配置管理 - `sx1281_driver.c` - SX1281 驱动 - `lcd.c` - LCD 驱动 --- **文档结束**