bsp_saradc.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "include.h"
  2. adc_cb_t adc_cb AT(.buf.key.cb);
  3. void adkey_mux_convert_done(void);
  4. AT(.com_text.saradc.process)
  5. bool bsp_saradc_process(void)
  6. {
  7. if (!saradc_is_finish()) {
  8. return false;
  9. }
  10. //获取ADC转换结果
  11. saradc_get_result();
  12. #if USER_ADKEY_MUX_SDCLK
  13. adkey_mux_convert_done();
  14. #endif
  15. #if VBAT_DETECT_EN
  16. // if (saradc_adc15_is_vrtc()) {
  17. // adc_cb.vrtc = saradc_get_value10(ADCCH_VRTC);
  18. // }
  19. if (saradc_adc15_is_bg()) {
  20. adc_cb.vbg = saradc_get_value10(ADCCH_BGOP);
  21. }
  22. sys_cb.vbat = vbat_get_voltage();
  23. #endif // VBAT_DETECT_EN
  24. #if TSEN_DETECT_EN
  25. if (saradc_adc15_is_ts()) {
  26. adc_cb.tsen = saradc_get_value10(ADCCH_TSENSOR);
  27. }
  28. #endif
  29. saradc_adc15_analog_next();
  30. //启动下一次ADC转换
  31. saradc_start(USER_ADKEY_MUX_LED);
  32. return true;
  33. }
  34. AT(.text.saradc.init)
  35. void bsp_saradc_init(void)
  36. {
  37. memset(&adc_cb, 0, sizeof(adc_cb));
  38. saradc_init();
  39. #if USER_ADKEY_MUX_LED
  40. saradc_baud_set(0x09);
  41. #endif // USER_ADKEY_MUX_LED
  42. #if TSEN_DETECT_EN
  43. saradc_adc15_ana_set_channel(ADCCH15_ANA_TS);
  44. #endif
  45. //初次启动ADC转换
  46. #if VBAT_DETECT_EN
  47. saradc_adc15_ana_set_channel(ADCCH15_ANA_BG);
  48. saradc_adc15_analog_next();
  49. saradc_start(USER_ADKEY_MUX_LED);
  50. while(!bsp_saradc_process()); //获取一次初值,再kick一次
  51. vbat_voltage_init();
  52. #else
  53. saradc_start(USER_ADKEY_MUX_LED);
  54. #endif
  55. }
  56. AT(.text.saradc.init)
  57. uint16_t bsp_saradc_exit(void)
  58. {
  59. return saradc_exit();
  60. }