--- title: XU316 USB免开发固件配置协议 status: new --- # XU316 USB免开发固件配置协议 --8<-- "common/phaten_xmos_support_img.md" ## 一、 💡 免开发固件功能范围 * 固件只专注于处理和音频相关的功能,不处理按键,指示灯等和核心功能无关的功能。 * 产品的其他用户交互功能由MCU负责处理。 * MCU和XU316通过UART进行双向通信进行命令和数据交换。 * 固件通过HID和电脑进行通信。 ## 二、XU316与MCU配置协议 ### 1. 底层协议 基于UART (Universal Asynchronous Receiver/Transmitter) 协议 #### 名词说明 | 名称 | 说明 | |---------------|--------------------| | 波特率 | 115200 bps | | 数据位 | 8 | | 奇偶校验 | 无 | | 停止位 | 1 | | 数据流控 | 无 | ### 2. 帧格式 | 字段 | 字节数 | 说明 | |----------|--------|-----------------------------------------| | 帧头 | 2 | 固定为0x55aa | | 版本 | 1 | 协议版本号 | | 命令字 | 1 | 指示帧的功能 | | 数据长度 | 2 | 后续数据的长度N | | 数据 | N | 具体的数据内容 | | 校验和 | 1 | 从帧头开始按字节求和,结果对256求余 | > **注意事项** > 所有大于1个字节的数据均采用大端模式传输。协议中举例数据为十六进制。 ### 3. XU316启动顺序和MCU交互流程 #### 3.1 上电启动与启动选项阶段(手动上电启动才运行) **步骤**: 1. XU316启动会发送开始启动命令(命令字0x00) 给MCU,包含UAC1.0 VID/PID、UAC2.0 VID/PID、基础信息CRC和上电配置信息CRC。 2. MCU接收启动命令,检查信息是否要更新基础信息和上电配置信息,并发相应的回复给XU316, XU316等待MCU响应启动, 最多3秒。 3. 如果300ms未收到响应,XU316重发启动命令最多尝试4次。如果4次都没有收到响应,则直接加载默认USB配置枚举USB。 4. MCU响应开始启动命令给XU316,包含启动选项。 5. XU316解析启动选项。 #### 3.2 基础信息更新阶段(手动上电启动才运行) 条件:启动选项包含0x01(更新基础产品信息) 1. XU316请求读取基础产品信息, 发送0x01命令 2. MCU返回新基础产品信息给XU316。 3. XU316更新保存配置。 #### 3.3 上电配置获取阶段(手动上电启动才运行) 条件:启动选项包含0x02(更新上电配置)或者从Flash读取数据不完整。 1. XU316请求获取上电配置。 发送0x02命令 2. MCU返回新上电配置给XU316。 3. XU316更新保存配置。 #### 3.4 Loading应用固件阶段 步骤: 1. XU316获取当前模式, 发送0x03命令。 2. MCU返回当前模式给XU316。 3. XU316根据当前模式加载对应模式。 #### APP运行阶段 步骤: 1. XU316获取当前用户配置(音量等), 命令0x04。 2. MCU返回当前用户配置给XU316。 3. XU316初始化APP并应用当前用户配置。 4. XU316发送启动完成命令给MCU, 命令0x05。 5. MCU返回完成命令响应给XU316。 ### 4. 命令字列表 | 命令字 | 命令描述 | |--------|---------------------------------------------| | 0x00 | 开始启动 | | 0x01 | 读取产品信息 | | 0x02 | 读取上电配置信息 | | 0x03 | 获取当前音频模式 | | 0x04 | 获取当前用户配置 | | 0x05 | 启动完成命令 | | 0x20 | 报告应用状态 | | 0x21 | 媒体控制 | | 0x22 | 设置播放音频流格式和类型 | | 0x23 | 设置音频模式 | | 0x24 | 发送播放音量 | | 0x25 | 发送录音音量 | | 0x01 | HID启动MCU OTA升级命令 | | 0x02 | HID发送MCU升级数据包 | | 0x03 | HID发送MCU升级结束包 | > **注意事项:** > > 1. 所有命令都需要遵循基本帧格式 > 2. 部分命令需要等待对方确认响应 > 3. 某些命令在特定条件下才能使用(如OTA相关命令) > 4. 命令响应超时时间通常为5秒 > 5. 应用命令要在XU316启动命令完成后后再发送相关命令 ### 5. 协议机制 #### 5.1 确认机制 - 所有命令都需要对方回复确认 - 默认命令5秒超时时间,超时后视为失败,除非标注其他超时时间 ### 6. 业务协议 #### 6.1 基础功能命令 ##### 6.1.1 开始启动(命令字:0x00) ###### XU316发送: | 字段 | 字节数 | 说明 | |----------|-----|-------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x00 | | **命令字** | 1 | 0x00 | | **数据长度** | 1 | 17 | | **数据** | 17 | B0 重启原因:0x00 上电重启,0x01 切换模式重启,0xFF 其他原因重启 | | | | B1-2 unsigned short VID(UAC1.0) | | | | B3-4 unsigned short PID(UAC1.0) | | | | B5-6 unsigned short VID(UAC2.0) | | | | B7-8 unsigned short PID(UAC2.0) | | | | B9-12 unsigned int 基础信息32bit CRC | | | | B13-16 unsigned int 上电配置信息32bit CRC | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | ###### MCU返回字段描述 | 字段 | 字节数 | 说明 | |----------|-----|--------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x00 | | **数据长度** | 1 | 0x1 | | **数据** | 1 | B0 启动选项,见数据字段说明章节 ;0x00 使用所有的默认信息0x01 ; 需要更新基础产品信息0x02; 需要更新上电配置信息; 0x04 需要更新其他配置信息 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | ##### 6.1.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求余 | #### 6.1.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 | 上电配置信息,见业务信息章节 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.1.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求余 | ##### 6.1.5 获取当前用户配置(命令字:0x04) ###### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x00 | | **命令字** | 1 | 0x04 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据,表示没有额外的信息传输 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | ###### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x04 | | **数据长度**| 1 | 0x0E (即 14 字节) | | **数据** | 14 | 用户配置参数,见业务信息章节 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.1.6 启动完成命令(命令字:0x05) ##### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x00 | | **命令字** | 1 | 0x05 | | **数据长度**| 1 | 0x15 (即 21 字节) | | **数据** | 15 | 启动状态和应用运行参数 | | | | B0: 0 启动成功,1 模式不匹配,其他值 启动失败 | | | | B1-BN: 应用运行参数,见业务信息说明 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | ##### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x05 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2 业务控制和查询命令(启动完成后才能发送) #### 6.2.1 报告应用状态(命令字:0x20) #### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x00 | | **命令字** | 1 | 0x20 | | **数据长度**| 1 | 0x0E (即 14 字节) | | **数据** | 14 | 应用运行参数,见 **业务信息说明** | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x20 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.2 媒体控制(命令字:0x21) #### MCU发送 | 字段 | 字节数 | 说明 | |-------------|--------|---------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x21 | | **数据长度**| 1 | 0x01 (即 1 字节) | | **数据** | 1 | 媒体控制命令,见媒体控制字段 | | | | 0x00 音量+ / **Vol Up** | | | | 0x01 音量- / **Vol Down** | | | | 0x02 播放 / **PLAY** | | | | 0x03 下一曲 / **NEXT** | | | | 0x04 上一曲 / **PREV** | | | | 0x05 快进 / **FORWARD** | | | | 0x06 快退 / **REWIND** | | | | 0x07 静音 / **MUTE** | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### XU316返回 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x01 | | **命令字** | 1 | 0x21 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.3 设置播放音频流格式和类型(命令字:0x22) #### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x22 | | **数据长度**| 1 | 0x02 (即 2 字节) | | **数据** | 2 | 音频流格式和类型,见 **音频流格式和类型字段** | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x01 | | **命令字** | 1 | 0x22 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.4 设置音频模式(命令字:0x23) #### MCU发送 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x23 | | **数据长度**| 1 | 0x05 (即 5 字节) | | **数据** | 5 | 音频模式,见 **音频模式字段** | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### XU316返回 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x01 | | **命令字** | 1 | 0x23 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.5 发送播放音量(命令字:0x24) #### XU316发送 | 字段 | 字节数 | 说明 | |------------|-----|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x24 | | **数据长度**| 1 | 0x02 (即 2 字节) | | **数据** | 2 | 左声道:0xFF Mute,0-0dB -127:-127dB | | | | 右声道:0xFF Mute,0-0dB -127:-127dB | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x01 | | **命令字** | 1 | 0x24 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.6 发送录音音量(命令字:0x25) #### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|----------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x03 | | **命令字** | 1 | 0x25 | | **数据长度**| 1 | 0x01 (即 1 字节) | | **数据** | 1 | 0xFF Mute,0-0dB -127:-127dB | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|----------------------------------------------------| | **帧头** | 2 | 0x55aa | | **版本** | 1 | 0x01 | | **命令字** | 1 | 0x25 | | **数据长度**| 1 | 0x00 | | **数据** | 0 | 无数据 | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.7 切换MCLK(命令字:0x26) #### XU316发送: | 字段 | 字节数 | 说明 | | -------- | ------ | ----------------------------------- | | 帧头 | 2 | 0x55aa | | 版本 | 1 | 0x03 | | 命令字 | 1 | 0x26 | | 数据长度 | 1 | 1 | | 数据 | 1 | 0: 内部MCLK1: 外部MCLK | | 校验和 | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回: | 字段 | 字节数 | 说明 | | -------- | ------ | ----------------------------------- | | 帧头 | 2 | 0x55aa | | 版本 | 1 | 0x01 | | 命令字 | 1 | 0x26 | | 数据长度 | 1 | 0 | | 数据 | 0 | 无 | | 校验和 | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.2.8 测试命令(命令字:0xF0) #### XU316发送: | 字段 | 字节数 | 说明 | | -------- | ------ | ------------------------------------------------------------ | | 帧头 | 2 | 0x55aa | | 版本 | 1 | 0x03 | | 命令字 | 1 | 0xF0 | | 数据长度 | 1 | 4 | | 数据 | 4 | Byte 0:0: 使能I2C配置DAC 1: 禁止I2C配置DACByte 1 - 2: reserved | | 校验和 | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回: | 字段 | 字节数 | 说明 | | -------- | ------ | ----------------------------------- | | 帧头 | 2 | 0x55aa | | 版本 | 1 | 0x01 | | 命令字 | 1 | 0x26 | | 数据长度 | 1 | 0 | | 数据 | 0 | 无 | | 校验和 | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.3 MCU OTA升级命令(透传方式) #### 6.3.1 HID启动MCU OTA升级命令 #### XU316发送:(HID报告ID1输出报告40字节) | 字段 | 字节数 | 说明 | |-------------|--------|---------------------| | **帧头** | 2 | 0xaa55 | | **控制字** | 1 | 0x01 | | **扩展字节**| 3 | FileSize | | **FileSize**| 1 | 数据字段中数据的长度 | | **数据** | 32 | 默认为0(此字段用于可能的扩展数据) | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|-----------------------------------------------------------| | **帧头** | 2 | 0xaa55 | | **控制字** | 1 | 0x01 | | **数据** | 4 | | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.3.2 HID发送MCU升级数据包 #### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|-------------------------------------| | **帧头** | 2 | 0xaa55 | | **控制字** | 1 | 0x02 | | **扩展字节**| 3 | **address**:表示升级数据的地址(通常用于指定升级位置或块) | | **数据长度**| 1 | data字段中数据的长度 | | **数据** | 32 | data | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|------------------------------------------------------------| | **帧头** | 2 | 0xaa55 | | **控制字** | 1 | 0x02 | | **数据** | 4 | | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### 6.3.3 HID发送MCU升级结束包 #### XU316发送 | 字段 | 字节数 | 说明 | |-------------|--------|------------------------------------------------------------| | **帧头** | 2 | 0xaa55 | | **控制字** | 1 | 0x03 | | **扩展字节**| 3 | 保留(默认为0) | | **数据长度**| 1 | data字段中数据的长度 | | **数据** | 32 | 保留(默认为0) | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | #### MCU返回 | 字段 | 字节数 | 说明 | |-------------|--------|------------------------------------------------------------| | **帧头** | 2 | 0xaa55 | | **控制字** | 1 | 0x03 | | **数据** | 4 | | | **校验和** | 1 | 从帧头开始按字节求和,结果对256求余 | ### 7. 业务信息 #### 7.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 | 对所有字段(VID1, PID1, VID2, PID2, ManufactureName, ProductName, SerialNumber)计算的 32-bit CRC 校验值 | MCU可以根据XU316传回的的CRC来判断是否需要更新产品基础信息。 #### 7.2 上电配置信息 | 字段 | 字节数 | 说明 | |-------------------------|--------|-----------------------------------------------| | **默认音频模式** | 5 | 见音频模式字段说明 | | **静音时间** | 2 | 0-65535(ms) | | **麦克风默认音量** | 1 | 见麦克风音量字段说明 | | **DAC左声道默认音量** | 1 | 见DAC音量字段说明 | | **DAC右声道默认音量** | 1 | 见DAC音量字段说明 | | **CRC** | 4 | 对所有字段(默认音频模式、静音时间、麦克风音量、DAC左/右声道音量)计算的 32-bit CRC 校验值 | MCU可以根据XU316传回的的CRC来判断是否需要更新上电配置信息。 #### 7.3 应用运行参数 | 字段 | 字节数 | 说明 | |-------------------------|--------|-----------------------------------------------| | **音频模式** | 5 | 见音频模式字段说明 | | **静音时间** | 2 | 0-65535(ms) | | **麦克风音量** | 1 | 见麦克风音量字段说明 | | **DAC左声道音量** | 1 | 见DAC音量字段说明 | | **DAC右声道音量** | 1 | 见DAC音量字段说明 | | **CRC** | 4 | 对所有字段(音频模式、静音时间、麦克风音量、DAC左/右声道音量)计算的 32-bit CRC 校验值 | #### 7.4 用户配置参数 | 字段 | 字节数 | 说明 | |-------------------------|--------|-----------------------------------------------| | **音频模式** | 5 | 见音频模式字段说明 | | **静音时间** | 2 | 0-65535(ms) | | **麦克风音量** | 1 | 见麦克风音量字段说明 | | **DAC左声道音量** | 1 | 见DAC音量字段说明 | | **DAC右声道音量** | 1 | 见DAC音量字段说明 | | **CRC** | 4 | 对所有字段(音频模式、静音时间、麦克风音量、DAC左/右声道音量)计算的 32-bit CRC 校验值 | ### 8. 数据字段说明 #### 8.1 重启原因 | 长度 | 说明 | |-------|-------------------------------| | 1字节 | 0x00 上电重启 | | | 0x01 切换模式重启 | | | 0xFF 其他原因重启 | #### 8.2 启动选项 | 长度 | 说明 | |-------|-------------------------------| | 1字节 | 0x00 使用所有的默认信息 | | | 0x01 需要更新基础产品信息 | | | 0x02 需要更新上电配置信息 | | | 0x04 需要更新IO配置信息 | #### 8.3 音频模式 | 长度 | 功能位 | 说明 | |----------|------|----------------------------------------------------| | 6字节 | | | | BYTE 0 | Bit 7 | I2S Mode:0:Master、1:Slave | | | Bit 6 | Sync Mode: 0:Async、1:Sync | | | Bit 5 | MIDI:0:disable、1:enable | | | Bit 4 | SPDIF in:0:disable、1:enable | | | Bit 3 | SPDIF out:0:disable、1:enable | | | Bit 2 | ADAT in:0:disable、1:enable | | | Bit 1 | ADAT out:0:disable、1:enable | | | Bit 0 | DSD out:0:disable、1:enable | | BYTE 1 | Bit 0-3 | AUDIO Sample Rate: | | | | 0:44.1KHz、1:48KHz、2:88.2KHz、3:96KHz、 | | | | 4:176.4KHz、5:192KHz、6:352.8KHz、7:384KHz、 | | | | 8:705.6KHz、9:768KHz、10:1411.2KHz、11:1536KHz | | | Bit 4 | MQA:0:disable、1:enable | | | Bit 5 | Audio Class: 0:UAC 1.0、1:USB UAC 2.0 | | | Bit 6-7 | AUDIO WIDTH:0:16bit、1:24bit、2:32bit | | BYTE 2-3 | Bit 0-5 | Input:0:disable、x(>0):channel count | | | Bit 6-11 | Output:0:disable、x(>0):channel count | | | Bit 12-15 | Other cfg | | BYTE 4 | | 0:USB MODE、1:OPT MODE、2:COAX MODE、3:BT MODE、 | | | | 4:HDMI ARC MODE、5:WIFI MODE、6:AIRPLAY MODE、7:SPOTIFY MODE | #### 8.4 麦克风音量 | 长度 | 说明 | |-------|--------------------------------------------| | 1字节 | 0xFF Mute | | | 0x00-0xFE 有MCU和HID应用自己定义 | #### 8.5 DAC音量 | 长度 | 说明 | |-------|--------------------------------------------| | 1字节 | 0x00 Mute | | | 0x01-0xFF 有MCU和HID应用自己定义 | #### 8.6 上电模式 | 长度 | 说明 | |-------|------------------------------------------------------------| | 1字节 | 0x00 默认模式,启动时使用上电配置信息的参数 | | | 0x01 断电记忆模式,启动时使用从MCU获取的用户配置参数 | #### 8.7 媒体控制(媒体按键) | 长度 | 说明 | |-------|--------------------------------------| | 1字节 | 0x00 音量+/Vol Up | | | 0x01 音量-/Vol Down | | | 0x02 播放/PLAY | | | 0x03 下一曲/NEXT | | | 0x04 上一曲/PREV | | | 0x05 快进/FORWARD | | | 0x06 快退/REWIND | | | 0x07 静音/MUTE | #### 8.8 音频流格式和类型 #### 音频流格式 | 长度 | 说明 | |-------|--------------------------------------| | 1字节 | 0x00 AUDIO_PCM_44100 | | | 0x01 AUDIO_PCM_48000 | | | 0x02 AUDIO_PCM_88200 | | | 0x03 AUDIO_PCM_96000 | | | 0x04 AUDIO_PCM_176400 | | | 0x05 AUDIO_PCM_192000 | | | 0x06 AUDIO_PCM_352800 | | | 0x07 AUDIO_PCM_384000 | | | 0x08 AUDIO_PCM_705600 | | | 0x09 AUDIO_PCM_768000 | | | 0x0A AUDIO_PCM_1441200 | | | 0x0B AUDIO_PCM_1536000 | | | 0x0C AUDIO_PCM_32000 | | | 0x0D AUDIO_PCM_64000 | | | 0x0E AUDIO_PCM_128000 | | | 0x0F AUDIO_PCM_256000 | | | 0x10 AUDIO_PCM_512000 | | | 0x11 AUDIO_DSD_64 | | | 0x12 AUDIO_DSD_128 | | | 0x13 AUDIO_DSD_256 | | | 0x14 AUDIO_DSD_512 | | | 0x15 AUDIO_DSD_1024 | | | 0x16 AUDIO_MQA_44100 | | | 0x17 AUDIO_MQA_88200 | | | 0x18 AUDIO_MQA_176400 | | | 0x19 AUDIO_MQA_352800 | | | 0x1A AUDIO_MQA_705600 | | | 0x1B AUDIO_MQA_1411200 | | | 0x1C AUDIO_MQA_2822400 | | | 0x1D AUDIO_MQA_5644800 | | | 0x1E AUDIO_MQA_48000 | | | 0x1F AUDIO_MQA_96000 | | | 0x20 AUDIO_MQA_192000 | | | 0x21 AUDIO_MQA_384000 | | | 0x22 AUDIO_MQA_768000 | | | 0x23 AUDIO_MQA_1536000 | | | 0x24 AUDIO_MQA_3072000 | | | 0x25 AUDIO_MQA_6144000 | | | 0x26 AUDIO_MQA_64000 | | | 0x27 AUDIO_MQA_128000 | | | 0x28 AUDIO_MQA_256000 | | | 0x29 AUDIO_MQA_512000 | | | 0x2A AUDIO_MQA_1024000 | | | 0x2B AUDIO_MQA_2048000 | | | 0x2C AUDIO_MQA_4096000 | | | 0x2D AUDIO_MQA_8192000 | | | 0xFF AUDIO_NO_USED | #### 音频类型 | 长度 | 说明 | |-------|--------------------------------------| | 1字节 | 0x00 PCM | | | 0x01 Reserve | | | 0x02 MQA | | | 0x03 MQB | | | 0x04 MQA_Studio | | | 0x05 DSD |