hal_dac.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file hal_dac.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE DAC
  5. /// 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 __HAL_DAC_H
  20. #define __HAL_DAC_H
  21. // Files includes
  22. #include "types.h"
  23. #include "reg_dac.h"
  24. ////////////////////////////////////////////////////////////////////////////////
  25. /// @addtogroup MM32_Hardware_Abstract_Layer
  26. /// @{
  27. ////////////////////////////////////////////////////////////////////////////////
  28. /// @defgroup DAC_HAL
  29. /// @brief DAC HAL modules
  30. /// @{
  31. ////////////////////////////////////////////////////////////////////////////////
  32. /// @defgroup DAC_Exported_Types
  33. /// @{
  34. ////////////////////////////////////////////////////////////////////////////////
  35. /// @brief DAC_Trigger_Selection
  36. ////////////////////////////////////////////////////////////////////////////////
  37. typedef enum {
  38. DAC_Trigger_None = 0x00000000,
  39. DAC_Trigger_T1_TRIG = (DAC_CR_TSEL1_TIM1_TRIG | DAC_CR_TEN1),
  40. DAC_Trigger_T3_TRIG = (DAC_CR_TSEL1_TIM3_TRIG | DAC_CR_TEN1),
  41. DAC_Trigger_T2_TRIG = (DAC_CR_TSEL1_TIM2_TRIG | DAC_CR_TEN1),
  42. DAC_Trigger_T4_TRIG = (DAC_CR_TSEL1_TIM4_TRIG | DAC_CR_TEN1),
  43. DAC_Trigger_Ext_IT9 = (DAC_CR_TSEL1_EXTI9 | DAC_CR_TEN1),
  44. DAC_Trigger_Software = (DAC_CR_TSEL1_SOFTWARE)
  45. } emDACTRIG_TypeDef;
  46. ////////////////////////////////////////////////////////////////////////////////
  47. /// @brief DAC_Wave_Generation
  48. ////////////////////////////////////////////////////////////////////////////////
  49. typedef enum {
  50. DAC_WaveGeneration_None = DAC_CR_WAVE1_NONE,
  51. DAC_WaveGeneration_Noise = DAC_CR_WAVE1_NOISE,
  52. DAC_WaveGeneration_Triangle = DAC_CR_WAVE1_TRIANGLE
  53. } emDACWAVE_TypeDef;
  54. ////////////////////////////////////////////////////////////////////////////////
  55. /// @brief DAC_Mask_Amplitude
  56. ////////////////////////////////////////////////////////////////////////////////
  57. typedef enum {
  58. DAC_TriangleAmplitude_1 = DAC_CR_MAMP1_1,
  59. DAC_TriangleAmplitude_3 = DAC_CR_MAMP1_3,
  60. DAC_TriangleAmplitude_7 = DAC_CR_MAMP1_7,
  61. DAC_TriangleAmplitude_15 = DAC_CR_MAMP1_15,
  62. DAC_TriangleAmplitude_31 = DAC_CR_MAMP1_31,
  63. DAC_TriangleAmplitude_63 = DAC_CR_MAMP1_63,
  64. DAC_TriangleAmplitude_127 = DAC_CR_MAMP1_127,
  65. DAC_TriangleAmplitude_255 = DAC_CR_MAMP1_255,
  66. DAC_TriangleAmplitude_511 = DAC_CR_MAMP1_511,
  67. DAC_TriangleAmplitude_1023 = DAC_CR_MAMP1_1023,
  68. DAC_TriangleAmplitude_2047 = DAC_CR_MAMP1_2047,
  69. DAC_TriangleAmplitude_4095 = DAC_CR_MAMP1_4095
  70. } emDACAMP_TypeDef;
  71. ////////////////////////////////////////////////////////////////////////////////
  72. /// @brief channel
  73. ////////////////////////////////////////////////////////////////////////////////
  74. typedef enum {
  75. DAC_Channel_1, ///< DAC channel 1
  76. DAC_Channel_2 = (u32)0x00000010 ///< DAC Channel 2
  77. } emDACCH_TypeDef;
  78. ////////////////////////////////////////////////////////////////////////////////
  79. /// @brief DAC_Data_Alignement
  80. ////////////////////////////////////////////////////////////////////////////////
  81. typedef enum {
  82. DAC_Align_12b_R = ((u32)0x00000000),
  83. DAC_Align_12b_L = ((u32)0x00000004),
  84. DAC_Align_8b_R = ((u32)0x00000008)
  85. } emDACALIGN_TypeDef;
  86. ////////////////////////////////////////////////////////////////////////////////
  87. /// @brief DAC_Output_Buffer
  88. ////////////////////////////////////////////////////////////////////////////////
  89. typedef enum {
  90. DAC_OutputBuffer_Enable = 0x00000000, ///< DAC output buffer enable
  91. DAC_OutputBuffer_Disable = DAC_CR_BOFF1 ///< DAC output buffer disable
  92. } emDACBOFF_TypeDef;
  93. ////////////////////////////////////////////////////////////////////////////////
  94. /// @brief DAC Init structure definition
  95. ////////////////////////////////////////////////////////////////////////////////
  96. typedef struct {
  97. emDACTRIG_TypeDef DAC_Trigger;
  98. emDACWAVE_TypeDef DAC_WaveGeneration;
  99. emDACAMP_TypeDef DAC_LFSRUnmask_TriangleAmplitude;
  100. emDACBOFF_TypeDef DAC_OutputBuffer;
  101. } DAC_InitTypeDef;
  102. /// @}
  103. ////////////////////////////////////////////////////////////////////////////////
  104. /// @defgroup DAC_Exported_Constants
  105. /// @{
  106. #define DHR12R1_Offset ((u32)0x00000008)
  107. #define DHR12R2_Offset ((u32)0x00000014)
  108. #define DHR12RD_Offset ((u32)0x00000020)
  109. #define DOR_Offset ((u32)0x0000002C)
  110. /// @}
  111. ////////////////////////////////////////////////////////////////////////////////
  112. /// @defgroup DAC_Exported_Variables
  113. /// @{
  114. #ifdef _HAL_DAC_C_
  115. #define GLOBAL
  116. #else
  117. #define GLOBAL extern
  118. #endif
  119. #undef GLOBAL
  120. /// @}
  121. ////////////////////////////////////////////////////////////////////////////////
  122. /// @defgroup DAC_Exported_Functions
  123. /// @{
  124. void DAC_DeInit(void);
  125. void DAC_Init(emDACCH_TypeDef channel, DAC_InitTypeDef* init_struct);
  126. void DAC_StructInit(DAC_InitTypeDef* init_struct);
  127. void DAC_Cmd(emDACCH_TypeDef channel, FunctionalState state);
  128. void DAC_DMACmd(emDACCH_TypeDef channel, FunctionalState state);
  129. void DAC_SoftwareTriggerCmd(emDACCH_TypeDef channel, FunctionalState state);
  130. void DAC_DualSoftwareTriggerCmd(FunctionalState state);
  131. void DAC_WaveGenerationCmd(emDACCH_TypeDef channel, emDACWAVE_TypeDef wave, FunctionalState state);
  132. void DAC_SetChannel1Data(emDACALIGN_TypeDef alignement, u16 data);
  133. void DAC_SetChannel2Data(emDACALIGN_TypeDef alignement, u16 data);
  134. void DAC_SetDualChannelData(emDACALIGN_TypeDef alignement, u16 data2, u16 data1);
  135. u16 DAC_GetDataOutputValue(emDACCH_TypeDef channel);
  136. /// @}
  137. /// @}
  138. /// @}
  139. ////////////////////////////////////////////////////////////////////////////////
  140. #endif // __HAL_DAC_H
  141. ////////////////////////////////////////////////////////////////////////////////