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 Nov 08 17:18:06 2017 +0000
Revision:
156:ff21514d8981
Child:
159:7130f322cb7e
Reverting back to release 154 of the mbed library

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