driver_saradc.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /*
  2. * @File name : driver_saradc.h
  3. * @Author : Bluetrum IOT Team
  4. * @Date : 2023-02-15
  5. * @Description : This file contains all the functions prototypes for the SARADC library.
  6. *
  7. * Copyright (c) by Bluetrum, All Rights Reserved.
  8. */
  9. #ifndef _DRIVER_SARADC_H
  10. #define _DRIVER_SARADC_H
  11. #include "driver_com.h"
  12. /**
  13. * @brief ADC Channel
  14. */
  15. #define ADC_CHANNEL_PA2 0x00000001 // channel 0
  16. #define ADC_CHANNEL_PA3 0x00000002 // channel 1
  17. #define ADC_CHANNEL_PA4 0x00000004 // channel 2
  18. #define ADC_CHANNEL_PA5 0x00000008 // channel 3
  19. #define ADC_CHANNEL_PA6 0x00000010 // channel 4
  20. #define ADC_CHANNEL_PA7 0x00000020 // channel 5
  21. #define ADC_CHANNEL_PB0 0x00000040 // channel 6
  22. #define ADC_CHANNEL_PB1 0x00000080 // channel 7
  23. #define ADC_CHANNEL_PB3 0x00000100 // channel 8
  24. #define ADC_CHANNEL_PB4 0x00000200 // channel 9
  25. #define ADC_CHANNEL_PB8 0x00000400 // channel 10
  26. #define ADC_CHANNEL_VRTC 0x00000800 // channel 11
  27. #define ADC_CHANNEL_WK0 0x00001000 // channel 12
  28. #define ADC_CHANNEL_BG 0x00002000 // channel 13, please do not use this channel, abandon, can use VRTC channel
  29. #define ADC_CHANNEL_VBAT 0x00004000 // channel 14
  30. #define ADC_CHANNEL_VUSB 0x00008000 // channel 15
  31. #define ADC_CHANNEL_TSEN 0x00010000 // channel 15'
  32. /**
  33. * @brief SARADC ANALOG BIT
  34. */
  35. typedef enum {
  36. SARADC_ANALOG_BIT_VBAT = 0x01,
  37. SARADC_ANALOG_BIT_BG = 0x02,
  38. SARADC_ANALOG_BIT_WK0 = 0x04 ,
  39. SARADC_ANALOG_BIT_VRTC = 0x08,
  40. SARADC_ANALOG_BIT_VUSB = 0x10,
  41. } SARADC_ANALOG_BIT_TYPEDEF;
  42. /**
  43. * @brief SARADC Flag Definition
  44. */
  45. typedef enum {
  46. SARADC_IT_FINISHED = 0x01,
  47. } SARADC_IT_TYPEDEF;
  48. /**
  49. * @brief SARADC Analog Mode Enumeration
  50. */
  51. typedef enum {
  52. SARADC_MODE_NORMAL = 0x00000000,
  53. SARADC_MODE_TRIM = 0x00100000,
  54. } SARADC_MODE_TYPEDEF;
  55. /**
  56. * @brief SARADC Auto Enable Analog Enumeration
  57. */
  58. typedef enum {
  59. SARADC_AUTO_ENABLE_ANALOG_DIS = 0x00000000,
  60. SARADC_AUTO_ENABLE_ANALOG_EN = 0x00080000,
  61. } SARADC_AUTO_ENABLE_ANALOG_TYPEDEF;
  62. /**
  63. * @brief SARADC Auto Enable IO Analog Enumeration
  64. */
  65. typedef enum {
  66. SARADC_AUTO_ENABLE_ANALOG_IO_DIS = 0x00000000,
  67. SARADC_AUTO_ENABLE_ANALOG_IO_EN = 0x00040000,
  68. } SARADC_AUTO_ENABLE_ANALOG_IO_TYPEDEF;
  69. /**
  70. * @brief SARADC Internel Pullup Enumeration
  71. */
  72. typedef enum {
  73. SARADC_PULLUP_DIS = 0x00000000,
  74. SARADC_PULLUP_EN = 0x00000001,
  75. } SARADC_PULLUP_TYPEDEF;
  76. /**
  77. * @brief SARADC setup timing enumeration
  78. */
  79. typedef enum {
  80. SARADC_ST_0_CLK = 0x00000000,
  81. SARADC_ST_2_CLK = 0x00000001,
  82. SARADC_ST_4_CLK = 0x00000010,
  83. SARADC_ST_8_CLK = 0x00000011,
  84. } SARADC_SETUP_TYPEDEF;
  85. /**
  86. * @brief SARADC Base Init Structure
  87. */
  88. typedef struct {
  89. uint32_t baud;
  90. SARADC_MODE_TYPEDEF mode;
  91. SARADC_AUTO_ENABLE_ANALOG_TYPEDEF auto_analog;
  92. SARADC_AUTO_ENABLE_ANALOG_IO_TYPEDEF auto_analog_io;
  93. } saradc_base_init_typedef;
  94. /**
  95. * @brief SARADC Channel Init structure
  96. */
  97. typedef struct {
  98. uint32_t channel;
  99. FUNCTIONAL_STATE interrupt_en;
  100. SARADC_PULLUP_TYPEDEF pullup_en;
  101. SARADC_SETUP_TYPEDEF setup_time;
  102. } saradc_channel_init_typedef;
  103. void saradc_init(saradc_base_init_typedef* saradc_init_struct);
  104. uint8_t saradc_deinit(void);
  105. void saradc_channel_init(saradc_channel_init_typedef *saradc_channel_init_struct);
  106. void saradc_cmd(FUNCTIONAL_STATE state);
  107. void saradc_kick_start(uint32_t adc_ch);
  108. void saradc_set_baud(uint32_t baud);
  109. void saradc_pic_config(isr_t isr, int pr, SARADC_IT_TYPEDEF interrupt_type, FUNCTIONAL_STATE state);
  110. FLAG_STATE saradc_get_flag(SARADC_IT_TYPEDEF interrupt_type);
  111. FLAG_STATE saradc_get_channel_flag(uint32_t adc_ch);
  112. void saradc_clear_flag(SARADC_IT_TYPEDEF interrupt_type);
  113. uint32_t saradc_get_data(uint32_t adc_chx);
  114. #endif // _DRIVER_SARADC_H