跳转至

HF87621_VB1/HF87621Q_VB1

多通道PCM 768KHz/DSD512 USB HiFi解码器支持USB/I2S/3CH SPDIF输入及I2S输出

1、简介

1.1 产品描述

HF87621_VB1/HF87621Q_VB1是一款最高支持PCM 768KHz/DSD512的USB多通道及多接口HiFi音频解码,专为HiFi解码器音频应用而设计。

HF87621_VB1/HF87621Q_VB1支持多种标准音频格式,包括USB Audio Class 1.0/2.0、S/PDIF和I²S接口。灵活的音频接口允许HF87621_VB1/HF87621Q_VB1连接到各种音频数据转换器、数字音频接收器和发射器以及数字信号处理器。

兼容AES3, S/PDIF, IEC 60958, and EIAJ CP-1201数字音频接口。

HF87621_VB1/HF87621Q_VB1提供多种输入输出模式,包括USB输入/I²S输出、S/PDIF输入/I²S输出、I²S(slave)输入/I²S(master)输出,满足不同应用场景的需求。

重要提示

HF87621Q_VB1型号支持MQA音频解码,而HF87621_VB1型号不支持此功能。

1.2 产品特性

音频性能特性

  • 支持高达768kHz的输入和输出采样率
  • 支持DSD64/128/256/512格式
  • HF87621Q_VB1支持MQA解码
  • 内置SSRC和ASRC模块,支持不同接口间,不同采样率之间的转换
    • SSRC指标:THD+N (@1kHz, 0dBFs) < -130dB,SNR: > 140dB
    • ASRC指标:THD+N (@1kHz, 0dBFs) < -130dB,SNR: > 135dB
  • 支持16-32bit音频数据格式

接口支持特性

  • 多种数字接口支持
    • 支持USB音频输入
    • 支持I²S从模式音频输入
    • 支持I²S主模式音频输出
    • 支持S/PDIF音频输入
    • 支持UART配置接口
  • 支持三路S/PDIF输入

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 产品功能框图

HF87621框图
图1: HF87621_VB1/HF87621Q_VB1产品功能框图

1.5 订购信息

PRODUCT ORDERING NUMBER PACKAGE BODY SIZE (NOM) Hardware Model Comments
HF87621_VB1 HF87621-VB1 SMT STAMP-30 19x26mm A316-1926-V1
HF87621Q_VB1 HF87621Q-VB1 SMT STAMP-30 19x26mm A316-1926-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_VB1支持

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_VB1/HF87621Q_VB1管脚布局

HF87621-VB1管脚图
图2: HF87621-VB1管脚排列示意图

3.2 HF87621_VB1/HF87621Q_VB1管脚描述

管脚序号 名称 类型 功能
1 GND P 模组地
2 3V3 P 模组3.3V供电
3 X1D11 I/O 连接Pin 16 MCLK
4 X1D10 I/O I²S_IN_BCLK(SLAVE)
5 X1D09 I/O NC
6 X1D01 I/O I²S_IN_DATA0(SLAVE)
7 X1D00 I/O I²S_IN_LRCLK(SLAVE)
8 X0D11 I/O UART_RX,连接MCU_TX
9 X0D00 I/O UART_TX,连接MCU_RX
10 X0D31 I/O NC
11 X0D30 I/O CTL_MUTE;控制输出,低电平有效
12 X1D34 I/O S/PDIF通道3输入
13 X0D43 I/O NC
14 X0D41 I/O NC
15 X0D42 I/O NC
16 MCLK I/O 有源晶体49.152/45.1584MHz 时钟输出
17 X0D40 I/O NC
18 X0D38 I/O I²S_OUT_DATA0(Master)
19 X0D37 I/O NC
20 X0D36 I/O I²S_OUT_LRCLK(Master)
21 X0D35 I/O I²S_OUT_BCLK(MASTER)
22 X0D29 I/O NC
23 X1D22 I/O S/PDIF通道1输入
24 X1D19 I/O NC
25 X1D16 I/O NC
26 USB_DP I/O USB数据正极
27 USB_DM I/O USB数据负极
28 X1D18 I/O NC
29 X1D17 I/O NC
30 X1D13 I/O S/PDIF通道2输入

