Skip to content

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;