49 lines
1.2 KiB
C
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
|
|
|