管脚类型说明

  • 表中I/O类型定义:I=输入,O=输出,P=电源,I/O=输入/输出

4、产品控制命令

4.1 通信接口与协议概述

HF87621_VB1/HF87621Q_VB1 提供以下控制通道(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基础协议

本章内嵌本产品支持的全部业务命令,与协议中心命令参考同源维护(通信协议索引)。HF87621_VB1/HF87621Q_VB1 与 HF87621_VC1/HF87621Q_VC1 软件功能完全相同,共用同一套命令。

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)

XU316发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x20
数据长度: 1字节 - N
数据:    N字节 - 应用运行参数,见4.1-应用运行参数
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

MCU返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x20
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于XU316向MCU报告当前应用状态
  • 通常在状态发生变化时发送,例如音量变化、模式切换等
  • MCU可根据此信息更新UI显示或调整相关功能

命令示例

55 AA 03 20 00 22

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 返回给 XU316 的确认数据
命令字 1字节 20 表示当前确认的是“报告应用状态”命令
数据长度 1字节 00 表示这是一条纯确认帧,不携带额外数据
校验和 1字节 22 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

媒体控制(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返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x21
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 此命令用于MCU向XU316发送媒体控制指令
  • XU316收到指令后会转换为相应的HID命令发送给电脑
  • 适用于实现遥控器或物理按键对媒体播放的控制
控制码 功能 USB HID用途
0x00 音量+ 增加系统音量
0x01 音量- 降低系统音量
0x02 播放/暂停 控制媒体播放状态
0x03 下一曲 切换到下一首歌曲
0x04 上一曲 切换到上一首歌曲
0x05 快进 在当前曲目中快进
0x06 快退 在当前曲目中快退
0x07 静音 切换系统静音状态

命令示例

55 AA 03 21 01 02 26

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 21 表示当前命令是“媒体控制”
数据长度 1字节 01 表示后面紧跟着 1 字节的控制码
控制码 1字节 02 表示“播放/暂停”命令
校验和 1字节 26 从 55 开始到控制码结束,所有字节相加后对 256 取余的结果

报告播放音频流格式和类型(0x22)

XU316发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x22
数据长度: 1字节 - 0x02 (即2字节)
数据:    2字节 - 音频流格式和类型,见音频流格式和类型字段
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

MCU返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x22
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于XU316向MCU报告当前音频流的格式和类型
  • 通常在播放开始或格式变化时发送
  • MCU可根据此信息更新显示,如显示PCM/DSD/MQA/DOP等状态

命令示例

55 AA 03 22 00 24

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 返回给 XU316 的确认数据
命令字 1字节 22 表示当前确认的是“报告播放音频流格式和类型”命令
数据长度 1字节 00 表示这是一条纯确认帧,不携带额外数据
校验和 1字节 24 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

设置输入输出模式(0x23)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x23
数据长度: 1字节 - 0x05 (即5字节)
数据:    5字节 - 输入输出模式,见输入输出模式字段
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x23
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 此命令用于MCU要求XU316切换到特定输入输出模式
  • 通常由用户操作触发,如按下模式选择按钮
  • XU316可能需要重启以加载新模式的固件

命令示例

55 AA 03 23 05 02 00 00 00 00 2C

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 23 表示当前命令是“设置输入输出模式”
数据长度 1字节 05 表示后面紧跟着 5 字节的模式数据
输入输出模式 5字节 02 00 00 00 00 示例目标模式数据,具体每个字节的定义由产品规格书决定
校验和 1字节 2C 从 55 开始到最后一个模式字节结束,所有字节相加后对 256 取余的结果

发送播放音量(0x24)

XU316发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x24
数据长度: 1字节 - 0x02 (即2字节)
数据:    2字节
          字节1: 左声道 (0xFF Mute, 0-0dB, -127:-127dB)
          字节2: 右声道 (0xFF Mute, 0-0dB, -127:-127dB)
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

MCU返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x24
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于XU316向MCU报告当前播放音量

命令示例

55 AA 03 24 00 26

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 返回给 XU316 的确认数据
命令字 1字节 24 表示当前确认的是“发送播放音量”命令
数据长度 1字节 00 表示这是一条纯确认帧,不携带额外数据
校验和 1字节 26 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

发送录音音量(0x25)

XU316发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x25
数据长度: 1字节 - 0x01 (即1字节)
数据:    1字节 - 0xFF Mute,0-0dB -127:-127dB
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

MCU返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x25
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于XU316向MCU报告当前麦克风录音音量
  • 是预留命令,当前未使用

命令示例

55 AA 03 25 00 27

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 返回给 XU316 的确认数据
命令字 1字节 25 表示当前确认的是“发送录音音量”命令
数据长度 1字节 00 表示这是一条纯确认帧,不携带额外数据
校验和 1字节 27 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

切换MCLK(0x26)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x26
数据长度: 1字节 - 1
数据:    1字节 - 0:内部MCLK,1:外部MCLK
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x26
数据长度: 1字节 - 0
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 此命令用于XU316控制切换主时钟源
  • 可切换使用内部时钟或外部时钟
  • 对于某些需要精确同步的音频应用场景很重要

命令示例

55 AA 03 26 01 01 2A

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 26 表示当前命令是“切换MCLK”
数据长度 1字节 01 表示后面紧跟着 1 字节的数据区
数据 1字节 01 表示切换到外部 MCLK;如果是 00,则表示切换到内部 MCLK
校验和 1字节 2A 从 55 开始到最后一个数据字节结束,所有字节相加后对 256 取余的结果

设置 unmute(0x27)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x27
数据长度: 1字节 - 2
数据:    2字节 - 
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x27
数据长度: 1字节 - 0
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 模式切换时dac的 unmute时间延迟, 单位是毫秒

发送音频格式的时间延迟(0x28)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x28
数据长度: 1字节 - 2
数据:    2字节 - 
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x28
数据长度: 1字节 - 0
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 发送音频格式的时间延迟

报告USB连接状态(0x29)

XU316发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x29
数据长度: 1字节 - 0x01 (即1字节)
数据:    1字节 - USB连接状态
          0x00 USB未连接/断开
          0x01 USB已连接
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

MCU返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x29
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于XU316向MCU报告当前USB连接状态
  • 当USB连接状态发生变化时(连接或断开),XU316主动发送此命令
  • MCU可根据此信息更新UI显示或调整相关功能

命令示例

55 AA 03 29 00 2B

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 返回给 XU316 的确认数据
命令字 1字节 29 表示当前确认的是“报告USB连接状态”命令
数据长度 1字节 00 表示这是一条纯确认帧,不携带额外数据
校验和 1字节 2B 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

设置Mute引脚反转(0x30)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x30
数据长度: 1字节 - 0x01
数据:    1字节
          B0: 反转标志
              0x00 = 正常逻辑(高电平解除静音,低电平静音)
              0x01 = 反转逻辑(低电平解除静音,高电平静音)
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x30
数据长度: 1字节 - 0x01
数据:    1字节
          B0: 当前反转标志状态
              0x00 = 正常逻辑
              0x01 = 反转逻辑
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  1. 该命令用于设置Mute引脚的输出逻辑反转
  2. 当某些硬件设计的Mute逻辑与默认相反时,使用此命令进行适配
  3. 配置会自动保存到Flash,断电后保持
  4. 设置后立即生效,并返回当前状态
  • 硬件设计中Mute脚极性与默认相反
  • 需要适配不同硬件版本的设备

命令示例

55 AA 03 30 01 01 34

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头
版本 1字节 03 MCU发送给XU316
命令字 1字节 30 设置Mute引脚反转
数据长度 1字节 01 1字节数据
反转标志 1字节 01 0x01=反转逻辑
校验和 1字节 34 从 55 开始到反转标志结束,所有字节相加后对 256 取余的结果

获取当前音频格式(0x31)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0x31
数据长度: 1字节 - 0x00
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0x31
数据长度: 1字节 - 0x02 (即2字节)
数据:    2字节
          字节0: 音频流格式,见4.3节音频流格式表
          字节1: 音频类型,见4.3节音频类型表
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于MCU向XU316查询当前播放音频流的格式和类型
  • 返回格式与0x22主动上报命令保持一致
  • 当音频类型为DSD且格式为AUDIO_PCM_44100时,XU316会将其修正为PCM返回
  • 当前无有效音频流时,返回 0xFF 0x00

命令示例

55 AA 03 31 00 33

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 31 表示当前命令是“获取当前音频格式”
数据长度 1字节 00 表示后面不携带额外数据
校验和 1字节 33 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

命令示例

55 AA 00 31 02 03 00 35

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 00 表示这是 XU316 返回给 MCU 的数据
命令字 1字节 31 表示当前响应的是“获取当前音频格式”命令
数据长度 1字节 02 表示后面紧跟着 2 字节的数据区
音频流格式 1字节 03 表示当前格式为 AUDIO_96000(96kHz)
音频类型 1字节 00 表示当前类型为 PCM
校验和 1字节 35 从 55 开始到最后一个数据字节结束,所有字节相加后对 256 取余的结果

DAC配置选择(0xF0)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0xF0
数据长度: 1字节 - 4
数据:    4字节
          Byte 0:0: 使能I2C配置DAC  1: 禁止I2C配置DAC
          Byte 1 - 3: reserved
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0xF0
数据长度: 1字节 - 0
数据:    0字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 测试命令用于MCU想XU316设置DAC配置选择。让XU316通过DAC I2C配置DAC还是MCU自己配置DAC
  • 此命令为产品特定命令,不是所有产品都支持。具体支持情况请参考产品规格书说明。

命令示例

55 AA 03 F0 04 00 00 00 00 F6

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 F0 表示当前命令是“DAC配置选择命令”
数据长度 1字节 04 表示后面紧跟着 4 字节的数据区
Byte 0 1字节 00 表示使能 XU316 通过 I2C 配置 DAC
Byte 1-3 3字节 00 00 00 预留字节,示例中全部填 00
校验和 1字节 F6 从 55 开始到最后一个数据字节结束,所有字节相加后对 256 取余的结果

获取固件版本命令(0xF1)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0xF1
数据长度: 1字节 - 2
数据:    0字节 - 
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0xF1
数据长度: 1字节 - 0
数据:    3字节
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 获取固件版本

命令示例

55 AA 03 F1 02 00 00 F5

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 F1 表示当前命令是“获取固件版本命令”
数据长度 1字节 02 表示后面紧跟着 2 字节的数据区
数据 2字节 00 00 示例中的两个字节保留为 00,用于占位
校验和 1字节 F5 从 55 开始到最后一个数据字节结束,所有字节相加后对 256 取余的结果

查询完整版本号(0xF3)

MCU发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0xF3
数据长度: 1字节 - 0x00
数据:    0字节 - 无数据
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

XU316返回

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0xF3
数据长度: 1字节 - N (ASCII版本字符串长度,随型号不同而变)
数据:    N字节 - 完整固件版本字符串(全ASCII)
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 该命令用于MCU向XU316查询完整固件版本号
  • 与0xF1命令(仅返回3字节BCD主版本号 J.M.N)不同,0xF3返回完整的ASCII版本字符串
  • 版本字符串格式为 <型号>_v<主版本>.<次版本>.<修订号>_b<构建号>
  • 例如用户固件返回 hf87611_v8.1.0_b01,工厂固件返回 hf87611_v5.5.8_b01

命令示例

55 AA 03 F3 00 F5

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 发送给 XU316 的命令
命令字 1字节 F3 表示当前命令是“查询完整版本号”
数据长度 1字节 00 表示后面不携带额外数据
校验和 1字节 F5 从 55 开始到 00 结束,所有字节相加后对 256 取余的结果

命令示例

55 AA 00 F3 12 68 66 38 37 36 31 31 5F 76 38 2E 31 2E 30 5F 62 30 31 C5

逐段解析

字节段 长度 示例值 说明
帧头 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)

