2025-12-25 14:21:26 +08:00
|
|
|
|
---
|
|
|
|
|
|
title: XMOS EQ UART 控制协议与命令集
|
|
|
|
|
|
description: EQ 参数配置与控制的 UART 串口通信协议规范,涵盖帧格式、命令集与字段说明,适用于 XU316 等相关产品。
|
|
|
|
|
|
keywords: EQ, UART, 串口协议, 通信协议, 命令集, XU316,免开发固件, Phaten Audio
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# XMOS EQ UART 控制协议与命令集
|
|
|
|
|
|
--8<-- "common/phaten_xmos_support_img.md"
|
|
|
|
|
|
## 1. 协议基础规范
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 底层通信协议
|
2026-03-09 16:50:37 +08:00
|
|
|
|
EQ Designer使用串口协议进行主机与设备之间的通信。协议基于XU316零代码协议规范,支持EQ参数设置、读取、模式切换等功能。
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
| 参数 | 值 |
|
|
|
|
|
|
| :--- | :--- |
|
|
|
|
|
|
| 波特率 | 115200 bps |
|
|
|
|
|
|
| 数据位 | 8 |
|
|
|
|
|
|
| 奇偶校验 | 无 |
|
|
|
|
|
|
| 停止位 | 1 |
|
|
|
|
|
|
| 数据流控 | 无 |
|
|
|
|
|
|
|
|
|
|
|
|
### 1.2 帧格式与数据传输
|
|
|
|
|
|
|
|
|
|
|
|
**通用帧格式**
|
|
|
|
|
|
所有命令和响应均遵循以下帧格式:
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 字节数 | 说明 |
|
|
|
|
|
|
| :--- | :--- | :--- |
|
|
|
|
|
|
| 帧头 | 2 | 固定为 `0x55 0xAA` |
|
|
|
|
|
|
| 版本 | 1 | 协议版本号 (通常为 `0x00`) |
|
2026-03-09 16:50:37 +08:00
|
|
|
|
| 命令字 | 1 | EQ命令码 (0x40-0x5C) |
|
2025-12-25 14:21:26 +08:00
|
|
|
|
| 数据长度 | 1 | 后续数据的长度 N |
|
|
|
|
|
|
| 数据 | N | 具体的数据内容 |
|
|
|
|
|
|
| 校验和 | 1 | 从帧头开始按字节求和,结果对 256 求余 (Sum % 256) |
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**数据包字段示例**
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 版本 | 协议版本 (0x00)
|
|
|
|
|
|
3 | 1 | 命令 | EQ命令码 (0x40-0x5C)
|
|
|
|
|
|
4 | 1 | 长度 | 数据长度
|
|
|
|
|
|
5-N | N | 数据 | 命令数据
|
|
|
|
|
|
N+1 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-25 14:21:26 +08:00
|
|
|
|
**数据传输说明**
|
|
|
|
|
|
|
|
|
|
|
|
* **字节序**:所有大于1个字节的数据均采用 **小端模式 (Little Endian)** 传输(注:与XU316标准协议的大端序不同,请以本协议为准)。
|
|
|
|
|
|
* **浮点数**:遵循 IEEE 754 float 格式。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 协议命令集
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 命令分类概览
|
|
|
|
|
|
|
|
|
|
|
|
| 命令字 | 命令描述 | 发送方向 | 功能说明 |
|
|
|
|
|
|
| :--- | :--- | :--- | :--- |
|
2026-03-09 16:50:37 +08:00
|
|
|
|
| **0x40** | SET_EQ_MODE | 主机→设备 | 切换EQ模式 |
|
|
|
|
|
|
| **0x41** | GET_EQ_MODE | 主机→设备 | 获取当前EQ模式信息 |
|
|
|
|
|
|
| **0x42** | SET_MODE_GAIN_AND_NAME | 主机→设备 | 设置模式整体增益和名称 |
|
|
|
|
|
|
| **0x43** | SET_EQ_PARAMS | 主机→设备 | 发送EQ参数 |
|
|
|
|
|
|
| **0x44** | GET_EQ_PARAMS | 主机→设备 | 读取EQ参数 |
|
|
|
|
|
|
| **0x45** | GET_DEVICE_INFO | 主机→设备 | 获取设备信息 |
|
|
|
|
|
|
| **0x46** | RESET_EQ_PARAMS | 主机→设备 | 复位EQ参数 |
|
|
|
|
|
|
| **0x47** | GET_EQ_MODE_COUNT | 主机→设备 | 获取EQ模式总数 |
|
|
|
|
|
|
| **0x48** | SET_AND_SAVE_EQ_MODE | 主机→设备 | 设置并保存EQ模式 |
|
|
|
|
|
|
| **0x49** | SET_VOLUME | 主机→设备 | 设置音量级别 |
|
|
|
|
|
|
| **0x4A** | GET_VOLUME | 主机→设备 | 获取音量级别 |
|
|
|
|
|
|
| **0x4B** | GET_LED_INFO | 主机→设备 | 获取LED信息 |
|
|
|
|
|
|
| **0x4C** | SET_LED_SWITCH | 主机→设备 | 设置LED开关 |
|
|
|
|
|
|
| **0x4D** | GET_LED_SWITCH | 主机→设备 | 获取LED开关 |
|
|
|
|
|
|
| **0x4E** | GET_LED_STATUS | 主机→设备 | 获取LED状态 |
|
|
|
|
|
|
| **0x4F** | GET_LED_COUNT | 主机→设备 | 获取LED总数 |
|
|
|
|
|
|
| **0x50** | GET_UAC_MODE_INFO | 主机→设备 | 获取UAC模式信息 |
|
|
|
|
|
|
| **0x51** | SET_UAC_MODE | 主机→设备 | 设置UAC模式 |
|
|
|
|
|
|
| **0x52** | GET_CURRENT_UAC_MODE | 主机→设备 | 获取当前UAC模式 |
|
|
|
|
|
|
| **0x53** | SET_EQ_ENABLE | 主机→设备 | 设置EQ使能开关 |
|
|
|
|
|
|
| **0x54** | GET_EQ_ENABLE | 主机→设备 | 获取EQ使能开关 |
|
|
|
|
|
|
| **0x55** | GET_SAMPLE_FORMAT | 主机→设备 | 获取采样率和格式 |
|
|
|
|
|
|
| **0x56** | SET_GAIN_MODE | 主机→设备 | 设置增益模式 |
|
|
|
|
|
|
| **0x57** | GET_GAIN_MODE | 主机→设备 | 获取增益模式 |
|
|
|
|
|
|
| **0x58** | SET_FILTER_MODE | 主机→设备 | 设置滤波器模式 |
|
|
|
|
|
|
| **0x59** | GET_FILTER_MODE | 主机→设备 | 获取滤波器模式 |
|
|
|
|
|
|
| **0x5A** | SET_GAME_MODE | 主机→设备 | 设置游戏模式 |
|
|
|
|
|
|
| **0x5B** | GET_GAME_MODE | 主机→设备 | 获取游戏模式 |
|
|
|
|
|
|
| **0x5C** | GET_FIRMWARE_VERSION | 主机→设备 | 获取固件版本 |
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 基础功能命令详解
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 3.1 0x40 - SET_EQ_MODE (切换EQ模式)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**功能**: 切换当前EQ模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x40 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-6: 预设模式, 7-9: 用户模式)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**设备端处理**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
- 直接设置 `g_current_eq_mode = data[5]`
|
|
|
|
|
|
- 不进行参数传输或计算
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 3.2 0x41 - GET_EQ_MODE (读取EQ模式信息)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**功能**: 读取EQ模式信息
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x41 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-9: 有效模式值, 0xFF: 获取当前模式信息)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**设备端处理**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
- 如果mode值为0xFF,返回当前模式值、整体增益和模式名称
|
|
|
|
|
|
- 如果mode值为有效模式值(0-9),返回指定模式值、整体增益和模式名称
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x41 | 命令码
|
|
|
|
|
|
4 | 1 | 0x15 | 数据长度 (21字节)
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (当前模式或指定模式)
|
|
|
|
|
|
6-9 | 4 | int32 | 增益值 (范围0到-50dB,有符号整数)
|
|
|
|
|
|
10-25 | 16 | char | 模式名称 (UTF-8编码,16字节)
|
|
|
|
|
|
26 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**使用说明**:
|
|
|
|
|
|
|
|
|
|
|
|
- 发送mode=0xFF时,返回当前激活的EQ模式信息
|
|
|
|
|
|
- 发送mode=0-9时,返回指定模式的增益和名称信息(不切换当前模式)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 3.3 0x42 - SET_MODE_GAIN_AND_NAME (设置模式整体增益和名称)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**功能**: 设置EQ模式整体增益和名称
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x42 | 命令码
|
|
|
|
|
|
4 | 1 | 0x15 | 数据长度 (21字节)
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-9)
|
|
|
|
|
|
6-9 | 4 | int32 | 增益值 (范围0到-50dB,有符号整数)
|
|
|
|
|
|
10-25 | 16 | char | 模式名称 (UTF-8编码,16字节)
|
|
|
|
|
|
26 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**设备端处理**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
1. 解析模式值、增益值和模式名称
|
|
|
|
|
|
2. 设置指定模式的EQ整体增益和名称到所有采样率的左右通道
|
|
|
|
|
|
3. 支持所有采样率:44100, 48000, 88200, 96000, 176400, 192000 Hz
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 3.4 0x43 - SET_EQ_PARAMS (发送EQ参数)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**功能**: 发送单个滤波器的参数
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x43 | 命令码
|
|
|
|
|
|
4 | 1 | 0x13 | 数据长度 (19字节: 1字节模式 + 1字节索引 + 1字节类型 + 4个float参数共16字节)
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-9)
|
|
|
|
|
|
6 | 1 | uint8 | 滤波器Band索引 (0-7)
|
|
|
|
|
|
7 | 1 | uint8 | 滤波器类型
|
|
|
|
|
|
8-11 | 4 | float | 中心频率 (Hz)
|
|
|
|
|
|
12-15 | 4 | float | Q值
|
|
|
|
|
|
16-19 | 4 | float | 带宽 (Hz)
|
|
|
|
|
|
20-23 | 4 | float | 增益 (dB)
|
|
|
|
|
|
24 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**滤波器类型码**:
|
|
|
|
|
|
|
|
|
|
|
|
| 类型码 | 滤波器类型 |
|
|
|
|
|
|
| ------ | ------------- |
|
|
|
|
|
|
| 0x00 | bypass滤波器 |
|
|
|
|
|
|
| 0x01 | 全通滤波器 |
|
|
|
|
|
|
| 0x02 | 峰值滤波器 |
|
|
|
|
|
|
| 0x03 | 低通滤波器 |
|
|
|
|
|
|
| 0x04 | 高通滤波器 |
|
|
|
|
|
|
| 0x05 | 带通滤波器 |
|
|
|
|
|
|
| 0x06 | 带阻滤波器 |
|
|
|
|
|
|
| 0x07 | 陷波滤波器 |
|
|
|
|
|
|
| 0x08 | 恒定Q值滤波器 |
|
|
|
|
|
|
| 0x09 | 低架滤波器 |
|
|
|
|
|
|
| 0x0A | 高架滤波器 |
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
1. 解析参数并存储到所有采样率的对应模式中
|
|
|
|
|
|
2. 调用 `eq_calculate_coefficients_from_params()` 计算系数
|
|
|
|
|
|
3. 存储计算出的系数到所有采样率的对应模式中
|
|
|
|
|
|
4. 自动应用到所有采样率:44100, 48000, 88200, 96000, 176400, 192000 Hz
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 3.5 0x44 - GET_EQ_PARAMS (读取EQ参数)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**功能**: 读取单个滤波器的参数
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x44 | 命令码
|
|
|
|
|
|
4 | 1 | 0x02 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-9)
|
|
|
|
|
|
6 | 1 | uint8 | EQ索引 (0-7)
|
|
|
|
|
|
7 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**响应数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x44 | 命令码
|
|
|
|
|
|
4 | 1 | 0x13 | 数据长度 (19字节: 1字节模式 + 1字节索引 + 1字节类型 + 4个float参数共16字节)
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-9)
|
|
|
|
|
|
6 | 1 | uint8 | 滤波器Band索引 (0-7)
|
|
|
|
|
|
7 | 1 | uint8 | 滤波器类型
|
|
|
|
|
|
8-11 | 4 | float | 中心频率 (Hz)
|
|
|
|
|
|
12-15 | 4 | float | Q值
|
|
|
|
|
|
16-19 | 4 | float | 带宽 (Hz)
|
|
|
|
|
|
20-23 | 4 | float | 增益 (dB)
|
|
|
|
|
|
24 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 3.6 0x45 - GET_DEVICE_INFO (获取设备信息)
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**功能**: 获取设备基本信息
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x45 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**响应数据包格式**:
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x45 | 命令码
|
|
|
|
|
|
4 | 1 | 0x34 | 数据长度 (52字节: 2字节PID + 2字节VID + 16字节产品 + 16字节厂商 + 16字节序列号)
|
|
|
|
|
|
5-6 | 2 | uint16 | 产品ID (PID, 小端序)
|
|
|
|
|
|
7-8 | 2 | uint16 | 厂商ID (VID, 小端序)
|
|
|
|
|
|
9-24 | 16 | char | 产品字符串 (UTF-8编码,16字节)
|
|
|
|
|
|
25-40 | 16 | char | 厂商字符串 (UTF-8编码,16字节)
|
|
|
|
|
|
41-56 | 16 | char | 序列号字符串 (UTF-8编码,16字节)
|
|
|
|
|
|
57 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.7 0x46 - RESET_EQ_PARAMS (复位EQ参数)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 删除客户定制EQ参数并恢复预设参数
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x46 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 模式号 (0-9, 0xFF表示恢复所有包括EQ参数,总体增益,模式名称 )
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x46 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 状态码 (0x00=成功, 0x01=失败)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
1. 删除指定模式在Flash中存储的EQ参数文件
|
|
|
|
|
|
2. 删除增益和模式名称的Flash存储文件
|
|
|
|
|
|
3. 恢复该模式的头文件预设参数
|
|
|
|
|
|
4. 如果模式号为0xFF,则复位所有模式
|
|
|
|
|
|
5. 返回操作状态
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.8 0x47 - GET_EQ_MODE_COUNT (获取EQ模式总数)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 获取预定义加用户模式的总数(不包含禁用模式)
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x47 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x57 | 命令码
|
|
|
|
|
|
4 | 1 | 0x02 | 数据长度 (2字节)
|
|
|
|
|
|
5 | 1 | uint8 | 模式总数 (当前为10,包含0-9共10个模式)
|
|
|
|
|
|
6 | 1 | uint8 | 预定义模式数量 (当前为7,包含0-6共7个预设模式)
|
|
|
|
|
|
7 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.9 0x48 - SET_AND_SAVE_EQ_MODE (设置并保存EQ模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置当前EQ模式并保存到Flash,开机时自动恢复
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x48 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 模式值 (0-9: 0-6预设模式, 7-9用户模式)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 将模式值保存到Flash
|
|
|
|
|
|
- 开机时自动从Flash读取并恢复该模式
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x48 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 状态码 (0x00=成功, 0x01=失败)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.10 0x49 - SET_VOLUME (设置音量级别)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置设备音量级别
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x49 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 音量级别 (0-60: 0=最小音量, 60=最大音量)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明**:
|
|
|
|
|
|
|
|
|
|
|
|
- **音量级别范围:** 0-60(共61级)
|
|
|
|
|
|
- **说明:** 控制设备的输出音量级别
|
|
|
|
|
|
- 0: 最小音量(约-127.5dB)
|
|
|
|
|
|
- 60: 最大音量(0dB)
|
|
|
|
|
|
- 每级约2dB的衰减变化
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 参数会通过现有的定时保存机制自动保存到Flash
|
|
|
|
|
|
- 如果参数超出范围(>60),固件将拒绝设置并返回false
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.11 0x4A - GET_VOLUME (获取音量级别)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取设备当前音量级别
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4A | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4A | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 当前音量级别 (0-60)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.12 0x4B - GET_LED_INFO (获取LED信息)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取LED索引和LED名称
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4B | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7,当前设备只有1个LED,索引为0)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4B | 命令码
|
|
|
|
|
|
4 | 1 | 0x11 | 数据长度 (17字节)
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7)
|
|
|
|
|
|
6-21 | 16 | char | LED名称 (UTF-8编码,16字节)
|
|
|
|
|
|
22 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.13 0x4C - SET_LED_SWITCH (设置LED开关)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置LED开关状态
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4C | 命令码
|
|
|
|
|
|
4 | 1 | 0x02 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7,当前设备只有1个LED,索引为0)
|
|
|
|
|
|
6 | 1 | uint8 | LED开关 (0=OFF关闭, 1=ON开启)
|
|
|
|
|
|
7 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 当LED开关为OFF时,所有LED输出都被禁用,不显示任何LED
|
|
|
|
|
|
- 当LED开关为ON时,LED正常显示
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4C | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 状态码 (0x00=成功, 0x01=失败)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.14 0x4D - GET_LED_SWITCH (获取LED开关)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取LED开关状态
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4D | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7,当前设备只有1个LED,索引为0)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4D | 命令码
|
|
|
|
|
|
4 | 1 | 0x02 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7)
|
|
|
|
|
|
6 | 1 | uint8 | LED开关 (0=OFF关闭, 1=ON开启)
|
|
|
|
|
|
7 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.15 0x4E - GET_LED_STATUS (获取LED状态)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取LED RGB颜色和状态
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4E | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7,当前设备只有1个LED,索引为0)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4E | 命令码
|
|
|
|
|
|
4 | 1 | 0x05 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED索引 (0-7)
|
|
|
|
|
|
6 | 1 | uint8 | R颜色值 (0-255)
|
|
|
|
|
|
7 | 1 | uint8 | G颜色值 (0-255)
|
|
|
|
|
|
8 | 1 | uint8 | B颜色值 (0-255)
|
|
|
|
|
|
9 | 1 | uint8 | LED状态 (0=熄灭, 1=常亮, 2=慢闪, 3=快闪, 4=呼吸)
|
|
|
|
|
|
10 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**LED状态枚举**:
|
|
|
|
|
|
|
|
|
|
|
|
- 0: LED_STATUS_OFF (熄灭)
|
|
|
|
|
|
- 1: LED_STATUS_SOLID (常亮)
|
|
|
|
|
|
- 2: LED_STATUS_SLOW_BLINK (慢闪)
|
|
|
|
|
|
- 3: LED_STATUS_FAST_BLINK (快闪)
|
|
|
|
|
|
- 4: LED_STATUS_BREATHE (呼吸)
|
|
|
|
|
|
|
|
|
|
|
|
**注意**:
|
|
|
|
|
|
|
|
|
|
|
|
- RGB颜色值基于当前LED颜色定义转换(低电平有效)
|
|
|
|
|
|
- LED状态基于当前LED显示模式(常亮/闪烁)判断
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.16 0x4F - GET_LED_COUNT (获取LED总数)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取设备支持的LED总数
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4F | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x4F | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | LED总数 (当前设备为1)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 返回设备支持的LED总数
|
|
|
|
|
|
- 当前设备只有1个LED,所以返回1
|
|
|
|
|
|
- LED索引范围为0到(LED总数-1)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.17 0x50 - GET_UAC_MODE_INFO (获取UAC模式信息)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取UAC模式总数和模式名称列表
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x50 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x50 | 命令码
|
|
|
|
|
|
4 | 1 | 0x11 | 数据长度 (17字节)
|
|
|
|
|
|
5 | 1 | uint8 | UAC模式总数 (当前为2,包含UAC1.0和UAC2.0)
|
|
|
|
|
|
6-13 | 8 | char | 模式0名称 (UTF-8编码,8字节,如"UAC2.0")
|
|
|
|
|
|
14-21 | 8 | char | 模式1名称 (UTF-8编码,8字节,如"UAC1.0")
|
|
|
|
|
|
22 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 返回UAC模式总数(当前为2)
|
|
|
|
|
|
- 返回每个模式的名称(不超过8个字符)
|
|
|
|
|
|
- 模式0对应UAC2.0,模式1对应UAC1.0
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.18 0x51 - SET_UAC_MODE (设置UAC模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置UAC模式(UAC1.0或UAC2.0)
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x51 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | UAC模式值 (0=UAC2.0, 1=UAC1.0)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 设置UAC模式并重启设备
|
|
|
|
|
|
- 注意:设备重启后不会返回响应
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.19 0x52 - GET_CURRENT_UAC_MODE (获取当前UAC模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取当前UAC模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x52 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x52 | 命令码
|
|
|
|
|
|
4 | 1 | 0x09 | 数据长度 (9字节)
|
|
|
|
|
|
5 | 1 | uint8 | 当前UAC模式值 (0=UAC2.0, 1=UAC1.0)
|
|
|
|
|
|
6-13 | 8 | char | 当前UAC模式名称 (UTF-8编码,8字节,如"UAC2.0"或"UAC1.0")
|
|
|
|
|
|
14 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 返回当前UAC模式名称(不超过8个字符)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.20 0x53 - SET_EQ_ENABLE (设置EQ使能开关)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置EQ使能开关(启用/禁用)
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x53 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | EQ使能开关 (0=OFF禁用, 1=ON启用)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 只保存EQ使能状态到Flash(独立文件存储),不影响已保存的模式
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x53 | 命令码
|
|
|
|
|
|
4 | 1 | 0x02 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 状态码 (0x00=成功, 0x01=失败)
|
|
|
|
|
|
6 | 1 | uint8 | 当前EQ使能状态 (0=OFF, 1=ON)
|
|
|
|
|
|
7 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.21 0x54 - GET_EQ_ENABLE (获取EQ使能开关)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取EQ使能开关状态
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x54 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x54 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | EQ使能开关状态 (0=OFF禁用, 1=ON启用)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 返回当前EQ使能开关状态(0=OFF, 1=ON)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.22 0x55 - GET_SAMPLE_FORMAT (获取采样率和格式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取当前采样率和DSD模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x55 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x55 | 命令码
|
|
|
|
|
|
4 | 1 | 0x05 | 数据长度 (5字节)
|
|
|
|
|
|
5-8 | 4 | uint32 | 采样率 (samFreq,小端序,单位:Hz)
|
|
|
|
|
|
9 | 1 | uint8 | DSD模式 (dsdMode: 0=PCM, 1=DOP, 2=Native DSD)
|
|
|
|
|
|
10 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 返回当前采样率(32位无符号整数,小端序,单位:Hz)
|
|
|
|
|
|
- 返回DSD模式(0表示PCM格式,>0表示DSD格式)
|
|
|
|
|
|
- 设备会在采样率或DSD模式发生变化时自动上报此信息(通过UART主动发送)
|
|
|
|
|
|
|
|
|
|
|
|
**自动上报机制**:
|
|
|
|
|
|
|
|
|
|
|
|
- 设备中监控采样率和DSD模式的变化
|
|
|
|
|
|
- 当这些值发生变化时,设备会自动构建0x55响应数据包并通过UART主动发送
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.23 0x56 - SET_GAIN_MODE (设置增益模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置增益模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x56 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 增益模式值 (0=低阻, 1=高阻)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明**:
|
|
|
|
|
|
|
|
|
|
|
|
- **增益模式范围:** 0-1
|
|
|
|
|
|
- **说明:** 控制设备的增益档位
|
|
|
|
|
|
- 0: 低阻模式(适合高灵敏度耳机)
|
|
|
|
|
|
- 1: 高阻模式(适合高阻抗耳机)
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 参数会通过现有的定时保存机制自动保存到Flash
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.24 0x57 - GET_GAIN_MODE (获取增益模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取设备当前增益模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x57 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x57 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 当前增益模式 (0=低阻, 1=高阻)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.25 0x58 - SET_FILTER_MODE (设置滤波器模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置滤波器模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x58 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 滤波器模式值 (0-7: 8种滤波器模式)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明**:
|
|
|
|
|
|
|
|
|
|
|
|
- **滤波器模式范围:** 0-7(共8种模式)
|
|
|
|
|
|
- **说明:** 选择DAC的数字滤波器类型
|
|
|
|
|
|
- 0: Minimum Phase filter (default)
|
|
|
|
|
|
- 1: Linear Phase Apodizing Fast Roll-off filter
|
|
|
|
|
|
- 2: Linear phase fast roll-off filter
|
|
|
|
|
|
- 3: Linear Phase Fast Roll-off low-ripple filter
|
|
|
|
|
|
- 4: Linear phase slow roll-off filter
|
|
|
|
|
|
- 5: Minimum phase fast roll-off filter
|
|
|
|
|
|
- 6: Minimum phase slow roll-off filter
|
|
|
|
|
|
- 7: Minimum Phase Fast Roll-Off Low Dispersion
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 参数会通过现有的定时保存机制自动保存到Flash
|
|
|
|
|
|
- 如果参数超出范围(>7),固件将拒绝设置并返回false
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.26 0x59 - GET_FILTER_MODE (获取滤波器模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取设备当前滤波器模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x59 | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x59 | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 当前滤波器模式 (0-7)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.27 0x5A - SET_GAME_MODE (设置游戏模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 设置游戏模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x5A | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 游戏模式值 (0=无音效, 1=FPS, 2=虚拟7.1)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明**:
|
|
|
|
|
|
|
|
|
|
|
|
- **游戏模式范围:** 0-2
|
|
|
|
|
|
- **说明:** 选择游戏音效模式
|
|
|
|
|
|
- 0: 无音效(标准立体声)
|
|
|
|
|
|
- 1: FPS模式(增强定位感)
|
|
|
|
|
|
- 2: 虚拟7.1(环绕声效果)
|
|
|
|
|
|
|
|
|
|
|
|
**设备端处理**:
|
|
|
|
|
|
|
|
|
|
|
|
- 参数会通过现有的定时保存机制自动保存到Flash
|
|
|
|
|
|
- 如果参数超出范围(>2),固件将拒绝设置并返回false
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.28 0x5B - GET_GAME_MODE (获取游戏模式)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取设备当前游戏模式
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x5B | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x5B | 命令码
|
|
|
|
|
|
4 | 1 | 0x01 | 数据长度
|
|
|
|
|
|
5 | 1 | uint8 | 当前游戏模式 (0=无音效, 1=FPS, 2=虚拟7.1)
|
|
|
|
|
|
6 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 3.29 0x5C - GET_FIRMWARE_VERSION (获取固件版本)
|
|
|
|
|
|
|
|
|
|
|
|
**功能**: 读取设备固件版本号
|
|
|
|
|
|
**方向**: 主机→设备
|
|
|
|
|
|
**请求数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x5C | 命令码
|
|
|
|
|
|
4 | 1 | 0x00 | 数据长度
|
|
|
|
|
|
5 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应数据包格式**:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
字节位置 | 长度 | 内容 | 描述
|
|
|
|
|
|
---------|------|------|------
|
|
|
|
|
|
0 | 1 | 0x55 | 帧头1
|
|
|
|
|
|
1 | 1 | 0xAA | 帧头2
|
|
|
|
|
|
2 | 1 | 0x00 | 版本
|
|
|
|
|
|
3 | 1 | 0x5C | 命令码
|
|
|
|
|
|
4 | 1 | 0x03 | 数据长度 (3字节)
|
|
|
|
|
|
5 | 1 | uint8 | 主版本号 (BCD格式,如0x01表示1)
|
|
|
|
|
|
6 | 1 | uint8 | 次版本号 (BCD格式,如0x00表示0)
|
|
|
|
|
|
7 | 1 | uint8 | 修订版本号 (BCD格式,如0x0C表示12)
|
|
|
|
|
|
8 | 1 | 校验 | 校验和
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**版本号格式说明**:
|
|
|
|
|
|
|
|
|
|
|
|
- 版本号采用BCD(Binary Coded Decimal)格式
|
|
|
|
|
|
- 3个字节分别表示:主版本号、次版本号、修订版本号
|
|
|
|
|
|
- 例如:0x01 0x00 0x0C 表示版本 1.0.12
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 关键特性
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 设备端系数计算
|
|
|
|
|
|
|
|
|
|
|
|
- 主机只发送参数 (fc, Q, bw, gain)
|
|
|
|
|
|
- 设备端根据参数实时计算滤波器系数
|
|
|
|
|
|
- 支持动态bshift计算,确保系数精度
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 参数格式
|
|
|
|
|
|
|
|
|
|
|
|
- **浮点参数**: fc, Q, bw, gain 使用IEEE 754 float格式传输
|
|
|
|
|
|
- **字节序**: 所有多字节数据使用小端序
|
|
|
|
|
|
|
|
|
|
|
|
### 4.3 错误处理
|
|
|
|
|
|
|
|
|
|
|
|
- 数据包长度检查
|
|
|
|
|
|
- 帧头验证
|
|
|
|
|
|
- 参数范围检查
|
|
|
|
|
|
- 滤波器索引边界检查
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
### 4.4 模式管理
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
- 支持10个EQ模式 (0-9: 0-6预设模式, 7-9用户模式 )
|
|
|
|
|
|
- 模式切换时自动清除滤波器状态
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
## 5. 注意事项
|
2025-12-25 14:21:26 +08:00
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
1. **时序要求**: 发送参数后需要等待设备处理完成再发送下一条命令
|
|
|
|
|
|
2. **数据完整性**: 所有8个滤波器的参数都需要发送,即使某些滤波器未使用
|
|
|
|
|
|
3. **模式同步**: 设置模式后需要调用读取模式确保数据同步
|
|
|
|
|
|
4. **错误恢复**: 通信失败时需要重新建立连接并重试
|
|
|
|
|
|
5. **参数验证**: 设备端会验证参数范围,超出范围的值会被限制
|
|
|
|
|
|
6. **校验和计算**: 所有命令都必须包含正确的校验和,校验和为帧头到数据末尾所有字节的累加和取低8位
|