mcu_ab568x/app/platform/libs/api_sdadc.h
2025-05-30 18:03:10 +08:00

49 lines
1.2 KiB
C

#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,
};
void set_mic_analog_gain(u8 level, u8 channel); //0~23(共24级), step 3DB (-6db ~ +63db)
void set_aux_analog_gain(u8 level, u8 channel); //level: 0~4, 000(-6DB), 001(-3DB), 010(0DB), 011(+3DB), 100(+6DB)
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);
void sdadc_pcm_peri_eq(u8 *ptr, u32 samples);
#endif //_API_SDADC_H