XU316发送

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x00
命令字:   1字节 - 0xEE
数据长度: 1字节 - 0x39(57字节), 由于HID协议限制,数据长度必须是57字节
数据:    57字节 - 由于HID协议限制,必须是57字节透传数据
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

MCU返回(可以返回多帧)

帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0xEE
数据长度: 1字节 - 0x39(57字节), 由于HID协议限制,数据长度必须是57字节
数据:    57字节 - 由于HID协议限制,必须是57字节透传数据
校验和:   1字节 - 从帧头开始按字节求和,结果对256求余

  • 此命令用于HID通过XU316向MCU发起的的透传数据
  • 一般透传的数据是MCU的OTA数据或者把MCU的数据回复给HID

示例说明

本节字节序列按基础协议帧格式推导(校验和 = 从帧头开始按字节求和,结果对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 23 05 10 80 65 10 03 32
字节段 示例值 说明
帧头 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 24 02 E8 E8 F5
字节段 示例值 说明
帧头 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):

55 AA 00 31 02 03 00 35
字节段 示例值 说明
音频流格式 03 AUDIO_96000(96kHz),完整对照表见基础协议4.3节
音频类型 00 PCM

流程六:获取固件版本(0xF1)

MCU发送: 55 AA 03 F1 02 00 00 F5

