api_saradc.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * saradc.h
  3. *
  4. * Created by zoro on 2021-3-12.
  5. */
  6. #ifndef __API_SARADC_H
  7. #define __API_SARADC_H
  8. #define ADCCH15_ANA_VRTC 0x01
  9. #define ADCCH15_ANA_BG 0x02
  10. #define ADCCH15_ANA_TS 0x04
  11. #define ADCCH15_ANA_VUSB 0x08
  12. #define SARADC_MAX_CH 16
  13. typedef struct {
  14. psfr_t sfr; //SADCDAT SFR
  15. u16 channel;
  16. u16 value[SARADC_MAX_CH];
  17. u8 adc15_ana_en;
  18. u8 adc15_ana_cur;
  19. } saradc_cb_t;
  20. extern saradc_cb_t saradc_cb;
  21. #define saradc_get_value10(n) saradc_cb.value[n] //获取某个channel的ADC值
  22. #define saradc_get_value8(n) ((u8)(saradc_cb.value[n]>>2)) //获取某个channel的ADC值
  23. u16 vbg_voltage_get(void);
  24. u16 vbat2_voltage_get(void);
  25. #define VBG_VOLTAGE vbg_voltage_get()
  26. #define VBAT2_COEF vbat2_voltage_get()
  27. #define VBAT_VALUE() saradc_get_value10(ADCCH_VBAT)
  28. #define saradc_adc15_is_vrtc() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_VRTC)
  29. #define saradc_adc15_is_ts() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_TS)
  30. #define saradc_adc15_is_bg() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_BG)
  31. #define saradc_adc15_is_vusb() (bool)(saradc_cb.adc15_ana_cur == ADCCH15_ANA_VUSB)
  32. void saradc_var_init(void);
  33. void saradc_init(void); //初始化ADC
  34. uint16_t saradc_exit(void); //关闭ADC
  35. void saradc_baud_set(u16 div); //设置ADC时钟分频
  36. uint16_t saradc_set_channel(uint16_t channel); //使能ADC channel,返回值:设置前的channel
  37. void saradc_clr_channel(uint16_t channel); //关闭ADC channel
  38. uint16_t saradc_get_channel(void); //获取ADC channel
  39. void saradc_start(uint8_t auto_anl_en); //启动ADC转换,全部使能的channel都会转换
  40. bool saradc_is_finish(void); //ADC转换是否完成
  41. void saradc_get_result(void); //获取使能的channel的ADC值到saradc_cb.value
  42. void saradc_adc15_analog_select(u8 ana_ch); //ADC15的模拟信号选择
  43. void saradc_adc15_analog_next(void); //ADC15自动选择下一个模拟信号
  44. u8 saradc_adc15_ana_set_channel(u8 ana_ch); //ADC15设置模拟通路
  45. void saradc_adc15_ana_clr_channel(u8 ana_ch); //ADC15清除模拟通路
  46. #endif