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