XU316返回(示例:V1.2.5):

55 AA 00 F1 03 01 02 05 FB
字节段 示例值 说明
数据长度 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    | 校验 | 校验和

设备端处理:

  1. 解析模式值、增益值和模式名称
  2. 设置指定模式的EQ整体增益和名称到所有采样率的左右通道
  3. 支持所有采样率: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 高架滤波器

设备端处理:

  1. 解析参数并存储到所有采样率的对应模式中
  2. 调用 eq_calculate_coefficients_from_params() 计算系数
  3. 存储计算出的系数到所有采样率的对应模式中
  4. 自动应用到所有采样率: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    | 校验 | 校验和

设备端处理:

  1. 删除指定模式在Flash中存储的EQ参数文件
  2. 删除增益和模式名称的Flash存储文件
  3. 恢复该模式的头文件预设参数
  4. 如果模式号为0xFF,则复位所有模式
  5. 返回操作状态

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参数保留但不参与处理;切回高段数后自动恢复生效

响应示例:

55 AA 00 5D 02 00 10 6E

MCU发送示例:

55 AA 00 5D 01 10 6D

逐段解析(发送)

字节段 长度 示例值 说明
帧头 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发送示例:

55 AA 00 5E 00 5D
字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 00 协议版本号,本协议固定为 0x00
命令字 1字节 5E 表示当前命令是"获取EQ段数"
数据长度 1字节 00 表示本命令不携带数据
校验和 1字节 5D 从 55 开始到数据长度字节结束,所有字节相加后对 256 取余的结果

