2025-05-13 11:25:54 +08:00
|
|
|
|
---
|
2025-05-14 15:25:41 +08:00
|
|
|
|
title: XU316 USB HiFi解码器免开发产品配置协议
|
2025-05-13 11:25:54 +08:00
|
|
|
|
status: new
|
2025-05-14 15:25:41 +08:00
|
|
|
|
description: XU316 USB HiFi解码器免开发产品配置协议文档
|
2025-05-13 11:25:54 +08:00
|
|
|
|
authors:
|
|
|
|
|
|
- admin
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 协议
|
|
|
|
|
|
- XU316
|
|
|
|
|
|
- USB音频
|
|
|
|
|
|
- UART
|
|
|
|
|
|
search:
|
|
|
|
|
|
boost: 2
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-05-14 15:25:41 +08:00
|
|
|
|
# XU316 USB HiFi解码器免开发产品配置协议
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
--8<-- "common/phaten_xmos_support_img.md"
|
|
|
|
|
|
|
|
|
|
|
|
## 协议概述 :material-file-document-outline:
|
|
|
|
|
|
|
|
|
|
|
|
!!! abstract "功能定位与范围"
|
2025-05-14 15:25:41 +08:00
|
|
|
|
本文档详细描述了XU316 USB HiFi解码器免开发产品与MCU之间通过UART进行通信的配置协议。该协议提供了音频设备配置、状态监控和媒体控制的完整功能集。
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 一、协议基础规范 :material-connection:
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 底层通信协议
|
|
|
|
|
|
|
|
|
|
|
|
**基于UART (Universal Asynchronous Receiver/Transmitter) 协议**
|
|
|
|
|
|
|
|
|
|
|
|
| 参数 | 值 |
|
|
|
|
|
|
|:---------------:|:--------------------:|
|
|
|
|
|
|
| 波特率 | 115200 bps |
|
|
|
|
|
|
| 数据位 | 8 |
|
|
|
|
|
|
| 奇偶校验 | 无 |
|
|
|
|
|
|
| 停止位 | 1 |
|
|
|
|
|
|
| 数据流控 | 无 |
|
|
|
|
|
|
|
|
|
|
|
|
### 1.2 帧格式与数据传输
|
|
|
|
|
|
|
|
|
|
|
|
!!! example "通用帧格式"
|
|
|
|
|
|
所有命令和响应均遵循以下帧格式:
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 字节数 | 说明 |
|
|
|
|
|
|
|:----------:|:--------:|:-----------------------------------------:|
|
|
|
|
|
|
| 帧头 | 2 | 固定为0x55aa |
|
|
|
|
|
|
| 版本 | 1 | 协议版本号 |
|
|
|
|
|
|
| 命令字 | 1 | 指示帧的功能 |
|
|
|
|
|
|
| 数据长度 | 1 | 后续数据的长度N,不包含最后的校验和字节 |
|
|
|
|
|
|
| 数据 | N | 具体的数据内容 |
|
|
|
|
|
|
| 校验和 | 1 | 从帧头开始按字节求和,结果对256求余 |
|
|
|
|
|
|
|
|
|
|
|
|
!!! warning "数据传输说明"
|
|
|
|
|
|
所有大于1个字节的数据均采用 **大端模式** 传输。协议中示例数据均以十六进制表示。
|
|
|
|
|
|
|
|
|
|
|
|
### 1.3 通信机制
|
|
|
|
|
|
|
|
|
|
|
|
#### 1.3.1 确认机制
|
|
|
|
|
|
|
|
|
|
|
|
!!! tip "确认与超时处理"
|
|
|
|
|
|
- 所有命令均需对方回复确认
|
|
|
|
|
|
- 默认命令超时时间为300ms,超时后视为通信失败
|
|
|
|
|
|
- 特殊命令可能有不同的超时时间,会在相应命令描述中说明
|
|
|
|
|
|
|
|
|
|
|
|
#### 1.3.2 重试与容错机制
|
|
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
|
flowchart TD
|
|
|
|
|
|
A[发送命令] --> B{等待响应}
|
|
|
|
|
|
B -->|超时| C[重发命令]
|
|
|
|
|
|
C --> D{重试次数<4?}
|
|
|
|
|
|
D -->|是| B
|
|
|
|
|
|
D -->|否| E[使用默认配置]
|
|
|
|
|
|
B -->|收到响应| F[处理响应]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 二、设备启动与初始化 :material-power-plug:
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 启动交互流程
|
|
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
|
sequenceDiagram
|
|
|
|
|
|
participant XU316
|
|
|
|
|
|
participant MCU
|
|
|
|
|
|
participant Flash
|
|
|
|
|
|
|
|
|
|
|
|
rect
|
|
|
|
|
|
Note over XU316,Flash: System Loader固件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rect
|
|
|
|
|
|
Note over XU316,MCU: 上电启动阶段
|
|
|
|
|
|
XU316->>MCU: 发送开始启动命令(0x00)
|
|
|
|
|
|
Note over XU316:
|
|
|
|
|
|
alt 超时未收到响应(最多尝试4次,如果4次都没有收到响应直接进入USB->I2S模式)
|
|
|
|
|
|
XU316->>MCU: 重发送开始启动命令(0x00)
|
|
|
|
|
|
end
|
|
|
|
|
|
MCU-->>XU316: 返回启动选项
|
|
|
|
|
|
Note over XU316: 解析启动选项
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
rect
|
|
|
|
|
|
Note over XU316,Flash: 基础信息更新阶段
|
|
|
|
|
|
alt 启动选项不包含0x01(不更新基础产品信息)
|
|
|
|
|
|
XU316->>Flash: 读取基础产品信息
|
|
|
|
|
|
Flash-->>XU316: 返回基础产品信息
|
|
|
|
|
|
else 启动选项包含0x01(更新基础产品信息)或者从Flash读取数据不完整
|
|
|
|
|
|
XU316->>MCU: 发送读取基础产品信息命令(0x01)
|
|
|
|
|
|
MCU-->>XU316: 返回新基础产品信息
|
|
|
|
|
|
XU316->>Flash: 保存配置
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
rect
|
|
|
|
|
|
Note over XU316,Flash: 上电配置获取阶段
|
|
|
|
|
|
alt 启动选项不包含0x02(不更新上电配置)
|
|
|
|
|
|
XU316->>Flash: 读取上电配置
|
|
|
|
|
|
Flash-->>XU316: 返回上电配置数据
|
|
|
|
|
|
else 启动选项包含0x02(更新上电配置)或者从Flash读取数据不完整
|
|
|
|
|
|
XU316->>MCU: 发送获取上电配置命令(0x02)
|
|
|
|
|
|
MCU-->>XU316: 返回新上电配置
|
|
|
|
|
|
XU316->>Flash: 保存新上电配置
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
rect
|
|
|
|
|
|
Note over XU316: Loading应用模式阶段
|
|
|
|
|
|
XU316->>MCU: 发送获取当前模式命令(0x03)
|
|
|
|
|
|
MCU-->>XU316: 返回当前模式
|
|
|
|
|
|
Note over XU316: 根据当前模式,loading对应模式
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
rect
|
|
|
|
|
|
Note over XU316,MCU: APP运行阶段
|
|
|
|
|
|
XU316->>MCU: 获取当前用户配置命令(0x04)
|
|
|
|
|
|
MCU-->>XU316: 返回当前用户配置
|
|
|
|
|
|
Note over XU316: 初试化APP并应用当前用户配置
|
|
|
|
|
|
XU316->>MCU: 发送启动完成命令(0x05)
|
|
|
|
|
|
MCU-->>XU316: 返回完成命令响应
|
|
|
|
|
|
par 并行处理
|
|
|
|
|
|
loop 状态上报
|
|
|
|
|
|
XU316->>MCU: 状态改变或15S定时发送
|
|
|
|
|
|
end
|
|
|
|
|
|
loop 业务处理
|
|
|
|
|
|
MCU->>XU316: 发送业务指令
|
|
|
|
|
|
XU316-->>MCU: 响应业务指令
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2.2 启动流程详细说明
|
|
|
|
|
|
|
|
|
|
|
|
=== "上电启动与选项阶段"
|
|
|
|
|
|
1. XU316启动会发送开始启动命令(命令字0x00) 给MCU,包含:
|
|
|
|
|
|
- UAC1.0 VID/PID
|
|
|
|
|
|
- UAC2.0 VID/PID
|
|
|
|
|
|
- 基础信息CRC
|
|
|
|
|
|
- 上电配置信息CRC
|
|
|
|
|
|
2. MCU接收启动命令,检查信息是否需要更新,并发送相应回复
|
|
|
|
|
|
3. XU316等待MCU响应
|
|
|
|
|
|
4. 如果超时未收到响应,XU316重发启动命令最多4次
|
|
|
|
|
|
5. 若仍无响应,则直接加载默认USB配置枚举USB
|
|
|
|
|
|
6. 如有正常响应,XU316解析启动选项
|
|
|
|
|
|
|
|
|
|
|
|
=== "基础信息更新阶段"
|
|
|
|
|
|
**执行条件**: 启动选项包含0x01(更新基础产品信息)
|
|
|
|
|
|
|
|
|
|
|
|
**步骤**:
|
|
|
|
|
|
|
|
|
|
|
|
1. XU316发送0x01命令请求读取基础产品信息
|
|
|
|
|
|
2. MCU返回新基础产品信息给XU316
|
|
|
|
|
|
3. XU316更新并保存配置到内部存储
|
|
|
|
|
|
|
|
|
|
|
|
=== "上电配置获取阶段"
|
|
|
|
|
|
**执行条件**: 启动选项包含0x02(更新上电配置)或从Flash读取数据不完整
|
|
|
|
|
|
|
|
|
|
|
|
**步骤**:
|
|
|
|
|
|
|
|
|
|
|
|
1. XU316发送0x02命令请求获取上电配置
|
|
|
|
|
|
2. MCU返回新上电配置给XU316
|
|
|
|
|
|
3. XU316更新并保存配置到内部存储
|
|
|
|
|
|
|
|
|
|
|
|
=== "应用固件加载阶段"
|
|
|
|
|
|
|
|
|
|
|
|
**步骤**:
|
|
|
|
|
|
|
|
|
|
|
|
1. XU316发送0x03命令获取当前输入输出模式
|
|
|
|
|
|
2. MCU返回当前模式信息给XU316
|
|
|
|
|
|
3. XU316根据返回模式加载对应输入输出模式
|
|
|
|
|
|
|
|
|
|
|
|
=== "应用初始化阶段"
|
|
|
|
|
|
**步骤**:
|
|
|
|
|
|
|
|
|
|
|
|
1. XU316发送0x04命令获取当前用户配置
|
|
|
|
|
|
2. MCU返回当前用户配置给XU316
|
|
|
|
|
|
3. XU316初始化应用并应用相关配置
|
|
|
|
|
|
4. XU316发送0x05命令表示启动完成
|
|
|
|
|
|
5. MCU返回确认响应
|
|
|
|
|
|
|
|
|
|
|
|
## 三、协议命令集 :material-console:
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 命令分类概览
|
|
|
|
|
|
|
|
|
|
|
|
=== "启动与基础命令(0x00-0x0F)"
|
|
|
|
|
|
| 命令字 | 命令描述 | 发送方向 |
|
|
|
|
|
|
|:--------:|:---------------------------------------------|:----------:|
|
|
|
|
|
|
| 0x00 | 开始启动 | XU316→MCU |
|
|
|
|
|
|
| 0x01 | 读取产品信息 | XU316→MCU |
|
|
|
|
|
|
| 0x02 | 读取上电配置信息 | XU316→MCU |
|
|
|
|
|
|
| 0x03 | 获取当前输入输出模式 | XU316→MCU |
|
|
|
|
|
|
| 0x04 | 获取当前用户配置 | XU316→MCU |
|
|
|
|
|
|
| 0x05 | 启动完成命令 | XU316→MCU |
|
|
|
|
|
|
|
|
|
|
|
|
=== "业务控制命令(0x20-0x2F)"
|
|
|
|
|
|
| 命令字 | 命令描述 | 发送方向 |
|
|
|
|
|
|
|:--------:|:---------------------------------------------|:----------:|
|
|
|
|
|
|
| 0x20 | 报告应用状态 | XU316→MCU |
|
|
|
|
|
|
| 0x21 | 媒体控制 | MCU→XU316 |
|
|
|
|
|
|
| 0x22 | 报告播放音频流格式和类型 | XU316→MCU |
|
|
|
|
|
|
| 0x23 | 设置输入输出模式 | MCU→XU316 |
|
2025-11-13 09:43:27 +08:00
|
|
|
|
| 0x24 | xu316发送播放音量 | XU316→MCU |
|
|
|
|
|
|
| 0x25 | 发送录音音量 | XU316→MCU |
|
2025-05-13 11:25:54 +08:00
|
|
|
|
| 0x26 | 切换MCLK | MCU→XU316 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "HID-MCU互相透传命令(0xEE-0xEF)"
|
|
|
|
|
|
| 命令字 | 命令描述 | 发送方向 |
|
|
|
|
|
|
|:--------:|:---------------------------------------------|:----------:|
|
|
|
|
|
|
| 0xEE | HID发起的通过XU316透传给MCU的命令 | XU316→MCU |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== "DAC控制指令(0xF0-0xFF)"
|
|
|
|
|
|
| 命令字 | 命令描述 | 发送方向 |
|
|
|
|
|
|
|:--------:|:---------------------------------------------|:----------:|
|
|
|
|
|
|
| 0xF0 | DAC配置选择命令 | MCU→XU316 |
|
|
|
|
|
|
|
|
|
|
|
|
!!! note "命令使用说明"
|
|
|
|
|
|
1. 所有命令必须遵循基本帧格式规范
|
|
|
|
|
|
2. 每个命令都需要对方回复确认后才视为执行成功
|
|
|
|
|
|
3. 业务控制命令(0x20及以上)仅可在设备启动完成后使用
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 基础功能命令详解
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.2.1 开始启动(0x00)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x00
|
|
|
|
|
|
数据长度: 1字节 - 17
|
|
|
|
|
|
数据: 17字节
|
|
|
|
|
|
B0: 重启原因 (0x00上电重启, 0x01切换模式重启, 0xFF其他原因)
|
|
|
|
|
|
B1-2: USB Vendor ID (UAC1.0)
|
|
|
|
|
|
B3-4: USB Product ID (UAC1.0)
|
|
|
|
|
|
B5-6: USB Vendor ID (UAC2.0)
|
|
|
|
|
|
B7-8: USB Product ID (UAC2.0)
|
|
|
|
|
|
B9-12: 基础信息32bit CRC
|
|
|
|
|
|
B13-16: 上电配置信息32bit CRC
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x00
|
|
|
|
|
|
数据长度: 1字节 - 0x1
|
|
|
|
|
|
数据: 1字节
|
|
|
|
|
|
B0: 启动选项
|
|
|
|
|
|
0x00 使用所有的默认信息
|
|
|
|
|
|
0x01 需要更新基础产品信息
|
|
|
|
|
|
0x02 需要更新上电配置信息
|
|
|
|
|
|
0x04 需要更新其他配置信息
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
1. 该命令在XU316上电或重启后首先发送,用于告知MCU设备已启动
|
|
|
|
|
|
2. XU316将当前存储的产品信息CRC和配置信息CRC发送给MCU
|
|
|
|
|
|
3. MCU通过比对CRC确定是否需要更新XU316中的配置信息
|
|
|
|
|
|
4. MCU在响应中通过启动选项字段告知XU316后续需要执行的操作
|
|
|
|
|
|
|
|
|
|
|
|
=== "使用流程"
|
|
|
|
|
|
```mermaid
|
|
|
|
|
|
flowchart TB
|
|
|
|
|
|
A[XU316启动] -->B[发送0x00命令]
|
|
|
|
|
|
B -->C{MCU响应}
|
|
|
|
|
|
C -->|超时| D[重发命令]
|
|
|
|
|
|
D -->E{重试次数<4?}
|
|
|
|
|
|
E -->|是| C
|
|
|
|
|
|
E -->|否| F[使用默认配置]
|
|
|
|
|
|
C -->|正常响应| G[解析启动选项]
|
|
|
|
|
|
G -->|0x01| H[更新基础产品信息]
|
|
|
|
|
|
G -->|0x02| I[更新上电配置信息]
|
|
|
|
|
|
G -->|0x04| J[更新其他配置信息]
|
|
|
|
|
|
G -->|0x00| K[继续启动流程]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "注意事项"
|
|
|
|
|
|
* 如果MCU无响应,XU316会使用存储的默认配置继续启动
|
|
|
|
|
|
* 重启原因字段可用于MCU识别XU316重启的具体原因,以便进行不同处理
|
|
|
|
|
|
* 当需要更新多项信息时,MCU可将多个选项通过位操作组合在一起
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.2.2 读取产品信息(0x01)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x01
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x01
|
|
|
|
|
|
数据长度: 1字节 - 0x3C (60字节)
|
|
|
|
|
|
数据: 60字节 - 产品基础信息,详见数据字段说明
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 该命令用于XU316获取产品基本信息,如VID/PID、产品名称等
|
|
|
|
|
|
- 执行条件:启动选项中包含0x01标志或产品信息CRC不匹配
|
|
|
|
|
|
- XU316收到此信息后会更新内部存储的产品基础信息
|
|
|
|
|
|
|
|
|
|
|
|
=== "数据结构"
|
|
|
|
|
|
产品基础信息数据结构(60字节):
|
|
|
|
|
|
```
|
|
|
|
|
|
VID1 (UAC1.0): 2字节
|
|
|
|
|
|
PID1 (UAC1.0): 2字节
|
|
|
|
|
|
VID2 (UAC2.0): 2字节
|
|
|
|
|
|
PID2 (UAC2.0): 2字节
|
|
|
|
|
|
ManufactureName: 16字节 (字符串)
|
|
|
|
|
|
ProductName: 16字节 (字符串)
|
|
|
|
|
|
SerialNumber: 16字节 (字符串)
|
|
|
|
|
|
CRC: 4字节 (32位CRC校验)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.2.3 读取上电配置信息(0x02)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x02
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节 - 无数据
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x02
|
|
|
|
|
|
数据长度: 1字节 - 0x0E (即14字节)
|
2025-06-11 15:18:43 +08:00
|
|
|
|
数据: 14字节 - 上电配置信息,见4.1-上电配置信息章节
|
2025-05-13 11:25:54 +08:00
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 该命令用于XU316获取初始上电配置信息
|
|
|
|
|
|
- 执行条件:启动选项中包含0x02标志或上电配置CRC不匹配
|
|
|
|
|
|
- XU316会根据此配置信息设置默认输入输出模式、音量等参数
|
|
|
|
|
|
|
|
|
|
|
|
=== "数据结构"
|
|
|
|
|
|
上电配置信息数据结构(14字节):
|
|
|
|
|
|
```
|
|
|
|
|
|
默认输入输出模式: 5字节
|
|
|
|
|
|
静音时间: 2字节 (0-65535ms)
|
|
|
|
|
|
麦克风默认音量: 1字节
|
|
|
|
|
|
DAC左声道默认音量: 1字节
|
|
|
|
|
|
DAC右声道默认音量: 1字节
|
|
|
|
|
|
CRC: 4字节 (32位CRC校验)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.2.4 获取当前输入输出模式(0x03)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x03
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x03
|
|
|
|
|
|
数据长度: 1字节 - 0x05 (即5字节)
|
|
|
|
|
|
数据: 5字节 - 输入输出模式,见数据字段章节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 该命令用于XU316在启动时查询当前需要启用的输入输出模式
|
|
|
|
|
|
- XU316会根据返回的模式加载相应的应用固件
|
|
|
|
|
|
- 此命令用于设备启动过程中的模式匹配与确认
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.2.5 获取当前用户配置(0x04)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x04
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x04
|
|
|
|
|
|
数据长度: 1字节 - 0xE (即14字节)
|
2025-06-11 15:18:43 +08:00
|
|
|
|
数据: 14字节 - 用户配置参数,见4.1-用户配置参数章节
|
2025-05-13 11:25:54 +08:00
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 该命令用于XU316获取当前用户选择的音量、模式等配置
|
|
|
|
|
|
- 在应用固件加载后、应用启动前执行
|
|
|
|
|
|
- 应用会根据返回的信息初始化相应参数
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.2.6 启动完成命令(0x05)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x05
|
|
|
|
|
|
数据长度: 1字节 - N
|
|
|
|
|
|
数据: N字节
|
|
|
|
|
|
B0: 启动状态 (0 启动成功,1 模式不匹配,其他值 启动失败)
|
2025-06-11 15:18:43 +08:00
|
|
|
|
B1-BN: 应用运行参数,见4.1-应用运行参数
|
2025-05-13 11:25:54 +08:00
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x05
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 此命令表示XU316启动流程已完成,可以开始正常工作
|
|
|
|
|
|
- 包含启动状态信息,告知MCU启动是否成功或遇到问题
|
|
|
|
|
|
- 所有后续业务命令只能在此命令发送成功后使用
|
|
|
|
|
|
|
|
|
|
|
|
### 3.3 业务控制命令详解
|
|
|
|
|
|
|
|
|
|
|
|
!!! warning "使用前提"
|
|
|
|
|
|
以下命令仅可在XU316启动完成后(发送0x05命令并收到响应后)使用
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.3.1 报告应用状态(0x20)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**XU316发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x20
|
|
|
|
|
|
数据长度: 1字节 - N
|
2025-06-11 15:18:43 +08:00
|
|
|
|
数据: N字节 - 应用运行参数,见4.1-应用运行参数
|
2025-05-13 11:25:54 +08:00
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**MCU返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x20
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 该命令用于XU316向MCU报告当前应用状态
|
|
|
|
|
|
- 通常在状态发生变化时发送,例如音量变化、模式切换等
|
|
|
|
|
|
- MCU可根据此信息更新UI显示或调整相关功能
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.3.2 媒体控制(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 | 静音 | 切换系统静音状态 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.3.3 报告播放音频流格式和类型(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报告当前音频流的格式和类型
|
|
|
|
|
|
- 通常在播放开始或格式变化时发送
|
2025-06-11 15:18:43 +08:00
|
|
|
|
- MCU可根据此信息更新显示,如显示PCM/DSD/MQA/DOP等状态
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
#### 3.3.4 设置输入输出模式(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可能需要重启以加载新模式的固件
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.3.5 发送播放音量(0x24)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**XU316返回**
|
2025-05-13 11:25:54 +08:00
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x24
|
|
|
|
|
|
数据长度: 1字节 - 0x02 (即2字节)
|
|
|
|
|
|
数据: 2字节
|
|
|
|
|
|
字节1: 左声道 (0xFF Mute, 0-0dB, -127:-127dB)
|
|
|
|
|
|
字节2: 右声道 (0xFF Mute, 0-0dB, -127:-127dB)
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
**MCU发送**
|
2025-05-13 11:25:54 +08:00
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x24
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
2025-11-13 09:43:27 +08:00
|
|
|
|
- 该命令用于XU316向MCU报告当前播放音量
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.3.6 发送录音音量(0x25)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**MCU发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0x25
|
|
|
|
|
|
数据长度: 1字节 - 0x01 (即1字节)
|
|
|
|
|
|
数据: 1字节 - 0xFF Mute,0-0dB -127:-127dB
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**XU316返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0x25
|
|
|
|
|
|
数据长度: 1字节 - 0x00
|
|
|
|
|
|
数据: 0字节
|
|
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
2025-11-13 09:43:27 +08:00
|
|
|
|
- 该命令用于XU316向MCU报告当前麦克风录音音量
|
|
|
|
|
|
- 是预留命令,当前未使用
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
#### 3.3.7 切换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控制切换主时钟源
|
|
|
|
|
|
- 可切换使用内部时钟或外部时钟
|
|
|
|
|
|
- 对于某些需要精确同步的音频应用场景很重要
|
|
|
|
|
|
|
2025-05-22 12:41:39 +08:00
|
|
|
|
#### 3.3.8 设置 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时间延迟, 单位是毫秒
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.3.9 发送音频格式的时间延迟(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求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 发送音频格式的时间延迟
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
2025-06-14 13:48:44 +08:00
|
|
|
|
#### 3.3.10 获取固件版本命令(0xF1)
|
|
|
|
|
|
|
|
|
|
|
|
=== "命令格式"
|
|
|
|
|
|
**MCU发送**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x03
|
|
|
|
|
|
命令字: 1字节 - 0xF1
|
|
|
|
|
|
数据长度: 1字节 - 2
|
2025-12-25 14:21:26 +08:00
|
|
|
|
数据: 0字节 -
|
2025-06-14 13:48:44 +08:00
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**XU316返回**
|
|
|
|
|
|
```
|
|
|
|
|
|
帧头: 2字节 - 0x55aa
|
|
|
|
|
|
版本: 1字节 - 0x00
|
|
|
|
|
|
命令字: 1字节 - 0xF1
|
|
|
|
|
|
数据长度: 1字节 - 0
|
2025-12-25 14:21:26 +08:00
|
|
|
|
数据: 3字节
|
2025-06-14 13:48:44 +08:00
|
|
|
|
校验和: 1字节 - 从帧头开始按字节求和,结果对256求余
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
=== "功能说明"
|
|
|
|
|
|
- 获取固件版本
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-05-13 11:25:54 +08:00
|
|
|
|
### 3.4 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
|
|
|
|
|
|
- 此命令为产品特定命令,不是所有产品都支持。具体支持情况请参考产品规格书说明。
|
|
|
|
|
|
|
|
|
|
|
|
### 3.5 HID和MCU通过XU316数据透传命令
|
|
|
|
|
|
|
|
|
|
|
|
#### 3.5.1 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 四、数据结构定义 :material-database:
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 产品配置数据结构
|
|
|
|
|
|
|
|
|
|
|
|
=== "1. 产品基础信息"
|
|
|
|
|
|
| 字段 | 字节数 | 说明 |
|
|
|
|
|
|
|--------------------|--------|---------------------------------------------------------|
|
|
|
|
|
|
| **VID1** | 2 | USB Vendor ID (UAC1.0) |
|
|
|
|
|
|
| **PID1** | 2 | USB Product ID (UAC1.0) |
|
|
|
|
|
|
| **VID2** | 2 | USB Vendor ID (UAC2.0) |
|
|
|
|
|
|
| **PID2** | 2 | USB Product ID (UAC2.0) |
|
|
|
|
|
|
| **ManufactureName**| 16 | USB Manufacture Name (字符串,最大16字节) |
|
|
|
|
|
|
| **ProductName** | 16 | USB Product Name (字符串,最大16字节) |
|
|
|
|
|
|
| **SerialNumber** | 16 | Product Serial Number (字符串,最大16字节) |
|
|
|
|
|
|
| **CRC** | 4 | 对所有字段计算的32-bit CRC校验值 |
|
|
|
|
|
|
|
|
|
|
|
|
!!! tip "CRC使用说明"
|
|
|
|
|
|
MCU可以根据XU316传回的CRC值判断是否需要更新产品基础信息。当CRC不匹配时,应发送完整的产品基础信息。
|
|
|
|
|
|
|
|
|
|
|
|
=== "2. 上电配置信息"
|
|
|
|
|
|
| 字段 | 字节数 | 说明 |
|
|
|
|
|
|
|-------------------------|--------|-----------------------------------------------|
|
|
|
|
|
|
| **默认输入输出模式** | 5 | 见输入输出模式字段说明 |
|
|
|
|
|
|
| **静音时间** | 2 | 0-65535(ms) |
|
|
|
|
|
|
| **麦克风默认音量** | 1 | 见麦克风音量字段说明 |
|
|
|
|
|
|
| **DAC左声道默认音量** | 1 | 见DAC音量字段说明 |
|
|
|
|
|
|
| **DAC右声道默认音量** | 1 | 见DAC音量字段说明 |
|
|
|
|
|
|
| **CRC** | 4 | 对所有字段计算的32-bit CRC校验值 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "3. 应用运行参数"
|
|
|
|
|
|
| 字段 | 字节数 | 说明 |
|
|
|
|
|
|
|-------------------------|--------|-----------------------------------------------|
|
|
|
|
|
|
| **输入输出模式** | 5 | 见输入输出模式字段说明 |
|
|
|
|
|
|
| **静音时间** | 2 | 0-65535(ms) |
|
|
|
|
|
|
| **麦克风音量** | 1 | 见麦克风音量字段说明 |
|
|
|
|
|
|
| **DAC左声道音量** | 1 | 见DAC音量字段说明 |
|
|
|
|
|
|
| **DAC右声道音量** | 1 | 见DAC音量字段说明 |
|
|
|
|
|
|
| **CRC** | 4 | 对所有字段计算的32-bit CRC校验值 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "4. 用户配置参数"
|
|
|
|
|
|
| 字段 | 字节数 | 说明 |
|
|
|
|
|
|
|-------------------------|--------|-----------------------------------------------|
|
|
|
|
|
|
| **输入输出模式** | 5 | 见输入输出模式字段说明 |
|
|
|
|
|
|
| **静音时间** | 2 | 0-65535(ms) |
|
|
|
|
|
|
| **麦克风音量** | 1 | 见麦克风音量字段说明 |
|
|
|
|
|
|
| **DAC左声道音量** | 1 | 见DAC音量字段说明 |
|
|
|
|
|
|
| **DAC右声道音量** | 1 | 见DAC音量字段说明 |
|
|
|
|
|
|
| **CRC** | 4 | 对所有字段计算的32-bit CRC校验值 |
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 输入输出模式数据格式
|
|
|
|
|
|
|
|
|
|
|
|
=== "字段位定义"
|
|
|
|
|
|
|
|
|
|
|
|
| 字节 | 功能说明 |
|
|
|
|
|
|
|-----|-----------------------------------------------|
|
|
|
|
|
|
| BYTE 0-BYTE4 | 具体值定义参见产品规格书 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 4.3 控制参数数据格式
|
|
|
|
|
|
|
|
|
|
|
|
=== "重启原因"
|
|
|
|
|
|
| 值 | 说明 |
|
|
|
|
|
|
|-------|-------------------------------|
|
|
|
|
|
|
| 0x00 | 上电重启 |
|
|
|
|
|
|
| 0x01 | 切换模式重启 |
|
|
|
|
|
|
| 0xFF | 其他原因重启 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "上电模式"
|
|
|
|
|
|
| 值 | 说明 |
|
|
|
|
|
|
|-------|------------------------------------------------------------|
|
|
|
|
|
|
| 0x00 | 默认模式,启动时使用上电配置信息的参数 |
|
|
|
|
|
|
| 0x01 | 断电记忆模式,启动时使用从MCU获取的用户配置参数 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "音量控制参数"
|
|
|
|
|
|
|
|
|
|
|
|
**麦克风音量**
|
|
|
|
|
|
|
|
|
|
|
|
| 值 | 说明 |
|
|
|
|
|
|
|-------|----------------------------------------|
|
|
|
|
|
|
| 0xFF | 静音(Mute) |
|
|
|
|
|
|
| 0x00-0xFE | 音量值,具体映射由应用定义 |
|
|
|
|
|
|
|
|
|
|
|
|
**DAC音量**
|
|
|
|
|
|
|
|
|
|
|
|
| 值 | 说明 |
|
|
|
|
|
|
|-------|----------------------------------------|
|
|
|
|
|
|
| 0x00 | 静音(Mute) |
|
|
|
|
|
|
| 0x01-0xFF | 音量值,具体映射由应用定义 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "音频流格式"
|
2026-03-09 16:50:37 +08:00
|
|
|
|
| 值 | 格式 | 采样率 |
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|-------|-------------------|-----------------|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
| 0x00 | AUDIO_44100 | 44.1kHz |
|
|
|
|
|
|
| 0x01 | AUDIO_48000 | 48kHz |
|
|
|
|
|
|
| 0x02 | AUDIO_88200 | 88.2kHz |
|
|
|
|
|
|
| 0x03 | AUDIO_96000 | 96kHz |
|
|
|
|
|
|
| 0x04 | AUDIO_176400 | 176.4kHz |
|
|
|
|
|
|
| 0x05 | AUDIO_192000 | 192kHz |
|
|
|
|
|
|
| 0x06 | AUDIO_352800 | 352.8kHz |
|
|
|
|
|
|
| 0x07 | AUDIO_384000 | 384kHz |
|
|
|
|
|
|
| 0x08 | AUDIO_705600 | 705.6kHz |
|
|
|
|
|
|
| 0x09 | AUDIO_768000 | 768kHz |
|
|
|
|
|
|
| 0x0A | AUDIO_1441200 | 1.4112MHz |
|
|
|
|
|
|
| 0x0B | AUDIO_1536000 | 1.536MHz |
|
|
|
|
|
|
| 0x0C | AUDIO_32000 | 32kHz |
|
|
|
|
|
|
| 0x0D | AUDIO_64000 | 64kHz |
|
|
|
|
|
|
| 0x0E | AUDIO_128000 | 128kHz |
|
|
|
|
|
|
| 0x0F | AUDIO_256000 | 256kHz |
|
|
|
|
|
|
| 0x10 | AUDIO_512000 | 512kHz |
|
2025-05-13 11:25:54 +08:00
|
|
|
|
| 0x11 | AUDIO_DSD_64 | DSD64 |
|
|
|
|
|
|
| 0x12 | AUDIO_DSD_128 | DSD128 |
|
|
|
|
|
|
| 0x13 | AUDIO_DSD_256 | DSD256 |
|
|
|
|
|
|
| 0x14 | AUDIO_DSD_512 | DSD512 |
|
|
|
|
|
|
| 0x15 | AUDIO_DSD_1024 | DSD1024 |
|
|
|
|
|
|
| 0xFF | AUDIO_NO_USED | 未使用 |
|
|
|
|
|
|
|
|
|
|
|
|
=== "音频类型"
|
|
|
|
|
|
| 值 | 类型 | 说明 |
|
|
|
|
|
|
|-------|-------------------|-----------------|
|
|
|
|
|
|
| 0x00 | PCM | 标准PCM音频 |
|
2025-06-14 13:48:44 +08:00
|
|
|
|
| 0x01 | DoP | 保留 |
|
2025-05-13 11:25:54 +08:00
|
|
|
|
| 0x02 | MQA | MQA编码音频 |
|
|
|
|
|
|
| 0x03 | MQB | MQB编码音频 |
|
|
|
|
|
|
| 0x04 | MQA_Studio | MQA Studio编码 |
|
2025-06-14 13:48:44 +08:00
|
|
|
|
| 0x05 | DSD Native | DSD编码音频 |
|
2025-05-13 11:25:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-08-12 17:05:10 +08:00
|
|
|
|
## 五、咨询反馈
|
|
|
|
|
|
<details>
|
|
|
|
|
|
<summary>点击展开咨询反馈表单</summary>
|
|
|
|
|
|
|
|
|
|
|
|
--8<-- "common/customer_form.md"
|
|
|
|
|
|
|
2026-03-09 16:50:37 +08:00
|
|
|
|
</details>
|