added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Sep 02 15:07:44 2016 +0100
Revision:
144:ef7eb2e8f9f7
This updates the lib to the mbed lib v125

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /*
<> 144:ef7eb2e8f9f7 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
<> 144:ef7eb2e8f9f7 3 * All rights reserved.
<> 144:ef7eb2e8f9f7 4 *
<> 144:ef7eb2e8f9f7 5 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 6 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * o Redistributions of source code must retain the above copyright notice, this list
<> 144:ef7eb2e8f9f7 9 * of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 10 *
<> 144:ef7eb2e8f9f7 11 * o Redistributions in binary form must reproduce the above copyright notice, this
<> 144:ef7eb2e8f9f7 12 * list of conditions and the following disclaimer in the documentation and/or
<> 144:ef7eb2e8f9f7 13 * other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 14 *
<> 144:ef7eb2e8f9f7 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
<> 144:ef7eb2e8f9f7 16 * contributors may be used to endorse or promote products derived from this
<> 144:ef7eb2e8f9f7 17 * software without specific prior written permission.
<> 144:ef7eb2e8f9f7 18 *
<> 144:ef7eb2e8f9f7 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
<> 144:ef7eb2e8f9f7 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
<> 144:ef7eb2e8f9f7 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
<> 144:ef7eb2e8f9f7 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
<> 144:ef7eb2e8f9f7 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
<> 144:ef7eb2e8f9f7 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
<> 144:ef7eb2e8f9f7 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
<> 144:ef7eb2e8f9f7 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
<> 144:ef7eb2e8f9f7 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 29 */
<> 144:ef7eb2e8f9f7 30
<> 144:ef7eb2e8f9f7 31 #ifndef _FSL_DAC_H_
<> 144:ef7eb2e8f9f7 32 #define _FSL_DAC_H_
<> 144:ef7eb2e8f9f7 33
<> 144:ef7eb2e8f9f7 34 #include "fsl_common.h"
<> 144:ef7eb2e8f9f7 35
<> 144:ef7eb2e8f9f7 36 /*!
<> 144:ef7eb2e8f9f7 37 * @addtogroup dac
<> 144:ef7eb2e8f9f7 38 * @{
<> 144:ef7eb2e8f9f7 39 */
<> 144:ef7eb2e8f9f7 40
<> 144:ef7eb2e8f9f7 41 /*! @file */
<> 144:ef7eb2e8f9f7 42
<> 144:ef7eb2e8f9f7 43 /*******************************************************************************
<> 144:ef7eb2e8f9f7 44 * Definitions
<> 144:ef7eb2e8f9f7 45 ******************************************************************************/
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 /*! @name Driver version */
<> 144:ef7eb2e8f9f7 48 /*@{*/
<> 144:ef7eb2e8f9f7 49 /*! @brief DAC driver version 2.0.0. */
<> 144:ef7eb2e8f9f7 50 #define FSL_DAC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
<> 144:ef7eb2e8f9f7 51 /*@}*/
<> 144:ef7eb2e8f9f7 52
<> 144:ef7eb2e8f9f7 53 /*!
<> 144:ef7eb2e8f9f7 54 * @brief DAC buffer flags.
<> 144:ef7eb2e8f9f7 55 */
<> 144:ef7eb2e8f9f7 56 enum _dac_buffer_status_flags
<> 144:ef7eb2e8f9f7 57 {
<> 144:ef7eb2e8f9f7 58 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
<> 144:ef7eb2e8f9f7 59 kDAC_BufferWatermarkFlag = DAC_SR_DACBFWMF_MASK, /*!< DAC Buffer Watermark Flag. */
<> 144:ef7eb2e8f9f7 60 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
<> 144:ef7eb2e8f9f7 61 kDAC_BufferReadPointerTopPositionFlag = DAC_SR_DACBFRPTF_MASK, /*!< DAC Buffer Read Pointer Top Position Flag. */
<> 144:ef7eb2e8f9f7 62 kDAC_BufferReadPointerBottomPositionFlag = DAC_SR_DACBFRPBF_MASK, /*!< DAC Buffer Read Pointer Bottom Position
<> 144:ef7eb2e8f9f7 63 Flag. */
<> 144:ef7eb2e8f9f7 64 };
<> 144:ef7eb2e8f9f7 65
<> 144:ef7eb2e8f9f7 66 /*!
<> 144:ef7eb2e8f9f7 67 * @brief DAC buffer interrupts.
<> 144:ef7eb2e8f9f7 68 */
<> 144:ef7eb2e8f9f7 69 enum _dac_buffer_interrupt_enable
<> 144:ef7eb2e8f9f7 70 {
<> 144:ef7eb2e8f9f7 71 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
<> 144:ef7eb2e8f9f7 72 kDAC_BufferWatermarkInterruptEnable = DAC_C0_DACBWIEN_MASK, /*!< DAC Buffer Watermark Interrupt Enable. */
<> 144:ef7eb2e8f9f7 73 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
<> 144:ef7eb2e8f9f7 74 kDAC_BufferReadPointerTopInterruptEnable = DAC_C0_DACBTIEN_MASK, /*!< DAC Buffer Read Pointer Top Flag Interrupt
<> 144:ef7eb2e8f9f7 75 Enable. */
<> 144:ef7eb2e8f9f7 76 kDAC_BufferReadPointerBottomInterruptEnable = DAC_C0_DACBBIEN_MASK, /*!< DAC Buffer Read Pointer Bottom Flag
<> 144:ef7eb2e8f9f7 77 Interrupt Enable */
<> 144:ef7eb2e8f9f7 78 };
<> 144:ef7eb2e8f9f7 79
<> 144:ef7eb2e8f9f7 80 /*!
<> 144:ef7eb2e8f9f7 81 * @brief DAC reference voltage source.
<> 144:ef7eb2e8f9f7 82 */
<> 144:ef7eb2e8f9f7 83 typedef enum _dac_reference_voltage_source
<> 144:ef7eb2e8f9f7 84 {
<> 144:ef7eb2e8f9f7 85 kDAC_ReferenceVoltageSourceVref1 = 0U, /*!< The DAC selects DACREF_1 as the reference voltage. */
<> 144:ef7eb2e8f9f7 86 kDAC_ReferenceVoltageSourceVref2 = 1U, /*!< The DAC selects DACREF_2 as the reference voltage. */
<> 144:ef7eb2e8f9f7 87 } dac_reference_voltage_source_t;
<> 144:ef7eb2e8f9f7 88
<> 144:ef7eb2e8f9f7 89 /*!
<> 144:ef7eb2e8f9f7 90 * @brief DAC buffer trigger mode.
<> 144:ef7eb2e8f9f7 91 */
<> 144:ef7eb2e8f9f7 92 typedef enum _dac_buffer_trigger_mode
<> 144:ef7eb2e8f9f7 93 {
<> 144:ef7eb2e8f9f7 94 kDAC_BufferTriggerByHardwareMode = 0U, /*!< The DAC hardware trigger is selected. */
<> 144:ef7eb2e8f9f7 95 kDAC_BufferTriggerBySoftwareMode = 1U, /*!< The DAC software trigger is selected. */
<> 144:ef7eb2e8f9f7 96 } dac_buffer_trigger_mode_t;
<> 144:ef7eb2e8f9f7 97
<> 144:ef7eb2e8f9f7 98 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
<> 144:ef7eb2e8f9f7 99 /*!
<> 144:ef7eb2e8f9f7 100 * @brief DAC buffer watermark.
<> 144:ef7eb2e8f9f7 101 */
<> 144:ef7eb2e8f9f7 102 typedef enum _dac_buffer_watermark
<> 144:ef7eb2e8f9f7 103 {
<> 144:ef7eb2e8f9f7 104 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD
<> 144:ef7eb2e8f9f7 105 kDAC_BufferWatermark1Word = 0U, /*!< 1 word away from the upper limit. */
<> 144:ef7eb2e8f9f7 106 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD */
<> 144:ef7eb2e8f9f7 107 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_2_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_2_WORD
<> 144:ef7eb2e8f9f7 108 kDAC_BufferWatermark2Word = 1U, /*!< 2 words away from the upper limit. */
<> 144:ef7eb2e8f9f7 109 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_2_WORD */
<> 144:ef7eb2e8f9f7 110 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_3_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_3_WORD
<> 144:ef7eb2e8f9f7 111 kDAC_BufferWatermark3Word = 2U, /*!< 3 words away from the upper limit. */
<> 144:ef7eb2e8f9f7 112 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_3_WORD */
<> 144:ef7eb2e8f9f7 113 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_4_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_4_WORD
<> 144:ef7eb2e8f9f7 114 kDAC_BufferWatermark4Word = 3U, /*!< 4 words away from the upper limit. */
<> 144:ef7eb2e8f9f7 115 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_4_WORD */
<> 144:ef7eb2e8f9f7 116 } dac_buffer_watermark_t;
<> 144:ef7eb2e8f9f7 117 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
<> 144:ef7eb2e8f9f7 118
<> 144:ef7eb2e8f9f7 119 /*!
<> 144:ef7eb2e8f9f7 120 * @brief DAC buffer work mode.
<> 144:ef7eb2e8f9f7 121 */
<> 144:ef7eb2e8f9f7 122 typedef enum _dac_buffer_work_mode
<> 144:ef7eb2e8f9f7 123 {
<> 144:ef7eb2e8f9f7 124 kDAC_BufferWorkAsNormalMode = 0U, /*!< Normal mode. */
<> 144:ef7eb2e8f9f7 125 #if defined(FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE) && FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE
<> 144:ef7eb2e8f9f7 126 kDAC_BufferWorkAsSwingMode, /*!< Swing mode. */
<> 144:ef7eb2e8f9f7 127 #endif /* FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE */
<> 144:ef7eb2e8f9f7 128 kDAC_BufferWorkAsOneTimeScanMode, /*!< One-Time Scan mode. */
<> 144:ef7eb2e8f9f7 129 #if defined(FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE) && FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE
<> 144:ef7eb2e8f9f7 130 kDAC_BufferWorkAsFIFOMode, /*!< FIFO mode. */
<> 144:ef7eb2e8f9f7 131 #endif /* FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE */
<> 144:ef7eb2e8f9f7 132 } dac_buffer_work_mode_t;
<> 144:ef7eb2e8f9f7 133
<> 144:ef7eb2e8f9f7 134 /*!
<> 144:ef7eb2e8f9f7 135 * @brief DAC module configuration.
<> 144:ef7eb2e8f9f7 136 */
<> 144:ef7eb2e8f9f7 137 typedef struct _dac_config
<> 144:ef7eb2e8f9f7 138 {
<> 144:ef7eb2e8f9f7 139 dac_reference_voltage_source_t referenceVoltageSource; /*!< Select the DAC reference voltage source. */
<> 144:ef7eb2e8f9f7 140 bool enableLowPowerMode; /*!< Enable the low power mode. */
<> 144:ef7eb2e8f9f7 141 } dac_config_t;
<> 144:ef7eb2e8f9f7 142
<> 144:ef7eb2e8f9f7 143 /*!
<> 144:ef7eb2e8f9f7 144 * @brief DAC buffer configuration.
<> 144:ef7eb2e8f9f7 145 */
<> 144:ef7eb2e8f9f7 146 typedef struct _dac_buffer_config
<> 144:ef7eb2e8f9f7 147 {
<> 144:ef7eb2e8f9f7 148 dac_buffer_trigger_mode_t triggerMode; /*!< Select the buffer's trigger mode. */
<> 144:ef7eb2e8f9f7 149 #if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
<> 144:ef7eb2e8f9f7 150 dac_buffer_watermark_t watermark; /*!< Select the buffer's watermark. */
<> 144:ef7eb2e8f9f7 151 #endif /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
<> 144:ef7eb2e8f9f7 152 dac_buffer_work_mode_t workMode; /*!< Select the buffer's work mode. */
<> 144:ef7eb2e8f9f7 153 uint8_t upperLimit; /*!< Set the upper limit for buffer index.
<> 144:ef7eb2e8f9f7 154 Normally, 0-15 is available for buffer with 16 item. */
<> 144:ef7eb2e8f9f7 155 } dac_buffer_config_t;
<> 144:ef7eb2e8f9f7 156
<> 144:ef7eb2e8f9f7 157 /*******************************************************************************
<> 144:ef7eb2e8f9f7 158 * API
<> 144:ef7eb2e8f9f7 159 ******************************************************************************/
<> 144:ef7eb2e8f9f7 160 #if defined(__cplusplus)
<> 144:ef7eb2e8f9f7 161 extern "C" {
<> 144:ef7eb2e8f9f7 162 #endif
<> 144:ef7eb2e8f9f7 163
<> 144:ef7eb2e8f9f7 164 /*!
<> 144:ef7eb2e8f9f7 165 * @name Initialization
<> 144:ef7eb2e8f9f7 166 * @{
<> 144:ef7eb2e8f9f7 167 */
<> 144:ef7eb2e8f9f7 168
<> 144:ef7eb2e8f9f7 169 /*!
<> 144:ef7eb2e8f9f7 170 * @brief Initializes the DAC module.
<> 144:ef7eb2e8f9f7 171 *
<> 144:ef7eb2e8f9f7 172 * This function initializes the DAC module, including:
<> 144:ef7eb2e8f9f7 173 * - Enabling the clock for DAC module.
<> 144:ef7eb2e8f9f7 174 * - Configuring the DAC converter with a user configuration.
<> 144:ef7eb2e8f9f7 175 * - Enabling the DAC module.
<> 144:ef7eb2e8f9f7 176 *
<> 144:ef7eb2e8f9f7 177 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 178 * @param config Pointer to the configuration structure. See "dac_config_t".
<> 144:ef7eb2e8f9f7 179 */
<> 144:ef7eb2e8f9f7 180 void DAC_Init(DAC_Type *base, const dac_config_t *config);
<> 144:ef7eb2e8f9f7 181
<> 144:ef7eb2e8f9f7 182 /*!
<> 144:ef7eb2e8f9f7 183 * @brief De-initializes the DAC module.
<> 144:ef7eb2e8f9f7 184 *
<> 144:ef7eb2e8f9f7 185 * This function de-initializes the DAC module, including:
<> 144:ef7eb2e8f9f7 186 * - Disabling the DAC module.
<> 144:ef7eb2e8f9f7 187 * - Disabling the clock for the DAC module.
<> 144:ef7eb2e8f9f7 188 *
<> 144:ef7eb2e8f9f7 189 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 190 */
<> 144:ef7eb2e8f9f7 191 void DAC_Deinit(DAC_Type *base);
<> 144:ef7eb2e8f9f7 192
<> 144:ef7eb2e8f9f7 193 /*!
<> 144:ef7eb2e8f9f7 194 * @brief Initializes the DAC user configuration structure.
<> 144:ef7eb2e8f9f7 195 *
<> 144:ef7eb2e8f9f7 196 * This function initializes the user configuration structure to a default value. The default values are:
<> 144:ef7eb2e8f9f7 197 * @code
<> 144:ef7eb2e8f9f7 198 * config->referenceVoltageSource = kDAC_ReferenceVoltageSourceVref2;
<> 144:ef7eb2e8f9f7 199 * config->enableLowPowerMode = false;
<> 144:ef7eb2e8f9f7 200 * @endcode
<> 144:ef7eb2e8f9f7 201 * @param config Pointer to the configuration structure. See "dac_config_t".
<> 144:ef7eb2e8f9f7 202 */
<> 144:ef7eb2e8f9f7 203 void DAC_GetDefaultConfig(dac_config_t *config);
<> 144:ef7eb2e8f9f7 204
<> 144:ef7eb2e8f9f7 205 /*!
<> 144:ef7eb2e8f9f7 206 * @brief Enables the DAC module.
<> 144:ef7eb2e8f9f7 207 *
<> 144:ef7eb2e8f9f7 208 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 209 * @param enable Enables the feature or not.
<> 144:ef7eb2e8f9f7 210 */
<> 144:ef7eb2e8f9f7 211 static inline void DAC_Enable(DAC_Type *base, bool enable)
<> 144:ef7eb2e8f9f7 212 {
<> 144:ef7eb2e8f9f7 213 if (enable)
<> 144:ef7eb2e8f9f7 214 {
<> 144:ef7eb2e8f9f7 215 base->C0 |= DAC_C0_DACEN_MASK;
<> 144:ef7eb2e8f9f7 216 }
<> 144:ef7eb2e8f9f7 217 else
<> 144:ef7eb2e8f9f7 218 {
<> 144:ef7eb2e8f9f7 219 base->C0 &= ~DAC_C0_DACEN_MASK;
<> 144:ef7eb2e8f9f7 220 }
<> 144:ef7eb2e8f9f7 221 }
<> 144:ef7eb2e8f9f7 222
<> 144:ef7eb2e8f9f7 223 /* @} */
<> 144:ef7eb2e8f9f7 224
<> 144:ef7eb2e8f9f7 225 /*!
<> 144:ef7eb2e8f9f7 226 * @name Buffer
<> 144:ef7eb2e8f9f7 227 * @{
<> 144:ef7eb2e8f9f7 228 */
<> 144:ef7eb2e8f9f7 229
<> 144:ef7eb2e8f9f7 230 /*!
<> 144:ef7eb2e8f9f7 231 * @brief Enables the DAC buffer.
<> 144:ef7eb2e8f9f7 232 *
<> 144:ef7eb2e8f9f7 233 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 234 * @param enable Enables the feature or not.
<> 144:ef7eb2e8f9f7 235 */
<> 144:ef7eb2e8f9f7 236 static inline void DAC_EnableBuffer(DAC_Type *base, bool enable)
<> 144:ef7eb2e8f9f7 237 {
<> 144:ef7eb2e8f9f7 238 if (enable)
<> 144:ef7eb2e8f9f7 239 {
<> 144:ef7eb2e8f9f7 240 base->C1 |= DAC_C1_DACBFEN_MASK;
<> 144:ef7eb2e8f9f7 241 }
<> 144:ef7eb2e8f9f7 242 else
<> 144:ef7eb2e8f9f7 243 {
<> 144:ef7eb2e8f9f7 244 base->C1 &= ~DAC_C1_DACBFEN_MASK;
<> 144:ef7eb2e8f9f7 245 }
<> 144:ef7eb2e8f9f7 246 }
<> 144:ef7eb2e8f9f7 247
<> 144:ef7eb2e8f9f7 248 /*!
<> 144:ef7eb2e8f9f7 249 * @brief Configures the CMP buffer.
<> 144:ef7eb2e8f9f7 250 *
<> 144:ef7eb2e8f9f7 251 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 252 * @param config Pointer to the configuration structure. See "dac_buffer_config_t".
<> 144:ef7eb2e8f9f7 253 */
<> 144:ef7eb2e8f9f7 254 void DAC_SetBufferConfig(DAC_Type *base, const dac_buffer_config_t *config);
<> 144:ef7eb2e8f9f7 255
<> 144:ef7eb2e8f9f7 256 /*!
<> 144:ef7eb2e8f9f7 257 * @brief Initializes the DAC buffer configuration structure.
<> 144:ef7eb2e8f9f7 258 *
<> 144:ef7eb2e8f9f7 259 * This function initializes the DAC buffer configuration structure to a default value. The default values are:
<> 144:ef7eb2e8f9f7 260 * @code
<> 144:ef7eb2e8f9f7 261 * config->triggerMode = kDAC_BufferTriggerBySoftwareMode;
<> 144:ef7eb2e8f9f7 262 * config->watermark = kDAC_BufferWatermark1Word;
<> 144:ef7eb2e8f9f7 263 * config->workMode = kDAC_BufferWorkAsNormalMode;
<> 144:ef7eb2e8f9f7 264 * config->upperLimit = DAC_DATL_COUNT - 1U;
<> 144:ef7eb2e8f9f7 265 * @endcode
<> 144:ef7eb2e8f9f7 266 * @param config Pointer to the configuration structure. See "dac_buffer_config_t".
<> 144:ef7eb2e8f9f7 267 */
<> 144:ef7eb2e8f9f7 268 void DAC_GetDefaultBufferConfig(dac_buffer_config_t *config);
<> 144:ef7eb2e8f9f7 269
<> 144:ef7eb2e8f9f7 270 /*!
<> 144:ef7eb2e8f9f7 271 * @brief Enables the DMA for DAC buffer.
<> 144:ef7eb2e8f9f7 272 *
<> 144:ef7eb2e8f9f7 273 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 274 * @param enable Enables the feature or not.
<> 144:ef7eb2e8f9f7 275 */
<> 144:ef7eb2e8f9f7 276 static inline void DAC_EnableBufferDMA(DAC_Type *base, bool enable)
<> 144:ef7eb2e8f9f7 277 {
<> 144:ef7eb2e8f9f7 278 if (enable)
<> 144:ef7eb2e8f9f7 279 {
<> 144:ef7eb2e8f9f7 280 base->C1 |= DAC_C1_DMAEN_MASK;
<> 144:ef7eb2e8f9f7 281 }
<> 144:ef7eb2e8f9f7 282 else
<> 144:ef7eb2e8f9f7 283 {
<> 144:ef7eb2e8f9f7 284 base->C1 &= ~DAC_C1_DMAEN_MASK;
<> 144:ef7eb2e8f9f7 285 }
<> 144:ef7eb2e8f9f7 286 }
<> 144:ef7eb2e8f9f7 287
<> 144:ef7eb2e8f9f7 288 /*!
<> 144:ef7eb2e8f9f7 289 * @brief Sets the value for items in the buffer.
<> 144:ef7eb2e8f9f7 290 *
<> 144:ef7eb2e8f9f7 291 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 292 * @param index Setting index for items in the buffer. The available index should not exceed the size of the DAC buffer.
<> 144:ef7eb2e8f9f7 293 * @param value Setting value for items in the buffer. 12-bits are available.
<> 144:ef7eb2e8f9f7 294 */
<> 144:ef7eb2e8f9f7 295 void DAC_SetBufferValue(DAC_Type *base, uint8_t index, uint16_t value);
<> 144:ef7eb2e8f9f7 296
<> 144:ef7eb2e8f9f7 297 /*!
<> 144:ef7eb2e8f9f7 298 * @brief Triggers the buffer by software and updates the read pointer of the DAC buffer.
<> 144:ef7eb2e8f9f7 299 *
<> 144:ef7eb2e8f9f7 300 * This function triggers the function by software. The read pointer of the DAC buffer is updated with one step
<> 144:ef7eb2e8f9f7 301 * after this function is called. Changing the read pointer depends on the buffer's work mode.
<> 144:ef7eb2e8f9f7 302 *
<> 144:ef7eb2e8f9f7 303 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 304 */
<> 144:ef7eb2e8f9f7 305 static inline void DAC_DoSoftwareTriggerBuffer(DAC_Type *base)
<> 144:ef7eb2e8f9f7 306 {
<> 144:ef7eb2e8f9f7 307 base->C0 |= DAC_C0_DACSWTRG_MASK;
<> 144:ef7eb2e8f9f7 308 }
<> 144:ef7eb2e8f9f7 309
<> 144:ef7eb2e8f9f7 310 /*!
<> 144:ef7eb2e8f9f7 311 * @brief Gets the current read pointer of the DAC buffer.
<> 144:ef7eb2e8f9f7 312 *
<> 144:ef7eb2e8f9f7 313 * This function gets the current read pointer of the DAC buffer.
<> 144:ef7eb2e8f9f7 314 * The current output value depends on the item indexed by the read pointer. It is updated
<> 144:ef7eb2e8f9f7 315 * by software trigger or hardware trigger.
<> 144:ef7eb2e8f9f7 316 *
<> 144:ef7eb2e8f9f7 317 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 318 *
<> 144:ef7eb2e8f9f7 319 * @return Current read pointer of DAC buffer.
<> 144:ef7eb2e8f9f7 320 */
<> 144:ef7eb2e8f9f7 321 static inline uint8_t DAC_GetBufferReadPointer(DAC_Type *base)
<> 144:ef7eb2e8f9f7 322 {
<> 144:ef7eb2e8f9f7 323 return ((base->C2 & DAC_C2_DACBFRP_MASK) >> DAC_C2_DACBFRP_SHIFT);
<> 144:ef7eb2e8f9f7 324 }
<> 144:ef7eb2e8f9f7 325
<> 144:ef7eb2e8f9f7 326 /*!
<> 144:ef7eb2e8f9f7 327 * @brief Sets the current read pointer of the DAC buffer.
<> 144:ef7eb2e8f9f7 328 *
<> 144:ef7eb2e8f9f7 329 * This function sets the current read pointer of the DAC buffer.
<> 144:ef7eb2e8f9f7 330 * The current output value depends on the item indexed by the read pointer. It is updated by
<> 144:ef7eb2e8f9f7 331 * software trigger or hardware trigger. After the read pointer changes, the DAC output value also changes.
<> 144:ef7eb2e8f9f7 332 *
<> 144:ef7eb2e8f9f7 333 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 334 * @param index Setting index value for the pointer.
<> 144:ef7eb2e8f9f7 335 */
<> 144:ef7eb2e8f9f7 336 void DAC_SetBufferReadPointer(DAC_Type *base, uint8_t index);
<> 144:ef7eb2e8f9f7 337
<> 144:ef7eb2e8f9f7 338 /*!
<> 144:ef7eb2e8f9f7 339 * @brief Enables interrupts for the DAC buffer.
<> 144:ef7eb2e8f9f7 340 *
<> 144:ef7eb2e8f9f7 341 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 342 * @param mask Mask value for interrupts. See "_dac_buffer_interrupt_enable".
<> 144:ef7eb2e8f9f7 343 */
<> 144:ef7eb2e8f9f7 344 void DAC_EnableBufferInterrupts(DAC_Type *base, uint32_t mask);
<> 144:ef7eb2e8f9f7 345
<> 144:ef7eb2e8f9f7 346 /*!
<> 144:ef7eb2e8f9f7 347 * @brief Disables interrupts for the DAC buffer.
<> 144:ef7eb2e8f9f7 348 *
<> 144:ef7eb2e8f9f7 349 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 350 * @param mask Mask value for interrupts. See "_dac_buffer_interrupt_enable".
<> 144:ef7eb2e8f9f7 351 */
<> 144:ef7eb2e8f9f7 352 void DAC_DisableBufferInterrupts(DAC_Type *base, uint32_t mask);
<> 144:ef7eb2e8f9f7 353
<> 144:ef7eb2e8f9f7 354 /*!
<> 144:ef7eb2e8f9f7 355 * @brief Gets the flags of events for the DAC buffer.
<> 144:ef7eb2e8f9f7 356 *
<> 144:ef7eb2e8f9f7 357 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 358 *
<> 144:ef7eb2e8f9f7 359 * @return Mask value for the asserted flags. See "_dac_buffer_status_flags".
<> 144:ef7eb2e8f9f7 360 */
<> 144:ef7eb2e8f9f7 361 uint32_t DAC_GetBufferStatusFlags(DAC_Type *base);
<> 144:ef7eb2e8f9f7 362
<> 144:ef7eb2e8f9f7 363 /*!
<> 144:ef7eb2e8f9f7 364 * @brief Clears the flags of events for the DAC buffer.
<> 144:ef7eb2e8f9f7 365 *
<> 144:ef7eb2e8f9f7 366 * @param base DAC peripheral base address.
<> 144:ef7eb2e8f9f7 367 * @param mask Mask value for flags. See "_dac_buffer_status_flags_t".
<> 144:ef7eb2e8f9f7 368 */
<> 144:ef7eb2e8f9f7 369 void DAC_ClearBufferStatusFlags(DAC_Type *base, uint32_t mask);
<> 144:ef7eb2e8f9f7 370
<> 144:ef7eb2e8f9f7 371 /* @} */
<> 144:ef7eb2e8f9f7 372
<> 144:ef7eb2e8f9f7 373 #if defined(__cplusplus)
<> 144:ef7eb2e8f9f7 374 }
<> 144:ef7eb2e8f9f7 375 #endif
<> 144:ef7eb2e8f9f7 376 /*!
<> 144:ef7eb2e8f9f7 377 * @}
<> 144:ef7eb2e8f9f7 378 */
<> 144:ef7eb2e8f9f7 379 #endif /* _FSL_DAC_H_ */