XU316返回示例:

55 AA 00 5E 01 20 7E
字节段 长度 示例值 说明
帧头 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(小端)

模式切换流程

  1. 发送 SET_EQ_MODE 命令切换模式(UART 0x40 / HID 0x8A)
  2. 设备更新内部模式状态
  3. 发送 GET_EQ_MODE 命令确认(UART 0x41 / HID 0x8B)
  4. 设备响应当前模式状态

参数设置流程

  1. 发送 SET_EQ_MODE 命令切换到相应模式(UART 0x40 / HID 0x8A)
  2. 逐个发送8个滤波器的参数命令(UART 0x43 / HID 0x8D)
  3. 设备接收并更新内部参数缓存
  4. 可选: 发送 GET_EQ_PARAMS 命令验证参数(UART 0x44 / HID 0x8E)

参数读取流程

  1. 发送 SET_EQ_MODE 命令切换到相应模式(UART 0x40 / HID 0x8A)
  2. 发送 GET_EQ_PARAMS 请求(UART 0x44 / HID 0x8E)
  3. 设备准备响应数据
  4. 读取响应

注意事项

  1. 时序要求: 发送参数后需要等待设备处理完成再发送下一条命令(建议间隔5ms以上)
  2. 数据完整性: 当前生效段数内的所有滤波器参数都需要发送,即使某些滤波器未使用(段数由 0x5D/0x5E 管理与查询,默认32段)
  3. 模式同步: 设置模式后建议调用读取模式确保数据同步
  4. 参数验证: 整体增益(0x42)接受范围为 -50 至 0 dB,越界值按边界钳位后存储;滤波器参数(0x43)仅做有效性校验,任一参数为 NaN/Inf 或中心频率为 0 时整帧拒绝(状态码 0x01);EQ段数(0x5D)仅接受 8/16/24/32
  5. 设备端系数计算: 主机只发送参数(freq/q/bw/gain),XU316端实时计算滤波器系数(支持动态bshift计算,确保系数精度)
  6. 校验和计算: 所有命令都必须包含正确的校验和,校验和为帧头到数据末尾所有字节的累加和取低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)

