CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
宏定义 | 函数
ci130x_codec.c 文件参考

CI130X inner codec的驱动函数 更多...

#include <math.h>
#include <string.h>
#include "ci130x_codec.h"
#include "ci130x_scu.h"
#include "ci130x_system.h"
#include "ci130x_gpio.h"
#include "ci_assert.h"
#include "romlib_runtime.h"
#include "sdk_default_config.h"
#include "codec_manager.h"

宏定义

#define CODEC_CI_ASSERT(x, msg)
 
#define USE_CI130X_OWN_ALC   0
 
#define METHOD_TO_CONTROL_GAIN_ATTACK   0
 
#define ALC_JACK_WAY   INNER_CODEC_ALC_MODE_JACKWAY2
 
#define ALC_HOLD_TIME   INNER_CODEC_ALC_HOLD_TIME_2MS
 
#define ALC_DECAY_TIME   INNER_CODEC_ALC_DECAY_TIME_2MS
 
#define ALC_ATTACK_TIME   INNER_CODEC_ALC_ATTACK_TIME_2MS
 
#define ALC_MODE   0
 
#define ALC_ZERO_CROSS   INNER_CODEC_GATE_DISABLE
 
#define ALC_FAST_DECAY_87_5   INNER_CODEC_GATE_DISABLE
 
#define ALC_NOISE_GATE   INNER_CODEC_GATE_DISABLE
 
#define ALC_NOISE_GATE_SET   INNER_CODEC_NOISE_GATE_THRE_45dB
 
#define ALC_INIT_PGA_GAIN   0x1f
 
#define ALC_SAMPLE_RATE   INNER_CODEC_SAMPLERATE_16K
 
#define ALC_LOW_8_BIT_MAX_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__6dB >> 0))
 
#define ALC_HOGH_8_BIT_MAX_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__6dB >> 8))
 
#define ALC_LOW_8_BIT_MIN_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__7_5dB >> 0))
 
#define ALC_HOGH_8_BIT_MIN_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__7_5dB >> 8))
 
#define ALC_AGC_FUNC_SEL   ENABLE
 
#define ALC_PGA_MAX_GAIN   INNER_CODEC_ALC_PGA_MAX_GAIN_28_5dB
 
#define ALC_PGA_MIN_GAIN   INNER_CODEC_ALC_PGA_MIN_GAIN__18dB
 
#define ALC_DIG_GAIN   (197)
 
#define LPF_CONFIG   (INNER_CODEC_LP_FILTER_FIR)
 
#define ALC_JUDGE   (INNER_CODEC_ALC_JUDGE_AFTER_HIGHPASS)
 
#define ALC_CONTROL_PGA_L   (INNER_CODEC_GATE_ENABLE)
 
#define ALC_CONTROL_PGA_R   (INNER_CODEC_GATE_ENABLE)
 
#define HPF_GATE   (0)
 
#define HPF_CONFIG   (INNER_CODEC_HIGHPASS_CUT_OFF_20HZ)
 

函数

uint8_t get_pga_gain_reg_data_from_db (int32_t gain_db)
 
void inner_codec_up_ibas_adc (void)
 ADC电流源强制启动 更多...
 
void inner_codec_up_ibas_dac (void)
 DAC电流源强制启动 更多...
 
void inner_codec_reset (void)
 INNER CODEC reset 更多...
 
void inner_codec_adc_mode_set (inner_codec_mode_t mode, inner_codec_frame_1_2len_t frame_Len, inner_codec_valid_word_len_t word_len, inner_codec_i2s_data_famat_t data_fram)
 CODEC作为ADC的模式选择 更多...
 
void inner_codec_dac_mode_set (inner_codec_mode_t mode, inner_codec_frame_1_2len_t frame_Len, inner_codec_valid_word_len_t word_len, inner_codec_i2s_data_famat_t data_fram)
 CODEC作为DAC的模式选择 更多...
 
void inner_codec_power_up (inner_codec_current_t current)
 CODEC模块上电 更多...
 
void inner_codec_power_off (void)
 关闭CODEC模块电源 更多...
 
void inner_codec_hp_filter_config (inner_cedoc_gate_t gate, inner_codec_highpass_cut_off_t Hz)
 配置CODEC模块的高通滤波器 更多...
 
void inner_codec_set_input_mode (inner_codec_cha_sel_t cha, inner_codec_input_mode_t mode)
 设置ADC的输入模式 更多...
 
static void inner_codec_set_mic_gain (inner_codec_cha_sel_t cha, inner_codec_mic_amplify_t gain)
 设置ADC的MIC增益 更多...
 
