api_sdadc.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef _API_SDADC_H
  2. #define _API_SDADC_H
  3. #define CHANNEL_L 0x0F
  4. #define CHANNEL_R 0xF0
  5. #define ADC2DAC_EN 0x01 //ADC-->DAC
  6. #define ADC2SRC_EN 0x02 //ADC-->SRC
  7. typedef void (*pcm_callback_t)(u8 *ptr, u32 samples, int ch_mode);
  8. typedef struct {
  9. u8 channel;
  10. u8 sample_rate;
  11. u16 gain; //低5bit为sdadc digital gain, 其它bit为模拟gain控制
  12. u8 out_ctrl;
  13. u8 res;
  14. u16 samples;
  15. pcm_callback_t callback;
  16. } sdadc_cfg_t;
  17. enum {
  18. SPR_48000,
  19. SPR_44100,
  20. SPR_38000,
  21. SPR_32000,
  22. SPR_24000,
  23. SPR_22050,
  24. SPR_16000,
  25. SPR_12000,
  26. SPR_11025,
  27. SPR_8000,
  28. SPR_192000,
  29. SPR_176400,
  30. SPR_384000,
  31. SPR_352800,
  32. };
  33. void sdadc_set_digital_gain(u8 gain);
  34. void set_mic_analog_gain(u8 level, u8 channel); //level: 0~31, step 3DB
  35. void sdadc_dummy(u8 *ptr, u32 samples, int ch_mode);
  36. void sdadc_pcm_2_dac(u8 *ptr, u32 samples, int ch_mode);
  37. void sdadc_var_init(void);
  38. int sdadc_init(const sdadc_cfg_t *p_cfg);
  39. int sdadc_start(u8 channel);
  40. int sdadc_exit(u8 channel);
  41. //AUX直通PA或LPF。 aux2lpf_en: 0 -> AUX2PA, 1 -> AUX2LPF
  42. //AUX单声道直通,自动选择“单进单出”与“单进双出”配置。
  43. int analog_aux2pa_start(u8 channel, u8 aux2lpf_en);
  44. void analog_aux2pa_exit(u8 channel);
  45. void mic_set_eq(u8 band_cnt, const u32 *eq_param);
  46. void lefmic_zero_detect_do(u8 *ptr, u32 samples);
  47. void anc_var_init(void);
  48. void anc_init(void *cfg);
  49. void anc_start(void);
  50. void anc_stop(void);
  51. void anc_exit(void);
  52. void anc_set_param(void);
  53. u8 anc_set_param_is_busy(void); //ret: BIT(0):lch is busy; BIT(1):rch is busy
  54. void anc_set_tansparency_mode(u8 en); //使能/关闭通透模式,默认关闭,调用后需要更新参数才起作用
  55. bool anc_is_tansparency_mode(void); //当前是否处于通透模式
  56. void anc_mic_mute(u8 mute);
  57. void anc_set_mic_gain(u8 anl, u8 gain);
  58. void set_mic_mute(u32 flag);
  59. void sdadc_pdm_mic_init(u8 mode);
  60. void sdadc_pdm_mic_exit(void);
  61. void mic_bias_trim_w4_done_do(void);
  62. #endif //_API_SDADC_H