Edit online

接口设计

2 Dec 2024
Read time: 4 minute(s)

Driver 层接口设计

Driver 层可以同时实现 playback 和 record 两个功能,主要根据的是音频数据流的方向进行判别。

1. drv_i2s_sound_init
函数原型 rt_err_t drv_i2s_sound_init(struct rt_audio_device *audio)
功能说明 i2s 的初始化函数
参数定义 audio:指向音频设备的指针
返回值 RT_EOK:执行成功
注意事项 -
2. drv_i2s_sound_buffer_info
函数原型 void drv_i2s_sound_buffer_info(struct rt_audio_device *audio, struct rt_audio_buf_info *info)
功能说明 获取音频的 TX buffer 参数
参数定义
audio:指向音频设备的指针
info:用于获取 TX buffer 参数的指针
返回值
注意事项 -
3. drv_i2s_sound_start
函数原型 rt_err_t drv_i2s_sound_start(struct rt_audio_device *audio, int stream)
功能说明 开始音频播放
参数定义
audio:指向音频设备的指针
stream:音频数据流方向
返回值
RT_EOK:执行成功
-RT_EINVAL:参数非法
注意事项 -
4. drv_i2s_sound_stop
函数原型 rt_err_t drv_i2s_sound_stop(struct rt_audio_device *audio, int stream)
功能说明 结束音频播放
参数定义
audio:指向音频设备的指针
stream:音频数据流方向
返回值
RT_EOK:执行成功
-RT_EINVAL:参数非法
注意事项 -
5. drv_i2s_sound_pause
函数原型 rt_err_t drv_i2s_sound_pause(struct rt_audio_device *audio, int enable)
功能说明 暂停/恢复音频播放
参数定义
audio:指向音频设备的指针
enable:音频暂停和恢复播放使能位(0 为恢复,非 0 为暂停)
返回值
RT_EOK:执行成功
注意事项 -
6. drv_i2s_sound_configure
函数原型 rt_err_t drv_i2s_sound_configure(struct rt_audio_device *audio, struct rt_audio_caps *caps)
功能原型 音频设备配置接口,用于配置采样格式,采样率,通道数等接口
参数定义
audio:指向音频设备的指针
caps:指向配置参数的指针
返回值
RT_EOK:执行成功
-RT_ERROR:参数不支持
注意事项 -
7. drv_i2s_sound_getcaps
函数原型 rt_err_t drv_i2s_sound_getcaps(struct rt_audio_device *audio, struct rt_audio_caps *caps)
功能说明 获取音频设备的参数
参数定义
audio:指向音频设备的指针
caps:指向配置参数的指针
返回值
RT_EOK:执行成功
-RT_ERROR:参数不支持
注意事项 -
8. drv_audio_get_i2s_sound_avail
函数原型 rt_size_t drv_i2s_sound_get_playback_avail(struct rt_audio_device *audio)
功能说明 获取音频缓存的数据大小
参数定义
audio:指向音频设备的指针
返回值
缓存数据的大小
注意事项 -

HAL 层接口设计

HAL 层接口也是分 playback,record 两部分进行设计,下面以 playback 端的接口进行说明。

9. hal_i2s_protocol_select
函数原型 int hal_i2s_protocol_select(aic_i2s_ctrl *i2s, i2s_protocol_t protocol)
功能说明 设置传输协议
参数定义
i2s:指向 aic_i2s_ctrl 的指针
protocol:传输协议
返回值
0:执行成功
-EINVAL:参数不支持
注意事项 -
10. hal_i2s_sample_width_select
函数原型 int hal_i2s_sample_width_select(aic_i2s_ctrl *i2s, i2s_sample_width_t width)
功能说明 设置采样通道的位宽
参数定义
i2s:指向 aic_i2s_ctrl 的指针
width:通道的位宽
返回值
0:执行成功
注意事项 -
11. hal_i2s_mclk_set
函数原型 int hal_i2s_mclk_set(aic_i2s_ctrl *i2s, i2s_sample_rate_t sample_rate, uint32_t mclk_nfs)
功能说明 设置 MCLK 的时钟频率
参数定义
i2s:指向 aic_i2s_ctrl 的指针
sample_rate:采样率
mclk_nfs:MCLK 的时钟频率
返回值
0:执行成功
-EINVAL:参数不支持
注意事项 -
12. hal_i2s_polarity_set
函数原型 void hal_i2s_polarity_set(aic_i2s_ctrl *i2s, i2s_polarity_t polarity)
功能说明 选择 LRCK 的左右通道极性
参数定义
i2s:指向 aic_i2s_ctrl 的指针
polarity:LRCK 的左右通道极性
返回值
注意事项 -
13. hal_i2s_sclk_set
函数原型 int hal_i2s_sclk_set(aic_i2s_ctrl *i2s, i2s_sample_rate_t sample_rate, uint32_t sclk_nfs)
功能说明 设置 SCLK/LRCK 的比率
参数定义
i2s:指向 aic_i2s_ctrl 的指针
sample_rate:采样率
sclk_nfs:需要设置的比率
返回值
0:执行成功
-EINVAL:参数不支持
注意事项 -
14. hal_i2s_channel_select
函数原型 void hal_i2s_channel_select(aic_i2s_ctrl *i2s, i2s_sound_channel_t channel, i2s_stream_t stream)
功能说明 I2S 通道数量设置
参数定义
i2s:指向 aic_i2s_ctrl 的指针
channel:指向 i2s_sound_channel_t 的变量,表示要使用的通道
stream:音频数据流的方向
返回值
注意事项 -
15. hal_i2s_playback_start
函数原型 void hal_i2s_playback_start(aic_i2s_ctrl *i2s, i2s_format_t *format)
功能说明 开始播放
参数定义
i2s:指向 aic_i2s_ctrl 的指针
format:指向 i2s_format_t 的指针
返回值
注意事项 -
16. hal_i2s_playback_stop
函数原型 void hal_i2s_playback_stop(aic_i2s_ctrl *i2s)
功能说明 停止播放
参数定义
i2s:指向 aic_i2s_ctrl 的指针
返回值
注意事项 -