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