reg_dac.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_dac.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE SERIES OF
  5. /// MM32 FIRMWARE LIBRARY.
  6. ////////////////////////////////////////////////////////////////////////////////
  7. /// @attention
  8. ///
  9. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  10. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  11. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  12. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  13. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  14. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  15. ///
  16. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Define to prevent recursive inclusion
  19. #ifndef __REG_DAC_H
  20. #define __REG_DAC_H
  21. // Files includes
  22. #include <stdint.h>
  23. #include <stdbool.h>
  24. #include "types.h"
  25. #if defined ( __CC_ARM )
  26. #pragma anon_unions
  27. #endif
  28. ////////////////////////////////////////////////////////////////////////////////
  29. /// @brief DAC Base Address Definition
  30. ////////////////////////////////////////////////////////////////////////////////
  31. #define DAC_BASE (APB1PERIPH_BASE + 0x7400) ///< Base Address: 0x40007400
  32. ////////////////////////////////////////////////////////////////////////////////
  33. /// @brief Digital to analog converter register
  34. ////////////////////////////////////////////////////////////////////////////////
  35. typedef struct {
  36. __IO u32 CR; ///< DAC control register, offset: 0x00
  37. __IO u32 SWTRIGR; ///< DAC software trigger register, offset: 0x04
  38. __IO u32 DHR12R1; ///< Channel 1 12-bit right align data register, offset: 0x08
  39. __IO u32 DHR12L1; ///< Channel 1 12-bit left align data register, offset: 0x0C
  40. __IO u32 DHR8R1; ///< Channel 1 8-bit right align data register, offset: 0x10
  41. __IO u32 DHR12R2; ///< Channel 2 12-bit right align data register, offset: 0x14
  42. __IO u32 DHR12L2; ///< Channel 2 12-bit left align data register, offset: 0x18
  43. __IO u32 DHR8R2; ///< Channel 2 8-bit right align data register, offset: 0x1C
  44. __IO u32 DHR12RD; ///< Dual channel 12-bit right align data register,offset: 0x20
  45. __IO u32 DHR12LD; ///< Dual channel 12-bit left align data register, offset: 0x24
  46. __IO u32 DHR8RD; ///< Dual channel 8-bit right align data register, offset: 0x28
  47. __IO u32 DOR1; ///< Channel 1 output register, offset: 0x2C
  48. __IO u32 DOR2; ///< Channel 2 output register, offset: 0x30
  49. } DAC_TypeDef;
  50. ////////////////////////////////////////////////////////////////////////////////
  51. /// @brief DAC type pointer Definition
  52. ////////////////////////////////////////////////////////////////////////////////
  53. #define DAC ((DAC_TypeDef*) DAC_BASE)
  54. ////////////////////////////////////////////////////////////////////////////////
  55. /// @brief DAC_CR Register Bit Definition
  56. ////////////////////////////////////////////////////////////////////////////////
  57. #define DAC_CR_EN1_Pos (0)
  58. #define DAC_CR_EN1 (0x01U << DAC_CR_EN1_Pos) ///< DAC channel1 enable
  59. #define DAC_CR_BOFF1_Pos (1)
  60. #define DAC_CR_BOFF1 (0x01U << DAC_CR_BOFF1_Pos) ///< DAC channel1 output buffer disable
  61. #define DAC_CR_TEN1_Pos (2)
  62. #define DAC_CR_TEN1 (0x01U << DAC_CR_TEN1_Pos) ///< DAC channel1 Trigger enable
  63. #define DAC_CR_TSEL1_Pos (3)
  64. #define DAC_CR_TSEL1 (0x07U << DAC_CR_TSEL1_Pos) ///< TSEL1[2:0] (DAC channel1 Trigger selection)
  65. #define DAC_CR_TSEL1_TIM1_TRIG (0x00U << DAC_CR_TSEL1_Pos) ///< TIM1_TRIG trigger
  66. #define DAC_CR_TSEL1_TIM3_TRIG (0x01U << DAC_CR_TSEL1_Pos) ///< TIM3_TRIG trigger
  67. #define DAC_CR_TSEL1_TIM2_TRIG (0x04U << DAC_CR_TSEL1_Pos) ///< TIM2_TRIG trigger
  68. #define DAC_CR_TSEL1_TIM4_TRIG (0x05U << DAC_CR_TSEL1_Pos) ///< TIM4_TRIG trigger
  69. #define DAC_CR_TSEL1_EXTI9 (0x06U << DAC_CR_TSEL1_Pos) ///< External interrupt line 9 trigger
  70. #define DAC_CR_TSEL1_SOFTWARE (0x07U << DAC_CR_TSEL1_Pos) ///< Software trigger
  71. #define DAC_CR_WAVE1_Pos (6)
  72. #define DAC_CR_WAVE1 (0x03U << DAC_CR_WAVE1_Pos) ///< WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable)
  73. #define DAC_CR_WAVE1_NONE (0x00U << DAC_CR_WAVE1_Pos) ///< Turn off waveform generation
  74. #define DAC_CR_WAVE1_NOISE (0x01U << DAC_CR_WAVE1_Pos) ///< Noise waveform generation
  75. #define DAC_CR_WAVE1_TRIANGLE (0x02U << DAC_CR_WAVE1_Pos) ///< Triangle wave generation
  76. #define DAC_CR_MAMP1_Pos (8)
  77. #define DAC_CR_MAMP1 (0x0FU << DAC_CR_MAMP1_Pos) ///< MAMP1[3:0] (DAC channel1 Mask/Amplitude selector)
  78. #define DAC_CR_MAMP1_1 (0x00U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 1
  79. #define DAC_CR_MAMP1_3 (0x01U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 3
  80. #define DAC_CR_MAMP1_7 (0x02U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 7
  81. #define DAC_CR_MAMP1_15 (0x03U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 15
  82. #define DAC_CR_MAMP1_31 (0x04U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 31
  83. #define DAC_CR_MAMP1_63 (0x05U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 63
  84. #define DAC_CR_MAMP1_127 (0x06U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 127
  85. #define DAC_CR_MAMP1_255 (0x07U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 255
  86. #define DAC_CR_MAMP1_511 (0x08U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 511
  87. #define DAC_CR_MAMP1_1023 (0x09U << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 1023
  88. #define DAC_CR_MAMP1_2047 (0x0AU << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 2047
  89. #define DAC_CR_MAMP1_4095 (0x0BU << DAC_CR_MAMP1_Pos) ///< Triangle wave amplitude equal to 4095
  90. #define DAC_CR_DMAEN1_Pos (12)
  91. #define DAC_CR_DMAEN1 (0x01U << DAC_CR_DMAEN1_Pos) ///< DAC channel1 DMA enable
  92. #define DAC_CR_EN2_Pos (16)
  93. #define DAC_CR_EN2 (0x01U << DAC_CR_EN2_Pos) ///< DAC channel2 enable
  94. #define DAC_CR_BOFF2_Pos (17)
  95. #define DAC_CR_BOFF2 (0x01U << DAC_CR_BOFF2_Pos) ///< DAC channel2 output buffer disable
  96. #define DAC_CR_TEN2_Pos (18)
  97. #define DAC_CR_TEN2 (0x01U << DAC_CR_TEN2_Pos) ///< DAC channel2 Trigger enable
  98. #define DAC_CR_TSEL2_Pos (19)
  99. #define DAC_CR_TSEL2 (0x07U << DAC_CR_TSEL2_Pos) ///< TSEL1[2:0] (DAC channel1 Trigger selection)
  100. #define DAC_CR_TSEL2_TIM1_TRIG (0x00U << DAC_CR_TSEL2_Pos) ///< TIM1_TRIG trigger
  101. #define DAC_CR_TSEL2_TIM3_TRIG (0x01U << DAC_CR_TSEL2_Pos) ///< TIM3_TRIG trigger
  102. #define DAC_CR_TSEL2_TIM2_TRIG (0x04U << DAC_CR_TSEL2_Pos) ///< TIM2_TRIG trigger
  103. #define DAC_CR_TSEL2_TIM4_TRIG (0x05U << DAC_CR_TSEL2_Pos) ///< TIM4_TRIG trigger
  104. #define DAC_CR_TSEL2_EXTI9 (0x06U << DAC_CR_TSEL2_Pos) ///< External interrupt line 9 trigger
  105. #define DAC_CR_TSEL2_SOFTWARE (0x07U << DAC_CR_TSEL2_Pos) ///< Software trigger
  106. #define DAC_CR_WAVE2_Pos (22)
  107. #define DAC_CR_WAVE2 (0x03U << DAC_CR_WAVE2_Pos) ///< WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable)
  108. #define DAC_CR_WAVE2_NONE (0x00U << DAC_CR_WAVE2_Pos) ///< Turn off waveform generation
  109. #define DAC_CR_WAVE2_NOISE (0x01U << DAC_CR_WAVE2_Pos) ///< Noise waveform generation
  110. #define DAC_CR_WAVE2_TRIANGLE (0x02U << DAC_CR_WAVE2_Pos) ///< Triangle wave generation
  111. #define DAC_CR_MAMP2_Pos (24)
  112. #define DAC_CR_MAMP2 (0x0FU << DAC_CR_MAMP2_Pos) ///< MAMP1[3:0] (DAC channel1 Mask/Amplitude selector)
  113. #define DAC_CR_MAMP2_1 (0x00U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 1
  114. #define DAC_CR_MAMP2_3 (0x01U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 3
  115. #define DAC_CR_MAMP2_7 (0x02U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 7
  116. #define DAC_CR_MAMP2_15 (0x03U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 15
  117. #define DAC_CR_MAMP2_31 (0x04U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 31
  118. #define DAC_CR_MAMP2_63 (0x05U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 63
  119. #define DAC_CR_MAMP2_127 (0x06U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 127
  120. #define DAC_CR_MAMP2_255 (0x07U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 255
  121. #define DAC_CR_MAMP2_511 (0x08U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 511
  122. #define DAC_CR_MAMP2_1023 (0x09U << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 1023
  123. #define DAC_CR_MAMP2_2047 (0x0AU << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 2047
  124. #define DAC_CR_MAMP2_4095 (0x0BU << DAC_CR_MAMP2_Pos) ///< Triangle wave amplitude equal to 4095
  125. #define DAC_CR_DMAEN2_Pos (28)
  126. #define DAC_CR_DMAEN2 (0x01U << DAC_CR_DMAEN2_Pos) ///< DAC channel2 DMA enabled
  127. ////////////////////////////////////////////////////////////////////////////////
  128. /// @brief DAC_SWTRIGR Register Bit Definition
  129. ////////////////////////////////////////////////////////////////////////////////
  130. #define DAC_SWTRIGR_SWTRIG1_Pos (0)
  131. #define DAC_SWTRIGR_SWTRIG1 (0x01U << DAC_SWTRIGR_SWTRIG1_Pos) ///< DAC channel1 software trigger
  132. #define DAC_SWTRIGR_SWTRIG2_Pos (1)
  133. #define DAC_SWTRIGR_SWTRIG2 (0x01U << DAC_SWTRIGR_SWTRIG2_Pos) ///< DAC channel2 software trigger
  134. #define DAC_SWTRIGR_DACPRE_Pos (8)
  135. #define DAC_SWTRIGR_DACPRE (0x7FU << DAC_SWTRIGR_DACPRE_Pos) ///< DAC prescale
  136. ////////////////////////////////////////////////////////////////////////////////
  137. /// @brief DAC_DHR12R1 Register Bit Definition
  138. ////////////////////////////////////////////////////////////////////////////////
  139. #define DAC_DHR12R1_DACC1DHR_Pos (0)
  140. #define DAC_DHR12R1_DACC1DHR (0xFFFU << DAC_DHR12R1_DACC1DHR_Pos) ///< DAC channel1 12-bit Right align data
  141. ////////////////////////////////////////////////////////////////////////////////
  142. /// @brief DAC_DHR12L1 Register Bit Definition
  143. ////////////////////////////////////////////////////////////////////////////////
  144. #define DAC_DHR12L1_DACC1DHR_Pos (4)
  145. #define DAC_DHR12L1_DACC1DHR (0xFFFU << DAC_DHR12L1_DACC1DHR_Pos) ///< DAC channel1 12-bit Left align data
  146. ////////////////////////////////////////////////////////////////////////////////
  147. /// @brief DAC_DHR8R1 Register Bit Definition
  148. ////////////////////////////////////////////////////////////////////////////////
  149. #define DAC_DHR8R1_DACC1DHR_Pos (0)
  150. #define DAC_DHR8R1_DACC1DHR (0xFFU << DAC_DHR8R1_DACC1DHR_Pos) ///< DAC channel1 8-bit Right align data
  151. ////////////////////////////////////////////////////////////////////////////////
  152. /// @brief DAC_DHR12R2 Register Bit Definition
  153. ////////////////////////////////////////////////////////////////////////////////
  154. #define DAC_DHR12R2_DACC2DHR_Pos (0)
  155. #define DAC_DHR12R2_DACC2DHR (0xFFFU << DAC_DHR12R2_DACC2DHR_Pos) ///< DAC channel2 12-bit Right align data
  156. ////////////////////////////////////////////////////////////////////////////////
  157. /// @brief DAC_DHR12L2 Register Bit Definition
  158. ////////////////////////////////////////////////////////////////////////////////
  159. #define DAC_DHR12L2_DACC2DHR_Pos (4)
  160. #define DAC_DHR12L2_DACC2DHR (0xFFFU << DAC_DHR12L2_DACC2DHR_Pos) ///< DAC channel2 12-bit Left align data
  161. ////////////////////////////////////////////////////////////////////////////////
  162. /// @brief DAC_DHR8R2 Register Bit Definition
  163. ////////////////////////////////////////////////////////////////////////////////
  164. #define DAC_DHR8R2_DACC2DHR_Pos (0)
  165. #define DAC_DHR8R2_DACC2DHR (0xFFU << DAC_DHR8R2_DACC2DHR_Pos) ///< DAC channel2 8-bit Right align data
  166. ////////////////////////////////////////////////////////////////////////////////
  167. /// @brief DAC_DHR12RD Register Bit Definition
  168. ////////////////////////////////////////////////////////////////////////////////
  169. #define DAC_DHR12RD_DACC1DHR_Pos (0)
  170. #define DAC_DHR12RD_DACC1DHR (0xFFFU << DAC_DHR12RD_DACC1DHR_Pos) ///< DAC channel1 12-bit Right align data
  171. #define DAC_DHR12RD_DACC2DHR_Pos (16)
  172. #define DAC_DHR12RD_DACC2DHR (0xFFFU << DAC_DHR12RD_DACC2DHR_Pos) ///< DAC channel2 12-bit Right align data
  173. ////////////////////////////////////////////////////////////////////////////////
  174. /// @brief DAC_DHR12LD Register Bit Definition
  175. ////////////////////////////////////////////////////////////////////////////////
  176. #define DAC_DHR12LD_DACC1DHR_Pos (4)
  177. #define DAC_DHR12LD_DACC1DHR (0xFFFU << DAC_DHR12LD_DACC1DHR_Pos) ///< DAC channel1 12-bit Right align data
  178. #define DAC_DHR12LD_DACC2DHR_Pos (20)
  179. #define DAC_DHR12LD_DACC2DHR (0xFFFU << DAC_DHR12LD_DACC2DHR_Pos) ///< DAC channel2 12-bit Right align data
  180. ////////////////////////////////////////////////////////////////////////////////
  181. /// @brief DAC_DHR8RD Register Bit Definition
  182. ////////////////////////////////////////////////////////////////////////////////
  183. #define DAC_DHR8RD_DACC1DHR_Pos (0)
  184. #define DAC_DHR8RD_DACC1DHR (0xFFU << DAC_DHR8RD_DACC1DHR_Pos) ///< DAC channel1 8-bit Right align data
  185. #define DAC_DHR8RD_DACC2DHR_Pos (8)
  186. #define DAC_DHR8RD_DACC2DHR (0xFFU << DAC_DHR8RD_DACC2DHR_Pos) ///< DAC channel2 8-bit Right align data
  187. ////////////////////////////////////////////////////////////////////////////////
  188. /// @brief DAC_DOR1 Register Bit Definition
  189. ////////////////////////////////////////////////////////////////////////////////
  190. #define DAC_DOR1_DACC1DOR_Pos (0)
  191. #define DAC_DOR1_DACC1DOR (0xFFFU << DAC_DOR1_DACC1DOR_Pos) ///< DAC channel1 data output
  192. ////////////////////////////////////////////////////////////////////////////////
  193. /// @brief DAC_DOR2 Register Bit Definition
  194. ////////////////////////////////////////////////////////////////////////////////
  195. #define DAC_DOR2_DACC2DOR_Pos (0)
  196. #define DAC_DOR2_DACC2DOR (0xFFFU << DAC_DOR2_DACC2DOR_Pos) ///< DAC channel2 data output #endif
  197. /// @}
  198. /// @}
  199. /// @}
  200. ////////////////////////////////////////////////////////////////////////////////
  201. #endif
  202. ////////////////////////////////////////////////////////////////////////////////