Files
phaten-audio/zh/docs/dev_doc/protocols/xu316_zerocode_protocol.md
PhatenIoT-yan 68212b418b update
更新免开发协议内容,加入0x30.修改其他错误
2026-06-06 11:17:45 +08:00

48 KiB
Executable File
Raw Blame History

title, status, description, authors, tags, search
title status description authors tags search
XU316 USB HiFi解码器免开发产品配置协议 new XU316 USB HiFi解码器免开发产品配置协议文档
admin
协议
XU316
USB音频
UART
boost
2

XU316 USB HiFi解码器免开发产品配置协议

--8<-- "common/phaten_xmos_support_img.md"

协议概述 :material-file-document-outline:

!!! abstract "功能定位与范围" 本文档详细描述了XU316 USB HiFi解码器免开发产品与MCU之间通过UART进行通信的配置协议。该协议提供了音频设备配置、状态监控和媒体控制的完整功能集。

一、协议基础规范 :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 重试与容错机制

flowchart TD
    A[发送命令] --> B{等待响应}
    B -->|超时| C[重发命令]
    C --> D{重试次数<4?}
    D -->|是| B
    D -->|否| E[使用默认配置]
    B -->|收到响应| F[处理响应]

二、设备启动与初始化 :material-power-plug:

2.1 启动交互流程

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 | | 0x24 | xu316发送播放音量 | XU316→MCU | | 0x25 | 发送录音音量 | XU316→MCU | | 0x26 | 切换MCLK | MCU→XU316 | | 0x27 | 设置 unmute | MCU→XU316 | | 0x28 | 发送音频格式的时间延迟 | MCU→XU316 | | 0x29 | 报告USB连接状态 | XU316→MCU | | 0x30 | 设置Mute引脚反转 | MCU→XU316 |

=== "HID-MCU互相透传命令(0xEE-0xEF)" | 命令字 | 命令描述 | 发送方向 | |:--------:|:---------------------------------------------|:----------:| | 0xEE | HID发起的通过XU316透传给MCU的命令 | XU316→MCU |

=== "DAC控制指令(0xF0-0xFF)" | 命令字 | 命令描述 | 发送方向 | |:--------:|:---------------------------------------------|:----------:| | 0xF0 | DAC配置选择命令 | MCU→XU316 | | 0xF1 | 获取固件版本命令 | 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可将多个选项通过位操作组合在一起

=== "MCU返回示例"

**命令示例**
```
55 AA 03 00 01 03 06
```

**逐段解析**

| 字节段 | 长度 | 示例值 | 说明 |
|:-------|:-----|:-------|:-----|
| 帧头 | 2字节 | `55 AA` | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | `03` | 表示这是 MCU 返回给 XU316 的数据 |
| 命令字 | 1字节 | `00` | 表示当前命令是“开始启动” |
| 数据长度 | 1字节 | `01` | 表示后面紧跟着 1 字节的数据区 |
| 启动选项 | 1字节 | `03` | 表示 `0x01` 和 `0x02` 同时生效,也就是既要更新产品基础信息,也要更新上电配置信息 |
| 校验和 | 1字节 | `06` | 从 `55` 开始到 `03` 结束,所有字节相加后对 256 取余的结果 |

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校验)

=== "MCU返回示例"

**命令示例**
```
55 AA 03 01 3C 20 B1 00 17 20 B1 00 16 50 48 41 54 45 4E 00 00 00 00 00 00 00 00 00 00 58 55 33 31 36 20 44 41 43 00 00 00 00 00 00 00 53 4E 32 34 30 30 30 31 00 00 00 00 00 00 00 00 27 2B F6 44 51
```

**逐段解析**

