CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
结构体 | 宏定义 | 类型定义 | 枚举 | 函数
codec_manager

音频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的接口


结构体说明

◆ cm_sound_info_t

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

采样率

◆ cm_play_buffer_info_t

struct cm_play_buffer_info_t

音频buffer信息结构体

成员变量
uint8_t block_num

BUFFER块数量

uint16_t block_size

BUFFER块大小 以字节为单位

uint8_t buffer_num

BUFFER数量

uint16_t buffer_size

BUFFER大小 以字节为单位

void * pcm_buffer

总buffer, 大小为(buffer_size*buffer_num)

◆ cm_record_buffer_info_t

struct cm_record_buffer_info_t

音频buffer信息结构体

成员变量
uint8_t block_num

BUFFER块数量

uint16_t block_size

BUFFER块大小 以字节为单位

uint16_t buffer_size

BUFFER大小 以字节为单位

void * pcm_buffer

总buffer, 大小为(buffer_size*buffer_num)

◆ cm_pcm_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

◆ cm_codec_interface_t

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)
 

结构体成员变量说明

◆ codec_config

int(* codec_config) (cm_sound_info_t *audio_info, io_direction_t io_dir)

CODEC配置接口,可以重复配置,不用再初始化

◆ codec_init

int(* codec_init) (cm_codec_hw_info_t *)

CODEC初始化接口

◆ codec_ioctl

int(* codec_ioctl) (io_direction_t, uint32_t, uint32_t, uint32_t)

CODEC扩展控制接口

◆ codec_start

int(* codec_start) (io_direction_t)

CODEC启动接口

◆ codec_stop

int(* codec_stop) (io_direction_t)

CODEC停止接口

◆ cm_iis_info_t

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输出

◆ cm_iis_info_t.__unnamed__

union cm_iis_info_t.__unnamed__
成员变量
iis_rx_channal_t rx_cha

IIS接收rx通道选择

iis_tx_channal_t tx_cha

IIS发送tx通道选择

◆ codec_hw_info_str

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相关信息

宏定义说明

◆ MAX_CODEC_NUM

#define MAX_CODEC_NUM   2

设置音频CODEC管理模块支持的最大CODEC数量。

类型定义说明

◆ cm_codec_hw_info_t

CODEC相关信息结构体

枚举类型说明

◆ audio_play_card_clk_source_t

定义放音设备可选择的时钟源。

枚举值
AUDIO_PLAY_CLK_SOURCE_IPCORE 
AUDIO_PLAY_CLK_SOURCE_EXT_OSC 
AUDIO_PLAY_CLK_SOURCE_INTER_RC 
AUDIO_PLAY_CLK_SOURCE_PAD_IN 
AUDIO_PLAY_CLK_SOURCE_OSC_OR_INEER_RC 

◆ 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

◆ cm_cha_sel_t

枚举值
CM_CHA_LEFT 

左声道

CM_CHA_RIGHT 

右声道

CM_CHA_TWO_CHA 

双声道

◆ cm_iis_txrx_t

枚举值
CM_IIS_TX 

IIS TX

CM_IIS_RX 

IIS RX

◆ cm_io_ctrl_cmd_t

枚举值
CM_IOCTRL_SET_DAC_GAIN 

设置输出增益, param1:左声道增益, param2:右声道增益

CM_IOCTRL_SET_ADC_GAIN 

设置输入增益, param1:左声道增益, param2:右声道增益

CM_IOCTRL_ALC_ENABLE 

使能ALC,param1:ALC总开关(ENABLE=开,DISABLE=关);param2:ALC是否控制PGA(ENABLE=控制,DISABLE=不控制)

CM_IOCTRL_ALC_DISABLE 

关闭ALC,param1:ALC总开关(ENABLE=开,DISABLE=关);param2:ALC是否控制PGA(ENABLE=控制,DISABLE=不控制)

CM_IOCTRL_DAC_ENABLE 

