12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*
- * saradc.h
- *
- * Created by zoro on 2021-3-12.
- */
- #ifndef __API_SARADC_H
- #define __API_SARADC_H
- #define ADCCH15_ANA_VRTC 0x01
- #define ADCCH15_ANA_BG 0x02
- #define ADCCH15_ANA_TS 0x04
- #define ADCCH15_ANA_VUSB 0x08
- #define SARADC_MAX_CH 16
- typedef struct {
- psfr_t sfr; //SADCDAT SFR
- u16 channel;
- u16 value[SARADC_MAX_CH];
- u8 adc15_ana_en;
- u8 adc15_ana_cur;
- } saradc_cb_t;
- extern saradc_cb_t saradc_cb;
- #define saradc_get_value10(n) saradc_cb.value[n] //获取某个channel的ADC值
- #define saradc_get_value8(n) ((u8)(saradc_cb.value[n]>>2)) //获取某个channel的ADC值
- u16 vbg_voltage_get(void);
- u16 vbat2_voltage_get(void);
- #define VBG_VOLTAGE vbg_voltage_get()
- #define VBAT2_COEF vbat2_voltage_get()
- #define VBAT_VALUE() saradc_get_value10(ADCCH_VBAT)
- #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)
- void saradc_var_init(void);
- void saradc_init(void); //初始化ADC
- uint16_t saradc_exit(void); //关闭ADC
- void saradc_baud_set(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_start(uint8_t auto_anl_en); //启动ADC转换,全部使能的channel都会转换
- bool saradc_is_finish(void); //ADC转换是否完成
- void saradc_get_result(void); //获取使能的channel的ADC值到saradc_cb.value
- 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清除模拟通路
- #endif
|