G32R430 Device Driver Layer v1.0.4
G32R4xx Device Driver Layer API Reference
g32r4xx_ddl_dac.c
Go to the documentation of this file.
1
43
44#if defined(USE_FULL_DDL_DRIVER)
45
46/* Includes ------------------------------------------------------------------*/
47#include "g32r4xx_ddl_dac.h"
48#include "g32r4xx_ddl_rcm.h"
49
50#if (USE_FULL_ASSERT == 1U)
51#include "g32_assert.h"
52#else
53#define ASSERT_PARAM(_PARAM_) ((void)0U)
54#endif /* USE_FULL_ASSERT */
55
59
60#if defined(DAC1) || defined(DAC2)
61
65
66/* Private types -------------------------------------------------------------*/
67/* Private variables ---------------------------------------------------------*/
68/* Private constants ---------------------------------------------------------*/
69/* Private macros ------------------------------------------------------------*/
70
74
75#define IS_DDL_DAC_TRIGGER_SOURCE(__TRIGGER_SOURCE__) \
76 ( ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_SOFTWARE ) \
77 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_TMR1) \
78 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_TMR2) \
79 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_TMR3) \
80 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_TMR4) \
81 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_EINT_LINE0) \
82 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_EINT_LINE2) \
83 || ((__TRIGGER_SOURCE__) == DDL_DAC_CHANNEL_TRIG_SOURCE_EINT_LINE11) \
84 )
85
86#define IS_DDL_DAC_WAVE_AUTO_GENER_MODE(__WAVE_AUTO_GENERATION_MODE__) \
87 ( ((__WAVE_AUTO_GENERATION_MODE__) == DDL_DAC_WAVE_GENERATE_NONE) \
88 || ((__WAVE_AUTO_GENERATION_MODE__) == DDL_DAC_WAVE_GENERATE_NOISE) \
89 || ((__WAVE_AUTO_GENERATION_MODE__) == DDL_DAC_WAVE_GENERATE_TRIANGLE) \
90 || ((__WAVE_AUTO_GENERATION_MODE__) == DDL_DAC_WAVE_GENERATE_SAWTOOTH) \
91 )
92
93#define IS_DDL_DAC_WAVE_AUTO_GENER_CONFIG(__WAVE_AUTO_GENERATION_MODE__, __WAVE_AUTO_GENERATION_CONFIG__) \
94 ( (((__WAVE_AUTO_GENERATION_MODE__) == DDL_DAC_WAVE_GENERATE_NOISE) \
95 && ( ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_0_0) \
96 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_1_0) \
97 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_2_0) \
98 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_3_0) \
99 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_4_0) \
100 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_5_0) \
101 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_6_0) \
102 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_7_0) \
103 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_8_0) \
104 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_NONE_MASK_LFSR_9_0)) \
105 ) \
106 ||(((__WAVE_AUTO_GENERATION_MODE__) == DDL_DAC_WAVE_GENERATE_TRIANGLE) \
107 && ( ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_1) \
108 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_3) \
109 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_7) \
110 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_15) \
111 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_31) \
112 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_63) \
113 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_127) \
114 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_255) \
115 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_511) \
116 || ((__WAVE_AUTO_GENERATION_CONFIG__) == DDL_DAC_TRI_WAVE_AMPLITUDE_1023)) \
117 ) \
118 )
119
120#define IS_DDL_DAC_OUTPUT_BUFFER(__OUTPUT_BUFFER__) \
121 ( ((__OUTPUT_BUFFER__) == DDL_DAC_OUTPUT_BUFFER_INTERNAL) \
122 || ((__OUTPUT_BUFFER__) == DDL_DAC_OUTPUT_BUFFER_EXTERNAL) \
123 )
124
128
129
130/* Private function prototypes -----------------------------------------------*/
131
132/* Exported functions --------------------------------------------------------*/
136
140
149ErrorStatus DDL_DAC_DeInit(DAC_TypeDef *DACx)
150{
151 /* Check the parameters */
152 ASSERT_PARAM(IS_DAC_ALL_INSTANCE(DACx));
153
155
156 if (DACx == DAC1)
157 {
158 /* Force reset of DAC clock */
160
161 /* Release reset of DAC clock */
163 }
164
165 if (DACx == DAC2)
166 {
167 /* Force reset of DAC clock */
169
170 /* Release reset of DAC clock */
172 }
173
174 return SUCCESS;
175}
176
196ErrorStatus DDL_DAC_Init(DAC_TypeDef *DACx, DDL_DAC_InitTypeDef *DAC_InitStruct)
197{
198 ErrorStatus status = SUCCESS;
199
200 /* Check the parameters */
201 ASSERT_PARAM(IS_DAC_ALL_INSTANCE(DACx));
205 if (DAC_InitStruct->WaveAutoGeneration != DDL_DAC_WAVE_GENERATE_NONE)
206 {
208 DAC_InitStruct->WaveAutoGenerationConfig));
209 }
210
211 /* Note: Hardware constraint (refer to description of this function) */
212 /* DAC instance must be disabled. */
213 if (DDL_DAC_IsEnabled(DACx) == 0UL)
214 {
215 /* Configuration of DAC channel: */
216 /* - TriggerSource */
217 /* - WaveAutoGeneration */
218 /* - OutputBuffer */
219 /* - OutputMode */
220 if (DAC_InitStruct->WaveAutoGeneration != DDL_DAC_WAVE_GENERATE_NONE)
221 {
222 MODIFY_REG(DACx->CR,
223 (DAC_CR_TSEL
224 | DAC_CR_WAVE
225 | DAC_CR_MAMP
226 | DAC_CR_EXT_SEL
227 )
228 ,
229 (DAC_InitStruct->TriggerSource
230 | DAC_InitStruct->WaveAutoGeneration
231 | DAC_InitStruct->WaveAutoGenerationConfig
232 | DAC_InitStruct->OutputBuffer
233 )
234 );
235 }
236 else
237 {
238 MODIFY_REG(DACx->CR,
239 (DAC_CR_TSEL
240 | DAC_CR_WAVE
241 | DAC_CR_EXT_SEL
242 )
243 ,
244 (DAC_InitStruct->TriggerSource
246 | DAC_InitStruct->OutputBuffer
247 )
248 );
249 }
250 }
251 else
252 {
253 /* Initialization error: DAC instance is not disabled. */
254 status = ERROR;
255 }
256 return status;
257}
258
266{
267 /* Set DAC_InitStruct fields to default values */
270 /* Note: Parameter discarded if wave auto generation is disabled, */
271 /* set anyway to its default value. */
274}
275
279
283
287
288#endif /* DAC1 || DAC2 */
289
293
294#endif /* USE_FULL_DDL_DRIVER */
295
G32 assert template file. This file should be copied to the application folder and renamed to g32_ass...
#define ASSERT_PARAM(_PARAM_)
Definition g32_assert.h:58
Header file of DAC DDL module.
Header file of RCM DDL module.
__STATIC_INLINE uint32_t DDL_DAC_IsEnabled(DAC_TypeDef *DACx)
Get the status of whether DAC is enabled.
#define DDL_DAC_CHANNEL_TRIG_SOURCE_SOFTWARE
void DDL_DAC_StructInit(DDL_DAC_InitTypeDef *DAC_InitStruct)
Set each DDL_DAC_InitTypeDef field to default value.
ErrorStatus DDL_DAC_Init(DAC_TypeDef *DACx, DDL_DAC_InitTypeDef *DAC_InitStruct)
Initialize some features of DAC channel. or one of the supported autogenerated wave.
ErrorStatus DDL_DAC_DeInit(DAC_TypeDef *DACx)
Initialization and de-initialization functions.
#define DDL_DAC_NONE_MASK_LFSR_0_0
#define DDL_DAC_OUTPUT_BUFFER_EXTERNAL
#define IS_DDL_DAC_OUTPUT_BUFFER(__OUTPUT_BUFFER__)
#define IS_DDL_DAC_WAVE_AUTO_GENER_MODE(__WAVE_AUTO_GENERATION_MODE__)
#define IS_DDL_DAC_WAVE_AUTO_GENER_CONFIG(__WAVE_AUTO_GENERATION_MODE__, __WAVE_AUTO_GENERATION_CONFIG__)
#define IS_DDL_DAC_TRIGGER_SOURCE(__TRIGGER_SOURCE__)
#define DDL_DAC_WAVE_GENERATE_NONE
#define DDL_RCM_APB_RESET_DAC1
#define DDL_RCM_APB_RESET_DAC2
__STATIC_INLINE void DDL_RCM_Unlock(void)
Unlock the RCM register.
__STATIC_INLINE void DDL_RCM_EnableAPBReset(uint32_t Peripheral)
Enable the APB peripheral reset.
__STATIC_INLINE void DDL_RCM_DisableAPBReset(uint32_t Peripheral)
Disable the APB peripheral reset.
Structure definition of some features of DAC instance.
uint32_t WaveAutoGenerationConfig