123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef _API_SDADC_H
- #define _API_SDADC_H
- #define CHANNEL_L 0x0F
- #define CHANNEL_R 0xF0
- #define ADC2DAC_EN 0x01 //ADC-->DAC
- #define ADC2SRC_EN 0x02 //ADC-->SRC
- typedef void (*pcm_callback_t)(u8 *ptr, u32 samples, int ch_mode);
- typedef struct {
- u8 channel;
- u8 sample_rate;
- u16 gain; //低5bit为sdadc digital gain, 其它bit为模拟gain控制
- u8 out_ctrl;
- u8 res;
- u16 samples;
- pcm_callback_t callback;
- } sdadc_cfg_t;
- enum {
- SPR_48000,
- SPR_44100,
- SPR_38000,
- SPR_32000,
- SPR_24000,
- SPR_22050,
- SPR_16000,
- SPR_12000,
- SPR_11025,
- SPR_8000,
- SPR_192000,
- SPR_176400,
- SPR_384000,
- SPR_352800,
- };
- void sdadc_set_digital_gain(u8 gain);
- void set_mic_analog_gain(u8 level, u8 channel); //level: 0~31, step 3DB
- void sdadc_dummy(u8 *ptr, u32 samples, int ch_mode);
- void sdadc_pcm_2_dac(u8 *ptr, u32 samples, int ch_mode);
- void sdadc_var_init(void);
- int sdadc_init(const sdadc_cfg_t *p_cfg);
- int sdadc_start(u8 channel);
- int sdadc_exit(u8 channel);
- //AUX直通PA或LPF。 aux2lpf_en: 0 -> AUX2PA, 1 -> AUX2LPF
- //AUX单声道直通,自动选择“单进单出”与“单进双出”配置。
- int analog_aux2pa_start(u8 channel, u8 aux2lpf_en);
- void analog_aux2pa_exit(u8 channel);
- void mic_set_eq(u8 band_cnt, const u32 *eq_param);
- void lefmic_zero_detect_do(u8 *ptr, u32 samples);
- void anc_var_init(void);
- void anc_init(void *cfg);
- void anc_start(void);
- void anc_stop(void);
- void anc_exit(void);
- void anc_set_param(void);
- u8 anc_set_param_is_busy(void); //ret: BIT(0):lch is busy; BIT(1):rch is busy
- void anc_set_tansparency_mode(u8 en); //使能/关闭通透模式,默认关闭,调用后需要更新参数才起作用
- bool anc_is_tansparency_mode(void); //当前是否处于通透模式
- void anc_mic_mute(u8 mute);
- void anc_set_mic_gain(u8 anl, u8 gain);
- void set_mic_mute(u32 flag);
- void sdadc_pdm_mic_init(u8 mode);
- void sdadc_pdm_mic_exit(void);
- void mic_bias_trim_w4_done_do(void);
- #endif //_API_SDADC_H
|