Edit online

数据结构设计

  • hal 层数据结构
    struct aic_audio_buf_info
    {
        void *buf;
        uint32_t buf_len;
        uint32_t period_len;
    };
    
    struct aic_audio_transfer_info
    {
        struct aic_dma_chan *dma_chan;
        struct aic_audio_buf_info buf_info;
        int transfer_type;
    };
    
    struct aic_audio_ctrl
    {
        unsigned long reg_base;
        uint32_t irq_num;
        uint32_t clk_id;
        struct aic_audio_transfer_info tx_info;   //TX buffer 的参数
        struct aic_audio_transfer_info dmic_info; //DMIC RX buffer 的参数
        struct aic_audio_transfer_info amic_info; //AMIC RX buffer 的参数
        audio_callback callback;
        void *arg;
        struct aic_audio_config config;
    };
  • driver 层数据结构
    struct aic_audio
    {
        struct rt_audio_device audio;
        aic_audio_ctrl codec;
        rt_uint8_t volume;      //playback 音量
        char *pa_name;          //PA 引脚的名字
        unsigned int gpio_pa;   //PA 引脚的 IO 口号
    };
    
    struct aic_dmic
    {
        struct rt_audio_device audio;
        aic_audio_ctrl codec;
        rt_uint8_t volume;
        uint8_t index;
    };