固件升级流程

  1. 发送 FIRMWARE_UPGRADE_START 命令(0xA7),发送固件大小
  2. 设备返回页对齐后大小和总块数
  3. 循环发送 FIRMWARE_UPGRADE_DATA 命令(0xA8)传输固件数据块
  4. 传输完成后发送 FIRMWARE_UPGRADE_END 命令(0xA9)结束升级
  5. 设备验证镜像完整性并返回状态

EX3D 声场模式读取流程

适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)

  1. 发送 GET_EX3D_CMD 命令(0xB1),封装 CMD_SOUND_FIELD (0x184)
  2. 设备返回当前声场模式 (1=FPS Game, 2=RPG Game, 3=3A Game)
  3. 根据声场模式更新界面状态

EX3D 声场模式设置流程

适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)

  1. 发送 SET_EX3D_CMD 命令(0xB0),封装 CMD_SOUND_FIELD (0x84) 和目标模式值
  2. 设备更新内部声场模式状态并返回响应
  3. 如从 RPG Game 切换到 FPS Game/3A Game,需重新读取 FPS 控制参数

EX3D FPS 控制参数读取流程

适用设备: VID 0x20B1, PID 0x80D3(V7.1空间音频专用设备)

  1. 发送 GET_EX3D_CMD 命令(0xB1),封装 CMD_LMT_THRESHOLD (0x187) 读取枪声阈值
  2. 发送 GET_EX3D_CMD 命令(0xB1),封装 CMD_EXPAND_GAIN (0x193) 读取脚步声增益
  3. 设备分别返回当前阈值和增益值

5、硬件参数

HF87621_VB1/HF87621Q_VB1 基于 A316-1926-V1 硬件模组,以下硬件参数引用自 A316-1926-V1 模组规格书。

5.1 产品尺寸

19.5±0.3mm(L)X26±0.3mm(W)X0.8±0.1mm(H)

5.2 模组封装图

A316-1926-V1封装图
图3: A316-1926-V1封装图

6、产品包装信息

托盘+外箱包装

7、修订历史

版本 日期 描述 修订者
V1.0 2025-09-19 初始版本发布
V1.1 2026-08-26 新增「产品控制命令」与「硬件参数」章节(与协议命令参考、模组规格书同源维护)

8、咨询反馈

点击展开咨询反馈表单
×

提示

公司名:

邮箱地址:

主旨:

正文: