The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 156:ff21514d8981 1 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 2 * @file em_dac.h
AnnaBridge 156:ff21514d8981 3 * @brief Digital to Analog Converter (DAC) peripheral API
Anna Bridge 160:5571c4ff569f 4 * @version 5.3.3
AnnaBridge 156:ff21514d8981 5 *******************************************************************************
Anna Bridge 160:5571c4ff569f 6 * # License
AnnaBridge 156:ff21514d8981 7 * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b>
AnnaBridge 156:ff21514d8981 8 *******************************************************************************
AnnaBridge 156:ff21514d8981 9 *
AnnaBridge 156:ff21514d8981 10 * Permission is granted to anyone to use this software for any purpose,
AnnaBridge 156:ff21514d8981 11 * including commercial applications, and to alter it and redistribute it
AnnaBridge 156:ff21514d8981 12 * freely, subject to the following restrictions:
AnnaBridge 156:ff21514d8981 13 *
AnnaBridge 156:ff21514d8981 14 * 1. The origin of this software must not be misrepresented; you must not
AnnaBridge 156:ff21514d8981 15 * claim that you wrote the original software.
AnnaBridge 156:ff21514d8981 16 * 2. Altered source versions must be plainly marked as such, and must not be
AnnaBridge 156:ff21514d8981 17 * misrepresented as being the original software.
AnnaBridge 156:ff21514d8981 18 * 3. This notice may not be removed or altered from any source distribution.
AnnaBridge 156:ff21514d8981 19 *
AnnaBridge 156:ff21514d8981 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
AnnaBridge 156:ff21514d8981 21 * obligation to support this Software. Silicon Labs is providing the
AnnaBridge 156:ff21514d8981 22 * Software "AS IS", with no express or implied warranties of any kind,
AnnaBridge 156:ff21514d8981 23 * including, but not limited to, any implied warranties of merchantability
AnnaBridge 156:ff21514d8981 24 * or fitness for any particular purpose or warranties against infringement
AnnaBridge 156:ff21514d8981 25 * of any proprietary rights of a third party.
AnnaBridge 156:ff21514d8981 26 *
AnnaBridge 156:ff21514d8981 27 * Silicon Labs will not be liable for any consequential, incidental, or
AnnaBridge 156:ff21514d8981 28 * special damages, or any other relief, or for any claim by any third party,
AnnaBridge 156:ff21514d8981 29 * arising from your use of this Software.
AnnaBridge 156:ff21514d8981 30 *
AnnaBridge 156:ff21514d8981 31 ******************************************************************************/
AnnaBridge 156:ff21514d8981 32
AnnaBridge 156:ff21514d8981 33 #ifndef EM_DAC_H
AnnaBridge 156:ff21514d8981 34 #define EM_DAC_H
AnnaBridge 156:ff21514d8981 35
AnnaBridge 156:ff21514d8981 36 #include "em_device.h"
AnnaBridge 156:ff21514d8981 37
AnnaBridge 156:ff21514d8981 38 #if defined(DAC_COUNT) && (DAC_COUNT > 0)
AnnaBridge 156:ff21514d8981 39
AnnaBridge 156:ff21514d8981 40 #include "em_assert.h"
AnnaBridge 156:ff21514d8981 41 #include <stdbool.h>
AnnaBridge 156:ff21514d8981 42
AnnaBridge 156:ff21514d8981 43 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 44 extern "C" {
AnnaBridge 156:ff21514d8981 45 #endif
AnnaBridge 156:ff21514d8981 46
AnnaBridge 156:ff21514d8981 47 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 48 * @addtogroup emlib
AnnaBridge 156:ff21514d8981 49 * @{
AnnaBridge 156:ff21514d8981 50 ******************************************************************************/
AnnaBridge 156:ff21514d8981 51
AnnaBridge 156:ff21514d8981 52 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 53 * @addtogroup DAC
AnnaBridge 156:ff21514d8981 54 * @{
AnnaBridge 156:ff21514d8981 55 ******************************************************************************/
AnnaBridge 156:ff21514d8981 56
AnnaBridge 156:ff21514d8981 57 /** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */
AnnaBridge 156:ff21514d8981 58
AnnaBridge 156:ff21514d8981 59 /** Validation of DAC register block pointer reference for assert statements. */
AnnaBridge 156:ff21514d8981 60 #define DAC_REF_VALID(ref) ((ref) == DAC0)
AnnaBridge 156:ff21514d8981 61
AnnaBridge 156:ff21514d8981 62 /** @endcond */
AnnaBridge 156:ff21514d8981 63
AnnaBridge 156:ff21514d8981 64 /*******************************************************************************
AnnaBridge 156:ff21514d8981 65 ******************************** ENUMS ************************************
AnnaBridge 156:ff21514d8981 66 ******************************************************************************/
AnnaBridge 156:ff21514d8981 67
AnnaBridge 156:ff21514d8981 68 /** Conversion mode. */
Anna Bridge 160:5571c4ff569f 69 typedef enum {
AnnaBridge 156:ff21514d8981 70 dacConvModeContinuous = _DAC_CTRL_CONVMODE_CONTINUOUS, /**< Continuous mode. */
AnnaBridge 156:ff21514d8981 71 dacConvModeSampleHold = _DAC_CTRL_CONVMODE_SAMPLEHOLD, /**< Sample/hold mode. */
AnnaBridge 156:ff21514d8981 72 dacConvModeSampleOff = _DAC_CTRL_CONVMODE_SAMPLEOFF /**< Sample/shut off mode. */
AnnaBridge 156:ff21514d8981 73 } DAC_ConvMode_TypeDef;
AnnaBridge 156:ff21514d8981 74
AnnaBridge 156:ff21514d8981 75 /** Output mode. */
Anna Bridge 160:5571c4ff569f 76 typedef enum {
AnnaBridge 156:ff21514d8981 77 dacOutputDisable = _DAC_CTRL_OUTMODE_DISABLE, /**< Output to pin and ADC disabled. */
AnnaBridge 156:ff21514d8981 78 dacOutputPin = _DAC_CTRL_OUTMODE_PIN, /**< Output to pin only. */
AnnaBridge 156:ff21514d8981 79 dacOutputADC = _DAC_CTRL_OUTMODE_ADC, /**< Output to ADC only */
AnnaBridge 156:ff21514d8981 80 dacOutputPinADC = _DAC_CTRL_OUTMODE_PINADC /**< Output to pin and ADC. */
AnnaBridge 156:ff21514d8981 81 } DAC_Output_TypeDef;
AnnaBridge 156:ff21514d8981 82
AnnaBridge 156:ff21514d8981 83 /** Peripheral Reflex System signal used to trigger single sample. */
Anna Bridge 160:5571c4ff569f 84 typedef enum {
AnnaBridge 156:ff21514d8981 85 dacPRSSELCh0 = _DAC_CH0CTRL_PRSSEL_PRSCH0, /**< PRS channel 0. */
AnnaBridge 156:ff21514d8981 86 dacPRSSELCh1 = _DAC_CH0CTRL_PRSSEL_PRSCH1, /**< PRS channel 1. */
AnnaBridge 156:ff21514d8981 87 dacPRSSELCh2 = _DAC_CH0CTRL_PRSSEL_PRSCH2, /**< PRS channel 2. */
AnnaBridge 156:ff21514d8981 88 dacPRSSELCh3 = _DAC_CH0CTRL_PRSSEL_PRSCH3, /**< PRS channel 3. */
Anna Bridge 160:5571c4ff569f 89 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH4)
AnnaBridge 156:ff21514d8981 90 dacPRSSELCh4 = _DAC_CH0CTRL_PRSSEL_PRSCH4, /**< PRS channel 4. */
AnnaBridge 156:ff21514d8981 91 #endif
Anna Bridge 160:5571c4ff569f 92 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH5)
AnnaBridge 156:ff21514d8981 93 dacPRSSELCh5 = _DAC_CH0CTRL_PRSSEL_PRSCH5, /**< PRS channel 5. */
AnnaBridge 156:ff21514d8981 94 #endif
Anna Bridge 160:5571c4ff569f 95 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH6)
AnnaBridge 156:ff21514d8981 96 dacPRSSELCh6 = _DAC_CH0CTRL_PRSSEL_PRSCH6, /**< PRS channel 6. */
AnnaBridge 156:ff21514d8981 97 #endif
Anna Bridge 160:5571c4ff569f 98 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH7)
AnnaBridge 156:ff21514d8981 99 dacPRSSELCh7 = _DAC_CH0CTRL_PRSSEL_PRSCH7, /**< PRS channel 7. */
AnnaBridge 156:ff21514d8981 100 #endif
Anna Bridge 160:5571c4ff569f 101 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH8)
AnnaBridge 156:ff21514d8981 102 dacPRSSELCh8 = _DAC_CH0CTRL_PRSSEL_PRSCH8, /**< PRS channel 8. */
AnnaBridge 156:ff21514d8981 103 #endif
Anna Bridge 160:5571c4ff569f 104 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH9)
AnnaBridge 156:ff21514d8981 105 dacPRSSELCh9 = _DAC_CH0CTRL_PRSSEL_PRSCH9, /**< PRS channel 9. */
AnnaBridge 156:ff21514d8981 106 #endif
Anna Bridge 160:5571c4ff569f 107 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH10)
AnnaBridge 156:ff21514d8981 108 dacPRSSELCh10 = _DAC_CH0CTRL_PRSSEL_PRSCH10, /**< PRS channel 10. */
AnnaBridge 156:ff21514d8981 109 #endif
Anna Bridge 160:5571c4ff569f 110 #if defined(_DAC_CH0CTRL_PRSSEL_PRSCH11)
AnnaBridge 156:ff21514d8981 111 dacPRSSELCh11 = _DAC_CH0CTRL_PRSSEL_PRSCH11, /**< PRS channel 11. */
AnnaBridge 156:ff21514d8981 112 #endif
AnnaBridge 156:ff21514d8981 113 } DAC_PRSSEL_TypeDef;
AnnaBridge 156:ff21514d8981 114
AnnaBridge 156:ff21514d8981 115 /** Reference voltage for DAC. */
Anna Bridge 160:5571c4ff569f 116 typedef enum {
AnnaBridge 156:ff21514d8981 117 dacRef1V25 = _DAC_CTRL_REFSEL_1V25, /**< Internal 1.25V bandgap reference. */
AnnaBridge 156:ff21514d8981 118 dacRef2V5 = _DAC_CTRL_REFSEL_2V5, /**< Internal 2.5V bandgap reference. */
AnnaBridge 156:ff21514d8981 119 dacRefVDD = _DAC_CTRL_REFSEL_VDD /**< VDD reference. */
AnnaBridge 156:ff21514d8981 120 } DAC_Ref_TypeDef;
AnnaBridge 156:ff21514d8981 121
AnnaBridge 156:ff21514d8981 122 /** Refresh interval. */
Anna Bridge 160:5571c4ff569f 123 typedef enum {
AnnaBridge 156:ff21514d8981 124 dacRefresh8 = _DAC_CTRL_REFRSEL_8CYCLES, /**< Refresh every 8 prescaled cycles. */
AnnaBridge 156:ff21514d8981 125 dacRefresh16 = _DAC_CTRL_REFRSEL_16CYCLES, /**< Refresh every 16 prescaled cycles. */
AnnaBridge 156:ff21514d8981 126 dacRefresh32 = _DAC_CTRL_REFRSEL_32CYCLES, /**< Refresh every 32 prescaled cycles. */
AnnaBridge 156:ff21514d8981 127 dacRefresh64 = _DAC_CTRL_REFRSEL_64CYCLES /**< Refresh every 64 prescaled cycles. */
AnnaBridge 156:ff21514d8981 128 } DAC_Refresh_TypeDef;
AnnaBridge 156:ff21514d8981 129
AnnaBridge 156:ff21514d8981 130 /*******************************************************************************
AnnaBridge 156:ff21514d8981 131 ******************************* STRUCTS ***********************************
AnnaBridge 156:ff21514d8981 132 ******************************************************************************/
AnnaBridge 156:ff21514d8981 133
AnnaBridge 156:ff21514d8981 134 /** DAC init structure, common for both channels. */
Anna Bridge 160:5571c4ff569f 135 typedef struct {
AnnaBridge 156:ff21514d8981 136 /** Refresh interval. Only used if REFREN bit set for a DAC channel. */
AnnaBridge 156:ff21514d8981 137 DAC_Refresh_TypeDef refresh;
AnnaBridge 156:ff21514d8981 138
AnnaBridge 156:ff21514d8981 139 /** Reference voltage to use. */
AnnaBridge 156:ff21514d8981 140 DAC_Ref_TypeDef reference;
AnnaBridge 156:ff21514d8981 141
AnnaBridge 156:ff21514d8981 142 /** Output mode */
AnnaBridge 156:ff21514d8981 143 DAC_Output_TypeDef outMode;
AnnaBridge 156:ff21514d8981 144
AnnaBridge 156:ff21514d8981 145 /** Conversion mode. */
AnnaBridge 156:ff21514d8981 146 DAC_ConvMode_TypeDef convMode;
AnnaBridge 156:ff21514d8981 147
AnnaBridge 156:ff21514d8981 148 /**
AnnaBridge 156:ff21514d8981 149 * Prescaler used to get DAC clock. Derived as follows:
AnnaBridge 156:ff21514d8981 150 * DACclk=HFPERclk/(2^prescale). The DAC clock should be <= 1MHz.
AnnaBridge 156:ff21514d8981 151 */
AnnaBridge 156:ff21514d8981 152 uint8_t prescale;
AnnaBridge 156:ff21514d8981 153
AnnaBridge 156:ff21514d8981 154 /** Enable/disable use of low pass filter on output. */
AnnaBridge 156:ff21514d8981 155 bool lpEnable;
AnnaBridge 156:ff21514d8981 156
AnnaBridge 156:ff21514d8981 157 /** Enable/disable reset of prescaler on ch0 start. */
AnnaBridge 156:ff21514d8981 158 bool ch0ResetPre;
AnnaBridge 156:ff21514d8981 159
AnnaBridge 156:ff21514d8981 160 /** Enable/disable output enable control by CH1 PRS signal. */
AnnaBridge 156:ff21514d8981 161 bool outEnablePRS;
AnnaBridge 156:ff21514d8981 162
AnnaBridge 156:ff21514d8981 163 /** Enable/disable sine mode. */
AnnaBridge 156:ff21514d8981 164 bool sineEnable;
AnnaBridge 156:ff21514d8981 165
AnnaBridge 156:ff21514d8981 166 /** Select if single ended or differential mode. */
AnnaBridge 156:ff21514d8981 167 bool diff;
AnnaBridge 156:ff21514d8981 168 } DAC_Init_TypeDef;
AnnaBridge 156:ff21514d8981 169
AnnaBridge 156:ff21514d8981 170 /** Default config for DAC init structure. */
AnnaBridge 156:ff21514d8981 171 #define DAC_INIT_DEFAULT \
Anna Bridge 160:5571c4ff569f 172 { \
Anna Bridge 160:5571c4ff569f 173 dacRefresh8, /* Refresh every 8 prescaled cycles. */ \
Anna Bridge 160:5571c4ff569f 174 dacRef1V25, /* 1.25V internal reference. */ \
Anna Bridge 160:5571c4ff569f 175 dacOutputPin, /* Output to pin only. */ \
Anna Bridge 160:5571c4ff569f 176 dacConvModeContinuous, /* Continuous mode. */ \
Anna Bridge 160:5571c4ff569f 177 0, /* No prescaling. */ \
Anna Bridge 160:5571c4ff569f 178 false, /* Do not enable low pass filter. */ \
Anna Bridge 160:5571c4ff569f 179 false, /* Do not reset prescaler on ch0 start. */ \
Anna Bridge 160:5571c4ff569f 180 false, /* DAC output enable always on. */ \
Anna Bridge 160:5571c4ff569f 181 false, /* Disable sine mode. */ \
Anna Bridge 160:5571c4ff569f 182 false /* Single ended mode. */ \
Anna Bridge 160:5571c4ff569f 183 }
AnnaBridge 156:ff21514d8981 184
AnnaBridge 156:ff21514d8981 185 /** DAC channel init structure. */
Anna Bridge 160:5571c4ff569f 186 typedef struct {
AnnaBridge 156:ff21514d8981 187 /** Enable channel. */
AnnaBridge 156:ff21514d8981 188 bool enable;
AnnaBridge 156:ff21514d8981 189
AnnaBridge 156:ff21514d8981 190 /**
AnnaBridge 156:ff21514d8981 191 * Peripheral reflex system trigger enable. If false, channel is triggered
AnnaBridge 156:ff21514d8981 192 * by writing to CHnDATA.
AnnaBridge 156:ff21514d8981 193 */
AnnaBridge 156:ff21514d8981 194 bool prsEnable;
AnnaBridge 156:ff21514d8981 195
AnnaBridge 156:ff21514d8981 196 /**
AnnaBridge 156:ff21514d8981 197 * Enable/disable automatic refresh of channel. Refresh interval must be
AnnaBridge 156:ff21514d8981 198 * defined in common control init, please see DAC_Init().
AnnaBridge 156:ff21514d8981 199 */
AnnaBridge 156:ff21514d8981 200 bool refreshEnable;
AnnaBridge 156:ff21514d8981 201
AnnaBridge 156:ff21514d8981 202 /**
AnnaBridge 156:ff21514d8981 203 * Peripheral reflex system trigger selection. Only applicable if @p prsEnable
AnnaBridge 156:ff21514d8981 204 * is enabled.
AnnaBridge 156:ff21514d8981 205 */
AnnaBridge 156:ff21514d8981 206 DAC_PRSSEL_TypeDef prsSel;
AnnaBridge 156:ff21514d8981 207 } DAC_InitChannel_TypeDef;
AnnaBridge 156:ff21514d8981 208
AnnaBridge 156:ff21514d8981 209 /** Default config for DAC channel init structure. */
AnnaBridge 156:ff21514d8981 210 #define DAC_INITCHANNEL_DEFAULT \
Anna Bridge 160:5571c4ff569f 211 { \
Anna Bridge 160:5571c4ff569f 212 false, /* Leave channel disabled when init done. */ \
Anna Bridge 160:5571c4ff569f 213 false, /* Disable PRS triggering. */ \
Anna Bridge 160:5571c4ff569f 214 false, /* Channel not refreshed automatically. */ \
Anna Bridge 160:5571c4ff569f 215 dacPRSSELCh0 /* Select PRS ch0 (if PRS triggering enabled). */ \
Anna Bridge 160:5571c4ff569f 216 }
AnnaBridge 156:ff21514d8981 217
AnnaBridge 156:ff21514d8981 218 /*******************************************************************************
AnnaBridge 156:ff21514d8981 219 ***************************** PROTOTYPES **********************************
AnnaBridge 156:ff21514d8981 220 ******************************************************************************/
AnnaBridge 156:ff21514d8981 221
AnnaBridge 156:ff21514d8981 222 void DAC_Enable(DAC_TypeDef *dac, unsigned int ch, bool enable);
AnnaBridge 156:ff21514d8981 223 void DAC_Init(DAC_TypeDef *dac, const DAC_Init_TypeDef *init);
AnnaBridge 156:ff21514d8981 224 void DAC_InitChannel(DAC_TypeDef *dac,
AnnaBridge 156:ff21514d8981 225 const DAC_InitChannel_TypeDef *init,
AnnaBridge 156:ff21514d8981 226 unsigned int ch);
AnnaBridge 156:ff21514d8981 227 void DAC_ChannelOutputSet(DAC_TypeDef *dac,
AnnaBridge 156:ff21514d8981 228 unsigned int channel,
AnnaBridge 156:ff21514d8981 229 uint32_t value);
AnnaBridge 156:ff21514d8981 230
AnnaBridge 156:ff21514d8981 231 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 232 * @brief
AnnaBridge 156:ff21514d8981 233 * Set the output signal of DAC channel 0 to a given value.
AnnaBridge 156:ff21514d8981 234 *
AnnaBridge 156:ff21514d8981 235 * @details
AnnaBridge 156:ff21514d8981 236 * This function sets the output signal of DAC channel 0 by writing @p value
AnnaBridge 156:ff21514d8981 237 * to the CH0DATA register.
AnnaBridge 156:ff21514d8981 238 *
AnnaBridge 156:ff21514d8981 239 * @param[in] dac
AnnaBridge 156:ff21514d8981 240 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 241 *
AnnaBridge 156:ff21514d8981 242 * @param[in] value
AnnaBridge 156:ff21514d8981 243 * Value to write to the channel 0 output register CH0DATA.
AnnaBridge 156:ff21514d8981 244 ******************************************************************************/
Anna Bridge 160:5571c4ff569f 245 __STATIC_INLINE void DAC_Channel0OutputSet(DAC_TypeDef *dac,
Anna Bridge 160:5571c4ff569f 246 uint32_t value)
AnnaBridge 156:ff21514d8981 247 {
Anna Bridge 160:5571c4ff569f 248 EFM_ASSERT(value <= _DAC_CH0DATA_MASK);
AnnaBridge 156:ff21514d8981 249 dac->CH0DATA = value;
AnnaBridge 156:ff21514d8981 250 }
AnnaBridge 156:ff21514d8981 251
AnnaBridge 156:ff21514d8981 252 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 253 * @brief
AnnaBridge 156:ff21514d8981 254 * Set the output signal of DAC channel 1 to a given value.
AnnaBridge 156:ff21514d8981 255 *
AnnaBridge 156:ff21514d8981 256 * @details
AnnaBridge 156:ff21514d8981 257 * This function sets the output signal of DAC channel 1 by writing @p value
AnnaBridge 156:ff21514d8981 258 * to the CH1DATA register.
AnnaBridge 156:ff21514d8981 259 *
AnnaBridge 156:ff21514d8981 260 * @param[in] dac
AnnaBridge 156:ff21514d8981 261 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 262 *
AnnaBridge 156:ff21514d8981 263 * @param[in] value
AnnaBridge 156:ff21514d8981 264 * Value to write to the channel 1 output register CH1DATA.
AnnaBridge 156:ff21514d8981 265 ******************************************************************************/
Anna Bridge 160:5571c4ff569f 266 __STATIC_INLINE void DAC_Channel1OutputSet(DAC_TypeDef *dac,
Anna Bridge 160:5571c4ff569f 267 uint32_t value)
AnnaBridge 156:ff21514d8981 268 {
Anna Bridge 160:5571c4ff569f 269 EFM_ASSERT(value <= _DAC_CH1DATA_MASK);
AnnaBridge 156:ff21514d8981 270 dac->CH1DATA = value;
AnnaBridge 156:ff21514d8981 271 }
AnnaBridge 156:ff21514d8981 272
AnnaBridge 156:ff21514d8981 273 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 274 * @brief
AnnaBridge 156:ff21514d8981 275 * Clear one or more pending DAC interrupts.
AnnaBridge 156:ff21514d8981 276 *
AnnaBridge 156:ff21514d8981 277 * @param[in] dac
AnnaBridge 156:ff21514d8981 278 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 279 *
AnnaBridge 156:ff21514d8981 280 * @param[in] flags
AnnaBridge 156:ff21514d8981 281 * Pending DAC interrupt source to clear. Use a bitwise logic OR combination of
AnnaBridge 156:ff21514d8981 282 * valid interrupt flags for the DAC module (DAC_IF_nnn).
AnnaBridge 156:ff21514d8981 283 ******************************************************************************/
AnnaBridge 156:ff21514d8981 284 __STATIC_INLINE void DAC_IntClear(DAC_TypeDef *dac, uint32_t flags)
AnnaBridge 156:ff21514d8981 285 {
AnnaBridge 156:ff21514d8981 286 dac->IFC = flags;
AnnaBridge 156:ff21514d8981 287 }
AnnaBridge 156:ff21514d8981 288
AnnaBridge 156:ff21514d8981 289 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 290 * @brief
AnnaBridge 156:ff21514d8981 291 * Disable one or more DAC interrupts.
AnnaBridge 156:ff21514d8981 292 *
AnnaBridge 156:ff21514d8981 293 * @param[in] dac
AnnaBridge 156:ff21514d8981 294 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 295 *
AnnaBridge 156:ff21514d8981 296 * @param[in] flags
AnnaBridge 156:ff21514d8981 297 * DAC interrupt sources to disable. Use a bitwise logic OR combination of
AnnaBridge 156:ff21514d8981 298 * valid interrupt flags for the DAC module (DAC_IF_nnn).
AnnaBridge 156:ff21514d8981 299 ******************************************************************************/
AnnaBridge 156:ff21514d8981 300 __STATIC_INLINE void DAC_IntDisable(DAC_TypeDef *dac, uint32_t flags)
AnnaBridge 156:ff21514d8981 301 {
AnnaBridge 156:ff21514d8981 302 dac->IEN &= ~flags;
AnnaBridge 156:ff21514d8981 303 }
AnnaBridge 156:ff21514d8981 304
AnnaBridge 156:ff21514d8981 305 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 306 * @brief
AnnaBridge 156:ff21514d8981 307 * Enable one or more DAC interrupts.
AnnaBridge 156:ff21514d8981 308 *
AnnaBridge 156:ff21514d8981 309 * @note
AnnaBridge 156:ff21514d8981 310 * Depending on the use, a pending interrupt may already be set prior to
AnnaBridge 156:ff21514d8981 311 * enabling the interrupt. Consider using DAC_IntClear() prior to enabling
AnnaBridge 156:ff21514d8981 312 * if such a pending interrupt should be ignored.
AnnaBridge 156:ff21514d8981 313 *
AnnaBridge 156:ff21514d8981 314 * @param[in] dac
AnnaBridge 156:ff21514d8981 315 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 316 *
AnnaBridge 156:ff21514d8981 317 * @param[in] flags
AnnaBridge 156:ff21514d8981 318 * DAC interrupt sources to enable. Use a bitwise logic OR combination of
AnnaBridge 156:ff21514d8981 319 * valid interrupt flags for the DAC module (DAC_IF_nnn).
AnnaBridge 156:ff21514d8981 320 ******************************************************************************/
AnnaBridge 156:ff21514d8981 321 __STATIC_INLINE void DAC_IntEnable(DAC_TypeDef *dac, uint32_t flags)
AnnaBridge 156:ff21514d8981 322 {
AnnaBridge 156:ff21514d8981 323 dac->IEN |= flags;
AnnaBridge 156:ff21514d8981 324 }
AnnaBridge 156:ff21514d8981 325
AnnaBridge 156:ff21514d8981 326 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 327 * @brief
AnnaBridge 156:ff21514d8981 328 * Get pending DAC interrupt flags.
AnnaBridge 156:ff21514d8981 329 *
AnnaBridge 156:ff21514d8981 330 * @note
AnnaBridge 156:ff21514d8981 331 * The event bits are not cleared by the use of this function.
AnnaBridge 156:ff21514d8981 332 *
AnnaBridge 156:ff21514d8981 333 * @param[in] dac
AnnaBridge 156:ff21514d8981 334 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 335 *
AnnaBridge 156:ff21514d8981 336 * @return
AnnaBridge 156:ff21514d8981 337 * DAC interrupt sources pending. A bitwise logic OR combination of valid
AnnaBridge 156:ff21514d8981 338 * interrupt flags for the DAC module (DAC_IF_nnn).
AnnaBridge 156:ff21514d8981 339 ******************************************************************************/
AnnaBridge 156:ff21514d8981 340 __STATIC_INLINE uint32_t DAC_IntGet(DAC_TypeDef *dac)
AnnaBridge 156:ff21514d8981 341 {
AnnaBridge 156:ff21514d8981 342 return dac->IF;
AnnaBridge 156:ff21514d8981 343 }
AnnaBridge 156:ff21514d8981 344
AnnaBridge 156:ff21514d8981 345 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 346 * @brief
AnnaBridge 156:ff21514d8981 347 * Get enabled and pending DAC interrupt flags.
AnnaBridge 156:ff21514d8981 348 * Useful for handling more interrupt sources in the same interrupt handler.
AnnaBridge 156:ff21514d8981 349 *
AnnaBridge 156:ff21514d8981 350 * @param[in] dac
AnnaBridge 156:ff21514d8981 351 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 352 *
AnnaBridge 156:ff21514d8981 353 * @note
AnnaBridge 156:ff21514d8981 354 * Interrupt flags are not cleared by the use of this function.
AnnaBridge 156:ff21514d8981 355 *
AnnaBridge 156:ff21514d8981 356 * @return
AnnaBridge 156:ff21514d8981 357 * Pending and enabled DAC interrupt sources.
AnnaBridge 156:ff21514d8981 358 * The return value is the bitwise AND combination of
AnnaBridge 156:ff21514d8981 359 * - the OR combination of enabled interrupt sources in DACx_IEN_nnn
AnnaBridge 156:ff21514d8981 360 * register (DACx_IEN_nnn) and
AnnaBridge 156:ff21514d8981 361 * - the OR combination of valid interrupt flags of the DAC module
AnnaBridge 156:ff21514d8981 362 * (DACx_IF_nnn).
AnnaBridge 156:ff21514d8981 363 ******************************************************************************/
AnnaBridge 156:ff21514d8981 364 __STATIC_INLINE uint32_t DAC_IntGetEnabled(DAC_TypeDef *dac)
AnnaBridge 156:ff21514d8981 365 {
AnnaBridge 156:ff21514d8981 366 uint32_t ien;
AnnaBridge 156:ff21514d8981 367
AnnaBridge 156:ff21514d8981 368 /* Store DAC->IEN in temporary variable in order to define explicit order
AnnaBridge 156:ff21514d8981 369 * of volatile accesses. */
AnnaBridge 156:ff21514d8981 370 ien = dac->IEN;
AnnaBridge 156:ff21514d8981 371
AnnaBridge 156:ff21514d8981 372 /* Bitwise AND of pending and enabled interrupts */
AnnaBridge 156:ff21514d8981 373 return dac->IF & ien;
AnnaBridge 156:ff21514d8981 374 }
AnnaBridge 156:ff21514d8981 375
AnnaBridge 156:ff21514d8981 376 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 377 * @brief
AnnaBridge 156:ff21514d8981 378 * Set one or more pending DAC interrupts from SW.
AnnaBridge 156:ff21514d8981 379 *
AnnaBridge 156:ff21514d8981 380 * @param[in] dac
AnnaBridge 156:ff21514d8981 381 * Pointer to DAC peripheral register block.
AnnaBridge 156:ff21514d8981 382 *
AnnaBridge 156:ff21514d8981 383 * @param[in] flags
AnnaBridge 156:ff21514d8981 384 * DAC interrupt sources to set to pending. Use a bitwise logic OR combination
AnnaBridge 156:ff21514d8981 385 * of valid interrupt flags for the DAC module (DAC_IF_nnn).
AnnaBridge 156:ff21514d8981 386 ******************************************************************************/
AnnaBridge 156:ff21514d8981 387 __STATIC_INLINE void DAC_IntSet(DAC_TypeDef *dac, uint32_t flags)
AnnaBridge 156:ff21514d8981 388 {
AnnaBridge 156:ff21514d8981 389 dac->IFS = flags;
AnnaBridge 156:ff21514d8981 390 }
AnnaBridge 156:ff21514d8981 391
AnnaBridge 156:ff21514d8981 392 uint8_t DAC_PrescaleCalc(uint32_t dacFreq, uint32_t hfperFreq);
AnnaBridge 156:ff21514d8981 393 void DAC_Reset(DAC_TypeDef *dac);
AnnaBridge 156:ff21514d8981 394
AnnaBridge 156:ff21514d8981 395 /** @} (end addtogroup DAC) */
AnnaBridge 156:ff21514d8981 396 /** @} (end addtogroup emlib) */
AnnaBridge 156:ff21514d8981 397
AnnaBridge 156:ff21514d8981 398 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 399 }
AnnaBridge 156:ff21514d8981 400 #endif
AnnaBridge 156:ff21514d8981 401
AnnaBridge 156:ff21514d8981 402 #endif /* defined(DAC_COUNT) && (DAC_COUNT > 0) */
AnnaBridge 156:ff21514d8981 403 #endif /* EM_DAC_H */