| 字节段 | 长度 | 示例值 | 说明 |
|:-------|:-----|:-------|:-----|
| 帧头 | 2字节 | `55 AA` | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | `03` | 表示这是 MCU 返回给 XU316 的数据 |
| 命令字 | 1字节 | `01` | 表示当前命令是“读取产品信息” |
| 数据长度 | 1字节 | `3C` | 表示后面紧跟着 60 字节的数据区 |
| VID1 | 2字节 | `20 B1` | UAC1.0 的 USB VID |
| PID1 | 2字节 | `00 17` | UAC1.0 的 USB PID |
| VID2 | 2字节 | `20 B1` | UAC2.0 的 USB VID |
| PID2 | 2字节 | `00 16` | UAC2.0 的 USB PID |
| ManufactureName | 16字节 | `50 48 41 54 45 4E 00 00 00 00 00 00 00 00 00 00` | ASCII 字符串 `PHATEN`,后面不足 16 字节的部分用 `00` 补齐 |
| ProductName | 16字节 | `58 55 33 31 36 20 44 41 43 00 00 00 00 00 00 00` | ASCII 字符串 `XU316 DAC`,后面用 `00` 补齐到 16 字节 |
| SerialNumber | 16字节 | `53 4E 32 34 30 30 30 31 00 00 00 00 00 00 00 00` | ASCII 字符串 `SN240001`,后面用 `00` 补齐到 16 字节 |
| CRC | 4字节 | `27 2B F6 44` | 产品基础信息的 32 位 CRC 校验值(小端序),这里仅作为示例演示  |
| 校验和 | 1字节 | `51` | 从 `55` 开始到 `44` 结束,所有字节相加后对 256 取余的结果 |

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字节)
数据:    14字节 - 上电配置信息见4.1-上电配置信息章节
校验和:   1字节 - 从帧头开始按字节求和结果对256求余
```

=== "功能说明" - 该命令用于XU316获取初始上电配置信息 - 执行条件启动选项中包含0x02标志或上电配置CRC不匹配 - XU316会根据此配置信息设置默认输入输出模式、音量等参数

=== "数据结构" 上电配置信息数据结构(14字节): 默认输入输出模式: 5字节 静音时间: 2字节 (0-65535ms) 麦克风默认音量: 1字节 DAC左声道默认音量: 1字节 DAC右声道默认音量: 1字节 CRC: 4字节 (32位CRC校验)

=== "MCU返回示例"

**命令示例**
```
55 AA 03 02 0E 01 00 00 00 00 01 2C 20 30 30 C1 7A 1E 1A 33
```

**逐段解析**

| 字节段 | 长度 | 示例值 | 说明 |
|:-------|:-----|:-------|:-----|
| 帧头 | 2字节 | `55 AA` | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | `03` | 表示这是 MCU 返回给 XU316 的数据 |
| 命令字 | 1字节 | `02` | 表示当前命令是“读取上电配置信息” |
| 数据长度 | 1字节 | `0E` | 表示后面紧跟着 14 字节的数据区 |
| 默认输入输出模式 | 5字节 | `01 00 00 00 00` | 示例模式数据,具体每个字节的含义由产品规格书定义 |
| 静音时间 | 2字节 | `01 2C` | 按大端模式表示 `300ms` |
| 麦克风默认音量 | 1字节 | `20` | 示例默认麦克风音量 |
| DAC左声道默认音量 | 1字节 | `30` | 示例默认左声道音量 |
| DAC右声道默认音量 | 1字节 | `30` | 示例默认右声道音量 |
| CRC | 4字节 | `C1 7A 1E 1A` | 上电配置的 32 位 CRC 校验值(小端序),这里仅作为示例演示  |
| 校验和 | 1字节 | `33` | 从 `55` 开始到 `1A` 结束,所有字节相加后对 256 取余的结果 |

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会根据返回的模式加载相应的应用固件 - 此命令用于设备启动过程中的模式匹配与确认

=== "MCU返回示例"

**命令示例**
```
55 AA 03 03 05 01 00 00 00 00 0B
```

**逐段解析**

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

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字节)
数据:    14字节 - 用户配置参数见4.1-用户配置参数章节
校验和:   1字节 - 从帧头开始按字节求和结果对256求余
```

=== "功能说明" - 该命令用于XU316获取当前用户选择的音量、模式等配置 - 在应用固件加载后、应用启动前执行 - 应用会根据返回的信息初始化相应参数

=== "MCU返回示例"

**命令示例**
```
55 AA 03 04 0E 02 00 00 00 00 00 C8 18 28 28 3A 8A 5B 2E 93
```

**逐段解析**

| 字节段 | 长度 | 示例值 | 说明 |
|:-------|:-----|:-------|:-----|
| 帧头 | 2字节 | `55 AA` | 固定帧头,表示一帧协议数据开始 |
| 版本 | 1字节 | `03` | 表示这是 MCU 返回给 XU316 的数据 |
| 命令字 | 1字节 | `04` | 表示当前命令是“获取当前用户配置” |
| 数据长度 | 1字节 | `0E` | 表示后面紧跟着 14 字节的数据区 |
| 输入输出模式 | 5字节 | `02 00 00 00 00` | 示例用户当前选择的模式数据,具体每个字节的定义由产品规格书决定 |
| 静音时间 | 2字节 | `00 C8` | 按大端模式表示 `200ms` |
| 麦克风音量 | 1字节 | `18` | 示例当前麦克风音量 |
| DAC左声道音量 | 1字节 | `28` | 示例当前左声道音量 |
| DAC右声道音量 | 1字节 | `28` | 示例当前右声道音量 |
| CRC | 4字节 | `3A 8A 5B 2E` | 用户配置的 32 位 CRC 校验值(小端序),这里仅作为示例演示 |
| 校验和 | 1字节 | `93` | 从 `55` 开始到 `2E` 结束,所有字节相加后对 256 取余的结果 |

3.2.6 启动完成命令0x05

