跳转至

XU316 UART串口基础协议

协议概述

功能定位与范围

本文档描述了XU316免开发产品与MCU之间通过UART进行通信的**基础协议**,包括:帧格式与传输机制、设备启动与初始化流程、启动基础命令(0x00-0x05)以及公共数据结构定义。

业务控制命令(0x20-0x31、0xF0-0xF3、0xEE)随产品固件应用不同而不同,其字节级详解已按产品族整理到各产品的**串口命令集**文档中,请从 通信协议索引 或对应产品规格书的「串口控制命令」章节进入。

一、协议基础规范

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
0x30 设置Mute引脚反转 MCU→XU316
0x31 获取当前音频格式 MCU→XU316
命令字 命令描述 发送方向
0xEE HID发起的通过XU316透传给MCU的命令 XU316→MCU
命令字 命令描述 发送方向
0xF0 DAC配置选择命令 MCU→XU316
0xF1 获取固件版本命令 MCU→XU316
0xF3 查询完整版本号 MCU→XU316

命令使用说明

  1. 所有命令必须遵循基本帧格式规范
  2. 每个命令都需要对方回复确认后才视为执行成功
  3. 业务控制命令(0x20及以上)仅可在设备启动完成后使用

业务命令详解按功能域组织

不同产品固件支持的业务命令子集不同。启动与基础命令(0x00-0x05)的详解见本章 3.2 节;业务命令的字节级详解按功能域整理在命令参考页,并同步内嵌于产品规格书的「产品控制命令」章节:

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

命令示例

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

命令示例

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

命令示例

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 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启动是否成功或遇到问题
  • 所有后续业务命令只能在此命令发送成功后使用

命令示例

55 AA 03 05 00 07

逐段解析

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

四、数据结构定义

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编码音频

五、咨询反馈

点击展开咨询反馈表单
×

提示

公司名:

邮箱地址:

主旨:

正文: