48 lines
2.6 KiB
C
48 lines
2.6 KiB
C
#ifndef _API_SARADC_H
|
||
#define _API_SARADC_H
|
||
|
||
#define ADCCH15_ANA_VRTC 0x01
|
||
#define ADCCH15_ANA_TS 0x02
|
||
#define ADCCH15_ANA_BG 0x04
|
||
#define ADCCH15_ANA_VUSB 0x08
|
||
#define ADCCH15_ANA_MIC 0x10
|
||
|
||
typedef struct {
|
||
psfr_t sfr; //SADCDAT SFR
|
||
u16 channel;
|
||
u8 adc15_ana_en;
|
||
u8 adc15_ana_cur;
|
||
} saradc_cb_t;
|
||
extern saradc_cb_t saradc_cb;
|
||
extern volatile bool adc_chstops_flag;
|
||
extern volatile bool adc_vbat2_flag;
|
||
|
||
#define saradc_get_value10(n) saradc_cb.sfr[n] //获取某个channel的ADC值
|
||
#define saradc_get_value8(n) ((u8)(saradc_cb.sfr[n]>>2)) //获取某个channel的ADC值
|
||
#define saradc_adc15_is_vrtc() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_VRTC)
|
||
#define saradc_adc15_is_ts() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_TS)
|
||
#define saradc_adc15_is_bg() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_BG)
|
||
#define saradc_adc15_is_vusb() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_VUSB)
|
||
#define saradc_adc15_is_mic() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_MIC)
|
||
#define saradc_kick_start(auto_anl_en, isr_en) saradc_kick_start_do(saradc_cb.channel, auto_anl_en, isr_en)
|
||
|
||
void saradc_var_init(void);
|
||
void saradc_init(void); //初始化ADC
|
||
uint16_t saradc_exit(void); //关闭ADC
|
||
void saradc_set_baud(u16 div); //设置ADC时钟分频
|
||
uint16_t saradc_set_channel(uint16_t channel); //设置ADC channel,返回值:设置前的channel
|
||
void saradc_clr_channel(uint16_t channel); //清除ADC channel
|
||
uint16_t saradc_get_channel(void); //获取ADC channel
|
||
void saradc_kick_start_do(u16 adc_ch, u8 auto_anl_en, u8 isr_en);//启动ADC转换
|
||
bool saradc_is_finish(void); //ADC转换是否完成
|
||
void saradc_set_setup_time(u32 adc_ch, u32 delay_clk); //设置通道的采样延时
|
||
void saradc_adc15_analog_select(u8 ana_ch); //ADC15的模拟信号选择
|
||
void saradc_adc15_analog_next(void); //ADC15自动选择下一个模拟信号
|
||
u8 saradc_adc15_ana_set_channel(u8 ana_ch); //ADC15设置模拟通路
|
||
void saradc_adc15_ana_clr_channel(u8 ana_ch); //ADC15清除模拟通路
|
||
u32 saradc_vbat_get_calc_value(u32 vbat2, u32 bg, u32 vrtc_val, u32 vrtc_first); //根据ADC值计算VBAT电压
|
||
u32 saradc_vusb_get_calc_value(u32 vusb, u32 bg); //根据ADC值计算VUSB电压
|
||
void saradc_adc15_analog_channel_sleep(void);
|
||
void mic_bias_trim_w4_done(void);
|
||
#endif
|