=== "命令格式" XU316发送 帧头: 2字节 - 0x55aa 版本: 1字节 - 0x00 命令字: 1字节 - 0x05 数据长度: 1字节 - N 数据: N字节 B0: 启动状态 (0 启动成功1 模式不匹配,其他值 启动失败) B1-BN: 应用运行参数见4.1-应用运行参数 校验和: 1字节 - 从帧头开始按字节求和结果对256求余

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

=== "功能说明" - 此命令表示XU316启动流程已完成可以开始正常工作 - 包含启动状态信息告知MCU启动是否成功或遇到问题 - 所有后续业务命令只能在此命令发送成功后使用

=== "MCU返回示例"

**命令示例**
```
55 AA 03 05 00 07
```

**逐段解析**

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

3.3 业务控制命令详解

!!! warning "使用前提" 以下命令仅可在XU316启动完成后(发送0x05命令并收到响应后)使用

3.3.1 报告应用状态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显示或调整相关功能

=== "MCU返回示例"

**命令示例**
```
55 AA 03 20 00 22
```

**逐段解析**

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

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 | 静音 | 切换系统静音状态 |

=== "MCU发送示例"

**命令示例**
```
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 取余的结果 |

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报告当前音频流的格式和类型 - 通常在播放开始或格式变化时发送 - MCU可根据此信息更新显示如显示PCM/DSD/MQA/DOP等状态

=== "MCU返回示例"

**命令示例**
```
55 AA 03 22 00 24
```

**逐段解析**

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

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可能需要重启以加载新模式的固件

=== "MCU发送示例"

**命令示例**
```
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 取余的结果 |

3.3.5 发送播放音量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报告当前播放音量

=== "MCU返回示例"

**命令示例**
```
55 AA 03 24 00 26
```

**逐段解析**

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

3.3.6 发送录音音量0x25

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

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

=== "功能说明" - 该命令用于XU316向MCU报告当前麦克风录音音量 - 是预留命令,当前未使用

=== "MCU返回示例"

**命令示例**
```
55 AA 03 25 00 27
```

**逐段解析**

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

3.3.7 切换MCLK0x26

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

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

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

=== "MCU发送示例"

**命令示例**
```
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 取余的结果 |

3.3.8 设置 unmute0x27

=== "命令格式" 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求余
```

=== "功能说明" - 发送音频格式的时间延迟

3.3.10 报告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显示或调整相关功能

=== "MCU返回示例"

**命令示例**
```
55 AA 03 29 00 2B
```

**逐段解析**

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

3.3.11 设置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脚极性与默认相反 - 需要适配不同硬件版本的设备

=== "MCU示例"

**命令示例**
```
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 取余的结果 |

3.3.12 获取固件版本命令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求余
```

=== "功能说明" - 获取固件版本

=== "MCU发送示例"

**命令示例**
```
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 取余的结果 |

3.4 DAC配置选择0xF0

=== "命令格式"

**MCU发送**
```
帧头:    2字节 - 0x55aa
版本:    1字节 - 0x03
命令字:   1字节 - 0xF0
数据长度: 1字节 - 4
数据:    4字节
          Byte 00: 使能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 - 此命令为产品特定命令,不是所有产品都支持。具体支持情况请参考产品规格书说明。

=== "MCU发送示例"

**命令示例**
```
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 取余的结果 |

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-65535ms | | 麦克风默认音量 | 1 | 见麦克风音量字段说明 | | DAC左声道默认音量 | 1 | 见DAC音量字段说明 | | DAC右声道默认音量 | 1 | 见DAC音量字段说明 | | CRC | 4 | 对所有字段计算的32-bit CRC校验值 |

=== "3. 应用运行参数" | 字段 | 字节数 | 说明 | |-------------------------|--------|-----------------------------------------------| | 输入输出模式 | 5 | 见输入输出模式字段说明 | | 静音时间 | 2 | 0-65535ms | | 麦克风音量 | 1 | 见麦克风音量字段说明 | | DAC左声道音量 | 1 | 见DAC音量字段说明 | | DAC右声道音量 | 1 | 见DAC音量字段说明 | | CRC | 4 | 对所有字段计算的32-bit CRC校验值 |

=== "4. 用户配置参数" | 字段 | 字节数 | 说明 | |-------------------------|--------|-----------------------------------------------| | 输入输出模式 | 5 | 见输入输出模式字段说明 | | 静音时间 | 2 | 0-65535ms | | 麦克风音量 | 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 | 音量值,具体映射由应用定义 |

=== "音频流格式" | 值 | 格式 | 采样率 | |-------|-------------------|-----------------| | 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 | | 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音频 | | 0x01 | DoP | 保留 | | 0x02 | MQA | MQA编码音频 | | 0x03 | MQB | MQB编码音频 | | 0x04 | MQA_Studio | MQA Studio编码 | | 0x05 | DSD Native | DSD编码音频 |

五、咨询反馈

点击展开咨询反馈表单

--8<-- "common/customer_form.md"