Skip to content

XU316音频接口控制代码示例

文档说明

本文档提供了XU316音频接口控制相关的代码示例,主要包含以下内容: 1. 串口通信协议定义 2. 音频接口配置参数 3. 音频采样率和通道配置 4. 音量控制参数设置

这些代码示例可以帮助开发者快速实现XU316与MCU的通信功能,以及配置各种音频接口参数。

串口通信协议

协议定义

#define SWAP16(x) ((((x) >> 8) & 0x00FF) | (((x) << 8) & 0xFF00))
#define SWAP32(x) ((((x) >> 24) & 0x000000FF) | (((x) >> 8) & 0x0000FF00) | (((x) << 8) & 0x00FF0000) | (((x) << 24) & 0xFF000000))
/*协议解析*/
#define UART_FRAME_HEAD 0xAA
#define UART_FRAME_TAIL 0x55
#define HEX_UPPERCASE 0
#define HEX_LOWERCASE 1
#define HEX_TABLE HEX_UPPERCASE
// 数据帧结构
typedef struct
{
    uint8_t head;     // 帧头 0xAA
    uint8_t cmd;      // 命令字
    uint8_t len;      // 数据长度
    uint8_t data[32]; // 数据区
    uint8_t check;    // 校验和
    uint8_t tail;     // 帧尾 0x55
} uart_frame_t;

串口缓冲区管理

/*串口*/
/* buffer sizes */
#define RX_BUFFER_SIZE 256
#define TX_BUFFER_SIZE 256
#define TX_BUFFER_NUM 2 // 双缓冲

typedef struct
{
    uint8_t buffer[TX_BUFFER_SIZE];
    uint16_t size;
    uint8_t busy;
} TX_BUFFER;

typedef struct
{
    TX_BUFFER tx_buf[TX_BUFFER_NUM];
    uint8_t curr_buf;
    uint8_t next_buf;
    uint8_t dma_sending;
} UART_TX_MANAGER;
typedef enum
{
    LOG_SEND,
    LOG_RECV,
    LOG_USER,
    LOG_ERR
} log_dir_t;

音频接口配置

接口模式配置

// I2S主从模式配置
#define I2S_MODE I2S_MODE_MASTER // I2S主模式,XU316作为I2S主设备
// 同步模式配置
#define SYNC_MODE SYNC // 同步模式,用于音频时钟同步
// MIDI接口配置
#define MIDI_MODE MIDI_MODE_ENABLE // MIDI功能启用
// SPDIF输入接口配置
#define SPDIF_IN_MODE SPDIF_IN_MODE_ENABLE // SPDIF输入功能启用
// SPDIF输出接口配置
#define SPDIF_OUT_MODE SPDIF_OUT_MODE_ENABLE // SPDIF输出功能启用
// ADAT输入接口配置 (ADAT是一种8通道数字音频传输格式)
#define ADAT_IN_MODE ADAT_IN_MODE_ENABLE // ADAT输入功能启用
// ADAT输出接口配置
#define ADAT_OUT_MODE ADAT_OUT_MODE_ENABLE // ADAT输出功能启用
// DSD输出接口配置 (DSD是直接数字流,用于高解析度音频)
#define DSD_OUT_MODE DSD_OUT_MODE_ENABLE // DSD输出功能启用

音频参数配置

// 初始化音频采样率
#define AUDIO_SAMPLE_RATE (uint8_t)AUDIO_SAMPLE_RATE_44100
#define MQA_MODE MQA_MODE_DISABLE
#define AUDIO_CLASS AUDIO_CLASS_UAC1
#define AUDIO_WIDTH AUDIO_WIDTH_24
// 初始化音频通道
#define AUDIO_INPUT_CHANNEL 9
#define AUDIO_OUTPUT_CHANNEL 3
// 初始化音频类型
#define AUDIO_MODE USB_MODE
// 静音时间 2   0-65535(ms)
#define MUTE_DURATION 100
// 麦克风默认音量
#define MIC_VOLUME 10
// DAC左声道默认音量   1   见DAC音量字段说明
#define DAC_L_VOLUME 30
// DAC右声道默认音量   1   见DAC音量字段说明
#define DAC_R_VOLUME 20

```