Files
phaten-audio/zh/docs/dev_doc/a316/xu316.md
PhatenIoT-yan 8d10d3da3f add
添加项目文件
2025-04-29 16:11:32 +08:00

746 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 VIDUAC1.0 |
| | | B3-4 unsigned short PIDUAC1.0 |
| | | B5-6 unsigned short VIDUAC2.0 |
| | | B7-8 unsigned short PIDUAC2.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 Mute0-0dB -127-127dB |
| | | 右声道0xFF Mute0-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 Mute0-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 00: 使能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-65535ms |
| **麦克风默认音量** | 1 | 见麦克风音量字段说明 |
| **DAC左声道默认音量** | 1 | 见DAC音量字段说明 |
| **DAC右声道默认音量** | 1 | 见DAC音量字段说明 |
| **CRC** | 4 | 对所有字段默认音频模式、静音时间、麦克风音量、DAC左/右声道音量)计算的 32-bit CRC 校验值 |
MCU可以根据XU316传回的的CRC来判断是否需要更新上电配置信息。
#### 7.3 应用运行参数
| 字段 | 字节数 | 说明 |
|-------------------------|--------|-----------------------------------------------|
| **音频模式** | 5 | 见音频模式字段说明 |
| **静音时间** | 2 | 0-65535ms |
| **麦克风音量** | 1 | 见麦克风音量字段说明 |
| **DAC左声道音量** | 1 | 见DAC音量字段说明 |
| **DAC右声道音量** | 1 | 见DAC音量字段说明 |
| **CRC** | 4 | 对所有字段音频模式、静音时间、麦克风音量、DAC左/右声道音量)计算的 32-bit CRC 校验值 |
#### 7.4 用户配置参数
| 字段 | 字节数 | 说明 |
|-------------------------|--------|-----------------------------------------------|
| **音频模式** | 5 | 见音频模式字段说明 |
| **静音时间** | 2 | 0-65535ms |
| **麦克风音量** | 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 Mode0Master、1Slave |
| | Bit 6 | Sync Mode: 0:Async、1:Sync |
| | Bit 5 | MIDI0:disable、1enable |
| | Bit 4 | SPDIF in0:disable、1enable |
| | Bit 3 | SPDIF out0:disable、1enable |
| | Bit 2 | ADAT in0:disable、1enable |
| | Bit 1 | ADAT out0:disable、1enable |
| | Bit 0 | DSD out0:disable、1enable |
| BYTE 1 | Bit 0-3 | AUDIO Sample Rate |
| | | 044.1KHz、148KHz、288.2KHz、396KHz、 |
| | | 4176.4KHz、5192KHz、6352.8KHz、7384KHz、 |
| | | 8705.6KHz、9768KHz、101411.2KHz、111536KHz |
| | Bit 4 | MQA0:disable、1enable |
| | Bit 5 | Audio Class: 0:UAC 1.0、1:USB UAC 2.0 |
| | Bit 6-7 | AUDIO WIDTH016bit、124bit、232bit |
| BYTE 2-3 | Bit 0-5 | Input0:disable、x(>0):channel count |
| | Bit 6-11 | Output0:disable、x(>0):channel count |
| | Bit 12-15 | Other cfg |
| BYTE 4 | | 0USB MODE、1OPT MODE、2COAX MODE、3BT MODE、 |
| | | 4HDMI ARC MODE、5WIFI MODE、6AIRPLAY MODE、7SPOTIFY 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 |