apm32f10x_dac.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*!
  2. * @file apm32f10x_dac.h
  3. *
  4. * @brief This file contains all the functions prototypes for the DAC firmware library
  5. *
  6. * @version V1.0.1
  7. *
  8. * @date 2021-03-23
  9. *
  10. */
  11. #ifndef __APM32F10X_DAC_H
  12. #define __APM32F10X_DAC_H
  13. #include "apm32f10x.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /** @addtogroup Peripherals_Library Standard Peripheral Library
  18. @{
  19. */
  20. /** @addtogroup DAC_Driver DAC Driver
  21. @{
  22. */
  23. /** @addtogroup DAC_Enumerations Enumerations
  24. @{
  25. */
  26. /**
  27. * @brief DAC Channel selection
  28. */
  29. typedef enum
  30. {
  31. DAC_CHANNEL_1 = 0x00000000,
  32. DAC_CHANNEL_2 = 0x00000010
  33. }DAC_CHANNEL_T;
  34. /**
  35. * @brief DAC trigger selection
  36. */
  37. typedef enum
  38. {
  39. DAC_TRIGGER_NONE = 0x00000000,
  40. DAC_TRIGGER_TMR6_TRGO = 0x00000004,
  41. DAC_TRIGGER_TMR8_TRGO = 0x0000000C,
  42. DAC_TRIGGER_TMR7_TRGO = 0x00000014,
  43. DAC_TRIGGER_TMR5_TRGO = 0x0000001C,
  44. DAC_TRIGGER_TMR2_TRGO = 0x00000024,
  45. DAC_TRIGGER_TMR4_TRGO = 0x0000002C,
  46. DAC_TRIGGER_EINT9 = 0x00000034,
  47. DAC_TRIGGER_SOFT = 0x0000003C
  48. }DAC_TRIGGER_T;
  49. /**
  50. * @brief DAC wave generation
  51. */
  52. typedef enum
  53. {
  54. DAC_WAVE_GENERATION_NONE = 0x00000000,
  55. DAC_WAVE_GENERATION_NOISE = 0x00000040,
  56. DAC_WAVE_GENERATION_TRIANGLE = 0x00000080
  57. }DAC_WAVE_GENERATION_T;
  58. /**
  59. * @brief DAC channelx mask/amplitude selector
  60. */
  61. typedef enum
  62. {
  63. DAC_LFSR_MASK_BIT11_1 = 0x00000000, //!< Mask bit[11:1] of LFSR for noise wave generation
  64. DAC_LFSR_MASK_BIT11_2 = 0x00001000, //!< Mask bit[11:2] of LFSR for noise wave generation
  65. DAC_LFSR_MASK_BIT11_3 = 0x00002000, //!< Mask bit[11:3] of LFSR for noise wave generation
  66. DAC_LFSR_MASK_BIT11_4 = 0x00003000, //!< Mask bit[11:4] of LFSR for noise wave generation
  67. DAC_LFSR_MASK_BIT11_5 = 0x00004000, //!< Mask bit[11:5] of LFSR for noise wave generation
  68. DAC_LFSR_MASK_BIT11_6 = 0x00005000, //!< Mask bit[11:6] of LFSR for noise wave generation
  69. DAC_LFSR_MASK_BIT11_7 = 0x00006000, //!< Mask bit[11:7] of LFSR for noise wave generation
  70. DAC_LFSR_MASK_BIT11_8 = 0x00007000, //!< Mask bit[11:8] of LFSR for noise wave generation
  71. DAC_LFSR_MASK_BIT11_9 = 0x00008000, //!< Mask bit[11:9] of LFSR for noise wave generation
  72. DAC_LFSR_MASK_BIT11_10 = 0x00009000, //!< Mask bit[11:10] of LFSR for noise wave generation
  73. DAC_LFSR_MASK_BIT11 = 0x0000A000, //!< Mask bit11 of LFSR for noise wave generation
  74. DAC_LFSR_MASK_NONE = 0x0000B000, //!< Mask none bit of LFSR for noise wave generation
  75. DAC_TRIANGLE_AMPLITUDE_1 = 0x00000000, //!< Triangle amplitude equal to 1
  76. DAC_TRIANGLE_AMPLITUDE_3 = 0x00001000, //!< Triangle amplitude equal to 3
  77. DAC_TRIANGLE_AMPLITUDE_7 = 0x00002000, //!< Triangle amplitude equal to 7
  78. DAC_TRIANGLE_AMPLITUDE_15 = 0x00003000, //!< Triangle amplitude equal to 15
  79. DAC_TRIANGLE_AMPLITUDE_31 = 0x00004000, //!< Triangle amplitude equal to 31
  80. DAC_TRIANGLE_AMPLITUDE_63 = 0x00005000, //!< Triangle amplitude equal to 63
  81. DAC_TRIANGLE_AMPLITUDE_127 = 0x00006000, //!< Triangle amplitude equal to 127
  82. DAC_TRIANGLE_AMPLITUDE_255 = 0x00007000, //!< Triangle amplitude equal to 255
  83. DAC_TRIANGLE_AMPLITUDE_511 = 0x00008000, //!< Triangle amplitude equal to 511
  84. DAC_TRIANGLE_AMPLITUDE_1023 = 0x00009000, //!< Triangle amplitude equal to 1023
  85. DAC_TRIANGLE_AMPLITUDE_2047 = 0x0000A000, //!< Triangle amplitude equal to 2047
  86. DAC_TRIANGLE_AMPLITUDE_4095 = 0x0000B000 //!< Triangle amplitude equal to 4095
  87. }DAC_MASK_AMPLITUDE_SEL_T;
  88. /**
  89. * @brief DAC output buffer
  90. */
  91. typedef enum
  92. {
  93. DAC_OUTPUT_BUFFER_ENBALE = 0x00000000,
  94. DAC_OUTPUT_BUFFER_DISABLE = 0x00000002
  95. }DAC_OUTPUT_BUFFER_T;
  96. /**
  97. * @brief DAC data align
  98. */
  99. typedef enum
  100. {
  101. DAC_ALIGN_12BIT_R = 0x00000000,
  102. DAC_ALIGN_12BIT_L = 0x00000004,
  103. DAC_ALIGN_8BIT_R = 0x00000008
  104. }DAC_ALIGN_T;
  105. /**@} end of group DAC_Enumerations*/
  106. /** @addtogroup DAC_Structure Data Structure
  107. @{
  108. */
  109. /**
  110. * @brief DAC Config structure definition
  111. */
  112. typedef struct
  113. {
  114. DAC_TRIGGER_T trigger;
  115. DAC_OUTPUT_BUFFER_T outputBuffer;
  116. DAC_WAVE_GENERATION_T waveGeneration;
  117. DAC_MASK_AMPLITUDE_SEL_T maskAmplitudeSelect;
  118. }DAC_ConfigStruct_T;
  119. /**@} end of group DAC_Structure*/
  120. /** @addtogroup DAC_Fuctions Fuctions
  121. @{
  122. */
  123. /** DAC Reset and Configuration */
  124. void DAC_Reset(void);
  125. void DAC_Config(uint32_t channel, DAC_ConfigStruct_T* configStruct);
  126. void DAC_ConfigStructInit(DAC_ConfigStruct_T* configStruct);
  127. void DAC_Enable(DAC_CHANNEL_T channel);
  128. void DAC_Disable(DAC_CHANNEL_T channel);
  129. /** DAC channel for DAM */
  130. void DAC_DMA_Enable(DAC_CHANNEL_T channel);
  131. void DAC_DMA_Disable(DAC_CHANNEL_T channel);
  132. /** DAC channel software trigger */
  133. void DAC_EnableSoftwareTrigger(DAC_CHANNEL_T channel);
  134. void DAC_DisableSoftwareTrigger(DAC_CHANNEL_T channel);
  135. void DAC_EnableDualSoftwareTrigger(void);
  136. void DAC_DisableDualSoftwareTrigger(void);
  137. /** DAC channel wave generation */
  138. void DAC_EnableWaveGeneration(DAC_CHANNEL_T channel, DAC_WAVE_GENERATION_T wave);
  139. void DAC_DisableWaveGeneration(DAC_CHANNEL_T channel, DAC_WAVE_GENERATION_T wave);
  140. /** DAC set channel data */
  141. void DAC_ConfigChannel1Data(DAC_ALIGN_T align, uint16_t data);
  142. void DAC_ConfigChannel2Data(DAC_ALIGN_T align, uint16_t data);
  143. void DAC_ConfigDualChannelData(DAC_ALIGN_T align, uint16_t data2, uint16_t data1);
  144. /** DAC read data output value */
  145. uint16_t DAC_ReadDataOutputValue(DAC_CHANNEL_T channel);
  146. /**@} end of group DAC_Fuctions*/
  147. /**@} end of group DAC_Driver */
  148. /**@} end of group Peripherals_Library*/
  149. #ifdef __cplusplus
  150. }
  151. #endif
  152. #endif /* __APM32F10X_DAC_H */