使能DAC,param1:0=左声道,1=右声道; param2:ENABLE=开,DISABLE=关

CM_IOCTRL_MUTE 

使能mute,param1:0=左声道,1=右声道; param2:ENABLE=开,DISABLE=关

◆ io_direction_t

枚举值
CODEC_INPUT 

输入 ADC

CODEC_OUTPUT 

输出 DAC

函数说明

◆ cm_config_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音频信息,比如采样率,采样位深度,通道数等。
返回
配置是否成功,0:成功;其他值:错误号。

◆ cm_config_pcm_buffer()

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及内嵌结构体。
返回
配置是否成功,0:成功;其他值:错误号。

◆ cm_get_codec_busy_buffer_number()

int cm_get_codec_busy_buffer_number ( int  codec_index,
io_direction_t  io_dir 
)

获取指定的音频CODEC的忙buffer数量。

参数
codec_index音频CODEC注册的索引号,用于指定要配置的音频CODEC。
io_dir指定是启动播放还是启动录音。
返回
返回忙状态的PCM数据buffer的数量。

◆ cm_get_codec_empty_buffer_number()

int cm_get_codec_empty_buffer_number ( int  codec_index,
io_direction_t  io_dir 
)

获取指定的音频CODEC的空闲buffer数量。

参数
codec_index音频CODEC注册的索引号,用于指定要配置的音频CODEC。
io_dir指定是启动播放还是启动录音。
返回
返回空闲的PCM数据buffer的数量。

◆ cm_get_pcm_buffer()

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_bufuint32_t类型的指针,用于接收空闲的PCM数据buffer。
wait_tick等待tick数,如果当前没有空闲的PCM数据buffer可用,此函数的调用会被阻塞,直到等待时间超过引参数设定的值 。

◆ cm_init()

void cm_init ( )

初始化音频CODEC管理模块。

初始化音频CODEC管理模块。

◆ cm_read_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_addruint32_t类型的指针,用于接收存放PCM数据的buffer,调用者不需要申请内存,用到的内存是通过cm_config_codec接口配置的。
data_size读取到的数据大小,以字节为单位。
返回
配置是否成功,0:成功;1:错误的codec索引号;2:指定的索引号未注册音频CODEC;其他值:错误号。

◆ cm_reg_codec()

int cm_reg_codec ( int  codec_index,
cm_codec_hw_info_t p_codec_hw_info 
)

向音频CODEC管理模块注册一个音频CODEC。

参数
codec_indexCODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。
codec_hw_info保存了注册的CODEC的相关信息的结构体。
注解
索引号不能大于最大可注册数量(MAX_CODEC_NUM),也不能重复注册同一个索引号。
返回
注册是否成功,0:成功;其他值:失败,有可能指定的codec_index超出范围,或者已经被注册过了。

向音频CODEC管理模块注册一个音频CODEC。

参数
codec_indexCODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。
codec_hw_info保存了注册的CODEC的相关信息的结构体。
注解
索引号不能大于最大可注册数量(MAX_CODEC_NUM),也不能重复注册同一个索引号。
返回
注册是否成功,0:成功;其他值:失败,有可能指定的codec_index超出范围,或者已经被注册过了。

◆ cm_register_codec_callback()

int cm_register_codec_callback ( int  codec_index,
void(*)(void)  callback_func 
)

注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。

参数
codec_index音频CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。
callback_func音频CODEC事件回调函数。
返回
注册是否成功,0:成功;其他值:失败,有可能指定的codec_index超出范围。

注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。

参数
codec_indexCODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。
callback_funcCODEC事件回调函数。
返回
注册是否成功,0:成功;其他值:失败,有可能指定的codec_index超出范围。

◆ cm_release_pcm_buffer()

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。
返回
配置是否成功,0:成功;1:错误的codec索引号;2:指定的索引号未注册音频CODEC;3:指定的音频CODEC还未通过cm_config_pcm_buffer配置过。其他值:错误号。

