数据结构设计
- 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; };