![]() |
CI130X SDK API手册
2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
|
音频CODEC管理模块,初始化IIS和CODEC的接口 更多...
结构体 | |
struct | cm_sound_info_t |
音频信息结构体 更多... | |
struct | cm_play_buffer_info_t |
音频buffer信息结构体 更多... | |
struct | cm_record_buffer_info_t |
音频buffer信息结构体 更多... | |
union | cm_pcm_buffer_info_t |
struct | cm_codec_interface_t |
CODEC操作接口 更多... | |
struct | cm_iis_info_t |
union | cm_iis_info_t.__unnamed__ |
struct | codec_hw_info_str |
CODEC相关信息结构体 更多... | |
宏定义 | |
#define | MAX_CODEC_NUM 2 |
设置音频CODEC管理模块支持的最大CODEC数量。 更多... | |
类型定义 | |
typedef struct codec_hw_info_str | cm_codec_hw_info_t |
CODEC相关信息结构体 更多... | |
枚举 | |
enum | audio_play_card_over_sample_t { AUDIO_PLAY_OVER_SAMPLE_128 = 128, AUDIO_PLAY_OVER_SAMPLE_192 = 192, AUDIO_PLAY_OVER_SAMPLE_256 = 256, AUDIO_PLAY_OVER_SAMPLE_384 = 384 } |
定义放音设备支持的过采样率。 更多... | |
enum | audio_play_card_clk_source_t { AUDIO_PLAY_CLK_SOURCE_IPCORE = 0, AUDIO_PLAY_CLK_SOURCE_EXT_OSC = 1, AUDIO_PLAY_CLK_SOURCE_INTER_RC = 2, AUDIO_PLAY_CLK_SOURCE_PAD_IN = 3, AUDIO_PLAY_CLK_SOURCE_OSC_OR_INEER_RC = 0xff } |
定义放音设备可选择的时钟源。 更多... | |
enum | cm_iis_txrx_t { CM_IIS_TX, CM_IIS_RX } |
enum | io_direction_t { CODEC_INPUT, CODEC_OUTPUT } |
enum | cm_io_ctrl_cmd_t { CM_IOCTRL_SET_DAC_GAIN, CM_IOCTRL_SET_ADC_GAIN, CM_IOCTRL_ALC_ENABLE, CM_IOCTRL_ALC_DISABLE, CM_IOCTRL_DAC_ENABLE, CM_IOCTRL_MUTE } |
enum | cm_cha_sel_t { CM_CHA_LEFT = 1, CM_CHA_RIGHT = 2, CM_CHA_TWO_CHA = 3 } |
函数 | |
void | cm_init () |
初始化音频CODEC管理模块。 更多... | |
int | cm_reg_codec (int codec_index, cm_codec_hw_info_t *p_codec_hw_info) |
向音频CODEC管理模块注册一个音频CODEC。 更多... | |
int | cm_register_codec_callback (int codec_index, void(*callback_func)(void)) |
注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。 更多... | |
int | cm_config_pcm_buffer (int codec_index, io_direction_t io_dir, cm_pcm_buffer_info_t *pcm_buffer_info) |
配置指定音频CODEC的PCM数据buffer。 更多... | |
int | cm_config_codec (int codec_index, io_direction_t io_dir, cm_sound_info_t *sound_info) |
配置指定音频CODEX的音频信息。 更多... | |
int | cm_start_codec (int codec_index, io_direction_t io_dir) |
启动指定的音频CODEC播放或录音。 更多... | |
int | cm_stop_codec (int codec_index, io_direction_t io_dir) |
停止指定的音频CODEC播放或录音。 更多... | |
int | cm_read_codec (int codec_index, uint32_t *data_addr, uint32_t *data_size) |
从指定的音频CODEC读取录制的PCM数据,此接口为同步调用接口,如果当前没有PCM数据可以读取,此调用会被阻塞,直到有PCM数据可读取时才返回。 更多... | |
int | cm_write_codec (int codec_index, void *pcm_buffer, uint32_t wait_tick) |
向指定的音频CODEC写入数据。 更多... | |
void | cm_get_pcm_buffer (int codec_index, uint32_t *ret_buf, uint32_t wait_tick) |
从指定的音频CODEC获取空闲的PCM数据buffer,用于填充PCM数据后再通过cm_write_codec接口写入音频CODEC。 更多... | |
int | cm_release_pcm_buffer (int codec_index, io_direction_t io_dir, void *pcm_buffer) |
向指定的音频CODEC释放一个PCM数据buffer,释放的PCM数据buffer必须是通过cm_read_codec读取到的数据buffer,用于循环录制音频数据。 更多... | |
int | cm_set_codec_dac_gain (int codec_index, cm_cha_sel_t cha, int gain) |
设置指定的音频CODEC的DAC(播放)的指定通道的增益。 更多... | |
int | cm_set_codec_adc_gain (int codec_index, cm_cha_sel_t cha, int gain) |
设置指定的音频CODEC的ADC(录音)的指定通道的增益。 更多... | |
int | cm_set_codec_alc (int codec_index, cm_cha_sel_t cha, FunctionalState alc_enable) |
设置指定的音频CODEC录音时是否开启ALC功能。 更多... | |
int | cm_set_codec_dac_enable (int codec_index, int channel, FunctionalState en) |
设置指定的音频CODEC的DAC功能是否使能。 更多... | |
int | cm_get_codec_empty_buffer_number (int codec_index, io_direction_t io_dir) |
获取指定的音频CODEC的空闲buffer数量。 更多... | |
int | cm_get_codec_busy_buffer_number (int codec_index, io_direction_t io_dir) |
获取指定的音频CODEC的忙buffer数量。 更多... | |
int | cm_set_codec_mute (int codec_index, io_direction_t io_dir, int channel_flag, FunctionalState en) |
设置静音模式。 更多... | |
int | icodec_init (cm_codec_hw_info_t *codec_hw_info) |
包括CODEC整个的初始化,ADC、DAC的初始化 更多... | |
int | icodec_start (io_direction_t io_dir) |
ADC、DAC的启动 更多... | |
int | icodec_config (cm_sound_info_t *audio_info, io_direction_t io_dir) |
配置CODEC ADC或者DAC的采样率、数据位宽以及通道选择 更多... | |
int | icodec_stop (io_direction_t io_dir) |
ADC、DAC的关闭 更多... | |
int | icodec_ioctl (io_direction_t io_dir, uint32_t param0, uint32_t param1, uint32_t param2) |
ADC、DAC的配置项,mute使能或关闭、配置增益等 更多... | |
音频CODEC管理模块,初始化IIS和CODEC的接口
struct cm_sound_info_t |
音频信息结构体
成员变量 | ||
---|---|---|
uint8_t | channel_flag |
声道选择,bit[0] = 1选择左声道,bit[1]=1选择右声道,可以用或运算组合 |
iis_data_width_t | sample_depth |
采样深度,以bit为单位 |
uint32_t | sample_rate |
采样率 |
struct cm_play_buffer_info_t |
struct cm_record_buffer_info_t |
union cm_pcm_buffer_info_t |
成员变量 | ||
---|---|---|
cm_play_buffer_info_t | play_buffer_info | |
cm_record_buffer_info_t | record_buffer_info |
struct cm_codec_interface_t |
CODEC操作接口
成员变量 | |
int(* | codec_init )(cm_codec_hw_info_t *) |
int(* | codec_config )(cm_sound_info_t *audio_info, io_direction_t io_dir) |
int(* | codec_start )(io_direction_t) |
int(* | codec_stop )(io_direction_t) |
int(* | codec_ioctl )(io_direction_t, uint32_t, uint32_t, uint32_t) |
int(* codec_config) (cm_sound_info_t *audio_info, io_direction_t io_dir) |
CODEC配置接口,可以重复配置,不用再初始化
int(* codec_init) (cm_codec_hw_info_t *) |
CODEC初始化接口
int(* codec_ioctl) (io_direction_t, uint32_t, uint32_t, uint32_t) |
CODEC扩展控制接口
int(* codec_start) (io_direction_t) |
CODEC启动接口
int(* codec_stop) (io_direction_t) |
CODEC停止接口
struct cm_iis_info_t |
成员变量 | ||
---|---|---|
union cm_iis_info_t | __unnamed__ | |
IIS_Src_Source_t | clk_source |
IIS时钟源 |
iis_data_format_t | iis_data_format |
IIS数据对齐方式 |
IIS_Mode_Sel_t | iis_mode_sel |
指IIS工作模式:master or slave |
iis_base_t | IISx |
指向CODEC使用到的IIS基地址 |
IIS_Mclk_Mode_t | mclk_out_en |
mclk是否从PAD输出 |
uint32_t | outside_mclk_fre |
外部送入的MCLK的时钟频率,只在使用外部MCLK做IIS时钟源时有效 |
IIS_Mclk_Fs_t | over_sample |
过采样率 |
IIS_Sck_Lrck_Wid_t | sck_lrck_ratio |
SCK与采样率的比值 |
IIS_SckLrck_Mode_t | scklrck_out_en |
SCK/LRCK是否从PAD输出 |
union cm_iis_info_t.__unnamed__ |
成员变量 | ||
---|---|---|
iis_rx_channal_t | rx_cha |
IIS接收rx通道选择 |
iis_tx_channal_t | tx_cha |
IIS发送tx通道选择 |
struct codec_hw_info_str |
CODEC相关信息结构体
成员变量 | ||
---|---|---|
inner_codec_adc_config_t | codec_gain |
CODEC增益初始设置 |
cm_codec_interface_t | codec_if |
CODEC操作接口 |
iic_base_t | IICx |
IIC基地址 |
cm_iis_info_t | input_iis |
输入IIS相关信息 |
cm_iis_info_t | output_iis |
输出IIS相关信息 |
#define MAX_CODEC_NUM 2 |
设置音频CODEC管理模块支持的最大CODEC数量。
typedef struct codec_hw_info_str cm_codec_hw_info_t |
CODEC相关信息结构体
int cm_config_codec | ( | int | codec_index, |
io_direction_t | io_dir, | ||
cm_sound_info_t * | sound_info | ||
) |
配置指定音频CODEX的音频信息。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定配置的音频信息是用于输出(播放)还是用于输入(录音)。 |
sound_info | 音频信息,比如采样率,采样位深度,通道数等。 |
int cm_config_pcm_buffer | ( | int | codec_index, |
io_direction_t | io_dir, | ||
cm_pcm_buffer_info_t * | pcm_buffer_info | ||
) |
配置指定音频CODEC的PCM数据buffer。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定配置的音频buffer是用于输出(播放)还是用于输入(录音)。 |
pcm_buffer_info | 用于传入需要配置的PCM buffer的详细信息,具体请见cm_pcm_buffer_info_t及内嵌结构体。 |
int cm_get_codec_busy_buffer_number | ( | int | codec_index, |
io_direction_t | io_dir | ||
) |
获取指定的音频CODEC的忙buffer数量。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定是启动播放还是启动录音。 |
int cm_get_codec_empty_buffer_number | ( | int | codec_index, |
io_direction_t | io_dir | ||
) |
获取指定的音频CODEC的空闲buffer数量。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定是启动播放还是启动录音。 |
void cm_get_pcm_buffer | ( | int | codec_index, |
uint32_t * | ret_buf, | ||
uint32_t | wait_tick | ||
) |
从指定的音频CODEC获取空闲的PCM数据buffer,用于填充PCM数据后再通过cm_write_codec接口写入音频CODEC。
ret_buf | uint32_t类型的指针,用于接收空闲的PCM数据buffer。 |
wait_tick | 等待tick数,如果当前没有空闲的PCM数据buffer可用,此函数的调用会被阻塞,直到等待时间超过引参数设定的值 。 |
void cm_init | ( | ) |
初始化音频CODEC管理模块。
初始化音频CODEC管理模块。
int cm_read_codec | ( | int | codec_index, |
uint32_t * | data_addr, | ||
uint32_t * | data_size | ||
) |
从指定的音频CODEC读取录制的PCM数据,此接口为同步调用接口,如果当前没有PCM数据可以读取,此调用会被阻塞,直到有PCM数据可读取时才返回。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
data_addr | uint32_t类型的指针,用于接收存放PCM数据的buffer,调用者不需要申请内存,用到的内存是通过cm_config_codec接口配置的。 |
data_size | 读取到的数据大小,以字节为单位。 |
int cm_reg_codec | ( | int | codec_index, |
cm_codec_hw_info_t * | p_codec_hw_info | ||
) |
向音频CODEC管理模块注册一个音频CODEC。
codec_index | CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
codec_hw_info | 保存了注册的CODEC的相关信息的结构体。 |
向音频CODEC管理模块注册一个音频CODEC。
codec_index | CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
codec_hw_info | 保存了注册的CODEC的相关信息的结构体。 |
int cm_register_codec_callback | ( | int | codec_index, |
void(*)(void) | callback_func | ||
) |
注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。
codec_index | 音频CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
callback_func | 音频CODEC事件回调函数。 |
注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。
codec_index | CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
callback_func | CODEC事件回调函数。 |
int cm_release_pcm_buffer | ( | int | codec_index, |
io_direction_t | io_dir, | ||
void * | pcm_buffer | ||
) |
向指定的音频CODEC释放一个PCM数据buffer,释放的PCM数据buffer必须是通过cm_read_codec读取到的数据buffer,用于循环录制音频数据。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定是启动播放还是启动录音。 |
pcm_buffer | 要释放的PCM数据buffer。 |
int cm_set_codec_adc_gain | ( | int | codec_index, |
cm_cha_sel_t | cha, | ||
int | gain | ||
) |
设置指定的音频CODEC的ADC(录音)的指定通道的增益。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
cha | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
gain | 指定要设置的增益值, 有效值范围请参数CODEC规格书。 |
设置指定的音频CODEC的ADC(录音)的指定通道的增益。
codec_index | |
cha | 通道 |
gain | 增益(-18dB —— 28dB) |
int cm_set_codec_alc | ( | int | codec_index, |
cm_cha_sel_t | cha, | ||
FunctionalState | alc_enable | ||
) |
设置指定的音频CODEC录音时是否开启ALC功能。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
cha | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
alc_enable | ALC功能是否使能。ENABLE:使能;DISABLE:不使能。 |
设置指定的音频CODEC录音时是否开启ALC功能。
codec_index | CODEC编号 |
cha | 左声道或者右声道,不可以双声道 |
alc_enable | ALC开关 |
int cm_set_codec_dac_enable | ( | int | codec_index, |
int | channel, | ||
FunctionalState | en | ||
) |
设置指定的音频CODEC的DAC功能是否使能。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
channel | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
en | DAC功能是否全能。ENABLE:使能;DISABLE:不使能。 |
int cm_set_codec_dac_gain | ( | int | codec_index, |
cm_cha_sel_t | cha, | ||
int | gain | ||
) |
设置指定的音频CODEC的DAC(播放)的指定通道的增益。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
cha | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
gain | 指定要设置的增益值, 有效值范围为(1-100)。 |
设置指定的音频CODEC的DAC(播放)的指定通道的增益。
codec_index | CODEC编号 |
cha | 通道 |
gain | 增益值 |
int cm_set_codec_mute | ( | int | codec_index, |
io_direction_t | io_dir, | ||
int | channel_flag, | ||
FunctionalState | en | ||
) |
设置静音模式。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定是启动播放还是启动录音。 |
channel_flag | 指定要静音的通道。 |
en | 是否静音。ENABLE:静音功能开启;DISABLE:静音功能关闭。 |
int cm_start_codec | ( | int | codec_index, |
io_direction_t | io_dir | ||
) |
启动指定的音频CODEC播放或录音。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定是启动播放还是启动录音。 |
int cm_stop_codec | ( | int | codec_index, |
io_direction_t | io_dir | ||
) |
停止指定的音频CODEC播放或录音。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
io_dir | 指定是启动播放还是启动录音。 |
int cm_write_codec | ( | int | codec_index, |
void * | pcm_buffer, | ||
uint32_t | wait_tick | ||
) |
向指定的音频CODEC写入数据。
codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
pcm_buffer | 一个void*类型的指针,指向向音频CODEC写入数据的buffer,此buffer只能通过接口cm_get_pcm_buffer获取,然后向其中填充PCM数据。 |
wait_tick | 当音频CODEC的PCM buffer队列忙时,此调用等待的tick数,当等待时间超过此参数设置的值时,此调用会返回。 |
int icodec_config | ( | cm_sound_info_t * | audio_info, |
io_direction_t | io_dir | ||
) |
配置CODEC ADC或者DAC的采样率、数据位宽以及通道选择
audio_info | |
io_dir | 输入或输出(ADC或者DAC) |
int icodec_init | ( | cm_codec_hw_info_t * | codec_hw_info | ) |
包括CODEC整个的初始化,ADC、DAC的初始化
codec_hw_info | CODEC相关信息结构体 |
int icodec_ioctl | ( | io_direction_t | io_dir, |
uint32_t | param0, | ||
uint32_t | param1, | ||
uint32_t | param2 | ||
) |
ADC、DAC的配置项,mute使能或关闭、配置增益等
param0 | cm_io_ctrl_cmd_t配置命令 |
param1 | 参数1 |
param2 | 参数2 |
int icodec_start | ( | io_direction_t | io_dir | ) |
ADC、DAC的启动
io_dir | 输入或输出(ADC或者DAC) |
int icodec_stop | ( | io_direction_t | io_dir | ) |
ADC、DAC的关闭
io_dir | 输入或输出(ADC或者DAC) |