void inner_codec_adc_enable (inner_codec_adc_config_t *ADC_Config)
 使能CODEC中的ADC: 1.使用此函数之前先初始化CODEC_ADC_Config_TypeDef结构体并填写参数; 2.ALCL_Gain和ALCR_Gain的上下限分别是28.5dB和-18dB,步长1.5。 更多...
 
void inner_codec_adc_dig_gain_set (inner_codec_cha_sel_t cha, int32_t gain)
 调节CODEC ADC的数字增益(197为0dB,加减1为加减0.5dB增益) 更多...
 
void inner_codec_adc_disable (inner_codec_cha_sel_t cha, inner_cedoc_gate_t EN)
 关闭CODEC中的ADC 更多...
 
static void icodec_dac_gain_set (inner_codec_cha_sel_t cha, int32_t gain)
 配置CODEC中的DAC增益,-39dB到7.5dB,步长1.5dB,真实为32档。 更多...
 
void inner_codec_dac_dig_gain_set (int16_t dig_gain)
 DAC数字增益设置(10dB – -117dB,步进1dB) 更多...
 
void inner_codec_dac_enable (bool is_first_enable)
 开启DAC 更多...
 
void inner_codec_dac_disable (void)
 关闭DAC 更多...
 
static void inner_codec_hpout_is_mute (bool en)
 hpout mute的开关,不关DAC 更多...
 
void inner_codec_alc_judge_sel (inner_codec_alc_judge_t judge)
 ALC判断的信号来自高通滤波器之前,还是之后 更多...
 
void inner_codec_lp_filter_sel (inner_codec_lp_filter_mode_t mode)
 inner codec低通滤波器类型选择 更多...
 
void inner_codec_alc_enable (inner_codec_cha_sel_t cha, inner_cedoc_gate_t gate, inner_codec_use_alc_control_pgagain_t is_alc_ctr_pga)
 
void inner_codec_alc_disable (inner_codec_cha_sel_t cha)
 关闭CODEC中的ALC,并切换到 pga_gain_reg 控制PGA增益 更多...
 
void inner_codec_set_pga_gain (inner_codec_cha_sel_t cha, int32_t ALC_Gain)
 
void alc_init_config (void)
 ALC的默认配置 更多...
 
void inner_codec_micbias_set (inner_codec_micbias_t bias)
 设置MICBIAS的大小 更多...
 
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_stop (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_ioctl (io_direction_t io_dir, uint32_t param0, uint32_t param1, uint32_t param2)
 ADC、DAC的配置项,mute使能或关闭、配置增益等 更多...
 

详细描述

CI130X inner codec的驱动函数

版本
0.1
日期
2019-03-29

宏定义说明

◆ ALC_AGC_FUNC_SEL

#define ALC_AGC_FUNC_SEL   ENABLE

◆ ALC_ATTACK_TIME

#define ALC_ATTACK_TIME   INNER_CODEC_ALC_ATTACK_TIME_2MS

◆ ALC_CONTROL_PGA_L

#define ALC_CONTROL_PGA_L   (INNER_CODEC_GATE_ENABLE)

◆ ALC_CONTROL_PGA_R

#define ALC_CONTROL_PGA_R   (INNER_CODEC_GATE_ENABLE)

◆ ALC_DECAY_TIME

#define ALC_DECAY_TIME   INNER_CODEC_ALC_DECAY_TIME_2MS

◆ ALC_DIG_GAIN

#define ALC_DIG_GAIN   (197)

◆ ALC_FAST_DECAY_87_5

#define ALC_FAST_DECAY_87_5   INNER_CODEC_GATE_DISABLE

◆ ALC_HOGH_8_BIT_MAX_LEVEL

#define ALC_HOGH_8_BIT_MAX_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__6dB >> 8))

◆ ALC_HOGH_8_BIT_MIN_LEVEL

#define ALC_HOGH_8_BIT_MIN_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__7_5dB >> 8))

◆ ALC_HOLD_TIME

#define ALC_HOLD_TIME   INNER_CODEC_ALC_HOLD_TIME_2MS

◆ ALC_INIT_PGA_GAIN

#define ALC_INIT_PGA_GAIN   0x1f

◆ ALC_JACK_WAY

#define ALC_JACK_WAY   INNER_CODEC_ALC_MODE_JACKWAY2

◆ ALC_JUDGE

#define ALC_JUDGE   (INNER_CODEC_ALC_JUDGE_AFTER_HIGHPASS)

◆ ALC_LOW_8_BIT_MAX_LEVEL

#define ALC_LOW_8_BIT_MAX_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__6dB >> 0))

◆ ALC_LOW_8_BIT_MIN_LEVEL

#define ALC_LOW_8_BIT_MIN_LEVEL   ((uint8_t)(INNER_CODEC_ALC_LEVEL__7_5dB >> 0))

◆ ALC_MODE

#define ALC_MODE   0

◆ ALC_NOISE_GATE

#define ALC_NOISE_GATE   INNER_CODEC_GATE_DISABLE

◆ ALC_NOISE_GATE_SET

#define ALC_NOISE_GATE_SET   INNER_CODEC_NOISE_GATE_THRE_45dB

◆ ALC_PGA_MAX_GAIN

#define ALC_PGA_MAX_GAIN   INNER_CODEC_ALC_PGA_MAX_GAIN_28_5dB

◆ ALC_PGA_MIN_GAIN

#define ALC_PGA_MIN_GAIN   INNER_CODEC_ALC_PGA_MIN_GAIN__18dB

◆ ALC_SAMPLE_RATE

#define ALC_SAMPLE_RATE   INNER_CODEC_SAMPLERATE_16K

◆ ALC_ZERO_CROSS

#define ALC_ZERO_CROSS   INNER_CODEC_GATE_DISABLE

◆ CODEC_CI_ASSERT

#define CODEC_CI_ASSERT (   x,
  msg 
)
值:
if( ( x ) == 0 ) \
{ \
mprintf("%s",msg); \
mprintf("CODEC Line:%d\n",__LINE__); \
while(1) asm volatile ("ebreak"); \
}

