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

48 lines
2.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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