Statistics
| Branch: | Tag: | Revision:

amiro-blt / Target / Modules / PowerManagement_1-2 / Boot / lib / stdperiphlib / STM32F4xx_StdPeriph_Driver / inc / stm32f4xx_dac.h @ a270d48f

History | View | Annotate | Download (14.597 KB)

1
/**
2
  ******************************************************************************
3
  * @file    stm32f4xx_dac.h
4
  * @author  MCD Application Team
5
  * @version V1.1.0
6
  * @date    11-January-2013
7
  * @brief   This file contains all the functions prototypes for the DAC firmware 
8
  *          library.
9
  ******************************************************************************
10
  * @attention
11
  *
12
  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
13
  *
14
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
15
  * You may not use this file except in compliance with the License.
16
  * You may obtain a copy of the License at:
17
  *
18
  *        http://www.st.com/software_license_agreement_liberty_v2
19
  *
20
  * Unless required by applicable law or agreed to in writing, software 
21
  * distributed under the License is distributed on an "AS IS" BASIS, 
22
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23
  * See the License for the specific language governing permissions and
24
  * limitations under the License.
25
  *
26
  ******************************************************************************
27
  */
28

    
29
/* Define to prevent recursive inclusion -------------------------------------*/
30
#ifndef __STM32F4xx_DAC_H
31
#define __STM32F4xx_DAC_H
32

    
33
#ifdef __cplusplus
34
 extern "C" {
35
#endif
36

    
37
/* Includes ------------------------------------------------------------------*/
38
#include "stm32f4xx.h"
39

    
40
/** @addtogroup STM32F4xx_StdPeriph_Driver
41
  * @{
42
  */
43

    
44
/** @addtogroup DAC
45
  * @{
46
  */
47

    
48
/* Exported types ------------------------------------------------------------*/
49

    
50
/** 
51
  * @brief  DAC Init structure definition
52
  */
53

    
54
typedef struct
55
{
56
  uint32_t DAC_Trigger;                      /*!< Specifies the external trigger for the selected DAC channel.
57
                                                  This parameter can be a value of @ref DAC_trigger_selection */
58

    
59
  uint32_t DAC_WaveGeneration;               /*!< Specifies whether DAC channel noise waves or triangle waves
60
                                                  are generated, or whether no wave is generated.
61
                                                  This parameter can be a value of @ref DAC_wave_generation */
62

    
63
  uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or
64
                                                  the maximum amplitude triangle generation for the DAC channel. 
65
                                                  This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */
66

    
67
  uint32_t DAC_OutputBuffer;                 /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
68
                                                  This parameter can be a value of @ref DAC_output_buffer */
69
}DAC_InitTypeDef;
70

    
71
/* Exported constants --------------------------------------------------------*/
72

    
73
/** @defgroup DAC_Exported_Constants
74
  * @{
75
  */
76

    
77
/** @defgroup DAC_trigger_selection 
78
  * @{
79
  */
80

    
81
#define DAC_Trigger_None                   ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register 
82
                                                                       has been loaded, and not by external trigger */
83
#define DAC_Trigger_T2_TRGO                ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
84
#define DAC_Trigger_T4_TRGO                ((uint32_t)0x0000002C) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */
85
#define DAC_Trigger_T5_TRGO                ((uint32_t)0x0000001C) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
86
#define DAC_Trigger_T6_TRGO                ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
87
#define DAC_Trigger_T7_TRGO                ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
88
#define DAC_Trigger_T8_TRGO                ((uint32_t)0x0000000C) /*!< TIM8 TRGO selected as external conversion trigger for DAC channel */                                                                       
89

    
90
#define DAC_Trigger_Ext_IT9                ((uint32_t)0x00000034) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
91
#define DAC_Trigger_Software               ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channel */
92

    
93
#define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \
94
                                 ((TRIGGER) == DAC_Trigger_T6_TRGO) || \
95
                                 ((TRIGGER) == DAC_Trigger_T8_TRGO) || \
96
                                 ((TRIGGER) == DAC_Trigger_T7_TRGO) || \
97
                                 ((TRIGGER) == DAC_Trigger_T5_TRGO) || \
98
                                 ((TRIGGER) == DAC_Trigger_T2_TRGO) || \
99
                                 ((TRIGGER) == DAC_Trigger_T4_TRGO) || \
100
                                 ((TRIGGER) == DAC_Trigger_Ext_IT9) || \
101
                                 ((TRIGGER) == DAC_Trigger_Software))
