串口产品配置命令¶
命令集定位¶
适用范围
本页收录 XU316 免开发产品与主机 MCU 之间经 UART 交互的**串口业务命令**(帧格式为 0x55AA、**大端**传输,见 XU316 UART串口基础协议;启动与基础命令 0x00-0x05 属于基础协议部分)。
本页内容与各产品规格书「产品控制命令」章节同源维护。不同产品固件支持的命令子集可能不同(如 0xF0 为产品特定命令),以产品规格书为准。
命令一览¶
| 命令字 | 命令描述 | 发送方向 | 适用说明 |
|---|---|---|---|
| 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) |