◆ cm_set_codec_adc_gain()

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规格书。
返回
配置是否成功,0:成功;其他值:错误号。

设置指定的音频CODEC的ADC(录音)的指定通道的增益。

参数
codec_index
cha通道
gain增益(-18dB —— 28dB)
返回
int

◆ cm_set_codec_alc()

int cm_set_codec_alc ( int  codec_index,
cm_cha_sel_t  cha,
FunctionalState  alc_enable 
)

设置指定的音频CODEC录音时是否开启ALC功能。

参数
codec_index音频CODEC注册的索引号,用于指定要配置的音频CODEC。
cha用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。
alc_enableALC功能是否使能。ENABLE:使能;DISABLE:不使能。
返回
配置是否成功,0:成功;其他值:错误号。

设置指定的音频CODEC录音时是否开启ALC功能。

参数
codec_indexCODEC编号
cha左声道或者右声道,不可以双声道
alc_enableALC开关
返回
int

◆ cm_set_codec_dac_enable()

int cm_set_codec_dac_enable ( int  codec_index,
int  channel,
FunctionalState  en 
)

设置指定的音频CODEC的DAC功能是否使能。

参数
codec_index音频CODEC注册的索引号,用于指定要配置的音频CODEC。
channel用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。
enDAC功能是否全能。ENABLE:使能;DISABLE:不使能。
返回
配置是否成功,0:成功;其他值:错误号。

◆ cm_set_codec_dac_gain()

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)。
返回
配置是否成功,0:成功;其他值:错误号。

设置指定的音频CODEC的DAC(播放)的指定通道的增益。

参数
codec_indexCODEC编号
cha通道
gain增益值
返回
int

◆ cm_set_codec_mute()

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:静音功能关闭。

◆ cm_start_codec()

int cm_start_codec ( int  codec_index,
io_direction_t  io_dir 
)

启动指定的音频CODEC播放或录音。

参数
codec_index音频CODEC注册的索引号,用于指定要配置的音频CODEC。
io_dir指定是启动播放还是启动录音。
返回
配置是否成功,0:成功;其他值:错误号。

◆ cm_stop_codec()

int cm_stop_codec ( int  codec_index,
io_direction_t  io_dir 
)

停止指定的音频CODEC播放或录音。

参数
codec_index音频CODEC注册的索引号,用于指定要配置的音频CODEC。
io_dir指定是启动播放还是启动录音。
返回
配置是否成功,0:成功;其他值:错误号。

◆ cm_write_codec()

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数,当等待时间超过此参数设置的值时,此调用会返回。
返回
配置是否成功,0:成功;1:错误的codec索引号;2:指定的索引号未注册音频CODEC;其他值:错误号。

◆ icodec_config()

int icodec_config ( cm_sound_info_t audio_info,
io_direction_t  io_dir 
)

配置CODEC ADC或者DAC的采样率、数据位宽以及通道选择

参数
audio_info
io_dir输入或输出(ADC或者DAC)

◆ icodec_init()

int icodec_init ( cm_codec_hw_info_t codec_hw_info)

包括CODEC整个的初始化,ADC、DAC的初始化

参数
codec_hw_infoCODEC相关信息结构体

◆ icodec_ioctl()

int icodec_ioctl ( io_direction_t  io_dir,
uint32_t  param0,
uint32_t  param1,
uint32_t  param2 
)

ADC、DAC的配置项,mute使能或关闭、配置增益等

参数
param0cm_io_ctrl_cmd_t配置命令
param1参数1
param2参数2

◆ icodec_start()

int icodec_start ( io_direction_t  io_dir)

ADC、DAC的启动

参数
io_dir输入或输出(ADC或者DAC)

◆ icodec_stop()

int icodec_stop ( io_direction_t  io_dir)

ADC、DAC的关闭

参数
io_dir输入或输出(ADC或者DAC)