Skip to content

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

协议概述

功能定位与范围

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

一、协议基础规范

1.1 底层通信协议

基于UART (Universal Asynchronous Receiver/Transmitter) 协议

参数
波特率 115200 bps
数据位 8
奇偶校验
停止位 1
数据流控

1.2 帧格式与数据传输

通用帧格式

所有命令和响应均遵循以下帧格式:

字段 字节数 说明
帧头 2 固定为0x55aa
版本 1 协议版本号
命令字 1 指示帧的功能
数据长度 1 后续数据的长度N,不包含最后的校验和字节
数据 N 具体的数据内容
校验和 1 从帧头开始按字节求和,结果对256求余

数据传输说明

所有大于1个字节的数据均采用 大端模式 传输。协议中示例数据均以十六进制表示。

1.3 通信机制

1.3.1 确认机制

确认与超时处理

  • 所有命令均需对方回复确认
  • 默认命令超时时间为300ms,超时后视为通信失败
  • 特殊命令可能有不同的超时时间,会在相应命令描述中说明

1.3.2 重试与容错机制

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

二、设备启动与初始化

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返回确认响应

三、协议命令集

3.1 命令分类概览

命令字 命令描述 发送方向
0x00 开始启动 XU316→MCU
0x01 读取产品信息 XU316→MCU
0x02 读取上电配置信息 XU316→MCU
0x03 获取当前输入输出模式 XU316→MCU
0x04 获取当前用户配置 XU316→MCU
0x05 启动完成命令 XU316→MCU
命令字 命令描述 发送方向
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
命令字 命令描述 发送方向
0xEE HID发起的通过XU316透传给MCU的命令 XU316→MCU
命令字 命令描述 发送方向
0xF0 DAC配置选择命令 MCU→XU316
0xF1 获取固件版本命令 MCU→XU316

命令使用说明

  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后续需要执行的操作
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可将多个选项通过位操作组合在一起

命令示例

55 AA 03 00 01 03 06

逐段解析

字节段 长度 示例值 说明
帧头 2字节 55 AA 固定帧头,表示一帧协议数据开始
版本 1字节 03 表示这是 MCU 返回给 XU316 的数据
命令字 1字节 00 表示当前命令是“开始启动”
数据长度 1字节 01 表示后面紧跟着 1 字节的数据区
启动选项 1字节 03 表示 0x010x02 同时生效,也就是既要更新产品基础信息,也要更新上电配置信息
校验和 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校验)

命令示例

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 12 34 56 78 D9

逐段解析

字节段 长度 示例值 说明
帧头 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字节 12 34 56 78 产品基础信息的 32 位 CRC 校验值,这里仅作为示例演示
校验和 1字节 D9 55 开始到 78 结束,所有字节相加后对 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校验)

命令示例

55 AA 03 02 0E 01 00 00 00 00 01 2C 20 30 30 11 22 33 44 6A

逐段解析

字节段 长度 示例值 说明
帧头 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字节 11 22 33 44 上电配置的 32 位 CRC 校验值,这里仅作为示例演示
校验和 1字节 6A 55 开始到 44 结束,所有字节相加后对 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会根据返回的模式加载相应的应用固件
  • 此命令用于设备启动过程中的模式匹配与确认

命令示例

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获取当前用户选择的音量、模式等配置
  • 在应用固件加载后、应用启动前执行
  • 应用会根据返回的信息初始化相应参数

命令示例

55 AA 03 04 0E 02 00 00 00 00 00 C8 18 28 28 55 66 77 88 00

逐段解析

字节段 长度 示例值 说明
帧头 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字节 55 66 77 88 用户配置的 32 位 CRC 校验值,这里仅作为示例演示
校验和 1字节 00 55 开始到 88 结束,所有字节相加后对 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启动是否成功或遇到问题
  • 所有后续业务命令只能在此命令发送成功后使用

命令示例

55 AA 03 05 00 07

逐段解析

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

3.3 业务控制命令详解

使用前提

以下命令仅可在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显示或调整相关功能

命令示例

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

命令示例

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可能需要重启以加载新模式的固件
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报告当前播放音量

命令示例

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 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 取余的结果

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控制切换主时钟源
  • 可切换使用内部时钟或外部时钟
  • 对于某些需要精确同步的音频应用场景很重要
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 设置 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求余

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

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

命令示例

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 获取固件版本命令(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 取余的结果

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
  • 此命令为产品特定命令,不是所有产品都支持。具体支持情况请参考产品规格书说明。
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

四、数据结构定义

4.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校验值

CRC使用说明

MCU可以根据XU316传回的CRC值判断是否需要更新产品基础信息。当CRC不匹配时,应发送完整的产品基础信息。

字段 字节数 说明
默认输入输出模式 5 见输入输出模式字段说明
静音时间 2 0-65535(ms)
麦克风默认音量 1 见麦克风音量字段说明
DAC左声道默认音量 1 见DAC音量字段说明
DAC右声道默认音量 1 见DAC音量字段说明
CRC 4 对所有字段计算的32-bit CRC校验值
字段 字节数 说明
输入输出模式 5 见输入输出模式字段说明
静音时间 2 0-65535(ms)
麦克风音量 1 见麦克风音量字段说明
DAC左声道音量 1 见DAC音量字段说明
DAC右声道音量 1 见DAC音量字段说明
CRC 4 对所有字段计算的32-bit CRC校验值
字段 字节数 说明
输入输出模式 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 音量值,具体映射由应用定义
格式 采样率
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编码音频

五、咨询反馈

点击展开咨询反馈表单
×

提示

公司名:

邮箱地址:

主旨:

正文: