XU316与MCU通信协议命令宏定义¶
文档说明¶
本文档提供了XU316与MCU通信协议相关的命令宏定义,主要包含以下内容: 1. 通信帧格式定义 2. MCU命令数据长度定义 3. 通信协议命令字枚举 4. 音频格式和类型定义 5. 命令数据结构定义
这些宏定义和数据结构是XU316与MCU通信的基础,开发者需要正确理解和使用这些定义来实现通信功能。
通信帧格式¶
基本帧格式定义¶
#define FRAME_HEADER_H 0x55
#define FRAME_HEADER_L 0xAA
#define PROTOCOL_VERSION 0x01
#define PROTOCOL_VERSION_RX 0x03
命令数据长度定义¶
XU316命令数据长度¶
#define CMD00_XU316_DATA_LEN 0x11 // 0x00 命令:开始启动(启动选项)
#define CMD01_XU316_DATA_LEN 0x00 // 0x01 命令:读取产品信息(60字节固件信息)
#define CMD02_XU316_DATA_LEN 0x00 // 0x02 命令:读取上电配置(14字节配置参数)
#define CMD03_XU316_DATA_LEN 0x00 // 0x03 命令:获取音频模式(5字节模式参数)
#define CMD04_XU316_DATA_LEN 0x00 // 0x04 命令:获取用户配置(14字节用户设置)
#define CMD05_XU316_DATA_LEN 0x15 // 0x05 命令:启动完成(无数据字段)
#define CMDF1_XU316_DATA_LEN 0x03 // 0xF1 命令:版本号查询(3字节版本信息)
#define CMD20_XU316_DATA_LEN 0x14 // 0x20 命令:设置音量
#define CMD21_XU316_DATA_LEN 0x00 // 0x21 命令:音效模式
#define CMD22_XU316_DATA_LEN 0x02 // 0x22 命令:设备状态查询
#define CMD23_XU316_DATA_LEN 0x00 // 0x23 命令:蓝牙控制
#define CMD24_XU316_DATA_LEN 0x02 // 0x24 命令:发送播放音量
#define CMD25_XU316_DATA_LEN 0x01 // 0x25 命令:发送录音音量
#define CMD27_XU316_DATA_LEN 0x00 // 0x27 命令:特殊静音解除(无数据字段)
#define CMD28_XU316_DATA_LEN 0x01 // 0x28 命令:音频格式延迟设置(1字节参数)
#define CMD_HID_TRANSPARENT_DATA_LEN 0x39 // 0xEE 命令:HID透传/OTA升级(57字节)
MCU命令数据长度¶
#define CMD00_MCU_DATA_LEN 0x01 // 0x00 命令:开始启动(启动选项)
#define CMD01_MCU_DATA_LEN 0x3C // 0x01 命令:读取产品信息(60字节固件信息)
#define CMD02_MCU_DATA_LEN 0x0E // 0x02 命令:读取上电配置(14字节配置参数)
#define CMD03_MCU_DATA_LEN 0x05 // 0x03 命令:获取音频模式(5字节模式参数)
#define CMD04_MCU_DATA_LEN 0x0E // 0x04 命令:获取用户配置(14字节用户设置)
#define CMD05_MCU_DATA_LEN 0x00 // 0x05 命令:启动完成(无数据字段)
#define CMDF1_MCU_DATA_LEN 0x00 // 0xF1 命令:版本号查询(无数据字段)
#define CMD20_MCU_DATA_LEN 0x00 // 0x20 命令:设置音量
#define CMD21_MCU_DATA_LEN 0x01 // 0x21 命令:音效模式
#define CMD22_MCU_DATA_LEN 0x00 // 0x22 命令:设备状态查询
#define CMD23_MCU_DATA_LEN 0x05 // 0x23 命令:设置音频模式
#define CMD24_MCU_DATA_LEN 0x00 // 0x24 命令:发送播放音量
#define CMD25_MCU_DATA_LEN 0x00 // 0x25 命令:发送录音音量
#define CMD27_MCU_DATA_LEN 0x00 // 0x27 命令:特殊静音解除(无数据字段)
#define CMD28_MCU_DATA_LEN 0x00 // 0x28 命令:音频格式延迟设置(无数据字段)
#define CMD_HID_TRANSPARENT_MCU_DATA_LEN 0x39 // 0xEE 命令:HID透传/OTA升级(57字节)
通信协议命令定义¶
命令字枚举¶
typedef enum
{
/****** 基础控制命令 (0x00-0x05) ******/
CMD_STARTUP = 0x00, // 系统启动
CMD_GET_PRODUCT_INFO = 0x01, // 产品信息查询
CMD_GET_BOOT_CFG = 0x02, // 上电配置读取
CMD_GET_AUD_MODE = 0x03, // 音频模式获取
CMD_GET_USER_CFG = 0x04, // 用户配置获取
CMD_STARTUP_COMPLETE = 0x05, // 启动完成通知
CMD_GET_VERSION = 0xF1, // 版本号查询
/****** 业务控制命令 (0x20-0x2F) ******/
CMD_REPORT_STATUS = 0x20, // 状态报告
CMD_MEDIA_CONTROL = 0x21, // 媒体控制
CMD_SET_PLAY_FORMAT = 0x22, // 音频格式设置
CMD_SET_AUDIO_MODE = 0x23, // 音频模式设置
CMD_SET_PLAY_VOL = 0x24, // 播放音量设置
CMD_SET_REC_VOL = 0x25, // 录音音量设置
CMD_SPECIAL_UNMUTE = 0x27, // 特殊静音解除
CMD_SET_AUDIO_FORMAT_DELAY = 0x28, // 音频格式延迟设置
CMD_HID_TRANSPARENT = 0xEE, // HID透传/OTA升级命令
CMD_COUNT = CMD_SET_REC_VOL + 1 // 当前支持命令总数
} mcu_command_t;
启动选项枚举(Bitmask模式)¶
Note
启动选项枚举(Bitmask模式) 使用uint8_t确保单字节存储,支持多选项组合
typedef enum
{
BOOT_OPTION_USE_DEFAULTS = 0x00, // 使用所有默认配置
BOOT_OPTION_UPDATE_BASIC_INFO = 0x01, // 更新基础产品信息 (bit0)
BOOT_OPTION_UPDATE_POWER_CFG = 0x02, // 更新上电配置信息 (bit1)
BOOT_OPTION_UPDATE_OTHER_CFG = 0x04 // 预留配置,目前没用 (bit2)
} boot_option_t;
媒体控制枚举¶
typedef enum
{
MEDIA_KEY_VOLUME_UP = 0x00, // 音量增加
MEDIA_KEY_VOLUME_DOWN = 0x01, // 音量减小
MEDIA_KEY_PLAY_PAUSE = 0x02, // 播放/暂停
MEDIA_KEY_NEXT_TRACK = 0x03, // 下一曲目
MEDIA_KEY_PREV_TRACK = 0x04, // 上一曲目
MEDIA_KEY_FAST_FORWARD = 0x05, // 快进
MEDIA_KEY_REWIND = 0x06, // 快退
MEDIA_KEY_MUTE = 0x07 // 静音切换
// 预留扩展位(0x08-0xFF为协议保留区域)
} media_control_t;
音频格式定义¶
Note
音频流格式枚举(兼容AES67-2020标准) 显式指定底层类型为uint8_t确保1字节存储
音频流格式枚举¶
typedef enum
{
// PCM采样率格式 (0x00-0x10)
AUDIO_PCM_44100 = 0x00,
AUDIO_PCM_48000 = 0x01,
AUDIO_PCM_88200 = 0x02,
AUDIO_PCM_96000 = 0x03,
AUDIO_PCM_176400 = 0x04,
AUDIO_PCM_192000 = 0x05,
AUDIO_PCM_352800 = 0x06,
AUDIO_PCM_384000 = 0x07,
AUDIO_PCM_705600 = 0x08,
AUDIO_PCM_768000 = 0x09,
AUDIO_PCM_1441200 = 0x0A,
AUDIO_PCM_1536000 = 0x0B,
AUDIO_PCM_32000 = 0x0C,
AUDIO_PCM_64000 = 0x0D,
AUDIO_PCM_128000 = 0x0E,
AUDIO_PCM_256000 = 0x0F,
AUDIO_PCM_512000 = 0x10,
// DSD格式 (0x11-0x15)
AUDIO_DSD_64 = 0x11,
AUDIO_DSD_128 = 0x12,
AUDIO_DSD_256 = 0x13,
AUDIO_DSD_512 = 0x14,
AUDIO_DSD_1024 = 0x15,
// MQA格式 (0x16-0x2D)
AUDIO_MQA_44100 = 0x16,
AUDIO_MQA_88200 = 0x17,
AUDIO_MQA_176400 = 0x18,
AUDIO_MQA_352800 = 0x19,
AUDIO_MQA_705600 = 0x1A,
AUDIO_MQA_1411200 = 0x1B,
AUDIO_MQA_2822400 = 0x1C,
AUDIO_MQA_5644800 = 0x1D,
// -- 基于48kHz系列 --
AUDIO_MQA_48000 = 0x1E,
AUDIO_MQA_96000 = 0x1F,
AUDIO_MQA_192000 = 0x20,
AUDIO_MQA_384000 = 0x21,
AUDIO_MQA_768000 = 0x22,
AUDIO_MQA_1536000 = 0x23,
AUDIO_MQA_3072000 = 0x24,
AUDIO_MQA_6144000 = 0x25,
// -- 其他基频系列 --
AUDIO_MQA_64000 = 0x26,
AUDIO_MQA_128000 = 0x27,
AUDIO_MQA_256000 = 0x28,
AUDIO_MQA_512000 = 0x29,
AUDIO_MQA_1024000 = 0x2A,
AUDIO_MQA_2048000 = 0x2B,
AUDIO_MQA_4096000 = 0x2C,
AUDIO_MQA_8192000 = 0x2D,
// 特殊保留值
AUDIO_NO_USED = 0xFF
} audio_format_t;
音频类型枚举¶
Note
音频类型枚举(兼容AES67-2020标准) 显式指定底层类型为uint8_t确保1字节存储
typedef enum
{
AUDIO_TYPE_PCM = 0x00, // PCM标准音频
AUDIO_TYPE_RESERVE = 0x01, // 协议保留字段
AUDIO_TYPE_MQA = 0x02, // MQA编码音频
AUDIO_TYPE_MQB = 0x03, // MQB编码音频(二级扩展)
AUDIO_TYPE_MQA_STUDIO = 0x04, // MQA Studio母带级
AUDIO_TYPE_DSD = 0x05 // Direct Stream Digital
// 0x06-0xFF为未来扩展保留
} audio_type_t;
命令数据结构¶
数据结构定义¶
typedef uint8_t byte_pair[2];
// 命令数据结构体
typedef struct __attribute__((packed))
{
uint8_t boot_option; // 0x00: 启动选项数据
// 产品基础信息
uint8_t vid_uac1[2]; // UAC1.0厂商ID
uint8_t pid_uac1[2]; // UAC1.0产品ID
uint8_t vid_uac2[2]; // UAC2.0厂商ID
uint8_t pid_uac2[2]; // UAC2.0产品ID
uint8_t product_manufacturer[16]; // 制造商名称
uint8_t product_name[16]; // 产品名称
uint8_t product_serial[16]; // 序列号
uint8_t basic_info_crc[4]; // 基础信息CRC32
// 用户配置就是上电配置信息也是应用运行参数
uint8_t startup_status; // 启动状态
uint8_t audio_mode[5];
uint8_t mute_duration[2]; // 静音时间(ms)
uint8_t mic_volume; // 麦克风音量也是录音音量
uint8_t dac_l_volume; // 左声道音量(0-255)
uint8_t dac_r_volume; // 右声道音量(0-255)
uint8_t power_cfg_crc[4]; // 上电配置CRC32
// 应用运行参数
uint8_t media_control; // 媒体控制命令
uint8_t audio_format; // 音频格式代码
uint8_t audio_type; // 音频类型代码
} mcu_data_t;