1
0

HAL_DAC.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  1. /*
  2. ******************************************************************************
  3. * @file HAL_Can.h
  4. * @version V1.0.0
  5. * @date 2020
  6. * @brief Header file of CAN HAL module.
  7. ******************************************************************************
  8. */
  9. #ifndef __HAL_DAC_H__
  10. #define __HAL_DAC_H__
  11. #include "ACM32Fxx_HAL.h"
  12. /**
  13. * @}
  14. */
  15. /******************************************************************************/
  16. /* Peripheral Registers Bits Definition */
  17. /******************************************************************************/
  18. /******************************************************************************/
  19. /* (DAC) */
  20. /******************************************************************************/
  21. /**************** Bit definition for DAC CR register ***********************/
  22. #define DAC_CR_EN1_Pos (0U)
  23. #define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */
  24. #define DAC_CR_EN1 DAC_CR_EN1_Msk /*!<DAC channel1 enable */
  25. #define DAC_CR_TEN1_Pos (2U)
  26. #define DAC_CR_TEN1_Msk (0x1UL << DAC_CR_TEN1_Pos) /*!< 0x00000002 */
  27. #define DAC_CR_TEN1 DAC_CR_TEN1_Msk /*!<DAC channel1 Trigger enable */
  28. #define DAC_CR_TSEL1_Pos (3U)
  29. #define DAC_CR_TSEL1_Msk (0x7UL << DAC_CR_TSEL1_Pos) /*!< 0x0000003C */
  30. #define DAC_CR_TSEL1 DAC_CR_TSEL1_Msk /*!<TSEL1[3:0] (DAC channel1 Trigger selection) */
  31. #define DAC_CR_TSEL1_0 (0x1UL << DAC_CR_TSEL1_Pos) /*!< 0x00000004 */
  32. #define DAC_CR_TSEL1_1 (0x2UL << DAC_CR_TSEL1_Pos) /*!< 0x00000008 */
  33. #define DAC_CR_TSEL1_2 (0x4UL << DAC_CR_TSEL1_Pos) /*!< 0x00000010 */
  34. #define DAC_CR_WAVE1_Pos (6U)
  35. #define DAC_CR_WAVE1_Msk (0x3UL << DAC_CR_WAVE1_Pos) /*!< 0x000000C0 */
  36. #define DAC_CR_WAVE1 DAC_CR_WAVE1_Msk /*!<WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable) */
  37. #define DAC_CR_WAVE1_0 (0x1UL << DAC_CR_WAVE1_Pos) /*!< 0x00000040 */
  38. #define DAC_CR_WAVE1_1 (0x2UL << DAC_CR_WAVE1_Pos) /*!< 0x00000080 */
  39. #define DAC_CR_MAMP1_Pos (8U)
  40. #define DAC_CR_MAMP1_Msk (0xFUL << DAC_CR_MAMP1_Pos) /*!< 0x00000F00 */
  41. #define DAC_CR_MAMP1 DAC_CR_MAMP1_Msk /*!<MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */
  42. #define DAC_CR_MAMP1_0 (0x1UL << DAC_CR_MAMP1_Pos) /*!< 0x00000100 */
  43. #define DAC_CR_MAMP1_1 (0x2UL << DAC_CR_MAMP1_Pos) /*!< 0x00000200 */
  44. #define DAC_CR_MAMP1_2 (0x4UL << DAC_CR_MAMP1_Pos) /*!< 0x00000400 */
  45. #define DAC_CR_MAMP1_3 (0x8UL << DAC_CR_MAMP1_Pos) /*!< 0x00000800 */
  46. #define DAC_CR_DMAEN1_Pos (12U)
  47. #define DAC_CR_DMAEN1_Msk (0x1UL << DAC_CR_DMAEN1_Pos) /*!< 0x00001000 */
  48. #define DAC_CR_DMAEN1 DAC_CR_DMAEN1_Msk /*!<DAC channel1 DMA enable */
  49. #define DAC_CR_DMAUDRIE1_Pos (13U)
  50. #define DAC_CR_DMAUDRIE1_Msk (0x1UL << DAC_CR_DMAUDRIE1_Pos) /*!< 0x00002000 */
  51. #define DAC_CR_DMAUDRIE1 DAC_CR_DMAUDRIE1_Msk /*!<DAC channel 1 DMA underrun interrupt enable >*/
  52. #define DAC_CR_CEN1_Pos (14U)
  53. #define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */
  54. #define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!<DAC channel 1 calibration enable >*/
  55. #define DAC_CR_EN2_Pos (16U)
  56. #define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */
  57. #define DAC_CR_EN2 DAC_CR_EN2_Msk /*!<DAC channel2 enable */
  58. #define DAC_CR_TEN2_Pos (18U)
  59. #define DAC_CR_TEN2_Msk (0x1UL << DAC_CR_TEN2_Pos) /*!< 0x00020000 */
  60. #define DAC_CR_TEN2 DAC_CR_TEN2_Msk /*!<DAC channel2 Trigger enable */
  61. #define DAC_CR_TSEL2_Pos (19U)
  62. #define DAC_CR_TSEL2_Msk (0x7UL << DAC_CR_TSEL2_Pos) /*!< 0x003C0000 */
  63. #define DAC_CR_TSEL2 DAC_CR_TSEL2_Msk /*!<TSEL2[2:0] (DAC channel2 Trigger selection) */
  64. #define DAC_CR_TSEL2_0 (0x1UL << DAC_CR_TSEL2_Pos) /*!< 0x00040000 */
  65. #define DAC_CR_TSEL2_1 (0x2UL << DAC_CR_TSEL2_Pos) /*!< 0x00080000 */
  66. #define DAC_CR_TSEL2_2 (0x4UL << DAC_CR_TSEL2_Pos) /*!< 0x00100000 */
  67. #define DAC_CR_WAVE2_Pos (22U)
  68. #define DAC_CR_WAVE2_Msk (0x3UL << DAC_CR_WAVE2_Pos) /*!< 0x00C00000 */
  69. #define DAC_CR_WAVE2 DAC_CR_WAVE2_Msk /*!<WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */
  70. #define DAC_CR_WAVE2_0 (0x1UL << DAC_CR_WAVE2_Pos) /*!< 0x00400000 */
  71. #define DAC_CR_WAVE2_1 (0x2UL << DAC_CR_WAVE2_Pos) /*!< 0x00800000 */
  72. #define DAC_CR_MAMP2_Pos (24U)
  73. #define DAC_CR_MAMP2_Msk (0xFUL << DAC_CR_MAMP2_Pos) /*!< 0x0F000000 */
  74. #define DAC_CR_MAMP2 DAC_CR_MAMP2_Msk /*!<MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */
  75. #define DAC_CR_MAMP2_0 (0x1UL << DAC_CR_MAMP2_Pos) /*!< 0x01000000 */
  76. #define DAC_CR_MAMP2_1 (0x2UL << DAC_CR_MAMP2_Pos) /*!< 0x02000000 */
  77. #define DAC_CR_MAMP2_2 (0x4UL << DAC_CR_MAMP2_Pos) /*!< 0x04000000 */
  78. #define DAC_CR_MAMP2_3 (0x8UL << DAC_CR_MAMP2_Pos) /*!< 0x08000000 */
  79. #define DAC_CR_DMAEN2_Pos (28U)
  80. #define DAC_CR_DMAEN2_Msk (0x1UL << DAC_CR_DMAEN2_Pos) /*!< 0x10000000 */
  81. #define DAC_CR_DMAEN2 DAC_CR_DMAEN2_Msk /*!<DAC channel2 DMA enabled */
  82. #define DAC_CR_DMAUDRIE2_Pos (29U)
  83. #define DAC_CR_DMAUDRIE2_Msk (0x1UL << DAC_CR_DMAUDRIE2_Pos) /*!< 0x20000000 */
  84. #define DAC_CR_DMAUDRIE2 DAC_CR_DMAUDRIE2_Msk /*!<DAC channel2 DMA underrun interrupt enable >*/
  85. #define DAC_CR_CEN2_Pos (30U)
  86. #define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */
  87. #define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!<DAC channel2 calibration enable >*/
  88. /**************** Bit definition for DAC SWTRIGR register ***********************/
  89. #define DAC_SWTRIGR_SWTRIG1_Pos (0U)
  90. #define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */
  91. #define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!<DAC channel1 software trigger */
  92. #define DAC_SWTRIGR_SWTRIG2_Pos (1U)
  93. #define DAC_SWTRIGR_SWTRIG2_Msk (0x1UL << DAC_SWTRIGR_SWTRIG2_Pos) /*!< 0x00000002 */
  94. #define DAC_SWTRIGR_SWTRIG2 DAC_SWTRIGR_SWTRIG2_Msk /*!<DAC channel2 software trigger */
  95. /***************** Bit definition for DAC_DHR12R1 register ******************/
  96. #define DAC_DHR12R1_DACC1DHR_Pos (0U)
  97. #define DAC_DHR12R1_DACC1DHR_Msk (0xFFFUL << DAC_DHR12R1_DACC1DHR_Pos) /*!< 0x00000FFF */
  98. #define DAC_DHR12R1_DACC1DHR DAC_DHR12R1_DACC1DHR_Msk /*!<DAC channel1 12-bit Right aligned data */
  99. /***************** Bit definition for DAC_DHR12L1 register ******************/
  100. #define DAC_DHR12L1_DACC1DHR_Pos (4U)
  101. #define DAC_DHR12L1_DACC1DHR_Msk (0xFFFUL << DAC_DHR12L1_DACC1DHR_Pos) /*!< 0x0000FFF0 */
  102. #define DAC_DHR12L1_DACC1DHR DAC_DHR12L1_DACC1DHR_Msk /*!<DAC channel1 12-bit Left aligned data */
  103. /****************** Bit definition for DAC_DHR8R1 register ******************/
  104. #define DAC_DHR8R1_DACC1DHR_Pos (0U)
  105. #define DAC_DHR8R1_DACC1DHR_Msk (0xFFUL << DAC_DHR8R1_DACC1DHR_Pos) /*!< 0x000000FF */
  106. #define DAC_DHR8R1_DACC1DHR DAC_DHR8R1_DACC1DHR_Msk /*!<DAC channel1 8-bit Right aligned data */
  107. /***************** Bit definition for DAC_DHR12R2 register ******************/
  108. #define DAC_DHR12R2_DACC2DHR_Pos (0U)
  109. #define DAC_DHR12R2_DACC2DHR_Msk (0xFFFUL << DAC_DHR12R2_DACC2DHR_Pos) /*!< 0x00000FFF */
  110. #define DAC_DHR12R2_DACC2DHR DAC_DHR12R2_DACC2DHR_Msk /*!<DAC channel2 12-bit Right aligned data */
  111. /***************** Bit definition for DAC_DHR12L2 register ******************/
  112. #define DAC_DHR12L2_DACC2DHR_Pos (4U)
  113. #define DAC_DHR12L2_DACC2DHR_Msk (0xFFFUL << DAC_DHR12L2_DACC2DHR_Pos) /*!< 0x0000FFF0 */
  114. #define DAC_DHR12L2_DACC2DHR DAC_DHR12L2_DACC2DHR_Msk /*!<DAC channel2 12-bit Left aligned data */
  115. /****************** Bit definition for DAC_DHR8R2 register ******************/
  116. #define DAC_DHR8R2_DACC2DHR_Pos (0U)
  117. #define DAC_DHR8R2_DACC2DHR_Msk (0xFFUL << DAC_DHR8R2_DACC2DHR_Pos) /*!< 0x000000FF */
  118. #define DAC_DHR8R2_DACC2DHR DAC_DHR8R2_DACC2DHR_Msk /*!<DAC channel2 8-bit Right aligned data */
  119. /***************** Bit definition for DAC_DHR12RD register ******************/
  120. #define DAC_DHR12RD_DACC1DHR_Pos (0U)
  121. #define DAC_DHR12RD_DACC1DHR_Msk (0xFFFUL << DAC_DHR12RD_DACC1DHR_Pos) /*!< 0x00000FFF */
  122. #define DAC_DHR12RD_DACC1DHR DAC_DHR12RD_DACC1DHR_Msk /*!<DAC channel1 12-bit Right aligned data */
  123. #define DAC_DHR12RD_DACC2DHR_Pos (16U)
  124. #define DAC_DHR12RD_DACC2DHR_Msk (0xFFFUL << DAC_DHR12RD_DACC2DHR_Pos) /*!< 0x0FFF0000 */
  125. #define DAC_DHR12RD_DACC2DHR DAC_DHR12RD_DACC2DHR_Msk /*!<DAC channel2 12-bit Right aligned data */
  126. /***************** Bit definition for DAC_DHR12LD register ******************/
  127. #define DAC_DHR12LD_DACC1DHR_Pos (4U)
  128. #define DAC_DHR12LD_DACC1DHR_Msk (0xFFFUL << DAC_DHR12LD_DACC1DHR_Pos) /*!< 0x0000FFF0 */
  129. #define DAC_DHR12LD_DACC1DHR DAC_DHR12LD_DACC1DHR_Msk /*!<DAC channel1 12-bit Left aligned data */
  130. #define DAC_DHR12LD_DACC2DHR_Pos (20U)
  131. #define DAC_DHR12LD_DACC2DHR_Msk (0xFFFUL << DAC_DHR12LD_DACC2DHR_Pos) /*!< 0xFFF00000 */
  132. #define DAC_DHR12LD_DACC2DHR DAC_DHR12LD_DACC2DHR_Msk /*!<DAC channel2 12-bit Left aligned data */
  133. /****************** Bit definition for DAC_DHR8RD register ******************/
  134. #define DAC_DHR8RD_DACC1DHR_Pos (0U)
  135. #define DAC_DHR8RD_DACC1DHR_Msk (0xFFUL << DAC_DHR8RD_DACC1DHR_Pos) /*!< 0x000000FF */
  136. #define DAC_DHR8RD_DACC1DHR DAC_DHR8RD_DACC1DHR_Msk /*!<DAC channel1 8-bit Right aligned data */
  137. #define DAC_DHR8RD_DACC2DHR_Pos (8U)
  138. #define DAC_DHR8RD_DACC2DHR_Msk (0xFFUL << DAC_DHR8RD_DACC2DHR_Pos) /*!< 0x0000FF00 */
  139. #define DAC_DHR8RD_DACC2DHR DAC_DHR8RD_DACC2DHR_Msk /*!<DAC channel2 8-bit Right aligned data */
  140. /******************* Bit definition for DAC_DOR1 register *******************/
  141. #define DAC_DOR1_DACC1DOR_Pos (0U)
  142. #define DAC_DOR1_DACC1DOR_Msk (0xFFFUL << DAC_DOR1_DACC1DOR_Pos) /*!< 0x00000FFF */
  143. #define DAC_DOR1_DACC1DOR DAC_DOR1_DACC1DOR_Msk /*!<DAC channel1 data output */
  144. /******************* Bit definition for DAC_DOR2 register *******************/
  145. #define DAC_DOR2_DACC2DOR_Pos (0U)
  146. #define DAC_DOR2_DACC2DOR_Msk (0xFFFUL << DAC_DOR2_DACC2DOR_Pos) /*!< 0x00000FFF */
  147. #define DAC_DOR2_DACC2DOR DAC_DOR2_DACC2DOR_Msk /*!<DAC channel2 data output */
  148. /******************** Bit definition for DAC_SR register ********************/
  149. #define DAC_SR_SAMOV1_Pos (8U)
  150. #define DAC_SR_SAMOV1_Msk (0x1UL << DAC_SR_SAMOV1_Pos) /*!< 0x00002000 */
  151. #define DAC_SR_SAMOV1 DAC_SR_SAMOV1_Msk /*!<DAC channel1 DMA SAMOV1 flag */
  152. #define DAC_SR_DMAUDR1_Pos (13U)
  153. #define DAC_SR_DMAUDR1_Msk (0x1UL << DAC_SR_DMAUDR1_Pos) /*!< 0x00002000 */
  154. #define DAC_SR_DMAUDR1 DAC_SR_DMAUDR1_Msk /*!<DAC channel1 DMA underrun flag */
  155. #define DAC_SR_CAL_FLAG1_Pos (14U)
  156. #define DAC_SR_CAL_FLAG1_Msk (0x1UL << DAC_SR_CAL_FLAG1_Pos) /*!< 0x00004000 */
  157. #define DAC_SR_CAL_FLAG1 DAC_SR_CAL_FLAG1_Msk /*!<DAC channel1 calibration offset status */
  158. #define DAC_SR_SAMOV2_Pos (24U)
  159. #define DAC_SR_SAMOV2_Msk (0x1UL << DAC_SR_SAMOV2_Pos) /*!< 0x00002000 */
  160. #define DAC_SR_SAMOV2 DAC_SR_SAMOV2_Msk /*!<DAC channel1 DMA SAMOV1 flag */
  161. #define DAC_SR_DMAUDR2_Pos (29U)
  162. #define DAC_SR_DMAUDR2_Msk (0x1UL << DAC_SR_DMAUDR2_Pos) /*!< 0x20000000 */
  163. #define DAC_SR_DMAUDR2 DAC_SR_DMAUDR2_Msk /*!<DAC channel2 DMA underrun flag */
  164. #define DAC_SR_CAL_FLAG2_Pos (30U)
  165. #define DAC_SR_CAL_FLAG2_Msk (0x1UL << DAC_SR_CAL_FLAG2_Pos) /*!< 0x40000000 */
  166. #define DAC_SR_CAL_FLAG2 DAC_SR_CAL_FLAG2_Msk /*!<DAC channel2 calibration offset status */
  167. /**************** Bit definition for DAC CCR register ***********************/
  168. #define DAC_CCR_OTRIM1_Pos (0U)
  169. #define DAC_CCR_OTRIM1_Msk (0x1FUL << DAC_CCR_OTRIM1_Pos) /*!< 0x0000001F */
  170. #define DAC_CCR_OTRIM1 DAC_CCR_OTRIM1_Msk /*!<DAC channel1 offset trimming value */
  171. #define DAC_CCR_OTRIM2_Pos (16U)
  172. #define DAC_CCR_OTRIM2_Msk (0x1FUL << DAC_CCR_OTRIM2_Pos) /*!< 0x001F0000 */
  173. #define DAC_CCR_OTRIM2 DAC_CCR_OTRIM2_Msk /*!<DAC channel2 offset trimming value */
  174. /******************* Bit definition for DAC_MCR register *******************/
  175. #define DAC_MCR_MODE1_Pos (0U)
  176. #define DAC_MCR_MODE1_Msk (0x7UL << DAC_MCR_MODE1_Pos) /*!< 0x00000007 */
  177. #define DAC_MCR_MODE1 DAC_MCR_MODE1_Msk /*!<MODE1[2:0] (DAC channel1 mode) */
  178. #define DAC_MCR_MODE1_0 (0x1UL << DAC_MCR_MODE1_Pos) /*!< 0x00000001 */
  179. #define DAC_MCR_MODE1_1 (0x2UL << DAC_MCR_MODE1_Pos) /*!< 0x00000002 */
  180. #define DAC_MCR_MODE1_2 (0x4UL << DAC_MCR_MODE1_Pos) /*!< 0x00000004 */
  181. #define DAC_MCR_MODE2_Pos (16U)
  182. #define DAC_MCR_MODE2_Msk (0x7UL << DAC_MCR_MODE2_Pos) /*!< 0x00070000 */
  183. #define DAC_MCR_MODE2 DAC_MCR_MODE2_Msk /*!<MODE2[2:0] (DAC channel2 mode) */
  184. #define DAC_MCR_MODE2_0 (0x1UL << DAC_MCR_MODE2_Pos) /*!< 0x00010000 */
  185. #define DAC_MCR_MODE2_1 (0x2UL << DAC_MCR_MODE2_Pos) /*!< 0x00020000 */
  186. #define DAC_MCR_MODE2_2 (0x4UL << DAC_MCR_MODE2_Pos) /*!< 0x00040000 */
  187. /****************** Bit definition for DAC_SHSR1 register ******************/
  188. #define DAC_SHSR1_TSAMPLE1_Pos (0U)
  189. #define DAC_SHSR1_TSAMPLE1_Msk (0x3FFUL << DAC_SHSR1_TSAMPLE1_Pos) /*!< 0x000003FF */
  190. #define DAC_SHSR1_TSAMPLE1 DAC_SHSR1_TSAMPLE1_Msk /*!<DAC channel1 sample time */
  191. /****************** Bit definition for DAC_SHSR2 register ******************/
  192. #define DAC_SHSR2_TSAMPLE2_Pos (0U)
  193. #define DAC_SHSR2_TSAMPLE2_Msk (0x3FFUL << DAC_SHSR2_TSAMPLE2_Pos) /*!< 0x000003FF */
  194. #define DAC_SHSR2_TSAMPLE2 DAC_SHSR2_TSAMPLE2_Msk /*!<DAC channel2 sample time */
  195. /****************** Bit definition for DAC_SHHR register ******************/
  196. #define DAC_SHHR_THOLD1_Pos (0U)
  197. #define DAC_SHHR_THOLD1_Msk (0x3FFUL << DAC_SHHR_THOLD1_Pos) /*!< 0x000003FF */
  198. #define DAC_SHHR_THOLD1 DAC_SHHR_THOLD1_Msk /*!<DAC channel1 hold time */
  199. #define DAC_SHHR_THOLD2_Pos (16U)
  200. #define DAC_SHHR_THOLD2_Msk (0x3FFUL << DAC_SHHR_THOLD2_Pos) /*!< 0x03FF0000 */
  201. #define DAC_SHHR_THOLD2 DAC_SHHR_THOLD2_Msk /*!<DAC channel2 hold time */
  202. /****************** Bit definition for DAC_SHRR register ******************/
  203. #define DAC_SHRR_TREFRESH1_Pos (0U)
  204. #define DAC_SHRR_TREFRESH1_Msk (0xFFUL << DAC_SHRR_TREFRESH1_Pos) /*!< 0x000000FF */
  205. #define DAC_SHRR_TREFRESH1 DAC_SHRR_TREFRESH1_Msk /*!<DAC channel1 refresh time */
  206. #define DAC_SHRR_TREFRESH2_Pos (16U)
  207. #define DAC_SHRR_TREFRESH2_Msk (0xFFUL << DAC_SHRR_TREFRESH2_Pos) /*!< 0x00FF0000 */
  208. #define DAC_SHRR_TREFRESH2 DAC_SHRR_TREFRESH2_Msk /*!<DAC channel2 refresh time */
  209. /**
  210. * @brief DAC Configuration sample and hold Channel structure definition
  211. */
  212. typedef struct
  213. {
  214. uint32_t DAC_SampleTime ; /*!< Specifies the Sample time for the selected channel.
  215. This parameter applies when DAC_SampleAndHold is DAC_SAMPLEANDHOLD_ENABLE.
  216. This parameter must be a number between Min_Data = 0 and Max_Data = 1023 */
  217. uint32_t DAC_HoldTime ; /*!< Specifies the hold time for the selected channel
  218. This parameter applies when DAC_SampleAndHold is DAC_SAMPLEANDHOLD_ENABLE.
  219. This parameter must be a number between Min_Data = 0 and Max_Data = 1023 */
  220. uint32_t DAC_RefreshTime ; /*!< Specifies the refresh time for the selected channel
  221. This parameter applies when DAC_SampleAndHold is DAC_SAMPLEANDHOLD_ENABLE.
  222. This parameter must be a number between Min_Data = 0 and Max_Data = 255 */
  223. }
  224. DAC_SampleAndHoldConfTypeDef;
  225. typedef struct
  226. {
  227. uint32_t DAC_Calibration ; /*!< Specifies the Sample time for the selected channel.
  228. This parameter can be a value of @ref DAC_Calibration */
  229. uint32_t DAC_Calibration_TRIM ; /*!< Specifies the hold time for the selected channel
  230. This parameter applies when DAC_SampleAndHold is DAC_SAMPLEANDHOLD_ENABLE.
  231. This parameter must be a number between Min_Data = 0 and Max_Data = 1023 */
  232. }
  233. DAC_CalibrationConfTypeDef;
  234. /**
  235. * @brief DAC Configuration regular Channel structure definition
  236. */
  237. typedef struct
  238. {
  239. uint32_t DAC_SampleAndHold; /*!< Specifies whether the DAC mode.
  240. This parameter can be a value of @ref DAC_SampleAndHold */
  241. uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel.
  242. This parameter can be a value of @ref DAC_trigger_selection */
  243. uint32_t DAC_OutputBuffer; /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
  244. This parameter can be a value of @ref DAC_output_buffer */
  245. uint32_t DAC_ConnectOnChipPeripheral ; /*!< Specifies whether the DAC output is connected or not to on chip peripheral .
  246. This parameter can be a value of @ref DAC_ConnectOnChipPeripheral */
  247. uint32_t DAC_UserTrimming; /*!< Specifies the trimming mode
  248. This parameter must be a value of @ref DAC_UserTrimming
  249. DAC_UserTrimming is either factory or user trimming */
  250. uint32_t DAC_TrimmingValue; /*!< Specifies the offset trimming value
  251. i.e. when DAC_SampleAndHold is DAC_TRIMMING_USER.
  252. This parameter must be a number between Min_Data = 1 and Max_Data = 31 */
  253. DAC_SampleAndHoldConfTypeDef DAC_SampleAndHoldConfig; /*!< Sample and Hold settings */
  254. } DAC_ChannelConfTypeDef;
  255. /**
  256. * @brief CAN handle Structure definition
  257. */
  258. typedef struct
  259. {
  260. DAC_TypeDef *Instance; /*!< Register base address */
  261. DMA_HandleTypeDef *DMA_Handle1; /*!< Pointer DMA handler for channel 1 */
  262. DMA_HandleTypeDef *DMA_Handle2; /*!< Pointer DMA handler for channel 2 */
  263. } DAC_HandleTypeDef;
  264. #define IS_DAC_ALL_PERIPH(PERIPH) (((PERIPH) == DAC))
  265. /** @defgroup DAC_SampleAndHold DAC power mode
  266. * @{
  267. */
  268. #define IS_DAC_SAMPLETIME(TIME) ((TIME) <= 0x000003FFU)
  269. #define IS_DAC_HOLDTIME(TIME) ((TIME) <= 0x000003FFU)
  270. #define IS_DAC_REFRESHTIME(TIME) ((TIME) <= 0x000000FFU)
  271. /** @defgroup DAC_CHANNEL
  272. * @{
  273. */
  274. #define DAC_CHANNEL_1 0x00000000U
  275. #define DAC_CHANNEL_2 0x00000010U
  276. #define DAC_CHANNEL_Dual 0x00000020U
  277. #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
  278. ((CHANNEL) == DAC_CHANNEL_2) || \
  279. ((CHANNEL) == DAC_CHANNEL_Dual))
  280. /**
  281. * @}
  282. */
  283. /** @defgroup DAC_trigger
  284. * @{
  285. */
  286. #define DAC_TRIGGER_T6_TRGO (0x00000000U| DAC_CR_TEN1)
  287. #define DAC_TRIGGER_T3_TRGO ( DAC_CR_TSEL1_0| DAC_CR_TEN1)
  288. #define DAC_TRIGGER_T7_TRGO ( DAC_CR_TSEL1_1| DAC_CR_TEN1 )
  289. #define DAC_TRIGGER_T15_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0| DAC_CR_TEN1)
  290. #define DAC_TRIGGER_T2_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TEN1)
  291. #define DAC_TRIGGER_T1_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0| DAC_CR_TEN1)
  292. #define DAC_TRIGGER_EXT_IT9 ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1| DAC_CR_TEN1 )
  293. #define DAC_TRIGGER_SOFTWARE ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0| DAC_CR_TEN1)
  294. #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
  295. ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
  296. ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
  297. ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
  298. ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
  299. ((TRIGGER) == DAC_TRIGGER_T1_TRGO) || \
  300. ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
  301. ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
  302. /**
  303. * @}
  304. */
  305. /** @defgroup DAC_wave_generation
  306. * @{
  307. */
  308. #define DAC_WaveGeneration_None 0x00000000U
  309. #define DAC_WaveGeneration_Noise 0x00000001U
  310. #define DAC_WaveGeneration_Triangle 0x00000002U
  311. #define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \
  312. ((WAVE) == DAC_WaveGeneration_Noise) || \
  313. ((WAVE) == DAC_WaveGeneration_Triangle))
  314. /**
  315. * @}
  316. */
  317. /** @defgroup DAC_lfsrunmask_triangleamplitude
  318. * @{
  319. */
  320. #define DAC_LFSRUNMASK_BIT0 0x00000000U /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
  321. #define DAC_LFSRUNMASK_BITS1_0 ( DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
  322. #define DAC_LFSRUNMASK_BITS2_0 ( DAC_CR_MAMP1_1 ) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
  323. #define DAC_LFSRUNMASK_BITS3_0 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */
  324. #define DAC_LFSRUNMASK_BITS4_0 ( DAC_CR_MAMP1_2 ) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
  325. #define DAC_LFSRUNMASK_BITS5_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */
  326. #define DAC_LFSRUNMASK_BITS6_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */
  327. #define DAC_LFSRUNMASK_BITS7_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */
  328. #define DAC_LFSRUNMASK_BITS8_0 (DAC_CR_MAMP1_3 ) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
  329. #define DAC_LFSRUNMASK_BITS9_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */
  330. #define DAC_LFSRUNMASK_BITS10_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */
  331. #define DAC_LFSRUNMASK_BITS11_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */
  332. #define DAC_TRIANGLEAMPLITUDE_1 0x00000000U /*!< Select max triangle amplitude of 1 */
  333. #define DAC_TRIANGLEAMPLITUDE_3 ( DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 3 */
  334. #define DAC_TRIANGLEAMPLITUDE_7 ( DAC_CR_MAMP1_1 ) /*!< Select max triangle amplitude of 7 */
  335. #define DAC_TRIANGLEAMPLITUDE_15 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 15 */
  336. #define DAC_TRIANGLEAMPLITUDE_31 ( DAC_CR_MAMP1_2 ) /*!< Select max triangle amplitude of 31 */
  337. #define DAC_TRIANGLEAMPLITUDE_63 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 63 */
  338. #define DAC_TRIANGLEAMPLITUDE_127 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Select max triangle amplitude of 127 */
  339. #define DAC_TRIANGLEAMPLITUDE_255 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 255 */
  340. #define DAC_TRIANGLEAMPLITUDE_511 (DAC_CR_MAMP1_3 ) /*!< Select max triangle amplitude of 511 */
  341. #define DAC_TRIANGLEAMPLITUDE_1023 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 1023 */
  342. #define DAC_TRIANGLEAMPLITUDE_2047 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Select max triangle amplitude of 2047 */
  343. #define DAC_TRIANGLEAMPLITUDE_4095 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 4095 */
  344. #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUNMASK_BIT0) || \
  345. ((VALUE) == DAC_LFSRUNMASK_BITS1_0) || \
  346. ((VALUE) == DAC_LFSRUNMASK_BITS2_0) || \
  347. ((VALUE) == DAC_LFSRUNMASK_BITS3_0) || \
  348. ((VALUE) == DAC_LFSRUNMASK_BITS4_0) || \
  349. ((VALUE) == DAC_LFSRUNMASK_BITS5_0) || \
  350. ((VALUE) == DAC_LFSRUNMASK_BITS6_0) || \
  351. ((VALUE) == DAC_LFSRUNMASK_BITS7_0) || \
  352. ((VALUE) == DAC_LFSRUNMASK_BITS8_0) || \
  353. ((VALUE) == DAC_LFSRUNMASK_BITS9_0) || \
  354. ((VALUE) == DAC_LFSRUNMASK_BITS10_0) || \
  355. ((VALUE) == DAC_LFSRUNMASK_BITS11_0) || \
  356. ((VALUE) == DAC_TRIANGLEAMPLITUDE_1) || \
  357. ((VALUE) == DAC_TRIANGLEAMPLITUDE_3) || \
  358. ((VALUE) == DAC_TRIANGLEAMPLITUDE_7) || \
  359. ((VALUE) == DAC_TRIANGLEAMPLITUDE_15) || \
  360. ((VALUE) == DAC_TRIANGLEAMPLITUDE_31) || \
  361. ((VALUE) == DAC_TRIANGLEAMPLITUDE_63) || \
  362. ((VALUE) == DAC_TRIANGLEAMPLITUDE_127) || \
  363. ((VALUE) == DAC_TRIANGLEAMPLITUDE_255) || \
  364. ((VALUE) == DAC_TRIANGLEAMPLITUDE_511) || \
  365. ((VALUE) == DAC_TRIANGLEAMPLITUDE_1023) || \
  366. ((VALUE) == DAC_TRIANGLEAMPLITUDE_2047) || \
  367. ((VALUE) == DAC_TRIANGLEAMPLITUDE_4095))
  368. /**
  369. * @}
  370. */
  371. /** @defgroup DAC_MODE
  372. * @{
  373. */
  374. #define DAC_Mode_Normal_BufferEnable_OutPAD 0x00000000U
  375. #define DAC_Mode_Normal_BufferEnable_OutPAD_OutInternal 0x00000001U
  376. #define DAC_Mode_Normal_BufferDisable_OutPAD 0x00000002U
  377. #define DAC_Mode_Normal_BufferDisable_OutPAD_OutInternal 0x00000003U
  378. #define DAC_Mode_SampleAndHold_BufferEnable_OutPAD 0x00000004U
  379. #define DAC_Mode_SampleAndHold_BufferEnable_OutPAD_OutInternal 0x00000005U
  380. #define DAC_Mode_SampleAndHold_BufferDisable_OutPAD_OutInternal 0x00000006U
  381. #define DAC_Mode_SampleAndHold_BufferDisable_OutInternal 0x00000007U
  382. #define IS_DAC_MODE(MODE) (((MODE) == DAC_Mode_Normal_BufferEnable_OutPAD) || \
  383. ((MODE) == DAC_Mode_Normal_BufferEnable_OutPAD_OutInternal) || \
  384. ((MODE) == DAC_Mode_Normal_BufferDisable_OutPAD)|| \
  385. ((MODE) == DAC_Mode_Normal_BufferDisable_OutPAD_OutInternal)|| \
  386. ((MODE) == DAC_Mode_SampleAndHold_BufferEnable_OutPAD)|| \
  387. ((MODE) == DAC_Mode_SampleAndHold_BufferEnable_OutPAD_OutInternal)|| \
  388. ((MODE) == DAC_Mode_SampleAndHold_BufferDisable_OutPAD_OutInternal)|| \
  389. ((MODE) == DAC_Mode_SampleAndHold_BufferDisable_OutInternal))
  390. /**
  391. * @}
  392. */
  393. /** @defgroup DAC_SampleAndHold DAC power mode
  394. * @{
  395. */
  396. #define DAC_SAMPLEANDHOLD_DISABLE 0x00000000U
  397. #define DAC_SAMPLEANDHOLD_ENABLE (DAC_MCR_MODE1_2)
  398. #define IS_DAC_SAMPLEANDHOLD(MODE) (((MODE) == DAC_SAMPLEANDHOLD_DISABLE) || \
  399. ((MODE) == DAC_SAMPLEANDHOLD_ENABLE))
  400. /**
  401. * @}
  402. */
  403. /** @defgroup DAC_UserTrimming DAC User Trimming
  404. * @{
  405. */
  406. #define DAC_TRIMMING_FACTORY 0x00000000U /*!< Factory trimming */
  407. #define DAC_TRIMMING_USER 0x00000001U /*!< User trimming */
  408. #define IS_DAC_TRIMMING(TRIMMING) (((TRIMMING) == DAC_TRIMMING_FACTORY) || \
  409. ((TRIMMING) == DAC_TRIMMING_USER))
  410. #define IS_DAC_TRIMMINGVALUE(TRIMMINGVALUE) ((TRIMMINGVALUE) <= 0x1FU)
  411. /**
  412. * @}
  413. */
  414. /** @defgroup DAC_Calibration
  415. * @{
  416. */
  417. #define DAC_Calibration_Disable 0x00000000U
  418. #define DAC_Calibration_Enable 0x00000001U
  419. #define IS_DAC_Calibration(Calibration) (((Calibration) == DAC_Calibration_Disable) || \
  420. ((Calibration) == DAC_Calibration_Enable))
  421. #define IS_DAC_Calibration_TRIM(TRIM) ((TRIM) <= 0x1FU)
  422. /**
  423. * @}
  424. */
  425. /** @defgroup DAC_output_buffer DAC output buffer
  426. * @{
  427. */
  428. #define DAC_OUTPUTBUFFER_ENABLE 0x00000000U
  429. #define DAC_OUTPUTBUFFER_DISABLE (DAC_MCR_MODE1_1)
  430. #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OUTPUTBUFFER_ENABLE) || \
  431. ((STATE) == DAC_OUTPUTBUFFER_DISABLE))
  432. /**
  433. * @}
  434. */
  435. /** @defgroup DAC_ConnectOnChipPeripheral DAC ConnectOnChipPeripheral
  436. * @{
  437. */
  438. #define DAC_CHIPCONNECT_DISABLE 0x00000000U
  439. #define DAC_CHIPCONNECT_ENABLE (DAC_MCR_MODE1_0)
  440. #define IS_DAC_CHIP_CONNECTION(CONNECT) (((CONNECT) == DAC_CHIPCONNECT_DISABLE) || \
  441. ((CONNECT) == DAC_CHIPCONNECT_ENABLE))
  442. /**
  443. * @}
  444. */
  445. /** @defgroup DAC_data_alignment DAC data alignment
  446. * @{
  447. */
  448. #define DAC_DHR12R1_ALIGNMENT(__ALIGNMENT__) (0x00000008U + (__ALIGNMENT__))
  449. #define DAC_DHR12R2_ALIGNMENT(__ALIGNMENT__) (0x00000014U + (__ALIGNMENT__))
  450. #define DAC_DHR12RD_ALIGNMENT(__ALIGNMENT__) (0x00000020U + (__ALIGNMENT__))
  451. #define DAC_ALIGN_12B_R 0x00000000U
  452. #define DAC_ALIGN_12B_L 0x00000004U
  453. #define DAC_ALIGN_8B_R 0x00000008U
  454. #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_ALIGN_12B_R) || \
  455. ((ALIGN) == DAC_ALIGN_12B_L) || \
  456. ((ALIGN) == DAC_ALIGN_8B_R))
  457. /**
  458. * @}
  459. */
  460. /* Initialization/de-initialization functions *********************************/
  461. void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac);
  462. void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac);
  463. void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac);
  464. HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac);
  465. HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac);
  466. HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel);
  467. /* I/O operation functions ****************************************************/
  468. HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);
  469. HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel);
  470. HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t *pData, uint32_t Length, uint32_t Alignment);
  471. HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel);
  472. /* Peripheral Control functions ***********************************************/
  473. HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);
  474. HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef *hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
  475. uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel);
  476. uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef *hdac);
  477. HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude);
  478. HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude) ;
  479. HAL_StatusTypeDef HAL_DACEx_SelfCalibrate(DAC_HandleTypeDef *hdac, DAC_ChannelConfTypeDef *sConfig, uint32_t Channel);
  480. HAL_StatusTypeDef HAL_DACEx_SetUserTrimming(DAC_HandleTypeDef *hdac, DAC_ChannelConfTypeDef *sConfig, uint32_t Channel, uint32_t NewTrimmingValue);
  481. uint32_t HAL_DACEx_GetTrimOffset(DAC_HandleTypeDef *hdac, uint32_t Channel);
  482. #endif