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 
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