102

    
103
/**
104
  * @}
105
  */
106

    
107
/** @defgroup DAC_wave_generation 
108
  * @{
109
  */
110

    
111
#define DAC_WaveGeneration_None            ((uint32_t)0x00000000)
112
#define DAC_WaveGeneration_Noise           ((uint32_t)0x00000040)
113
#define DAC_WaveGeneration_Triangle        ((uint32_t)0x00000080)
114
#define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \
115
                                    ((WAVE) == DAC_WaveGeneration_Noise) || \
116
                                    ((WAVE) == DAC_WaveGeneration_Triangle))
117
/**
118
  * @}
119
  */
120

    
121
/** @defgroup DAC_lfsrunmask_triangleamplitude
122
  * @{
123
  */
124

    
125
#define DAC_LFSRUnmask_Bit0                ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
126
#define DAC_LFSRUnmask_Bits1_0             ((uint32_t)0x00000100) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
127
#define DAC_LFSRUnmask_Bits2_0             ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
128
#define DAC_LFSRUnmask_Bits3_0             ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */
129
#define DAC_LFSRUnmask_Bits4_0             ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
130
#define DAC_LFSRUnmask_Bits5_0             ((uint32_t)0x00000500) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */
131
#define DAC_LFSRUnmask_Bits6_0             ((uint32_t)0x00000600) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */
132
#define DAC_LFSRUnmask_Bits7_0             ((uint32_t)0x00000700) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */
133
#define DAC_LFSRUnmask_Bits8_0             ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
134
#define DAC_LFSRUnmask_Bits9_0             ((uint32_t)0x00000900) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */
135
#define DAC_LFSRUnmask_Bits10_0            ((uint32_t)0x00000A00) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */
136
#define DAC_LFSRUnmask_Bits11_0            ((uint32_t)0x00000B00) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */
137
#define DAC_TriangleAmplitude_1            ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */
138
#define DAC_TriangleAmplitude_3            ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */
139
#define DAC_TriangleAmplitude_7            ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 */
140
#define DAC_TriangleAmplitude_15           ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */
141
#define DAC_TriangleAmplitude_31           ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */
142
#define DAC_TriangleAmplitude_63           ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */
143
#define DAC_TriangleAmplitude_127          ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */
144
#define DAC_TriangleAmplitude_255          ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */
145
#define DAC_TriangleAmplitude_511          ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */
146
#define DAC_TriangleAmplitude_1023         ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 */
147
#define DAC_TriangleAmplitude_2047         ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */
148
#define DAC_TriangleAmplitude_4095         ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */
149

    
150
#define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \
151
                                                      ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \
152
                                                      ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \
153
                                                      ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \
154
                                                      ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \
155
                                                      ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \
156
                                                      ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \
157
                                                      ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \
158
                                                      ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \
159
                                                      ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \
160
                                                      ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \
161
                                                      ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \
162
                                                      ((VALUE) == DAC_TriangleAmplitude_1) || \
163
                                                      ((VALUE) == DAC_TriangleAmplitude_3) || \
164
                                                      ((VALUE) == DAC_TriangleAmplitude_7) || \
165
                                                      ((VALUE) == DAC_TriangleAmplitude_15) || \
166
                                                      ((VALUE) == DAC_TriangleAmplitude_31) || \
167
                                                      ((VALUE) == DAC_TriangleAmplitude_63) || \
