HF87621_VC1/HF87621Q_VC1¶
多通道PCM 768KHz/DSD512 USB HiFi解码器支持USB/I2S/3CH SPDIF输入及I2S输出
1、简介¶
1.1 产品描述¶
HF87621_VC1/HF87621Q_VC1是一款最高支持PCM 768KHz/DSD512的USB多通道及多接口HiFi音频解码,专为HiFi解码器音频应用而设计。
HF87621_VC1/HF87621Q_VC1支持多种标准音频格式,包括USB Audio Class 1.0/2.0、S/PDIF和I²S接口。灵活的音频接口允许HF87621_VC1/HF87621Q_VC1连接到各种音频数据转换器、数字音频接收器和发射器以及数字信号处理器。
兼容AES3, S/PDIF, IEC 60958, and EIAJ CP-1201数字音频接口。
HF87621_VC1/HF87621Q_VC1提供多种输入输出模式,包括USB输入/I²S输出、S/PDIF输入/I²S输出、I²S(slave)输入/I²S(MASTER)输出,满足不同应用场景的需求。
重要提示
HF87621Q_VC1型号支持MQA音频解码,而HF87621_VC1型号不支持此功能。
1.2 产品特性¶
音频性能特性
- 支持高达768kHz的输入和输出采样率
- 支持DSD64/128/256/512格式
- HF87621Q_VC1支持MQA解码
- 内置SSRC和ASRC模块,支持不同接口间,不同采样率之间的转换
- 支持16-32bit音频数据格式
- 支持3路S/PDIF输入
接口支持特性
- 多种数字接口支持
- 支持USB音频输入
- 支持I²S从模式音频输入
- 支持I²S主模式音频输出
- 支持S/PDIF音频输入
- 支持UART配置接口
USB功能特性
- USB接口特性
- 支持UAC 1.0
- 支持UAC 2.0
- 支持通过USB升级固件
- 支持HID,可以通过HID升级MCU固件
系统兼容性 - UAC 2.0协议,支持ASIO - 支持多种操作系统,如Windows,Linux,Android,macOS和iOS等
1.3 应用场景¶
- USB HiFi解码器(USB HiFi Decoder)
- USB HiFi音频接口(USB HiFi Audio Interface)
- USB HiFi数字播放器(USB HiFi Digital Player)
1.4 产品功能框图¶
1.5 订购信息¶
| PRODUCT | ORDERING NUMBER | PACKAGE BODY | SIZE (NOM) | Hardware Model | Comments |
|---|---|---|---|---|---|
| HF87621_VC1 | HF87621-VC1 | SMT LGA-52 | 13x13mm | A316-Mini-V1 | |
| HF87621Q_VC1 | HF87621Q-VC1 | SMT LGA-52 | 13x13mm | A316-Mini-V1 | 支持MQA解码 |
2、模式及指标¶
2.1 支持的输入输出模式¶
| 模式编号 | 输入输出模式 | 说明 | 模式切换命令值(参考产品配置协议0x03和0x23命令) |
|---|---|---|---|
| 1 | USB(UAC2.0) in-I²S(Master) out | USB输入,I²S输出,UAC2.0 | 0x00, 0x80, 0xa9, 0x00, 0x01 |
| 2 | USB(UAC1.0) in-I²S(Master) out | USB输入,I²S输出,UAC1.0 | 0x00, 0x80, 0x01, 0x00, 0x02 |
| 3 | S/PDIF1 IN-I²S(Master) OUT | S/PDIF通道1输入,I²S输出 | 0x10, 0x80, 0x65, 0x10, 0x03 |
| 4 | S/PDIF2 IN-I²S(Master) OUT | S/PDIF通道2输入,I²S输出 | 0x00, 0x80, 0x65, 0x10, 0x04 |
| 5 | S/PDIF3 IN-I²S(Master) OUT | S/PDIF通道3输入,I²S输出 | 0x20, 0x80, 0x65, 0x10, 0x07 |
| 6 | I²S(slave) in-I²S(Master) OUT | I²S从模式输入,I²S输出 | 0x00, 0x82, 0xd5, 0x81, 0x06 |
2.2 各工作模式详细参数¶
2.2.1 USB(UAC2.0) in → I²S out 模式¶
支持的音频格式与采样率:
| 音频格式 | 支持的采样率 |
|---|---|
| PCM | 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz, 352.8kHz, 384kHz, 705.6kHz, 768KHz |
| DSD Native | DSD64, DSD128, DSD256, DSD512 |
| DOP | DOP64, DOP128, DOP256 |
| MQA | 仅HF87621Q_VC1支持 |
2.2.2 USB(UAC1.0) in → I²S out 模式¶
支持的音频格式与采样率:
| 音频格式 | 支持的采样率 |
|---|---|
| PCM | 48kHz |
2.2.3 S/PDIF in → I²S out 模式¶
支持的音频格式与采样率:
| 音频格式 | 支持的采样率 |
|---|---|
| PCM | 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz |
2.2.4 I²S(slave) in → I²S(MASTER) out 模式¶
输入/输出采样率支持:
| 接口 | 音频格式 | 支持的采样率 |
|---|---|---|
| I²S输入(从模式) | PCM | 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz |
| I²S输出(主模式) | PCM | 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz |
ASRC(异步采样率转换)功能:
- 内部支持ASRC转换,输入设备可以不提供主时钟(MClock)
ASRC性能指标:
- THD+N (@1kHz, 0dBFs): ≤-130dB
- SNR: ≥135dB
3、管脚配置和功能¶
3.1 HF87621_VC1/HF87621Q_VC1管脚布局¶
3.2 HF87621_VC1/HF87621Q_VC1管脚描述¶
| 管脚序号 | 名称 | 类型 | 功能 |
|---|---|---|---|
| 1 | 3.3V | P | 模组3.3V供电 |
| 2 | X1D13 | I/O | S/PDIF通道2输入 |
| 3 | X1D16 | I/O | NC |
| 4 | GND | P | 模组地 |
| 5 | X1D17 | I/O | NC |
| 6 | X1D18 | I/O | NC |
| 7 | X1D19 | I/O | NC |
| 8 | X1D22 | I/O | S/PDIF通道1输入 |
| 9 | X0D29 | I/O | NC |
| 10 | X0D35 | I/O | I²S_OUT_BCLK(MASTER) |
| 11 | X0D36 | I/O | I²S_OUT_LRCLK(MASTER) |
| 12 | X0D37 | I/O | NC |
| 13 | X0D38 | I/O | I²S_OUT_DATA0(MASTER) |
| 14 | X0D40 | I/O | NC |
| 15 | X0D39 | I/O | I²S_OUT_MCLK(MASTER) |
| 16 | X0D42 | I/O | NC |
| 17 | X0D41 | I/O | NC |
| 18 | X0D43 | I/O | NC |
| 19 | X1D34 | I/O | S/PDIF通道3输入 |
| 20 | GND | P | 模组地 |
| 21 | X0D30 | I/O | CTL_MUTE;控制输出,低电平有效 |
| 22 | X0D31 | I/O | NC |
| 23 | X0D32 | I/O | 控制49.152M 时钟 ;控制输出,高电平有效 |
| 24 | X0D33 | I/O | 控制45.1584M 时钟 ;控制输出,高电平有效 |
| 25 | GND | P | 模组地 |
| 26 | GND | P | 模组地 |
| 27 | GND | P | 模组地 |
| 28 | X0D00 | I/O | UART_TX,连接MCU_RX |
| 29 | X0D11 | I/O | UART_RX,连接MCU_TX |
| 30 | X1D00 | I/O | I²S_IN_LRCLK(SLAVE) |
| 31 | X1D01 | I/O | I²S_IN_DATA0(SLAVE) |
| 32 | GND | P | 模组地 |
| 33 | X1D09 | I/O | NC |
| 34 | X1D10 | I/O | I²S_IN_BCLK(SLAVE) |
| 35 | X1D11 | I/O | 连接Pin 15 X0D39 |
| 36 | GND | P | 模组地 |
| 37 | GND | P | 模组地 |
| 38 | TDI | I/O | XTAG调试PIN |
| 39 | TDO | I/O | XTAG调试PIN |
| 40 | TMS | I/O | XTAG调试PIN |
| 41 | TCK | I/O | XTAG调试PIN |
| 42 | RST_N | I/O | 系统复位,低电平有效 |
| 43 | 1.8V | P | 模组1.8V供电 |
| 44 | GND | P | 模组地 |
| 45 | USB_DM | I/O | USB_DM |
| 46 | USB_DP | I/O | USB_DP |
| 47 | GND | P | 模组地 |
| 48 | 0.9V | P | 模组0.9V供电 |
| 49 | GND | P | 模组地 |
| 50 | GND | P | 模组地 |
| 51 | GND | P | 模组地 |
| 52 | GND | P | 模组地 |
管脚类型说明
表中I/O类型定义:I=输入,O=输出,P=电源,I/O=输入/输出
4、产品控制命令¶
4.1 通信接口与协议概述¶
HF87621_VC1/HF87621Q_VC1 提供以下控制通道(UART_TX/UART_RX 管脚见3.2节),对应三份基础协议:
| 控制通道 | 物理接口 | 基础协议 |
|---|---|---|
| 串口产品配置(XU316↔MCU) | UART 115200bps、8-N-1、**大端**帧 | XU316 UART串口基础协议 |
| EQ/音效工具(PC串口) | UART 115200bps、8-N-1、**小端**帧 | EQ串口基础协议 |
| USB工具(PC) | USB HID 64字节包(同步头0x77) | USB HID基础协议 |
本章内嵌本产品支持的全部业务命令,与协议中心命令参考同源维护(通信协议索引)。
4.2 串口产品配置命令¶
| 命令字 | 命令描述 | 发送方向 | 适用说明 |
|---|---|---|---|
| 0x20 | 报告应用状态 | XU316→MCU | 状态变化时或15秒定时上报 |
| 0x21 | 媒体控制 | MCU→XU316 | XU316转换为HID命令发送给电脑 |
| 0x22 | 报告播放音频流格式和类型 | XU316→MCU | 用于显示PCM/DSD/MQA/DOP等状态 |
| 0x23 | 设置输入输出模式 | MCU→XU316 | 模式值见产品规格书2.1节模式表 |
| 0x24 | 发送播放音量 | XU316→MCU | 左右声道各1字节 |
| 0x25 | 发送录音音量 | XU316→MCU | 预留命令,当前未使用 |
| 0x26 | 切换MCLK | MCU→XU316 | 内部/外部主时钟切换 |
| 0x27 | 设置 unmute | MCU→XU316 | 模式切换时DAC解除静音延迟 |
| 0x28 | 发送音频格式的时间延迟 | MCU→XU316 | 音频格式切换延迟配置 |
| 0x29 | 报告USB连接状态 | XU316→MCU | USB连接/断开时主动上报 |
| 0x30 | 设置Mute引脚反转 | MCU→XU316 | 适配Mute极性相反的硬件设计 |
| 0x31 | 获取当前音频格式 | MCU→XU316 | 查询当前音频流格式与类型 |
| 0xF0 | DAC配置选择 | MCU→XU316 | 产品特定命令,非所有产品支持 |
| 0xF1 | 获取固件版本 | MCU→XU316 | 查询XU316固件版本号(3字节BCD主版本) |
| 0xF3 | 查询完整版本号 | MCU→XU316 | 返回完整ASCII版本字符串(型号_v主.次.修_b构建) |
| 0xEE | HID数据透传 | XU316→MCU | HID经XU316向MCU透传(如MCU OTA) |
使用前提
以上命令仅可在设备启动完成后(XU316发送0x05启动完成命令并收到响应后)使用。所有命令均需遵循基础协议帧格式(帧头0x55AA、大端传输、校验和从帧头按字节累加对256求余);每条命令需等待对方确认,默认超时300ms,最多重试4次。
报告应用状态(0x20)¶
媒体控制(0x21)¶
MCU发送
帧头: 2字节 - 0x55aa
版本: 1字节 - 0x03
命令字: 1字节 - 0x21
数据长度: 1字节 - 0x01 (即1字节)
数据: 1字节 - 媒体控制命令
0x00 音量+ / Vol Up
0x01 音量- / Vol Down
0x02 播放/暂停 / PLAY/PAUSE
0x03 下一曲 / NEXT
0x04 上一曲 / PREV
0x05 快进 / FORWARD
0x06 快退 / REWIND
0x07 静音 / MUTE
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
XU316返回
- 此命令用于MCU向XU316发送媒体控制指令
- XU316收到指令后会转换为相应的HID命令发送给电脑
- 适用于实现遥控器或物理按键对媒体播放的控制
| 控制码 | 功能 | USB HID用途 |
|---|---|---|
| 0x00 | 音量+ | 增加系统音量 |
| 0x01 | 音量- | 降低系统音量 |
| 0x02 | 播放/暂停 | 控制媒体播放状态 |
| 0x03 | 下一曲 | 切换到下一首歌曲 |
| 0x04 | 上一曲 | 切换到上一首歌曲 |
| 0x05 | 快进 | 在当前曲目中快进 |
| 0x06 | 快退 | 在当前曲目中快退 |
| 0x07 | 静音 | 切换系统静音状态 |
报告播放音频流格式和类型(0x22)¶
设置输入输出模式(0x23)¶
发送播放音量(0x24)¶
发送录音音量(0x25)¶
切换MCLK(0x26)¶
设置 unmute(0x27)¶
发送音频格式的时间延迟(0x28)¶
报告USB连接状态(0x29)¶
设置Mute引脚反转(0x30)¶
MCU发送
帧头: 2字节 - 0x55aa
版本: 1字节 - 0x03
命令字: 1字节 - 0x30
数据长度: 1字节 - 0x01
数据: 1字节
B0: 反转标志
0x00 = 正常逻辑(高电平解除静音,低电平静音)
0x01 = 反转逻辑(低电平解除静音,高电平静音)
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
XU316返回
- 该命令用于设置Mute引脚的输出逻辑反转
- 当某些硬件设计的Mute逻辑与默认相反时,使用此命令进行适配
- 配置会自动保存到Flash,断电后保持
- 设置后立即生效,并返回当前状态
- 硬件设计中Mute脚极性与默认相反
- 需要适配不同硬件版本的设备
获取当前音频格式(0x31)¶
MCU发送
帧头: 2字节 - 0x55aa
版本: 1字节 - 0x03
命令字: 1字节 - 0x31
数据长度: 1字节 - 0x00
数据: 0字节
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
XU316返回
- 该命令用于MCU向XU316查询当前播放音频流的格式和类型
- 返回格式与0x22主动上报命令保持一致
- 当音频类型为DSD且格式为AUDIO_PCM_44100时,XU316会将其修正为PCM返回
- 当前无有效音频流时,返回
0xFF 0x00
命令示例
逐段解析
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 03 | 表示这是 MCU 发送给 XU316 的命令 |
| 命令字 | 1字节 | 31 | 表示当前命令是“获取当前音频格式” |
| 数据长度 | 1字节 | 00 | 表示后面不携带额外数据 |
| 校验和 | 1字节 | 33 | 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果 |
DAC配置选择(0xF0)¶
获取固件版本命令(0xF1)¶
查询完整版本号(0xF3)¶
MCU发送
帧头: 2字节 - 0x55aa
版本: 1字节 - 0x03
命令字: 1字节 - 0xF3
数据长度: 1字节 - 0x00
数据: 0字节 - 无数据
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
XU316返回
- 该命令用于MCU向XU316查询完整固件版本号
- 与0xF1命令(仅返回3字节BCD主版本号 J.M.N)不同,0xF3返回完整的ASCII版本字符串
- 版本字符串格式为
<型号>_v<主版本>.<次版本>.<修订号>_b<构建号> - 例如用户固件返回
hf87611_v8.1.0_b01,工厂固件返回hf87611_v5.5.8_b01
命令示例
逐段解析
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 03 | 表示这是 MCU 发送给 XU316 的命令 |
| 命令字 | 1字节 | F3 | 表示当前命令是“查询完整版本号” |
| 数据长度 | 1字节 | 00 | 表示后面不携带额外数据 |
| 校验和 | 1字节 | F5 | 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果 |
命令示例
逐段解析
| 字节段 | 长度 | 示例值 | 说明 |
|---|---|---|---|
| 帧头 | 2字节 | 55 AA | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | 00 | 表示这是 XU316 返回给 MCU 的数据 |
| 命令字 | 1字节 | F3 | 表示当前响应的是“查询完整版本号”命令 |
| 数据长度 | 1字节 | 12 | 表示后面紧跟着 18 字节的数据区 |
| 版本字符串 | 18字节 | 68 66 38 37 36 31 31 5F 76 38 2E 31 2E 30 5F 62 30 31 | ASCII 字符串 hf87611_v8.1.0_b01 |
| 校验和 | 1字节 | C5 | 从 55 开始到最后一个数据字节结束,所有字节相加后对 256 取余的结果 |
HID通过XU316透传数据给MCU(0xEE)¶
示例说明
本节字节序列按基础协议帧格式推导(校验和 = 从帧头开始按字节求和,结果对256求余),供开发参考;示例中的模式值取自产品规格书 2.1 节模式表,各产品以自己的规格书为准。
流程一:设备启动握手¶
设备上电后 XU316 与 MCU 按以下顺序完成启动握手,握手完成后才能使用业务命令:
sequenceDiagram
participant X as XU316
participant M as MCU
X->>M: 0x00 开始启动(含基础信息/上电配置CRC)
M-->>X: 启动选项(按需置0x01/0x02位)
opt 需更新基础信息
X->>M: 0x01 读取产品信息
M-->>X: 60字节产品基础信息
end
opt 需更新上电配置
X->>M: 0x02 读取上电配置
M-->>X: 14字节上电配置
end
X->>M: 0x03 获取当前输入输出模式
M-->>X: 5字节模式值(见规格书2.1表)
X->>M: 0x04 获取当前用户配置
M-->>X: 14字节用户配置
X->>M: 0x05 启动完成
M-->>X: 确认 各命令的完整字节格式与时序细节见《XU316 UART串口基础协议》的「设备启动与初始化」章节。
流程二:切换输入输出模式(0x23)¶
示例:切换到 S/PDIF1 输入模式(模式值 0x10, 0x80, 0x65, 0x10, 0x03,取自产品规格书 2.1 表)。
MCU发送:
| 字节段 | 示例值 | 说明 |
|---|---|---|
| 帧头 | 55 AA | 固定帧头 |
| 版本 | 03 | MCU→XU316 命令 |
| 命令字 | 23 | 设置输入输出模式 |
| 数据长度 | 05 | 5字节模式数据 |
| 模式数据 | 10 80 65 10 03 | 目标模式值(见产品规格书2.1表) |
| 校验和 | 32 | 从帧头起按字节求和,对256求余 |
XU316返回: 55 AA 00 23 00 22(纯确认帧)
模式切换后的重启
XU316 可能需要重启以加载新模式的固件。重启后设备会重新走启动握手流程(0x00 命令中的重启原因字段为 0x01 切换模式重启),MCU 应按流程一重新响应。
流程三:接收播放音量上报(0x24)¶
用户在电脑端调节音量后,XU316 主动向 MCU 上报当前播放音量(示例:左右声道均为 -24dB,即 0xE8):
XU316发送:
| 字节段 | 示例值 | 说明 |
|---|---|---|
| 帧头 | 55 AA | 固定帧头 |
| 版本 | 00 | XU316→MCU 数据 |
| 命令字 | 24 | 发送播放音量 |
| 数据长度 | 02 | 2字节音量数据 |
| 左声道 | E8 | -24dB(0xFF为Mute,0为0dB) |
| 右声道 | E8 | -24dB |
| 校验和 | F5 | 从帧头起按字节求和,对256求余 |
MCU返回: 55 AA 03 24 00 26(纯确认帧)
流程四:媒体控制——播放/暂停(0x21)¶
MCU 侧按键触发播放/暂停(控制码 0x02),XU316 转换为 HID 命令发给电脑:
MCU发送: 55 AA 03 21 01 02 26
XU316返回: 55 AA 00 21 00 20(纯确认帧)
其余控制码(音量±、上一曲、下一曲、快进、快退、静音)见 0x21 命令详解的映射表,帧格式相同,仅数据字节与校验和不同。
流程五:查询当前音频格式(0x31)¶
MCU发送: 55 AA 03 31 00 33
XU316返回(示例:96kHz PCM):
| 字节段 | 示例值 | 说明 |
|---|---|---|
| 音频流格式 | 03 | AUDIO_96000(96kHz),完整对照表见基础协议4.3节 |
| 音频类型 | 00 | PCM |
流程六:获取固件版本(0xF1)¶
MCU发送: 55 AA 03 F1 02 00 00 F5
XU316返回(示例:V1.2.5):
| 字节段 | 示例值 | 说明 |
|---|---|---|
| 数据长度 | 03 | 3字节版本号 |
| 版本数据 | 01 02 05 | 主版本.次版本.修订号(V1.2.5) |
4.3 EQ与音效控制命令(UART/HID双码)¶
同一功能在串口与USB HID两个通道各有一套命令码(HID码 = UART码 + 0x4A),以下每条命令给出两种格式。
| 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段数 |
切换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位
4.4 HID设备控制命令¶
| 命令头 | 命令名称 | 功能 | 适用说明 |
|---|---|---|---|
| 0xA7 | FIRMWARE_UPGRADE_START | 开始固件升级 | |
| 0xA8 | FIRMWARE_UPGRADE_DATA | 传输固件数据块 | 每块57字节 |
| 0xA9 | FIRMWARE_UPGRADE_END | 结束固件升级 | 设备验证镜像完整性 |
| 0xAA | FIRMWARE_UPGRADE_STATUS | 获取升级状态 | |
| 0xAB | FIRMWARE_UPGRADE_ABORT | 中止固件升级 | |
| 0xAC | FIRMWARE_UPGRADE_ERASE | 擦除升级镜像 | |
| 0xAE | DEVICE_REBOOT | 设备重启 | 无响应 |
| 0xB3 | SET_EQ_BAND_COUNT | 设置EQ段数 | 8/16/24/32段,保存Flash |
| 0xB4 | GET_EQ_BAND_COUNT | 获取EQ段数 | |
| 0x80 | SET_UPSAMPLE | 设置采样率升频 | 0=禁用 1=使能 |
| 0x81 | GET_UPSAMPLE | 获取采样率升频状态 | |
| 0xB0 | SET_EX3D_CMD | 发送EX3D设置命令 | 仅 VID 0x20B1/PID 0x80D3 |
| 0xB1 | GET_EX3D_CMD | 读取EX3D命令 | 仅 VID 0x20B1/PID 0x80D3 |
设置采样率升频 SET_UPSAMPLE(0x80)¶
功能说明: 设置设备采样率升频开关
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x80 |
| 3 | 1 | upsample | 升频状态(0=禁用升频, 1=使能升频) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
参数说明: - 升频状态:0=禁用升频,1=使能升频
返回值: 无直接返回值。如需确认升频状态,请使用 GET_UPSAMPLE (0x81) 命令读取。
获取采样率升频状态 GET_UPSAMPLE(0x81)¶
功能说明: 读取设备当前采样率升频状态
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x81 |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0x81(回显) |
| 3 | 1 | upsample | 当前升频状态(0=禁用, 1=使能) |
| 4-63 | 60 | reserved | 保留字段(填充0) |
开始固件升级 FIRMWARE_UPGRADE_START(0xA7)¶
功能说明: 启动固件升级流程,发送固件大小并获取升级参数
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xA7 |
| 3-6 | 4 | fw_size | 固件大小(字节,uint32, 小端序) |
| 7-63 | 57 | reserved | 保留字段(填充0) |
响应格式(64 字节)(主动上报):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xA7 |
| 2 | 1 | status | 状态码(0x00=成功, 0x01=失败, 0x03=大小无效) |
| 3-6 | 4 | aligned_size | 页对齐后的实际大小(uint32, 小端序) |
| 7-8 | 2 | total_blocks | 总块数(uint16, 小端序) |
| 9-63 | 55 | reserved | 保留字段(填充0) |
传输固件数据块 FIRMWARE_UPGRADE_DATA(0xA8)¶
功能说明: 传输固件数据块,每块固定 57 字节
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xA8 |
| 2-3 | 2 | block_num | 块序号(从0开始,uint16, 小端序) |
| 4 | 1 | data_len | 数据长度(固定57) |
| 5-61 | 57 | data | 固件数据(57字节) |
| 62 | 1 | checksum | Checksum(字节0-61累加 mod 256) |
响应格式(64 字节)(主动上报):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xA8 |
| 2 | 1 | status | 状态码(0x00=成功, 0x04=块号错误, 0x05=Checksum错误) |
| 3-4 | 2 | ack_block | 已确认块序号(uint16, 小端序) |
| 5-63 | 59 | reserved | 保留字段(填充0) |
结束固件升级 FIRMWARE_UPGRADE_END(0xA9)¶
功能说明: 完成固件传输,验证镜像完整性
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xA9 |
| 2-5 | 4 | fw_size | 固件总大小(用于验证,uint32, 小端序) |
| 6-63 | 58 | reserved | 保留字段(填充0) |
响应格式(64 字节)(主动上报):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xA9 |
| 2 | 1 | status | 状态码(0x00=成功, 0x01=失败) |
| 3-63 | 61 | reserved | 保留字段(填充0) |
获取升级状态 FIRMWARE_UPGRADE_STATUS(0xAA)¶
功能说明: 查询升级状态、进度、已接收块数等信息
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAA |
| 2-63 | 62 | reserved | 保留字段(填充0) |
响应格式(64 字节)(主动上报):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAA |
| 2 | 1 | status | 升级状态(0=空闲, 1=准备中, 2=传输中, 3=完成中, 4=已完成, 5=错误, 6=已中止) |
| 3-4 | 2 | received_blocks | 已接收块数(uint16, 小端序) |
| 5-6 | 2 | total_blocks | 总块数(uint16, 小端序) |
| 7-8 | 2 | written_pages | 已写页数(uint16, 小端序) |
| 9-10 | 2 | total_pages | 总页数(uint16, 小端序) |
| 11-14 | 4 | received_bytes | 已传输字节数(uint32, 小端序) |
| 15-18 | 4 | total_bytes | 总字节数(uint32, 小端序) |
| 19 | 1 | error_code | 错误码 |
| 20-63 | 44 | reserved | 保留字段(填充0) |
升级状态枚举: - 0: IDLE (空闲) - 1: PREPARING (准备中) - 2: TRANSFERRING (传输中) - 3: FINALIZING (完成中) - 4: COMPLETED (已完成) - 5: ERROR (错误) - 6: ABORTED (已中止)
中止固件升级 FIRMWARE_UPGRADE_ABORT(0xAB)¶
功能说明: 中止当前升级流程,可选择是否擦除已传输数据
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAB |
| 2 | 1 | erase_flag | 清理标志(0x00=保留数据, 0x01=擦除数据) |
| 3-63 | 61 | reserved | 保留字段(填充0) |
响应格式(64 字节)(主动上报):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAB |
| 2 | 1 | status | 状态码(0x00=成功) |
| 3-63 | 61 | reserved | 保留字段(填充0) |
擦除升级镜像 FIRMWARE_UPGRADE_ERASE(0xAC)¶
功能说明: 擦除 Flash 中现有的升级镜像
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAC |
| 2-63 | 62 | reserved | 保留字段(填充0) |
响应格式(64 字节)(主动上报):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAC |
| 2 | 1 | status | 状态码(0x00=成功) |
| 3-63 | 61 | reserved | 保留字段(填充0) |
设备重启 DEVICE_REBOOT(0xAE)¶
功能说明: 立即重启设备
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | sync_header | 同步头: 0x77 |
| 1 | 1 | cmd_header | 命令头: 0xAE |
| 2-63 | 62 | reserved | 保留字段(填充0) |
响应: 无响应,设备立即重启。
设置EQ段数 SET_EQ_BAND_COUNT(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) |
获取EQ段数 GET_EQ_BAND_COUNT(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) |
发送EX3D设置命令 SET_EX3D_CMD(0xB0)¶
功能说明: 发送 EX3D 设置命令,封装所有 EX3D SET 命令,用于空间音频参数设置
适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码(SET 格式) |
| 7-10 | 4 | param1 | int32 参数1(根据命令不同) |
| 11-14 | 4 | param2 | int32 参数2(根据命令不同) |
| 15-18 | 4 | param3 | int32 参数3(根据命令不同) |
| 19-63 | 45 | reserved | 保留字段(填充0) |
支持的 EX3D SET 命令:
| EX3D 命令码 | 命令名称 | 功能描述 |
|---|---|---|
| 0x84 | CMD_SOUND_FIELD | 设置声场模式 |
| 0x87 | CMD_LMT_THRESHOLD | 设置枪声阈值 |
| 0x93 | CMD_EXPAND_GAIN | 设置脚步声增益 |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0(回显) |
| 3 | 1 | status | 状态码 (0x00=成功, 0x01=失败) |
| 4-7 | 4 | ex3d_cmd | EX3D 命令码(回显) |
| 8-11 | 4 | retval | 返回值(0xFFFFFFFF 表示参数错误) |
| 12-63 | 52 | reserved | 保留字段(填充0) |
读取EX3D命令 GET_EX3D_CMD(0xB1)¶
功能说明: 读取 EX3D 参数,封装所有 EX3D GET 命令,用于空间音频参数读取
适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)
请求格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码(GET 格式) |
| 7-10 | 4 | param1 | uint32 参数1(通道号、索引等) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
支持的 EX3D GET 命令:
| EX3D 命令码 | 命令名称 | 功能描述 |
|---|---|---|
| 0x183 | CMD_ANGLE | 获取空间音频角度参数 |
| 0x184 | CMD_SOUND_FIELD | 获取声场模式 |
| 0x187 | CMD_LMT_THRESHOLD | 获取枪声阈值 |
| 0x18D | CMD_LEVEL | 获取电平 |
| 0x193 | CMD_EXPAND_GAIN | 获取脚步声增益 |
响应格式(64 字节):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1(回显) |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码(回显) |
| 7-10 | 4 | retval1 | uint32 返回值1 |
| 11-14 | 4 | retval2 | uint32 返回值2 |
| 15-18 | 4 | retval3 | uint32 返回值3 |
| 19-63 | 45 | reserved | 保留字段(填充0) |
EX3D 子命令详细说明¶
EX3D 协议说明
以下命令通过 0xB0/0xB1 封装发送,仅适用于 VID 0x20B1, PID 0x80D3 的 V7.1 空间音频设备。
2.3.1 EX3D 命令码格式说明¶
- SET 命令格式:
基础命令码 & ~0x0100(清除第9位) - 例: 设置枪声阈值 = 0x87 & ~0x0100 = 0x87
-
例: 设置脚步声增益 = 0x93 & ~0x0100 = 0x93
-
GET 命令格式:
基础命令码 | 0x0100(设置第9位) - 例: 获取枪声阈值 = 0x87 | 0x0100 = 0x187
- 例: 获取脚步声增益 = 0x93 | 0x0100 = 0x193
2.3.2 声场模式控制(CMD_SOUND_FIELD = 0x84)¶
功能: 设置或获取当前声场模式
应用场景: 切换 FPS Game/RPG Game/3A Game 三种声场效果
SET 命令请求数据包格式 (0xB0 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x84 = CMD_SET(CMD_SOUND_FIELD)) |
| 7-10 | 4 | mode | uint32 用户模式值: 1=FPS Game, 2=RPG Game, 3=3A Game |
| 11-63 | 53 | reserved | 保留字段(填充0) |
用户模式 → 内部 IR 算法映射:
| 用户值 | 含义 | STEREO_EN=1 (IR) | V71_AUDIO_MODE=1 (IR) |
|---|---|---|---|
| 1 | FPS Game | IR_GAME (1) | IR_7_1_GAME (4) |
| 2 | RPG Game | IR_MUSIC (2) | IR_7_1_MUSIC (5) |
| 3 | 3A Game | IR_MOVIE (3) | IR_7_1_MOVIE (6) |
SET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0(回显) |
| 3 | 1 | status | 状态码 (0x00=成功, 0x01=失败) |
| 4-7 | 4 | ex3d_cmd | EX3D 命令码 (0x84,回显) |
| 8-11 | 4 | retval | 返回值(0xFFFFFFFF=索引无效, 其他=成功) |
| 12-63 | 52 | reserved | 保留字段(填充0) |
GET 命令请求数据包格式 (0xB1 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x184 = CMD_GET(CMD_SOUND_FIELD)) |
| 7-63 | 57 | reserved | 保留字段(填充0) |
GET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1(回显) |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x184,回显) |
| 7-10 | 4 | mode | uint32 当前用户模式值 (1=FPS Game, 2=RPG Game, 3=3A Game) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
2.3.3 枪声阈值控制(CMD_LMT_THRESHOLD = 0x87)¶
功能: 设置/获取枪声音效触发阈值
应用场景: FPS Game/3A Game 模式下检测枪声并触发相应音效处理
SET 命令请求数据包格式 (0xB0 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x87 = CMD_SET(CMD_LMT_THRESHOLD)) |
| 7-10 | 4 | threshold | int32 阈值值 (范围: -96 ~ 0 dB) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
SET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0(回显) |
| 3 | 1 | status | 状态码 (0x00=成功, 0x01=失败) |
| 4-7 | 4 | ex3d_cmd | EX3D 命令码 (0x87,回显) |
| 8-11 | 4 | retval | 返回值(0xFFFFFFFF=索引无效, 其他=成功) |
| 12-63 | 52 | reserved | 保留字段(填充0) |
GET 命令请求数据包格式 (0xB1 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x187 = CMD_GET(CMD_LMT_THRESHOLD)) |
| 7-63 | 57 | reserved | 保留字段(填充0) |
GET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1(回显) |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x187,回显) |
| 7-10 | 4 | threshold | int32 当前阈值值 (范围: -96 ~ 0 dB) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
2.3.4 脚步声增益控制(CMD_EXPAND_GAIN = 0x93)¶
功能: 设置/获取脚步声音效增益
应用场景: FPS Game/3A Game 模式下增强脚步声效果
SET 命令请求数据包格式 (0xB0 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x93 = CMD_SET(CMD_EXPAND_GAIN)) |
| 7-10 | 4 | gain | int32 增益值 (范围: 0 ~ 24 dB) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
SET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB0(回显) |
| 3 | 1 | status | 状态码 (0x00=成功, 0x01=失败) |
| 4-7 | 4 | ex3d_cmd | EX3D 命令码 (0x93,回显) |
| 8-11 | 4 | retval | 返回值(0xFFFFFFFF=索引无效, 其他=成功) |
| 12-63 | 52 | reserved | 保留字段(填充0) |
GET 命令请求数据包格式 (0xB1 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x193 = CMD_GET(CMD_EXPAND_GAIN)) |
| 7-63 | 57 | reserved | 保留字段(填充0) |
GET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1(回显) |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x193,回显) |
| 7-10 | 4 | gain | int32 当前增益值 (范围: 0 ~ 24 dB) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
2.3.5 电平获取测试(CMD_LEVEL = 0x8D)¶
功能: 获取各通道电平数据
应用场景: 实时显示音频电平表
GET 命令请求数据包格式 (0xB1 封装):
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x18D = CMD_GET(CMD_LEVEL)) |
| 7-10 | 4 | count | uint32 通道数量 (1-16) |
| 11-63 | 53 | reserved | 保留字段(填充0) |
GET 命令响应数据包格式:
| 偏移 | 长度 | 字段名 | 描述 |
|---|---|---|---|
| 0 | 1 | report_id | 固定为 0x01 |
| 1 | 1 | sync_header | 同步头: 0x77 |
| 2 | 1 | cmd_header | 命令头: 0xB1(回显) |
| 3-6 | 4 | ex3d_cmd | EX3D 命令码 (0x18D,回显) |
| 7开始 | N | levels | float32[] 各通道电平值数组 |
| ... | ... | ... | 保留字段(填充0) |
固件升级流程¶
- 发送 FIRMWARE_UPGRADE_START 命令(0xA7),发送固件大小
- 设备返回页对齐后大小和总块数
- 循环发送 FIRMWARE_UPGRADE_DATA 命令(0xA8)传输固件数据块
- 传输完成后发送 FIRMWARE_UPGRADE_END 命令(0xA9)结束升级
- 设备验证镜像完整性并返回状态
EX3D 声场模式读取流程¶
适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)
- 发送 GET_EX3D_CMD 命令(0xB1),封装 CMD_SOUND_FIELD (0x184)
- 设备返回当前声场模式 (1=FPS Game, 2=RPG Game, 3=3A Game)
- 根据声场模式更新界面状态
EX3D 声场模式设置流程¶
适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)
- 发送 SET_EX3D_CMD 命令(0xB0),封装 CMD_SOUND_FIELD (0x84) 和目标模式值
- 设备更新内部声场模式状态并返回响应
- 如从 RPG Game 切换到 FPS Game/3A Game,需重新读取 FPS 控制参数
EX3D FPS 控制参数读取流程¶
适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)
- 发送 GET_EX3D_CMD 命令(0xB1),封装 CMD_LMT_THRESHOLD (0x187) 读取枪声阈值
- 发送 GET_EX3D_CMD 命令(0xB1),封装 CMD_EXPAND_GAIN (0x193) 读取脚步声增益
- 设备分别返回当前阈值和增益值
5、硬件参数¶
5.1 产品尺寸¶
13±0.1mm(L)X13±0.1mm(W)X0.8±0.1mm(H)
5.2 模组封装图¶
6、最小系统参考设计¶
7、产品包装信息¶
托盘+外箱包装
8、修订历史¶
| 版本 | 日期 | 描述 | 修订者 |
|---|---|---|---|
| V1.0 | 2025-09-19 | 初始版本发布 | |
| V1.1 | 2026-08-26 | 新增「产品控制命令」章节(与协议命令参考同源维护) | |

