driver_sdadc.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. * @File name : driver_sdadc.h
  3. * @Author : Bluetrum IOT Team
  4. * @Date : 2023-06-08
  5. * @Description : This file contains all the functions prototypes for the SDADC library.
  6. *
  7. * Copyright (c) by Bluetrum, All Rights Reserved.
  8. */
  9. #ifndef _DRIVER_SDADC_H
  10. #define _DRIVER_SDADC_H
  11. #include "driver_com.h"
  12. /**
  13. * @brief Flag Enumeration.
  14. */
  15. typedef enum {
  16. SDADC_FLAG_SINGLE_SAMPLE = 0x01,
  17. SDADC_FLAG_DMA_ALL_DONE = 0x02,
  18. SDADC_FLAG_DMA_HALF_DONE = 0x04,
  19. } SDADC_FLAG_TYPEDEF;
  20. /**
  21. * @brief Digital Gain Select Enumeration.
  22. */
  23. typedef enum {
  24. DIG_GAIN_400 = 0x0400,
  25. DIG_GAIN_800 = 0x0800,
  26. DIG_GAIN_1600 = 0x1600,
  27. DIG_GAIN_3200 = 0x3200,
  28. DIG_GAIN_4800 = 0x4800,
  29. DIG_GAIN_6400 = 0x6400,
  30. DIG_GAIN_8000 = 0x8000,
  31. } SDADC_DIGITAL_GAIN_TYPEDEF;
  32. /**
  33. * @brief Sample Rate Enumeration.
  34. */
  35. typedef enum {
  36. SPR_48000 = 0x00000000,
  37. SPR_32000 = 0x00000002,
  38. SPR_24000 = 0x00000004,
  39. SPR_16000 = 0x00000006,
  40. SPR_12000 = 0x00000008,
  41. SPR_8000 = 0x0000000a,
  42. } SDADC_SAMPLING_TYPEDEF;
  43. /**
  44. * @brief GETDC Bits Enumeration.
  45. */
  46. typedef enum{
  47. SDADC_GETDC_BITS_13BITS = 0x00000000,
  48. SDADC_GETDC_BITS_12BITS = 0x00000400,
  49. SDADC_GETDC_BITS_11BITS = 0x00000800,
  50. SDADC_GETDC_BITS_10BITS = 0x00000c00,
  51. } SDADC_GETDC_BITS_TYPEDEF;
  52. /**
  53. * @brief RemoveDC Bits Enumeration.
  54. */
  55. typedef enum{
  56. SDADC_RMDC_BITS_10BITS = 0x00000000,
  57. SDADC_RMDC_BITS_9BITS = 0x00000100,
  58. SDADC_RMDC_BITS_8BITS = 0x00000200,
  59. SDADC_RMDC_BITS_7BITS = 0x00000300,
  60. } SDADC_RMDC_BITS_TYPEDEF;
  61. /**
  62. * @brief SDADC Initialization Struct.
  63. */
  64. typedef struct{
  65. SDADC_SAMPLING_TYPEDEF sample_rate;
  66. MIC_ADC_CFG mic_analog_cfg;
  67. FUNCTIONAL_STATE subtract_soft_dc_en;
  68. FUNCTIONAL_STATE get_dc_en;
  69. FUNCTIONAL_STATE remove_dc_en;
  70. FUNCTIONAL_STATE dig_gain_en;
  71. } sdadc_init_typedef;
  72. void sdadc_init(sdadc_init_typedef *sdadc_init_struct);
  73. void sdadc_deinit(void);
  74. void sdadc_cmd(FUNCTIONAL_STATE state);
  75. void sdadc_dma_cmd(u32 addr, u16 len, FUNCTIONAL_STATE state);
  76. void sdadc_pic_config(isr_t isr, int pr, SDADC_FLAG_TYPEDEF flag_type, FUNCTIONAL_STATE state);
  77. FLAG_STATE sdadc_get_flag(SDADC_FLAG_TYPEDEF flag_type);
  78. void sdadc_clear_flag(SDADC_FLAG_TYPEDEF flag_type);
  79. void sdadc_digital_gain_set(SDADC_DIGITAL_GAIN_TYPEDEF dig_gain);
  80. void sdadc_removeDC_bits_set(SDADC_RMDC_BITS_TYPEDEF removeDC_bits_sel);
  81. void sdadc_getDC_bits_set(SDADC_GETDC_BITS_TYPEDEF getDC_bits_sel);
  82. uint16_t sdadc_digital_gain_get(void);
  83. SDADC_GETDC_BITS_TYPEDEF sdadc_getDC_bits_get(void);
  84. SDADC_RMDC_BITS_TYPEDEF sdadc_removeDC_bits_get(void);
  85. #endif