EQ与音效控制命令¶
命令集定位¶
适用范围
本页收录 EQ 与音效控制类业务命令,共 31 条(15 条在用+16 条已停用·码点保留),同一功能的命令在两个传输通道上各有一套命令码(HID码 = UART码 + 0x4A),语义一一对应:
- UART 串口格式(命令字 0x40-0x5E):小端帧,帧格式见 EQ串口基础协议
- USB HID 格式(命令头 0x8A-0xA6,段数命令为 0xB3/0xB4——0xA7 起 HID 侧已用于固件升级命令,故不遵循 +0x4A 映射):64字节包,包结构见 USB HID基础协议
本页内容与各产品规格书「产品控制命令」章节同源维护。不同产品固件支持的命令子集可能不同,以产品规格书为准。
命令一览¶
| UART命令字 | HID命令头 | 命令名称 | 功能 |
|---|---|---|---|
| 0x40 | 0x8A | SET_EQ_MODE | 切换EQ模式 |
| 0x41 | 0x8B | GET_EQ_MODE | 读取EQ模式信息 |
| 0x42 | 0x8C | SET_MODE_GAIN_AND_NAME | 设置模式整体增益和名称 |
| 0x43 | 0x8D | SET_EQ_PARAMS | 发送EQ参数 |
| 0x44 | 0x8E | GET_EQ_PARAMS | 读取EQ参数 |
| 0x45 | 0x8F | GET_DEVICE_INFO | 获取设备信息 |
| 0x46 | 0x90 | RESET_EQ_PARAMS | 复位EQ参数 |
| 0x47 | 0x91 | GET_EQ_MODE_COUNT | 获取EQ模式总数 |
| 0x48 | 0x92 | SET_AND_SAVE_EQ_MODE | 设置并保存EQ模式 |
| 0x49 | 0x93 | SET_VOLUME | 设置音量级别(已停用) |
| 0x4A | 0x94 | GET_VOLUME | 获取音量级别(已停用) |
| 0x4B | 0x95 | GET_LED_INFO | 获取LED信息(已停用) |
| 0x4C | 0x96 | SET_LED_SWITCH | 设置LED开关(已停用) |
| 0x4D | 0x97 | GET_LED_SWITCH | 获取LED开关(已停用) |
| 0x4E | 0x98 | GET_LED_STATUS | 获取LED状态(已停用) |
| 0x4F | 0x99 | GET_LED_COUNT | 获取LED总数(已停用) |
| 0x50 | 0x9A | GET_UAC_MODE_INFO | 获取UAC模式信息(已停用) |
| 0x51 | 0x9B | SET_UAC_MODE | 设置UAC模式(已停用) |
| 0x52 | 0x9C | GET_CURRENT_UAC_MODE | 获取当前UAC模式(已停用) |
| 0x53 | 0x9D | SET_EQ_ENABLE | 设置EQ使能开关 |
| 0x54 | 0x9E | GET_EQ_ENABLE | 获取EQ使能开关 |
| 0x55 | 0x9F | GET_SAMPLE_FORMAT | 获取采样率和格式 |
| 0x56 | 0xA0 | SET_GAIN_MODE | 设置增益模式(已停用) |
| 0x57 | 0xA1 | GET_GAIN_MODE | 获取增益模式(已停用) |
| 0x58 | 0xA2 | SET_FILTER_MODE | 设置滤波器模式(已停用) |
| 0x59 | 0xA3 | GET_FILTER_MODE | 获取滤波器模式(已停用) |
| 0x5A | 0xA4 | SET_GAME_MODE | 设置游戏模式(已停用) |
| 0x5B | 0xA5 | GET_GAME_MODE | 获取游戏模式(已停用) |
| 0x5C | 0xA6 | GET_FIRMWARE_VERSION | 获取固件版本 |
| 0x5D | 0xB3 | SET_EQ_BAND_COUNT | 设置EQ段数 |
| 0x5E | 0xB4 | GET_EQ_BAND_COUNT | 获取EQ段数 |
已停用命令(码点保留)¶
以下命令已停用,XU316不再响应,码点保留防止新命令复用,请勿在新的上位机/MCU程序中使用:
| 命令字 | 原功能 | 停用原因 |
|---|---|---|
| 0x49-0x4A | 设置/获取音量级别 | 功能未接线物理层,音量由系统现有音量通道管理 |
| 0x4B-0x4F | LED信息/开关/状态/总数查询 | 功能未接线物理层 |
| 0x50-0x52 | UAC模式查询/切换 | 与标准协议的模式切换机制 (0x03/0x23/0x04) 冗余 |
| 0x56-0x5B | 增益/滤波/游戏模式 设置与查询 | 功能未接线物理层——DAC由MCU控制,增益/滤波切换在MCU侧实现;游戏模式UAC2镜像已关闭 |
历史参考
已停用命令的字节级格式仍保留在下方命令详解中(标注【已停用】),仅供维护旧上位机程序时参考。
命令详解¶
以下每条命令先给出 UART 串口格式,再给出 USB HID 格式,语义一致。
切换EQ模式(SET_EQ_MODE,UART 0x40 / HID 0x8A)¶
UART 串口格式(命令字 0x40):
功能: 切换当前EQ模式
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
设备端处理:
- 直接设置
g_current_eq_mode = data[5] - 不进行参数传输或计算
USB HID 格式(命令头 0x8A):
功能说明: 切换当前的 EQ 模式
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8A |
| 3 | 1 | mode | 模式值(0-6 为预设模式,7-9 为用户模式) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
读取EQ模式信息(GET_EQ_MODE,UART 0x41 / HID 0x8B)¶
UART 串口格式(命令字 0x41):
功能: 读取EQ模式信息
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
设备端处理:
- 如果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时,返回指定模式的增益和名称信息(不切换当前模式)
USB HID 格式(命令头 0x8B):
功能说明: 获取当前模式值、整体增益与模式名称
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8B |
| 3 | 1 | mode | 模式值(0-9: 指定模式;0xFF: 获取当前模式信息) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8B(回显) |
| 3 | 1 | mode | 当前模式值 |
| 4-7 | 4 | gain | 整体增益(int32, 小端序,范围 -50dB ~ 0dB) |
| 8-23 | 16 | name | 模式名称(UTF-8 字符串) |
| 24-63 | 40 | reserved | 保留字段(填充0) |
使用说明:
- 发送
mode = 0xFF时,返回当前激活的 EQ 模式信息 - 发送
mode = 0-9时,返回指定模式的增益与名称(不切换当前模式)
设置模式整体增益和名称(SET_MODE_GAIN_AND_NAME,UART 0x42 / HID 0x8C)¶
UART 串口格式(命令字 0x42):
功能: 设置EQ模式整体增益和名称
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
设备端处理:
- 解析模式值、增益值和模式名称
- 设置指定模式的EQ整体增益和名称到所有采样率的左右通道
- 支持所有采样率:44100, 48000, 88200, 96000, 176400, 192000 Hz
USB HID 格式(命令头 0x8C):
功能说明: 设置目标模式的整体增益和名称
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8C |
| 3 | 1 | mode | 目标模式值(0-9) |
| 4-7 | 4 | gain | 整体增益(int32, 小端序,范围 -50dB ~ 0dB) |
| 8-23 | 16 | name | 模式名称(UTF-8 字符串) |
| 24-63 | 40 | reserved | 保留字段(填充0) |
发送EQ参数(SET_EQ_PARAMS,UART 0x43 / HID 0x8D)¶
UART 串口格式(命令字 0x43):
功能: 发送单个滤波器的参数
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 高架滤波器 |
设备端处理:
- 解析参数并存储到所有采样率的对应模式中
- 调用
eq_calculate_coefficients_from_params()计算系数 - 存储计算出的系数到所有采样率的对应模式中
- 自动应用到所有采样率:44100, 48000, 88200, 96000, 176400, 192000 Hz
USB HID 格式(命令头 0x8D):
功能说明: 发送单个滤波器的参数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8D |
| 3 | 1 | mode | 模式值(0-9) |
| 4 | 1 | band | 滤波器索引(0-7) |
| 5 | 1 | type | 滤波器类型码 |
| 6-9 | 4 | freq | 中心频率 Hz(float, 小端序) |
| 10-13 | 4 | q | Q 值(float, 小端序) |
| 14-17 | 4 | bw | 带宽 Hz(float, 小端序) |
| 18-21 | 4 | gain | 增益 dB(float, 小端序) |
| 22-63 | 42 | reserved | 保留字段(填充0) |
滤波器类型码:
| 代码 | 类型 | 代码 | 类型 |
|---|---|---|---|
| 0x00 | Bypass | 0x06 | 带阻(Band Reject) |
| 0x01 | 全通(All Pass) | 0x07 | 陷波(Notch) |
| 0x02 | 峰值(Peak) | 0x08 | 恒定Q(Constant Q) |
| 0x03 | 低通(Low Pass) | 0x09 | 低架(Low Shelf) |
| 0x04 | 高通(High Pass) | 0x0A | 高架(High Shelf) |
| 0x05 | 带通(Band Pass) |
数值格式说明:
浮点数与字节序
- 所有浮点数遵循 IEEE 754 float,采用小端序
- 所有多字节整数均采用小端序(Little Endian)
读取EQ参数(GET_EQ_PARAMS,UART 0x44 / HID 0x8E)¶
UART 串口格式(命令字 0x44):
功能: 读取单个滤波器的参数
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
响应数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
USB HID 格式(命令头 0x8E):
功能说明: 读取指定滤波器的参数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8E |
| 3 | 1 | mode | 模式值(0-9) |
| 4 | 1 | band | 滤波器索引(0-7) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8E(回显) |
| 3 | 1 | mode | 模式值 |
| 4 | 1 | band | 滤波器索引 |
| 5 | 1 | type | 滤波器类型码 |
| 6-9 | 4 | freq | 中心频率 Hz(float, 小端序) |
| 10-13 | 4 | q | Q 值(float, 小端序) |
| 14-17 | 4 | bw | 带宽 Hz(float, 小端序) |
| 18-21 | 4 | gain | 增益 dB(float, 小端序) |
| 22-63 | 41 | reserved | 保留字段(填充0) |
获取设备信息(GET_DEVICE_INFO,UART 0x45 / HID 0x8F)¶
UART 串口格式(命令字 0x45):
功能: 获取设备基本信息
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
0 | 1 | 0x55 | 帧头1
1 | 1 | 0xAA | 帧头2
2 | 1 | 0x00 | 版本
3 | 1 | 0x45 | 命令码
4 | 1 | 0x00 | 数据长度
5 | 1 | 校验 | 校验和
响应数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
USB HID 格式(命令头 0x8F):
功能说明: 获取设备的基本标识信息
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8F |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x8F(回显) |
| 3-4 | 2 | pid | 产品ID(uint16, 小端序) |
| 5-6 | 2 | vid | 厂商ID(uint16, 小端序) |
| 7-22 | 16 | product | 产品字符串(UTF-8) |
| 23-38 | 16 | vendor | 厂商字符串(UTF-8) |
| 39-54 | 16 | sn | 序列号字符串(UTF-8) |
| 55-63 | 9 | reserved | 保留字段(填充0) |
复位EQ参数(RESET_EQ_PARAMS,UART 0x46 / HID 0x90)¶
UART 串口格式(命令字 0x46):
功能: 删除客户定制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 | 校验 | 校验和
设备端处理:
- 删除指定模式在Flash中存储的EQ参数文件
- 删除增益和模式名称的Flash存储文件
- 恢复该模式的头文件预设参数
- 如果模式号为0xFF,则复位所有模式
- 返回操作状态
USB HID 格式(命令头 0x90):
功能说明: 复位指定模式或全部模式的 EQ 参数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x90 |
| 3 | 1 | mode | 模式号(0-9,0xFF 表示复位所有模式) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x90(回显) |
| 3 | 1 | status | 状态码(0x00=成功, 0x01=失败) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
获取EQ模式总数(GET_EQ_MODE_COUNT,UART 0x47 / HID 0x91)¶
UART 串口格式(命令字 0x47):
功能: 获取预定义加用户模式的总数(不包含禁用模式)
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 0x47 | 命令码
4 | 1 | 0x02 | 数据长度 (2字节)
5 | 1 | uint8 | 模式总数 (当前为10,包含0-9共10个模式)
6 | 1 | uint8 | 预定义模式数量 (当前为7,包含0-6共7个预设模式)
7 | 1 | 校验 | 校验和
USB HID 格式(命令头 0x91):
功能说明: 获取 EQ 模式总数与预定义模式数量(不包含禁用模式)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x91 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x91(回显) |
| 3 | 1 | total | 模式总数(示例:包含 0-9 共 10 个模式) |
| 4 | 1 | preset_total | 预定义模式数量(示例:包含 0-6 共 7 个预设模式) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
设置并保存EQ模式(SET_AND_SAVE_EQ_MODE,UART 0x48 / HID 0x92)¶
UART 串口格式(命令字 0x48):
功能: 设置当前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 | 校验 | 校验和
USB HID 格式(命令头 0x92):
功能说明: 设置当前 EQ 模式并保存到 Flash,开机时自动恢复
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x92 |
| 3 | 1 | mode | 模式值(0-6: 预设模式, 7-9: 用户模式) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x92(回显) |
| 3 | 1 | status | 状态码(0x00=成功, 0x01=失败) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
设置音量级别(SET_VOLUME,UART 0x49 / HID 0x93)【已停用·码点保留】¶
UART 串口格式(命令字 0x49):
功能: 设置设备音量级别
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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
USB HID 格式(命令头 0x93):
功能说明: 设置设备输出音量级别
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x93 |
| 3 | 1 | volume | 音量级别(0-60) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
参数说明:
- 音量级别范围:0-60(共61级)
- 0:最小音量(约 -127.5dB)
- 60:最大音量(0dB)
- 每级约2dB的衰减变化
设备端处理: - 参数会通过现有的定时保存机制自动保存到Flash - 如果参数超出范围(>60),固件将拒绝设置并返回false
返回值: 无直接返回值。如需确认音量是否设置成功,请使用 GET_VOLUME (0x94) 命令读取。
获取音量级别(GET_VOLUME,UART 0x4A / HID 0x94)【已停用·码点保留】¶
UART 串口格式(命令字 0x4A):
功能: 读取设备当前音量级别
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
USB HID 格式(命令头 0x94):
功能说明: 读取设备当前音量级别
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x94 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x94(回显) |
| 3 | 1 | volume | 当前音量级别(0-60) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
获取LED信息(GET_LED_INFO,UART 0x4B / HID 0x95)【已停用·码点保留】¶
UART 串口格式(命令字 0x4B):
功能: 读取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 | 校验 | 校验和
USB HID 格式(命令头 0x95):
功能说明: 读取 LED 索引与 LED 名称
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x95 |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x95(回显) |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4-19 | 16 | led_name | LED 名称(UTF-8 字符串) |
| 20-63 | 44 | reserved | 保留字段(填充0) |
设置LED开关(SET_LED_SWITCH,UART 0x4C / HID 0x96)【已停用·码点保留】¶
UART 串口格式(命令字 0x4C):
功能: 设置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 | 校验 | 校验和
USB HID 格式(命令头 0x96):
功能说明: 设置 LED 开关状态
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x96 |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4 | 1 | onoff | LED 开关(0=OFF, 1=ON) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x96(回显) |
| 3 | 1 | status | 状态码(0x00=成功, 0x01=失败) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
获取LED开关(GET_LED_SWITCH,UART 0x4D / HID 0x97)【已停用·码点保留】¶
UART 串口格式(命令字 0x4D):
功能: 读取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 | 校验 | 校验和
USB HID 格式(命令头 0x97):
功能说明: 读取 LED 开关状态
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x97 |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x97(回显) |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4 | 1 | onoff | LED 开关(0=OFF, 1=ON) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
获取LED状态(GET_LED_STATUS,UART 0x4E / HID 0x98)【已停用·码点保留】¶
UART 串口格式(命令字 0x4E):
功能: 读取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显示模式(常亮/闪烁)判断
USB HID 格式(命令头 0x98):
功能说明: 读取 LED 的 RGB 颜色与显示状态
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x98 |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x98(回显) |
| 3 | 1 | led_index | LED 索引(0-7) |
| 4 | 1 | r | R 颜色值(0-255) |
| 5 | 1 | g | G 颜色值(0-255) |
| 6 | 1 | b | B 颜色值(0-255) |
| 7 | 1 | led_status | LED 状态(0=熄灭, 1=常亮, 2=慢闪, 3=快闪, 4=呼吸) |
| 8-63 | 56 | reserved | 保留字段(填充0) |
LED 状态枚举: - 0: LED_STATUS_OFF (熄灭) - 1: LED_STATUS_SOLID (常亮) - 2: LED_STATUS_SLOW_BLINK (慢闪) - 3: LED_STATUS_FAST_BLINK (快闪) - 4: LED_STATUS_BREATHE (呼吸)
Note
- RGB颜色值基于当前LED颜色定义转换(低电平有效)
- LED状态基于当前LED显示模式(常亮/闪烁)判断
获取LED总数(GET_LED_COUNT,UART 0x4F / HID 0x99)【已停用·码点保留】¶
UART 串口格式(命令字 0x4F):
功能: 读取设备支持的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)
USB HID 格式(命令头 0x99):
功能说明: 读取设备支持的 LED 总数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x99 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x99(回显) |
| 3 | 1 | led_total | LED 总数 |
| 4-63 | 60 | reserved | 保留字段(填充0) |
获取UAC模式信息(GET_UAC_MODE_INFO,UART 0x50 / HID 0x9A)【已停用·码点保留】¶
UART 串口格式(命令字 0x50):
功能: 读取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
USB HID 格式(命令头 0x9A):
功能说明: 读取 UAC 模式数量与名称列表
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9A |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9A(回显) |
| 3 | 1 | count | UAC 模式总数(示例:2) |
| 4-11 | 8 | name0 | 模式0名称(UTF-8,最大8字节) |
| 12-19 | 8 | name1 | 模式1名称(UTF-8,最大8字节) |
| 20-63 | 44 | reserved | 保留字段(填充0) |
设置UAC模式(SET_UAC_MODE,UART 0x51 / HID 0x9B)【已停用·码点保留】¶
UART 串口格式(命令字 0x51):
功能: 设置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模式并重启设备
- 注意:设备重启后不会返回响应
USB HID 格式(命令头 0x9B):
功能说明: 设置 UAC 模式(UAC1.0/UAC2.0)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9B |
| 3 | 1 | uac_mode | UAC 模式值(0=UAC2.0, 1=UAC1.0) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
设备端处理: - 注意:设备重启后不会返回响应
获取当前UAC模式(GET_CURRENT_UAC_MODE,UART 0x52 / HID 0x9C)【已停用·码点保留】¶
UART 串口格式(命令字 0x52):
功能: 读取当前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个字符)
USB HID 格式(命令头 0x9C):
功能说明: 读取当前 UAC 模式与名称
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9C |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9C(回显) |
| 3 | 1 | uac_mode | 当前 UAC 模式值(0=UAC2.0, 1=UAC1.0) |
| 4-11 | 8 | name | 当前 UAC 模式名称(UTF-8,最大8字节) |
| 12-63 | 52 | reserved | 保留字段(填充0) |
设置EQ使能开关(SET_EQ_ENABLE,UART 0x53 / HID 0x9D)¶
UART 串口格式(命令字 0x53):
功能: 设置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 | 校验 | 校验和
USB HID 格式(命令头 0x9D):
功能说明: 设置 EQ 使能开关(启用/禁用)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9D |
| 3 | 1 | enable | EQ 使能开关(0=OFF, 1=ON) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9D(回显) |
| 3 | 1 | status | 状态码(0x00=成功, 0x01=失败) |
| 4 | 1 | enable | 当前 EQ 使能状态(0=OFF, 1=ON) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
获取EQ使能开关(GET_EQ_ENABLE,UART 0x54 / HID 0x9E)¶
UART 串口格式(命令字 0x54):
功能: 读取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)
USB HID 格式(命令头 0x9E):
功能说明: 读取 EQ 使能开关状态
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9E |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9E(回显) |
| 3 | 1 | enable | EQ 使能开关状态(0=OFF, 1=ON) |
| 4 | 1 | saved_mode | 保存的模式值(0-9,0xFF 表示未保存) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
获取采样率和格式(GET_SAMPLE_FORMAT,UART 0x55 / HID 0x9F)¶
UART 串口格式(命令字 0x55):
功能: 读取当前采样率和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主动发送
USB HID 格式(命令头 0x9F):
功能说明: 读取当前采样率、DSD 模式和 DAC 采样分辨率
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9F |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x9F(回显) |
| 3-6 | 4 | sample_rate | 采样率(uint32, 小端序,单位:Hz) |
| 7 | 1 | dsd_mode | DSD 模式(0=PCM, 1=DOP, 2=Native DSD) |
| 8-62 | 55 | reserved | 保留字段(填充0) |
自动上报机制: - 设备中监控采样率和 DSD 模式的变化 - 当这些值发生变化时,设备会自动构建 0x9F 响应数据包并通过 HID 状态报告上报 - 主机可以通过 HID GET_REPORT 接收这些自动上报的状态变化
设置增益模式(SET_GAIN_MODE,UART 0x56 / HID 0xA0)【已停用·码点保留】¶
UART 串口格式(命令字 0x56):
功能: 设置增益模式
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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
USB HID 格式(命令头 0xA0):
功能说明: 设置增益模式(低阻/高阻)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA0 |
| 3 | 1 | gain_mode | 增益模式(0=低阻, 1=高阻) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
参数说明: - 0: 低阻模式(适合高灵敏度耳机) - 1: 高阻模式(适合高阻抗耳机)
返回值: 无直接返回值。如需确认增益模式是否设置成功,请使用 GET_GAIN_MODE (0xA1) 命令读取。
获取增益模式(GET_GAIN_MODE,UART 0x57 / HID 0xA1)【已停用·码点保留】¶
UART 串口格式(命令字 0x57):
功能: 读取设备当前增益模式
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
USB HID 格式(命令头 0xA1):
功能说明: 读取设备当前增益模式
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA1 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA1(回显) |
| 3 | 1 | gain_mode | 当前增益模式(0=低阻, 1=高阻) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
设置滤波器模式(SET_FILTER_MODE,UART 0x58 / HID 0xA2)【已停用·码点保留】¶
UART 串口格式(命令字 0x58):
功能: 设置滤波器模式
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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
USB HID 格式(命令头 0xA2):
功能说明: 设置 DAC 数字滤波器模式
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA2 |
| 3 | 1 | filter_mode | 滤波器模式(0-7) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
滤波器模式定义: - 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
返回值: 无直接返回值。如需确认滤波器模式是否设置成功,请使用 GET_FILTER_MODE (0xA3) 命令读取。
获取滤波器模式(GET_FILTER_MODE,UART 0x59 / HID 0xA3)【已停用·码点保留】¶
UART 串口格式(命令字 0x59):
功能: 读取设备当前滤波器模式
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
USB HID 格式(命令头 0xA3):
功能说明: 读取设备当前滤波器模式
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA3 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA3(回显) |
| 3 | 1 | filter_mode | 当前滤波器模式(0-7) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
设置游戏模式(SET_GAME_MODE,UART 0x5A / HID 0xA4)【已停用·码点保留】¶
UART 串口格式(命令字 0x5A):
功能: 设置游戏模式
方向: 主机→设备
数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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
USB HID 格式(命令头 0xA4):
功能说明: 设置游戏音效模式
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA4 |
| 3 | 1 | game_mode | 游戏模式(0=无音效, 1=FPS, 2=虚拟7.1) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
游戏模式定义: - 0: 无音效(标准立体声) - 1: FPS模式(增强定位感) - 2: 虚拟7.1(环绕声效果)
返回值: 无直接返回值。如需确认游戏模式是否设置成功,请使用 GET_GAME_MODE (0xA5) 命令读取。
获取游戏模式(GET_GAME_MODE,UART 0x5B / HID 0xA5)【已停用·码点保留】¶
UART 串口格式(命令字 0x5B):
功能: 读取设备当前游戏模式
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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 | 校验 | 校验和
USB HID 格式(命令头 0xA5):
功能说明: 读取设备当前游戏模式
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA5 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA5(回显) |
| 3 | 1 | game_mode | 当前游戏模式(0=无音效, 1=FPS, 2=虚拟7.1) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
获取固件版本(GET_FIRMWARE_VERSION,UART 0x5C / HID 0xA6)¶
UART 串口格式(命令字 0x5C):
功能: 读取设备固件版本号
方向: 主机→设备
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
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
USB HID 格式(命令头 0xA6):
功能说明: 读取设备固件版本号(BCD 格式)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA6 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA6(回显) |
| 3 | 1 | major | 主版本号(BCD 格式) |
| 4 | 1 | minor | 次版本号(BCD 格式) |
| 5 | 1 | patch | 修订版本号(BCD 格式) |
| 6-63 | 58 | reserved | 保留字段(填充0) |
版本号格式说明: - 版本号采用 BCD(Binary Coded Decimal)格式 - 3个字节分别表示:主版本号、次版本号、修订版本号 - 例如:0x01 0x00 0x0C 表示版本 1.0.12
设置EQ段数(SET_EQ_BAND_COUNT,UART 0x5D / HID 0xB3)¶
UART 串口格式(命令字 0x5D):
功能: 设置EQ段数并保存到Flash,控制参与EQ处理的DSP核数
方向: MCU→XU316
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
0 | 1 | 0x55 | 帧头1
1 | 1 | 0xAA | 帧头2
2 | 1 | 0x00 | 版本
3 | 1 | 0x5D | 命令码
4 | 1 | 0x01 | 数据长度
5 | 1 | uint8 | EQ段数 (8/16/24/32)
6 | 1 | 校验 | 校验和
响应数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
0 | 1 | 0x55 | 帧头1
1 | 1 | 0xAA | 帧头2
2 | 1 | 0x00 | 版本
3 | 1 | 0x5D | 命令码
4 | 1 | 0x02 | 数据长度
5 | 1 | uint8 | 状态码 (0x00=成功, 0x01=失败)
6 | 1 | uint8 | 当前EQ段数 (回读XU316实际生效值)
7 | 1 | 校验 | 校验和
参数说明:
- 段数取值: 仅支持 8、16、24、32 四档,其他值XU316拒绝设置
- 处理资源对应关系:
- 8段:1个DSP核参与处理
- 16段:2个DSP核参与处理
- 24段:3个DSP核参与处理
- 32段:全部4个DSP核参与处理(默认)
XU316端处理:
- 校验段数值(仅接受8/16/24/32,非法值返回失败状态)
- 切换参与EQ处理的DSP核数
- 段数设置保存到Flash,重启后自动恢复
- 响应中的“当前EQ段数”为回读的XU316实际生效值,供MCU确认
与参数存储的关系:
- 段数切换不删除已存储的滤波器参数
- 段数从高切低时,超出当前段数的Band参数保留但不参与处理;切回高段数后自动恢复生效
响应示例:
MCU发送示例:
逐段解析(发送)
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 00 | 协议版本号,本协议固定为 0x00 |
| 命令字 | 1字节 | 5D | 表示当前命令是"设置EQ段数" |
| 数据长度 | 1字节 | 01 | 表示后面紧跟着 1 字节的数据区 |
| EQ段数 | 1字节 | 10 | 十六进制 0x10,即十进制 16,设置为 16 段(2 个DSP核参与处理) |
| 校验和 | 1字节 | 6D | 从 55 开始到段数值结束,所有字节相加后对 256 取余的结果 |
逐段解析(响应)
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 00 | 协议版本号,本协议固定为 0x00 |
| 命令字 | 1字节 | 5D | 表示当前响应的是"设置EQ段数"命令 |
| 数据长度 | 1字节 | 02 | 表示后面紧跟着 2 字节的数据区 |
| 状态码 | 1字节 | 00 | 0x00 表示设置成功(仅接受 8/16/24/32,非法值返回失败) |
| 当前EQ段数 | 1字节 | 10 | 回读XU316实际生效值:16 段 |
| 校验和 | 1字节 | 6E | 从 55 开始到段数字节结束,所有字节相加后对 256 取余的结果 |
USB HID 格式(命令头 0xB3):
功能说明: 设置 EQ 段数,支持 8/16/24/32 段动态切换,控制参与处理的 DSP 核数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB3 |
| 3 | 1 | band_count | EQ 段数(8/16/24/32) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
EQ 段数定义: - 8: 仅 Core0 参与处理 - 16: Core0 + Core1 参与处理 - 24: Core0 + Core1 + Core2 参与处理 - 32: 全部 4 个 Core 参与处理
设备端处理: - 仅接受 8、16、24、32 四个有效值,其他值拒绝 - 设置后保存到 Flash(独立文件 eq_band_cnt),开机时自动恢复 - 设置后触发参数同步到 tile1,tile1 上未参与处理的 Core 对音频做透传(bypass)
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB3(回显) |
| 3 | 1 | status | 状态码(0x00=成功, 0x01=失败) |
| 4 | 1 | band_count | 当前 EQ 段数(8/16/24/32) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
注:0xA7 起 HID 侧命令头已用于固件升级,段数命令使用 0xB3/0xB4,不遵循 +0x4A 映射。
获取EQ段数(GET_EQ_BAND_COUNT,UART 0x5E / HID 0xB4)¶
UART 串口格式(命令字 0x5E):
功能: 读取XU316当前EQ段数
方向: MCU→XU316
请求数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
0 | 1 | 0x55 | 帧头1
1 | 1 | 0xAA | 帧头2
2 | 1 | 0x00 | 版本
3 | 1 | 0x5E | 命令码
4 | 1 | 0x00 | 数据长度
5 | 1 | 校验 | 校验和
响应数据包格式:
字节位置 | 长度 | 内容 | 描述
---------|------|------|------
0 | 1 | 0x55 | 帧头1
1 | 1 | 0xAA | 帧头2
2 | 1 | 0x00 | 版本
3 | 1 | 0x5E | 命令码
4 | 1 | 0x01 | 数据长度
5 | 1 | uint8 | 当前EQ段数 (8/16/24/32,默认32)
6 | 1 | 校验 | 校验和
功能说明:
- 返回XU316当前生效的EQ段数(8/16/24/32,默认 32)
MCU发送示例:
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 00 | 协议版本号,本协议固定为 0x00 |
| 命令字 | 1字节 | 5E | 表示当前命令是"获取EQ段数" |
| 数据长度 | 1字节 | 00 | 表示本命令不携带数据 |
| 校验和 | 1字节 | 5D | 从 55 开始到数据长度字节结束,所有字节相加后对 256 取余的结果 |
XU316返回示例:
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 00 | 协议版本号,本协议固定为 0x00 |
| 命令字 | 1字节 | 5E | 表示当前响应的是"获取EQ段数"命令 |
| 数据长度 | 1字节 | 01 | 表示后面紧跟着 1 字节的数据区 |
| 当前EQ段数 | 1字节 | 20 | 十六进制 0x20,即十进制 32,表示当前为 32 段(默认) |
| 校验和 | 1字节 | 7E | 从 55 开始到段数字节结束,所有字节相加后对 256 取余的结果 |
USB HID 格式(命令头 0xB4):
功能说明: 读取当前 EQ 段数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB4 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB4(回显) |
| 3 | 1 | band_count | 当前 EQ 段数(8/16/24/32) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
预设模式定义¶
| 模式索引 | 模式名称 | 用途描述 | 类型 |
|---|---|---|---|
| 0 | JAZZ | 爵士音乐优化 | 预设模式 |
| 1 | POP | 流行音乐优化 | 预设模式 |
| 2 | ROCK | 摇滚音乐优化 | 预设模式 |
| 3 | CLASSIC | 古典音乐优化 | 预设模式 |
| 4 | R&B | 节奏音乐优化 | 预设模式 |
| 5 | 3A Game | 3A游戏音乐优化 | 预设模式 |
| 6 | FPS | FPS游戏音乐优化 | 预设模式 |
| 7 | User 1 | 用户自定义模式1 | 用户模式 |
| 8 | User 2 | 用户自定义模式2 | 用户模式 |
| 9 | User 3 | 用户自定义模式3 | 用户模式 |
模式特性说明
- 预设模式: 出厂预设,不可修改,针对特定音乐类型优化
- 用户模式: 支持用户自定义参数,可保存和重置
参数约束¶
协议限制和约束
硬件限制
- 滤波器段数: 支持 8/16/24/32 四档(经 0x5D 设置、0x5E 查询,保存到 Flash 重启恢复,默认 32 段=全部 4 个 DSP 核参与处理;仅接受四档取值,非法值拒绝)
- 模式数量: 支持 0-9 共 10 个模式(0-6 预设模式,7-9 用户模式;模式切换时自动清除滤波器状态)
- 采样率支持: 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz(设备能力,与协议字段独立)
参数范围
| 参数 | 范围 | 格式 |
|---|---|---|
| 中心频率 (freq) | 20Hz - 20kHz | float(小端) |
| Q值 (q) | 0.1 - 30.0 | float(小端) |
| 带宽 (bw) | 1Hz - 20kHz | float(小端) |
| 增益 (gain) | -24dB - +24dB | float(小端) |
| 整体增益 (mode gain) | -50dB - 0dB | int32(小端) |
典型配置流程¶
模式切换流程¶
- 发送 SET_EQ_MODE 命令切换模式(UART 0x40 / HID 0x8A)
- 设备更新内部模式状态
- 发送 GET_EQ_MODE 命令确认(UART 0x41 / HID 0x8B)
- 设备响应当前模式状态
参数设置流程¶
- 发送 SET_EQ_MODE 命令切换到相应模式(UART 0x40 / HID 0x8A)
- 逐个发送8个滤波器的参数命令(UART 0x43 / HID 0x8D)
- 设备接收并更新内部参数缓存
- 可选: 发送 GET_EQ_PARAMS 命令验证参数(UART 0x44 / HID 0x8E)
参数读取流程¶
- 发送 SET_EQ_MODE 命令切换到相应模式(UART 0x40 / HID 0x8A)
- 发送 GET_EQ_PARAMS 请求(UART 0x44 / HID 0x8E)
- 设备准备响应数据
- 读取响应
注意事项
- 时序要求: 发送参数后需要等待设备处理完成再发送下一条命令(建议间隔5ms以上)
- 数据完整性: 当前生效段数内的所有滤波器参数都需要发送,即使某些滤波器未使用(段数由 0x5D/0x5E 管理与查询,默认32段)
- 模式同步: 设置模式后建议调用读取模式确保数据同步
- 参数验证: 整体增益(0x42)接受范围为 -50 至 0 dB,越界值按边界钳位后存储;滤波器参数(0x43)仅做有效性校验,任一参数为 NaN/Inf 或中心频率为 0 时整帧拒绝(状态码 0x01);EQ段数(0x5D)仅接受 8/16/24/32
- 设备端系数计算: 主机只发送参数(freq/q/bw/gain),XU316端实时计算滤波器系数(支持动态bshift计算,确保系数精度)
- 校验和计算: 所有命令都必须包含正确的校验和,校验和为帧头到数据末尾所有字节的累加和取低8位