168
                                                      ((VALUE) == DAC_TriangleAmplitude_127) || \
169
                                                      ((VALUE) == DAC_TriangleAmplitude_255) || \
170
                                                      ((VALUE) == DAC_TriangleAmplitude_511) || \
171
                                                      ((VALUE) == DAC_TriangleAmplitude_1023) || \
172
                                                      ((VALUE) == DAC_TriangleAmplitude_2047) || \
173
                                                      ((VALUE) == DAC_TriangleAmplitude_4095))
174
/**
175
  * @}
176
  */
177

    
178
/** @defgroup DAC_output_buffer 
179
  * @{
180
  */
181

    
182
#define DAC_OutputBuffer_Enable            ((uint32_t)0x00000000)
183
#define DAC_OutputBuffer_Disable           ((uint32_t)0x00000002)
184
#define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \
185
                                           ((STATE) == DAC_OutputBuffer_Disable))
186
/**
187
  * @}
188
  */
189

    
190
/** @defgroup DAC_Channel_selection 
191
  * @{
192
  */
193

    
194
#define DAC_Channel_1                      ((uint32_t)0x00000000)
195
#define DAC_Channel_2                      ((uint32_t)0x00000010)
196
#define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \
197
                                 ((CHANNEL) == DAC_Channel_2))
198
/**
199
  * @}
200
  */
201

    
202
/** @defgroup DAC_data_alignement 
203
  * @{
204
  */
205

    
206
#define DAC_Align_12b_R                    ((uint32_t)0x00000000)
207
#define DAC_Align_12b_L                    ((uint32_t)0x00000004)
208
#define DAC_Align_8b_R                     ((uint32_t)0x00000008)
209
#define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \
210
                             ((ALIGN) == DAC_Align_12b_L) || \
211
                             ((ALIGN) == DAC_Align_8b_R))
212
/**
213
  * @}
214
  */
215

    
216
/** @defgroup DAC_wave_generation 
217
  * @{
218
  */
219

    
220
#define DAC_Wave_Noise                     ((uint32_t)0x00000040)
221
#define DAC_Wave_Triangle                  ((uint32_t)0x00000080)
222
#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \
223
                           ((WAVE) == DAC_Wave_Triangle))
224
/**
225
  * @}
226
  */
227

    
228
/** @defgroup DAC_data 
229
  * @{
230
  */
231

    
232
#define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0) 
233
/**
234
  * @}
235
  */
236
  
237
/** @defgroup DAC_interrupts_definition 
238
  * @{
239
  */   
240
#define DAC_IT_DMAUDR                      ((uint32_t)0x00002000)  
241
#define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) 
242

    
243
/**
244
  * @}
245
  */ 
246

    
247
/** @defgroup DAC_flags_definition 
248
  * @{
249
  */ 
250
  
251
#define DAC_FLAG_DMAUDR                    ((uint32_t)0x00002000)  
252
#define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR))  
253

    
254
/**
255
  * @}
256
  */
257

    
258
/**
259
  * @}
260
  */
261

    
262
/* Exported macro ------------------------------------------------------------*/
263
/* Exported functions --------------------------------------------------------*/  
264

    
265
/*  Function used to set the DAC configuration to the default reset state *****/  
266
void DAC_DeInit(void);
267

    
268
/*  DAC channels configuration: trigger, output buffer, data format functions */
269
void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
270
void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);
271
void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);
272
void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);
273
void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);
274
void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState);
275
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);
276
void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data);
277
void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);
278
uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);
279

    
280
/* DMA management functions ***************************************************/
281
void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);
282

    
283
/* Interrupts and flags management functions **********************************/
284
void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
285
FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
286
void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
287
ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);
288
void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT);
289

    
290
#ifdef __cplusplus
291
}
292
#endif
293

    
294
#endif /*__STM32F4xx_DAC_H */
295

    
296
/**
297
  * @}
298
  */
299

    
300
/**
301
  * @}
302
  */
303

    
304
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/