# RF_RQ2603 蓝牙通讯协议 ## 一、设备与通讯基础 - **主控蓝牙模块**:清月 BT201 (型号:KT1025A) - **通讯模式**:BLE 透传模式 - **默认 BLE 名称**:BT201-BLE - **BLE 单包最大数据**:20 Byte - **串口参数 (MCU ↔ 蓝牙模块)**:115200, 8N1 ## 二、数据帧格式 所有数据包遵循以下结构: | 字节位置 | 字段 | 长度 | 说明 | | --- | --- | --- | --- | | B0~B1 | Head (帧头) | 2 | 固定为 `0xDD 0xD0` | | B2 | Len (长度) | 1 | 整包总字节数(包含 Head 和 CRC) | | B3~B4 | CRC (校验) | 2 | CRC16;计算时此处填 `0x00` | | B5 | Frame_Type (命令字) | 1 | 指令代码 | | B6~B19 | PARA (参数) | ≤14 | 指令相关参数(可变长) | > **注意** > - `Len`:从 B0 到包尾的总字节数。 > - `CRC` 计算范围:B0/B1/B2/B5/B6…(包尾),计算时 **B3~B4 需填 0x00**。 ## 三、指令集明细 ### 3.1 读取版本号(0x01) **PC → MCU** | 字段 | 值 | | --- | --- | | Frame_Type | `0x01` | | P0 | `0x01`(读取) | **MCU → PC** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x01` | | P0 | 软件版本号 | | P1 | 硬件版本号 | --- ### 3.2 设置蓝牙名称(0x05) **PC → MCU** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x05` | | P0 | 有效名称字节长度 N(1~12) | | P1~P(N) | 名称字符(ASCII) | > 默认名称:`BLV_RQ_XXXXXXXX`,最多支持 8 字节自定义名称。 **MCU → PC** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x05` | | P0 | `0x01`:设置成功
`0x02`:设置失败 | --- ### 3.3 读取按键配置(0x04) **PC → MCU** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x04` | | P0 | `0x01`(读取) | **MCU → PC** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x04` | | P0 | 硬件按键总数(0x01~0x08) | | P1~P8 | 硬件按键 1~8 配置(每项 1 字节) | **按键配置字节结构** - Bit0~3:映射键值(0x1~0x8) - Bit4~7:按键功能 **按键功能码(Bit4~7)** - `0x00`:不设置(保持原功能) - `0x01`:普通按键 - `0x02`:清理按键(带二次确认) - `0x03`:投诉按键(带二次确认) - `0x04~0x0F`:预留/其他功能 --- ### 3.4 设置按键配置(0x02) **PC → MCU** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x02` | | P0 | 硬件按键数量(`0x01~0x08`) | | P1 | 按键1功能 | | P2 | 按键2功能 | | P3 | 按键3功能 | | P4 | 按键4功能 | | P5 | 按键5功能 | | P6 | 按键6功能 | | P7 | 按键7功能 | | P8 | 按键8功能 | > 说明: > - `P0` 为实际需要配置的硬件按键数量 `N` > - 只需发送前 `N+1` 个字节(`P0~PN`) > - 例如:`P0=0x04`(4个按键),则只需发送 `P0, P1, P2, P3, P4` 共 5 个字节 > - 未使用的 `P5~P8` 可省略 **按键功能码定义** | 功能码 | 功能名称 | 行为说明 | | --- | --- | --- | | `0x00` | 不设置 | 保持该按键原有功能不变 | | `0x01` | 普通按键 | 标准按键功能,按下即触发 | | `0x02` | 清理按键 | 带二次确认的功能按键 | | `0x03` | 投诉按键 | 带二次确认的功能按键 | | `0x04` | 功能4 | 预留功能4 | | `0x05` | 功能5 | 预留功能5 | | `0x06` | 功能6 | 预留功能6 | | `0x07` | 功能7 | 预留功能7 | | `0x08` | 功能8 | 预留功能8 | | `0x09` | 功能9 | 预留功能9 | | `0x0A` | 功能10 | 预留功能10 | | `0x0B` | 功能11 | 预留功能11 | | `0x0C` | 功能12 | 预留功能12 | | `0x0D` | 功能13 | 预留功能13 | | `0x0E` | 功能14 | 预留功能14 | | `0x0F` | 功能15 | 预留功能15 | **MCU → PC** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x02` | | P0 | `0x01`:设置成功
`0x02`:设置失败 | --- ### 3.5 模拟按键触发(0x06) **PC → MCU** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x06` | | P0 | 模拟按键数量 K | | P1 | 按键状态位图(Bit0~Bit7):
`Bit0=1`:键值1按下
`Bit1=1`:键值2按下
`...`
`Bit7=1`:键值8按下 | > P0 的值应与 P1 中置 1 的位数一致。 **MCU → PC** | 字段 | 说明 | | --- | --- | | Frame_Type | `0x06` | | P0 | `0x01`:成功
`0x02`:失败 | --- ## 四、关键概念 - **硬件按键**:设备上固定的物理按钮(位置 1~8)。 - **映射键值**:物理按键实际触发的逻辑按键编号(1~8),映射可配置。 ### 功能与读取配置的关系 - 设置按键功能(Command `0x02`)作用于 **硬件按键位置**。 - `P0` 为当前实际配置的硬件按键数量。 - 读取配置(Command `0x04`)返回每个硬件位置当前的映射键值及其功能。 ### 其它说明 - 参数区(PARA)最大 14 字节,需确保单包数据不超限。 ### 默认状态 - 蓝牙名称:`BLV_RQ_XXXXXXXX` - 按键功能:默认为“普通按键”(0x01) - 按键映射:默认硬件位置 n 映射到键值 n(1 对 1 映射)