◆ HPF_CONFIG

#define HPF_CONFIG   (INNER_CODEC_HIGHPASS_CUT_OFF_20HZ)

◆ HPF_GATE

#define HPF_GATE   (0)

◆ LPF_CONFIG

#define LPF_CONFIG   (INNER_CODEC_LP_FILTER_FIR)

◆ METHOD_TO_CONTROL_GAIN_ATTACK

#define METHOD_TO_CONTROL_GAIN_ATTACK   0

◆ USE_CI130X_OWN_ALC

#define USE_CI130X_OWN_ALC   0

函数说明

◆ alc_init_config()

void alc_init_config ( void  )

ALC的默认配置

◆ get_pga_gain_reg_data_from_db()

uint8_t get_pga_gain_reg_data_from_db ( int32_t  gain_db)

◆ icodec_dac_gain_set()

static void icodec_dac_gain_set ( inner_codec_cha_sel_t  cha,
int32_t  gain 
)
static

配置CODEC中的DAC增益,-39dB到7.5dB,步长1.5dB,真实为32档。

参数

◆ inner_codec_adc_dig_gain_set()

void inner_codec_adc_dig_gain_set ( inner_codec_cha_sel_t  cha,
int32_t  gain 
)

调节CODEC ADC的数字增益(197为0dB,加减1为加减0.5dB增益)

参数
gain左声道增益大小

◆ inner_codec_alc_enable()

void inner_codec_alc_enable ( inner_codec_cha_sel_t  cha,
inner_cedoc_gate_t  gate,
inner_codec_use_alc_control_pgagain_t  is_alc_ctr_pga 
)
参数
cha使能ALC
gate打开/关闭ALC
is_alc_ctr_pga是否使用ALC控制PGA增益(这个gate是需要的,因为存在使能了ALC,但是不使用ALC控制PGA增益的情况)

◆ inner_codec_alc_judge_sel()

void inner_codec_alc_judge_sel ( inner_codec_alc_judge_t  judge)

ALC判断的信号来自高通滤波器之前,还是之后

参数
judge选择inner CODEC的判断信号来自ALC之前还是之后

◆ inner_codec_dac_dig_gain_set()

void inner_codec_dac_dig_gain_set ( int16_t  dig_gain)

DAC数字增益设置(10dB – -117dB,步进1dB)

参数
dig_gain

◆ inner_codec_hpout_is_mute()

static void inner_codec_hpout_is_mute ( bool  en)
static

hpout mute的开关,不关DAC

参数
en

◆ inner_codec_lp_filter_sel()

void inner_codec_lp_filter_sel ( inner_codec_lp_filter_mode_t  mode)

inner codec低通滤波器类型选择

参数
mode

◆ inner_codec_set_input_mode()

void inner_codec_set_input_mode ( inner_codec_cha_sel_t  cha,
inner_codec_input_mode_t  mode 
)

设置ADC的输入模式

参数
mode
mode

◆ inner_codec_set_mic_gain()

static void inner_codec_set_mic_gain ( inner_codec_cha_sel_t  cha,
inner_codec_mic_amplify_t  gain 
)
static

设置ADC的MIC增益

参数
gain

◆ inner_codec_set_pga_gain()

void inner_codec_set_pga_gain ( inner_codec_cha_sel_t  cha,
int32_t  ALC_Gain 
)