Files
Wx_BLWConfigTools_V02_Prod/Document/RF_RQ2603 蓝牙通讯协议.md

193 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

# 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 | 有效名称字节长度 N1~12 |
| P1~P(N) | 名称字符ASCII |
> 默认名称:`BLV_RQ_XXXXXXXX`,最多支持 8 字节自定义名称。
**MCU → PC**
| 字段 | 说明 |
| --- | --- |
| Frame_Type | `0x05` |
| P0 | `0x01`:设置成功<br>`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`:设置成功<br>`0x02`:设置失败 |
---
### 3.5 模拟按键触发0x06
**PC → MCU**
| 字段 | 说明 |
| --- | --- |
| Frame_Type | `0x06` |
| P0 | 模拟按键数量 K |
| P1 | 按键状态位图Bit0~Bit7<br>`Bit0=1`键值1按下<br>`Bit1=1`键值2按下<br>`...`<br>`Bit7=1`键值8按下 |
> P0 的值应与 P1 中置 1 的位数一致。
**MCU → PC**
| 字段 | 说明 |
| --- | --- |
| Frame_Type | `0x06` |
| P0 | `0x01`:成功<br>`0x02`:失败 |
---
## 四、关键概念
- **硬件按键**:设备上固定的物理按钮(位置 1~8
- **映射键值**物理按键实际触发的逻辑按键编号1~8映射可配置。
### 功能与读取配置的关系
- 设置按键功能Command `0x02`)作用于 **硬件按键位置**
- `P0` 为当前实际配置的硬件按键数量。
- 读取配置Command `0x04`)返回每个硬件位置当前的映射键值及其功能。
### 其它说明
- 参数区PARA最大 14 字节,需确保单包数据不超限。
### 默认状态
- 蓝牙名称:`BLV_RQ_XXXXXXXX`
- 按键功能默认为“普通按键”0x01
- 按键映射:默认硬件位置 n 映射到键值 n1 对 1 映射)