/* * Copyright (c) 2020, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*!**************************************************************************** * @file dl_dac12.h * @brief 12-bit DAC Driver Library * @defgroup DAC12 Digital to Analog Converter (DAC12) * * @anchor ti_dl_dl_dac12_Overview * # Overview * * The Digital to Analog Converter Driver Library allows full configuration of * the MSPM0 DAC12 module. The DAC module is a 12-bit voltage-output * digital-to-analog converter (DAC). * *
****************************************************************************** */ /** @addtogroup DAC12 * @{ */ #ifndef ti_dl_dl_dac12__include #define ti_dl_dl_dac12__include #include #include #include #include #ifdef __MSPM0_HAS_DAC12__ #ifdef __cplusplus extern "C" { #endif /* clang-format off */ /** @enum DL_DAC12_OUTPUT */ typedef enum { /*! DAC output is disconnected from output pin */ DL_DAC12_OUTPUT_DISABLED = DAC12_CTL1_OPS_NOC0, /*! DAC output is available on output pin */ DL_DAC12_OUTPUT_ENABLED = DAC12_CTL1_OPS_OUT0, } DL_DAC12_OUTPUT; /** @enum DL_DAC12_REPRESENTATION */ typedef enum { /*! Binary representation */ DL_DAC12_REPRESENTATION_BINARY = DAC12_CTL0_DFM_BINARY, /*! Two's complement representation */ DL_DAC12_REPRESENTATION_TWOS_COMPLEMENT = DAC12_CTL0_DFM_TWOS_COMP, } DL_DAC12_REPRESENTATION; /** @enum DL_DAC12_RESOLUTION */ typedef enum { /*! 12-bit input resolution */ DL_DAC12_RESOLUTION_12BIT = DAC12_CTL0_RES__12BITS, /*! 8-bit input resolution */ DL_DAC12_RESOLUTION_8BIT = DAC12_CTL0_RES__8BITS, } DL_DAC12_RESOLUTION; /** @enum DL_DAC12_AMP */ typedef enum { /*! Output amplifier off with high impedance tristate output */ DL_DAC12_AMP_OFF_TRISTATE = DAC12_CTL1_AMPHIZ_HIZ, /*! Output amplifier off with output pulled to ground */ DL_DAC12_AMP_OFF_0V = DAC12_CTL1_AMPHIZ_PULLDOWN, /*! Output amplifier enabled */ DL_DAC12_AMP_ON = DAC12_CTL1_AMPEN_ENABLE, } DL_DAC12_AMP; /** @enum DL_DAC12_VREF_SOURCE */ typedef enum { /*! Positive reference is VDDA, negative reference is VeREF- */ DL_DAC12_VREF_SOURCE_VDDA_VEREFN = (DAC12_CTL1_REFSP_VDDA | DAC12_CTL1_REFSN_VEREFN) , /*! Positive reference is VeREF+, negative reference is VeREF- */ DL_DAC12_VREF_SOURCE_VEREFP_VEREFN = (DAC12_CTL1_REFSP_VEREFP | DAC12_CTL1_REFSN_VEREFN), /*! Positive reference is VDDA, negative reference is VSSA */ DL_DAC12_VREF_SOURCE_VDDA_VSSA = (DAC12_CTL1_REFSP_VDDA | DAC12_CTL1_REFSN_VSSA), /*! Positive reference is VeREF+, negative reference is VSSA */ DL_DAC12_VREF_SOURCE_VEREFP_VSSA = (DAC12_CTL1_REFSP_VEREFP | DAC12_CTL1_REFSN_VSSA), } DL_DAC12_VREF_SOURCE; /** @enum DL_DAC12_SAMPLETIMER */ typedef enum { /*! DAC sample timer generator is disabled */ DL_DAC12_SAMPLETIMER_DISABLE = DAC12_CTL3_STIMEN_CLR, /*! DAC sample timer generator is enabled */ DL_DAC12_SAMPLETIMER_ENABLE = DAC12_CTL3_STIMEN_SET, } DL_DAC12_SAMPLETIMER; /** @enum DL_DAC12_SAMPLES_PER_SECOND */ typedef enum { /*! Sample Time Trigger rate of 500 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_500 = DAC12_CTL3_STIMCONFIG__500SPS, /*! Sample Time Trigger rate of 1,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_1K = DAC12_CTL3_STIMCONFIG__1KSPS, /*! Sample Time Trigger rate of 2,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_2K = DAC12_CTL3_STIMCONFIG__2KSPS, /*! Sample Time Trigger rate of 4,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_4K = DAC12_CTL3_STIMCONFIG__4KSPS, /*! Sample Time Trigger rate of 8,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_8K = DAC12_CTL3_STIMCONFIG__8KSPS, /*! Sample Time Trigger rate of 16,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_16K = DAC12_CTL3_STIMCONFIG__16KSPS, /*! Sample Time Trigger rate of 100,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_100K = DAC12_CTL3_STIMCONFIG__100KSPS, /*! Sample Time Trigger rate of 200,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_200K = DAC12_CTL3_STIMCONFIG__200KSPS, /*! Sample Time Trigger rate of 500,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_500K = DAC12_CTL3_STIMCONFIG__500KSPS, /*! Sample Time Trigger rate of 1,000,000 Samples Per Second */ DL_DAC12_SAMPLES_PER_SECOND_1M = DAC12_CTL3_STIMCONFIG__1MSPS, } DL_DAC12_SAMPLES_PER_SECOND; /** @enum DL_DAC12_FIFO */ typedef enum { /*! DAC FIFO is disabled */ DL_DAC12_FIFO_DISABLED = DAC12_CTL2_FIFOEN_CLR, /*! DAC FIFO is enabled */ DL_DAC12_FIFO_ENABLED = DAC12_CTL2_FIFOEN_SET, } DL_DAC12_FIFO; /** @enum DL_DAC12_FIFO_THRESHOLD */ typedef enum { /*! DAC FIFO threshold for DMA Trigger Generation where 1/4th of location are empty */ DL_DAC12_FIFO_THRESHOLD_ONE_QTR_EMPTY = DAC12_CTL2_FIFOTH_LOW, /*! DAC FIFO threshold for DMA Trigger Generation where 2/4th of locations are empty */ DL_DAC12_FIFO_THRESHOLD_TWO_QTRS_EMPTY = DAC12_CTL2_FIFOTH_MED, /*! DAC FIFO threshold for DMA Trigger Generation where 3/4th of locations are empty */ DL_DAC12_FIFO_THRESHOLD_THREE_QTRS_EMPTY = DAC12_CTL2_FIFOTH_HIGH, } DL_DAC12_FIFO_THRESHOLD; /** @enum DL_DAC12_FIFO_TRIGGER */ typedef enum { /*! DAC FIFO read trigger sourced from the sample time generator */ DL_DAC12_FIFO_TRIGGER_SAMPLETIMER = DAC12_CTL2_FIFOTRIGSEL_STIM, /*! DAC FIFO read trigger sourced from the hardware trigger 0 event fabric */ DL_DAC12_FIFO_TRIGGER_HWTRIG0 = DAC12_CTL2_FIFOTRIGSEL_TRIG0, } DL_DAC12_FIFO_TRIGGER; /** @enum DL_DAC12_DMA_TRIGGER */ typedef enum { /*! DMA trigger mechanism for DAC is disabled */ DL_DAC12_DMA_TRIGGER_DISABLED = DAC12_CTL2_DMATRIGEN_CLR, /*! DMA trigger mechanism for DAC is enabled */ DL_DAC12_DMA_TRIGGER_ENABLED = DAC12_CTL2_DMATRIGEN_SET, } DL_DAC12_DMA_TRIGGER; /** @enum DL_DAC12_CALIBRATION */ typedef enum { /*! Factory Trim */ DL_DAC12_CALIBRATION_FACTORY = DAC12_CALCTL_CALSEL_FACTORYTRIM, /*! Self Trim (last calibration result) */ DL_DAC12_CALIBRATION_SELF = DAC12_CALCTL_CALSEL_SELFCALIBRATIONTRIM, } DL_DAC12_CALIBRATION; /** @addtogroup DL_DAC12_INTERRUPT * @{ */ /*! * @brief Interrupt raised when the module ready event has occurred */ #define DL_DAC12_INTERRUPT_MODULE_READY (DAC12_GEN_EVENT_IMASK_MODRDYIFG_SET) /*! * @brief Interrupt raised when the FIFO is empty */ #define DL_DAC12_INTERRUPT_FIFO_EMPTY (DAC12_GEN_EVENT_IMASK_FIFOEMPTYIFG_SET) /*! * @brief Interrupt raised when the FIFO is 3/4th empty */ #define DL_DAC12_INTERRUPT_FIFO_THREE_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO3B4IFG_SET) /*! * @brief Interrupt raised when the FIFO is 2/4ths empty */ #define DL_DAC12_INTERRUPT_FIFO_TWO_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B2IFG_SET) /*! * @brief Interrupt raised when the FIFO is 1/4th empty */ #define DL_DAC12_INTERRUPT_FIFO_ONE_QTR_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B4IFG_SET) /*! * @brief Interrupt raised when the FIFO is full */ #define DL_DAC12_INTERRUPT_FIFO_FULL (DAC12_GEN_EVENT_IMASK_FIFOFULLIFG_SET) /*! * @brief Interrupt raised when the FIFO is underrun * (tried to read from an empty FIFO) */ #define DL_DAC12_INTERRUPT_FIFO_UNDERRUN (DAC12_GEN_EVENT_IMASK_FIFOURUNIFG_SET) /*! * @brief Interrupt raised as an Acknowledgement to the DMA completing a * transfer * * During DMA operation only, once the DMA has performed its desired number * of transfers to the FIFO, the DMA will assert a DMA done event. The DMA will * also send a status, which is 0 if there is more data to send. If there is a * nonzero status, and the DMA is done sending information, the DMATrigger will * be disabled and this interrupt will be asserted. */ #define DL_DAC12_INTERRUPT_DMA_DONE (DAC12_GEN_EVENT_IMASK_DMADONEIFG_SET) /** @}*/ /** @addtogroup DL_DAC12_EVENT * @{ */ /*! * @brief Event raised when the module ready event has occurred */ #define DL_DAC12_EVENT_MODULE_READY (DAC12_GEN_EVENT_IMASK_MODRDYIFG_SET) /*! * @brief Event raised when the FIFO is empty */ #define DL_DAC12_EVENT_FIFO_EMPTY (DAC12_GEN_EVENT_IMASK_FIFOEMPTYIFG_SET) /*! * @brief Event raised when the FIFO is 3/4th empty */ #define DL_DAC12_EVENT_FIFO_THREE_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO3B4IFG_SET) /*! * @brief Event raised when the FIFO is 2/4ths empty */ #define DL_DAC12_EVENT_FIFO_TWO_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B2IFG_SET) /*! * @brief Event raised when the FIFO is 1/4th empty */ #define DL_DAC12_EVENT_FIFO_ONE_QTR_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B4IFG_SET) /*! * @brief Event raised when the FIFO is full */ #define DL_DAC12_EVENT_FIFO_FULL (DAC12_GEN_EVENT_IMASK_FIFOFULLIFG_SET) /*! * @brief Event raised when the FIFO is underrun * (tried to read from an empty FIFO) */ #define DL_DAC12_EVENT_FIFO_UNDERRUN (DAC12_GEN_EVENT_IMASK_FIFOURUNIFG_SET) /*! * @brief Event raised as an Acknowledgement to the DMA completing a * transfer * * During DMA operation only, once the DMA has performed its desired number * of transfers to the FIFO, the DMA will assert a DMA done event. The DMA will * also send a status, which is 0 if there is more data to send. If there is a * nonzero status, and the DMA is done sending information, the DMATrigger will * be disabled and this interrupt will be asserted. */ #define DL_DAC12_EVENT_DMA_DONE (DAC12_GEN_EVENT_IMASK_DMADONEIFG_SET) /** @}*/ /* clang-format on */ /*! @enum DL_DAC12_IIDX */ typedef enum { /*! DAC interrupt index for no interrupt pending */ DL_DAC12_IIDX_NO_INT = DAC12_CPU_INT_IIDX_STAT_NO_INTR, /*! DAC interrupt index when module is ready */ DL_DAC12_IIDX_MODULE_READY = DAC12_CPU_INT_IIDX_STAT_MODRDYIFG, /*! DAC interrupt index when FIFO is full */ DL_DAC12_IIDX_FIFO_FULL = DAC12_CPU_INT_IIDX_STAT_FIFOFULLIFG, /*! DAC interrupt index when FIFO is 1/4 empty */ DL_DAC12_IIDX_FIFO_1_4_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFO1B4IFG, /*! DAC interrupt index when FIFO is 1/2 empty */ DL_DAC12_IIDX_FIFO_1_2_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFO1B2IFG, /*! DAC interrupt index when FIFO is 3/4 empty */ DL_DAC12_IIDX_FIFO_3_4_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFO3B4IFG, /*! DAC interrupt index when FIFO is empty */ DL_DAC12_IIDX_FIFO_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFOEMPTYIFG, /*! DAC interrupt index if there is FIFO underrun */ DL_DAC12_IIDX_FIFO_UNDERRUN = DAC12_CPU_INT_IIDX_STAT_FIFOURUNIFG, /*! DAC interrupt index for DMA transfer done */ DL_DAC12_IIDX_DMA_DONE = DAC12_CPU_INT_IIDX_STAT_DMADONEIFG } DL_DAC12_IIDX; /*! @enum DL_DAC12_SUBSCRIBER_INDEX */ typedef enum { /*! DAC12 Subscriber index 0 */ DL_DAC12_SUBSCRIBER_INDEX_0 = 0, } DL_DAC12_SUBSCRIBER_INDEX; /*! @enum DL_DAC12_EVENT_ROUTE */ typedef enum { /*! DAC12 event route 1 */ DL_DAC12_EVENT_ROUTE_1 = 0, } DL_DAC12_EVENT_ROUTE; /** * @brief Configuration struct for @ref DL_DAC12_init */ typedef struct { /*! Enables the DAC output on the device OUT pin. One of @ref DL_DAC12_OUTPUT */ DL_DAC12_OUTPUT outputEnable; /*! The bit resolution. One of @ref DL_DAC12_RESOLUTION */ DL_DAC12_RESOLUTION resolution; /*! The input data representation. One of @ref DL_DAC12_REPRESENTATION */ DL_DAC12_REPRESENTATION representation; /*! The voltage reference. One of @ref DL_DAC12_VREF_SOURCE */ DL_DAC12_VREF_SOURCE voltageReferenceSource; /*! Output amplifier setting. One of @ref DL_DAC12_AMP */ DL_DAC12_AMP amplifierSetting; /*! The FIFO enable. One of @ref DL_DAC12_FIFO */ DL_DAC12_FIFO fifoEnable; /*! The Read Fifo Trigger source. One of @ref DL_DAC12_FIFO_TRIGGER */ DL_DAC12_FIFO_TRIGGER fifoTriggerSource; /*! The bit to enable a DMA trigger source to use the DMA instead of * the CPU to input data. * One of @ref DL_DAC12_DMA_TRIGGER */ DL_DAC12_DMA_TRIGGER dmaTriggerEnable; /*! The FIFO Threshold at which the DMA Trigger is asserted. * One of @ref DL_DAC12_FIFO_THRESHOLD */ DL_DAC12_FIFO_THRESHOLD dmaTriggerThreshold; /*! Enables the sample time generator as the FIFO trigger. * One of @ref DL_DAC12_SAMPLETIMER */ DL_DAC12_SAMPLETIMER sampleTimeGeneratorEnable; /*! Rate of the sample time generator. One of @ref * DL_DAC12_SAMPLES_PER_SECOND */ DL_DAC12_SAMPLES_PER_SECOND sampleRate; } DL_DAC12_Config; /** * @brief Initialize the DAC module * * Initializes all the common configurable options for the DAC module. Any * other custom configuration can be done after this initialization. * @post DAC is not enabled * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] config Configuration for DAC12 peripheral */ void DL_DAC12_init(DAC12_Regs *dac12, const DL_DAC12_Config *config); /** * @brief Enables the Peripheral Write Enable (PWREN) register for the DAC12 * * Before any peripheral registers can be configured by software, the * peripheral itself must be enabled by writing the ENABLE bit together with * the appropriate KEY value to the peripheral's PWREN register. * * @note For power savings, please refer to @ref DL_DAC12_enable * * @param dac12 Pointer to the register overlay for the peripheral */ __STATIC_INLINE void DL_DAC12_enablePower(DAC12_Regs *dac12) { dac12->GPRCM.PWREN = (DAC12_PWREN_KEY_UNLOCK_W | DAC12_PWREN_ENABLE_ENABLE); } /** * @brief Disables the Peripheral Write Enable (PWREN) register for the DAC12 * * When the PWREN.ENABLE bit is cleared, the peripheral's registers are not * accessible for read/write operations. * * @note This API does not provide large power savings. For power savings, * please refer to @ref DL_DAC12_enable * * @param dac12 Pointer to the register overlay for the peripheral */ __STATIC_INLINE void DL_DAC12_disablePower(DAC12_Regs *dac12) { dac12->GPRCM.PWREN = (DAC12_PWREN_KEY_UNLOCK_W | DAC12_PWREN_ENABLE_DISABLE); } /** * @brief Returns if the Peripheral Write Enable (PWREN) register for the DAC12 * is enabled * * Before any peripheral registers can be configured by software, the * peripheral itself must be enabled by writing the ENABLE bit together with * the appropriate KEY value to the peripheral's PWREN register. * * When the PWREN.ENABLE bit is cleared, the peripheral's registers are not * accessible for read/write operations. * * * @param dac12 Pointer to the register overlay for the peripheral * * @return true if peripheral register access is enabled * @return false if peripheral register access is disabled */ __STATIC_INLINE bool DL_DAC12_isPowerEnabled(const DAC12_Regs *dac12) { return ((dac12->GPRCM.PWREN & DAC12_PWREN_ENABLE_MASK) == DAC12_PWREN_ENABLE_ENABLE); } /** * @brief Resets dac12 peripheral * * @param dac12 Pointer to the register overlay for the peripheral */ __STATIC_INLINE void DL_DAC12_reset(DAC12_Regs *dac12) { dac12->GPRCM.RSTCTL = (DAC12_RSTCTL_KEY_UNLOCK_W | DAC12_RSTCTL_RESETSTKYCLR_CLR | DAC12_RSTCTL_RESETASSERT_ASSERT); } /** * @brief Returns if dac12 peripheral was reset * * @param dac12 Pointer to the register overlay for the peripheral * * @return true if peripheral was reset * @return false if peripheral wasn't reset * */ __STATIC_INLINE bool DL_DAC12_isReset(const DAC12_Regs *dac12) { return ((dac12->GPRCM.STAT & DAC12_STAT_RESETSTKY_MASK) == DAC12_STAT_RESETSTKY_RESET); } /** * @brief Enables the DAC module * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_enable(DAC12_Regs *dac12) { dac12->CTL0 |= DAC12_CTL0_ENABLE_SET; } /** * @brief Disables the DAC Module * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_disable(DAC12_Regs *dac12) { dac12->CTL0 &= ~DAC12_CTL0_ENABLE_MASK; } /** * @brief Checks the enable bit of the DAC * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Whether the DAC module is enabled * * @retval true Module enabled * @retval false Module disabled */ __STATIC_INLINE bool DL_DAC12_isEnabled(const DAC12_Regs *dac12) { uint32_t t = (dac12->CTL0 & DAC12_CTL0_ENABLE_MASK); return (t == DAC12_CTL0_ENABLE_SET); } /** * @brief Sets all elements of the input data format at once * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] rep Data Representation. One of * @ref DL_DAC12_REPRESENTATION * @param[in] res Data Resolution. One of @ref DL_DAC12_RESOLUTION */ __STATIC_INLINE void DL_DAC12_configDataFormat( DAC12_Regs *dac12, DL_DAC12_REPRESENTATION rep, DL_DAC12_RESOLUTION res) { DL_Common_updateReg(&dac12->CTL0, ((uint32_t) rep | (uint32_t) res), DAC12_CTL0_RES_MASK | DAC12_CTL0_DFM_MASK); } /** * @brief Gets the currently configured amplifier setting * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Currently configured amplifier setting * * @retval One of @ref DL_DAC12_AMP */ __STATIC_INLINE DL_DAC12_AMP DL_DAC12_getAmplifier(const DAC12_Regs *dac12) { uint32_t ampVal = (dac12->CTL1 & (DAC12_CTL1_AMPEN_MASK | DAC12_CTL1_AMPHIZ_MASK)); return (DL_DAC12_AMP)(ampVal); } /** * @brief Sets the DAC and output amplifer setting * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] ampVal amplifier configuration value. One of @ref DL_DAC12_AMP */ __STATIC_INLINE void DL_DAC12_setAmplifier( DAC12_Regs *dac12, DL_DAC12_AMP ampVal) { DL_Common_updateReg(&dac12->CTL1, (uint32_t) ampVal, (DAC12_CTL1_AMPEN_MASK | DAC12_CTL1_AMPHIZ_MASK)); } /** * @brief Gets the currently configured reference voltage source * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Currently configured reference voltage * * @retval Bitwise OR of @ref DL_DAC12_VREF_SOURCE */ __STATIC_INLINE DL_DAC12_VREF_SOURCE DL_DAC12_getReferenceVoltageSource( const DAC12_Regs *dac12) { uint32_t refsVal = (dac12->CTL1 & (DAC12_CTL1_REFSP_MASK | DAC12_CTL1_REFSN_MASK)); return (DL_DAC12_VREF_SOURCE)(refsVal); } /** * @brief Set the reference voltage source of the DAC * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] refsVal reference voltage source. Bitwise OR of * @ref DL_DAC12_VREF_SOURCE */ __STATIC_INLINE void DL_DAC12_setReferenceVoltageSource( DAC12_Regs *dac12, DL_DAC12_VREF_SOURCE refsVal) { DL_Common_updateReg(&dac12->CTL1, (uint32_t) refsVal, (DAC12_CTL1_REFSP_MASK | DAC12_CTL1_REFSN_MASK)); } /** * @brief Enables the DAC output by connecting it to the OUT0 pin * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_enableOutputPin(DAC12_Regs *dac12) { dac12->CTL1 |= DAC12_CTL1_OPS_OUT0; } /** * @brief Disable the DAC output by disconnecting it from the OUT0 pin * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_disableOutputPin(DAC12_Regs *dac12) { dac12->CTL1 &= ~DAC12_CTL1_OPS_MASK; } /** * @brief Checks to see whether the output is connected * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Status of output connection * * @retval true Output is connected * @retval false Output is not connected */ __STATIC_INLINE bool DL_DAC12_isOutputPinEnabled(const DAC12_Regs *dac12) { return ((dac12->CTL1 & DAC12_CTL1_OPS_MASK) == DAC12_CTL1_OPS_OUT0); } /** * @brief Enables the FIFO module * * Enables the FIFO and the FIFO hardware control state machine * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_enableFIFO(DAC12_Regs *dac12) { /* Insert value */ dac12->CTL2 |= DAC12_CTL2_FIFOEN_SET; } /** * @brief Disables the FIFO * * @param[in] dac12 pointer to the register overlay of the peripheral * * @sa DL_DAC12_enableFIFO */ __STATIC_INLINE void DL_DAC12_disableFIFO(DAC12_Regs *dac12) { /* Clear out the bit */ dac12->CTL2 &= ~DAC12_CTL2_FIFOEN_MASK; } /** * @brief Checks whether the FIFO is enabled * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Current status of the FIFO * * @retval true FIFO is enabled * @retval false FIFO is not enabled */ __STATIC_INLINE bool DL_DAC12_isFIFOEnabled(const DAC12_Regs *dac12) { uint32_t t = (dac12->CTL2 & DAC12_CTL2_FIFOEN_MASK); return (t == DAC12_CTL2_FIFOEN_SET); } /** * @brief Gets the FIFO threshold * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Currently configured FIFO Threshold * * @retval One of @ref DL_DAC12_FIFO_THRESHOLD * * @sa DL_DAC12_setFIFOThreshold */ __STATIC_INLINE DL_DAC12_FIFO_THRESHOLD DL_DAC12_getFIFOThreshold( const DAC12_Regs *dac12) { uint32_t fifoThreshold = (dac12->CTL2 & DAC12_CTL2_FIFOTH_MASK); return (DL_DAC12_FIFO_THRESHOLD)(fifoThreshold); } /** * @brief Sets the FIFO threshold * * Determines the FIFO threshold In case of DMA based operation, * DAC generates new DMA trigger when the number of empty locations in FIFO * match the selected FIFO threshold level. * In the case of CPU based operation, the FIFO threshold bits are don't care * and FIFO level is directly indicated through the respective bits in the * RIS register * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] fifoThreshold Threshold value. One of @ref DL_DAC12_FIFO_THRESHOLD */ __STATIC_INLINE void DL_DAC12_setFIFOThreshold( DAC12_Regs *dac12, DL_DAC12_FIFO_THRESHOLD fifoThreshold) { DL_Common_updateReg( &dac12->CTL2, (uint32_t) fifoThreshold, DAC12_CTL2_FIFOTH_MASK); } /** * @brief Gets the FIFO read trigger source * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Currently configured trigger source * * @retval One of @ref DL_DAC12_FIFO_TRIGGER * * @sa DL_DAC12_setFIFOTriggerSource */ __STATIC_INLINE DL_DAC12_FIFO_TRIGGER DL_DAC12_getFIFOTriggerSource( const DAC12_Regs *dac12) { uint32_t fifoTrig = (dac12->CTL2 & DAC12_CTL2_FIFOTRIGSEL_MASK); return (DL_DAC12_FIFO_TRIGGER)(fifoTrig); } /** * @brief Sets the FIFO read trigger source * * Selects the source for FIFO read trigger by the DAC. When the selected FIFO * read trigger is asserted, the data from FIFO (as indicated by read pointer) * is moved into internal DAC data register * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] fifoTrig Read Trigger Source. One of * @ref DL_DAC12_FIFO_TRIGGER */ __STATIC_INLINE void DL_DAC12_setFIFOTriggerSource( DAC12_Regs *dac12, DL_DAC12_FIFO_TRIGGER fifoTrig) { DL_Common_updateReg( &dac12->CTL2, (uint32_t) fifoTrig, DAC12_CTL2_FIFOTRIGSEL_MASK); } /** * @brief Enables the DMA trigger generator * * When this is and the FIFO are enabled, the DMA trigger is generated based * on the empty FIFO locations qualified by the selected FIFO Threshold * settings. This bit is automatically cleared by hardware when the DMA done * event is asserted with DMA status signal value being nonzero * * @param[in] dac12 pointer to the register overlay of the peripheral * * @sa DL_DAC12_enableFIFO * @sa DL_DAC12_setFIFOThreshold */ __STATIC_INLINE void DL_DAC12_enableDMATrigger(DAC12_Regs *dac12) { /* Insert value */ dac12->CTL2 |= DAC12_CTL2_DMATRIGEN_SET; } /** * @brief Disables the DMA trigger generator * * @param[in] dac12 pointer to the register overlay of the peripheral * * @sa DL_DAC12_enableDMATriggerGenerator */ __STATIC_INLINE void DL_DAC12_disableDMATrigger(DAC12_Regs *dac12) { /* Clear out the bit */ dac12->CTL2 &= ~DAC12_CTL2_DMATRIGEN_MASK; } /** * @brief Checks whether the DMA trigger generator is enabled * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Current status of the DMA trigger generator * * @retval true DMA Trigger enabled * @retval false DMA Trigger not enabled */ __STATIC_INLINE bool DL_DAC12_isDMATriggerEnabled(const DAC12_Regs *dac12) { uint32_t t = (dac12->CTL2 & DAC12_CTL2_DMATRIGEN_MASK); return (t == DAC12_CTL2_DMATRIGEN_SET); } /** * @brief Enables the sample time generator * * The sample time generator can be selected as the FIFO Trigger @ref * DL_DAC12_setFIFOTriggerSource and control the rate at which the DAC will * consume inputs from the FIFO * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_enableSampleTimeGenerator(DAC12_Regs *dac12) { /* Insert value */ dac12->CTL3 |= DAC12_CTL3_STIMEN_SET; } /** * @brief Disables the sample time generator * * @param[in] dac12 pointer to the register overlay of the peripheral * * @sa DL_DAC12_enableSampleTimeGenerator */ __STATIC_INLINE void DL_DAC12_disableSampleTimeGenerator(DAC12_Regs *dac12) { /* Clear out the bit */ dac12->CTL3 &= ~DAC12_CTL3_STIMEN_MASK; } /** * @brief Checks whether the sample time trigger generator is enabled * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Current status of the sample time generator * * @retval true Sample time generator is enabled * @retval false Sample time generator is not enabled */ __STATIC_INLINE bool DL_DAC12_isSampleTimeGeneratorEnabled( const DAC12_Regs *dac12) { uint32_t t = (dac12->CTL3 & DAC12_CTL3_STIMEN_MASK); return (t == DAC12_CTL3_STIMEN_SET); } /** * @brief Gets the sample trigger rate of the sample time generator * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Currently configured sample rate * * @retval One of @ref DL_DAC12_SAMPLES_PER_SECOND */ __STATIC_INLINE DL_DAC12_SAMPLES_PER_SECOND DL_DAC12_getSampleRate( const DAC12_Regs *dac12) { uint32_t sampleRate = (dac12->CTL3 & DAC12_CTL3_STIMCONFIG_MASK); return (DL_DAC12_SAMPLES_PER_SECOND)(sampleRate); } /** * @brief Sets the sample triggering rate of the sample time generator * * Sets the sample trigger rate of the sample time generator. * The sample time generator can be selected as the FIFO Trigger @ref * DL_DAC12_setFIFOTriggerSource and control the rate at which the DAC will * consume inputs from the FIFO * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] sampleRate Desired sample rate. One of * @ref DL_DAC12_SAMPLES_PER_SECOND */ __STATIC_INLINE void DL_DAC12_setSampleRate( DAC12_Regs *dac12, DL_DAC12_SAMPLES_PER_SECOND sampleRate) { DL_Common_updateReg( &dac12->CTL3, (uint32_t) sampleRate, DAC12_CTL3_STIMCONFIG_MASK); } /** * @brief Checks whether a calibration sequence is currently running * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Current status of an active calibration sequence * * @retval true Calibration Sequence is currently running * @retval false Calibration Sequence is not running * * @sa DL_DAC12_startCalibration */ __STATIC_INLINE bool DL_DAC12_isCalibrationRunning(const DAC12_Regs *dac12) { uint32_t t = (dac12->CALCTL & DAC12_CALCTL_CALON_MASK); return (t == DAC12_CALCTL_CALON_ACTIVE); } /** * @brief Initiates the DAC offset error calibration sequence * * Initiates the DAC offset error calibration sequence and * the CALON_ACTIVE bit is automatically reset when the offset error * calibration completes. Upon completion, the correct calibration will be put * into the CALDATA register. This sequence can be started either on the fly * (once the module is ready) or during setup (where this is called directy * after enabling the DAC). * * In order for the calibration to be successful, the AMP must already be * configured and the LOCK bit must be cleared for the value to be written * successfully. The output is also tri-stated during calibration. * * A negative offset will mean that low input values will have a output of 0. * A positive offset will mean that an input of 0 will result in a non-zero * output. * * @param[in] dac12 pointer to the register overlay of the peripheral */ __STATIC_INLINE void DL_DAC12_startCalibration(DAC12_Regs *dac12) { dac12->CALCTL = (DAC12_CALCTL_CALON_ACTIVE | DAC12_CALCTL_CALSEL_SELFCALIBRATIONTRIM); } /** * @brief Gets the DAC Calibration offset * * Reads of the CALDATA register should only be performed after the * calibration sequence has completed. During calibration, this register is * continuously written to, and inaccurate values could be obtained. * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return Current error calibration offset * * @retval -64 to +63 in two's complement */ __STATIC_INLINE uint32_t DL_DAC12_getCalibrationData(const DAC12_Regs *dac12) { return (dac12->CALDATA & DAC12_CALDATA_DATA_MASK); } /** * @brief Perform calibration sequence * * Enables writes, and then starts the calibration sequence. Should only be * called after the DAC module is enabled. This will only return when the * calibration sequence has completed. * * @pre Amplifier settings should be configured. @ref DL_DAC12_setAmplifier * @post Calibration is complete, and CALDATA is locked to prevent writes. * * @param[in] dac12 pointer to the register overlay of the peripheral */ void DL_DAC12_performSelfCalibrationBlocking(DAC12_Regs *dac12); /** * @brief Outputs an 8-bit data value * * Using the CPU to control the DAC, this register can be written to if a * fixed output voltage is desired (ex. DC Generation) with the FIFO disabled, * or it can write with variable output (ex. AC Generation) by enabling the * FIFO and writing to this register. The value will then be written to the * FIFO internally. With FIFO enabled with @ref DL_DAC12_enableFIFO, the * FIFO-specific interrupts will be generated inside the DAC. * * The DMA trigger generation mechanism must be kept disabled when CPU is used * to load data into DAC * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] dataValue value to be written to the bit-field from 0x0 to * 0xFF. It can be either binary or two's complement */ __STATIC_INLINE void DL_DAC12_output8(DAC12_Regs *dac12, uint8_t dataValue) { dac12->DATA0 = dataValue; } /** * @brief Outputs a 12-bit Data Value * * Using the CPU to control the DAC, this register can be written to if a * fixed output voltage is desired (ex. DC Generation) with the FIFO disabled, * or it can write with variable output (ex. AC Generation) by enabling the * FIFO and writing to this register. The value will then be written to the * FIFO internally. With FIFO enabled with @ref DL_DAC12_enableFIFO, the * FIFO-specific interrupts will be generated inside the DAC. * * The DMA trigger generation mechanism must be kept disabled when CPU is used * to load data into DAC * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] dataValue value to be written to the bit-field from 0x0 to * 0xFFF. It can be either binary or two's complement */ __STATIC_INLINE void DL_DAC12_output12(DAC12_Regs *dac12, uint32_t dataValue) { dac12->DATA0 = (dataValue & DAC12_DATA0_DATA_VALUE_MASK); } /** * @brief Fills the DAC fifo with 8-bit data values from the buffer * * Writes as many values from the data buffer to the FIFO as possible, * and then exits when either the count is matched or the FIFO is full. * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] buffer array containing the data values (0x00 - 0xFF) to * be written * @param[in] count length of the buffer, or maximum desired transfer * * @return Count successfully transferred to the FIFO * * @retval 0 - max(number of empty fifo slots, count) */ uint32_t DL_DAC12_fillFIFO8( DAC12_Regs *dac12, const uint8_t *buffer, uint32_t count); /** * @brief Fills the DAC fifo with 12-bit data values from the buffer * * Writes as many values from the data buffer to the FIFO as possible, * and then exits when either the count is matched or the FIFO is full. * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] buffer array containing the data values (0x00 - 0xFFF) to * be written * @param[in] count length of the buffer, or maximum desired transfer * * @return Count successfully transfered to the FIFO * * @retval 0 - max(number of empty fifo slots, count) */ uint32_t DL_DAC12_fillFIFO12( DAC12_Regs *dac12, const uint16_t *buffer, uint32_t count); /** * @brief Blocking 8-bit output to the DAC FIFO * * Waits until the FIFO is not full, then writes a single value * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] data data value (0x00 - 0xFF) to be written */ void DL_DAC12_outputBlocking8(DAC12_Regs *dac12, uint8_t data); /** * @brief Blocking 12-bit output to the DAC FIFO * * Waits until the FIFO is not full, then writes a single value * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] data data value (0x000 - 0xFFF) to be written */ void DL_DAC12_outputBlocking12(DAC12_Regs *dac12, uint16_t data); /** * @brief Checks the raw interrupt status of one or more interrupts * * The raw interrupt status is independent of whether a specific interrupt is * enabled. * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] interruptMask the desired interrupt(s). One or more of * @ref DL_DAC12_INTERRUPT * * @return currently asserted interrupts (whether enabled or not) bit-wise * AND with the inputted interrupts * * @retval 0 no interrupts that were inputted are currently asserted * @retval not 0 a bit-wise OR of the inputted @ref DL_DAC12_INTERRUPT * registers that are currently asserted. */ __STATIC_INLINE uint32_t DL_DAC12_getInterruptStatus( const DAC12_Regs *dac12, uint32_t interruptMask) { return (dac12->CPU_INT.RIS & interruptMask); } /** * @brief Clears the interrupt status of one or more interrupts * * Accesses the write only interrupt clear (ICLR) register and writes a 1 to * the bits specified. Any bit that has 1 written to it will clear that pending * interrupt if it is currently pending. * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] interruptMask the desired interrupt(s). One or more of * @ref DL_DAC12_INTERRUPT */ __STATIC_INLINE void DL_DAC12_clearInterruptStatus( DAC12_Regs *dac12, uint32_t interruptMask) { dac12->CPU_INT.ICLR = interruptMask; } /** * @brief Enables one or more interrupts * * Access and write to the IMASK register to enable the interrupts specified. * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] interruptMask the desired interrupt(s). One or more of * @ref DL_DAC12_INTERRUPT */ __STATIC_INLINE void DL_DAC12_enableInterrupt( DAC12_Regs *dac12, uint32_t interruptMask) { dac12->CPU_INT.IMASK |= interruptMask; } /** * @brief Disables one or more interrupts * * Access and write to the IMASK register to disable the interrupts specified. * * @param[in] dac12 pointer to the register overlay of the peripheral * @param[in] interruptMask the desired interrupt(s). One or more of * @ref DL_DAC12_INTERRUPT */ __STATIC_INLINE void DL_DAC12_disableInterrupt( DAC12_Regs *dac12, uint32_t interruptMask) { dac12->CPU_INT.IMASK &= ~interruptMask; } /** * @brief Gets the highest priority pending interrupt * * Accesses and reads the IIDX register to obtain the highest currently * pending interrupt. Interrupts with lower offsets (and smaller values) are * higher priority than interrupts with higher offsets (and larger values). * In order for the interrupt to be pending, it must have been enabled and * asserted. Clearing the interrupt should will un-pend the interrupt. * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return highest priority pending interrupt * * @retval One of @ref DL_DAC12_IIDX */ __STATIC_INLINE DL_DAC12_IIDX DL_DAC12_getPendingInterrupt( const DAC12_Regs *dac12) { return ((DL_DAC12_IIDX) dac12->CPU_INT.IIDX); } /** * @brief Checks if the DAC FIFO is currently full * * Accesses the raw interrupt status (RIS) register in order to get the * current state of the FIFOFull Interrupt flag. * * @param[in] dac12 pointer to the register overlay of the peripheral * * @return status of FIFO full interrupt flag * * @retval true FIFO is currently full * @retval false FIFO is not full */ __STATIC_INLINE bool DL_DAC12_isFIFOFull(const DAC12_Regs *dac12) { uint32_t t = DL_DAC12_getInterruptStatus(dac12, DL_DAC12_INTERRUPT_FIFO_FULL); return (t == DL_DAC12_INTERRUPT_FIFO_FULL); } /** * @brief Sets the event publisher channel id * * @param[in] dac12 Pointer to the register overlay for the * peripheral * @param[in] chanID Channel ID number. Valid range 0-15. If ChanID == 0 * publisher is disconnected. */ __STATIC_INLINE void DL_DAC12_setPublisherChanID( DAC12_Regs *dac12, uint8_t chanID) { dac12->FPUB_1 = (chanID & DAC12_FPUB_1_CHANID_MAXIMUM); } /** * @brief Gets the event publisher channel id * * @param[in] dac12 Pointer to the register overlay for the * peripheral * @return Event publisher channel ID * */ __STATIC_INLINE uint8_t DL_DAC12_getPublisherChanID(const DAC12_Regs *dac12) { return ((uint8_t)((dac12->FPUB_1) & DAC12_FPUB_1_CHANID_MASK)); } /** * @brief Sets the event subscriber channel id * * @param[in] dac12 Pointer to the register overlay for the * peripheral * @param[in] index Specifies the register event index to be configured * @param[in] chanID Channel ID number. Valid range 0-15. If ChanID == 0 * subscriber is disconnected. */ __STATIC_INLINE void DL_DAC12_setSubscriberChanID( DAC12_Regs *dac12, DL_DAC12_SUBSCRIBER_INDEX index, uint8_t chanID) { volatile uint32_t *pReg = &dac12->FSUB_0; *(pReg + (uint32_t) index) = (chanID & DAC12_FSUB_0_CHANID_MAXIMUM); } /** * @brief Gets the event subscriber channel id * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] index Specifies the register event index to be configured * * @return Event subscriber channel ID * */ __STATIC_INLINE uint8_t DL_DAC12_getSubscriberChanID( DAC12_Regs *dac12, DL_DAC12_SUBSCRIBER_INDEX index) { volatile uint32_t *pReg = &dac12->FSUB_0; return ((uint8_t)(*(pReg + (uint32_t) index) & DAC12_FSUB_0_CHANID_MASK)); } /** * @brief Enable DAC event * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] eventMask Bit mask of interrupts to enable. Bitwise OR of * @ref DL_DAC12_EVENT. */ __STATIC_INLINE void DL_DAC12_enableEvent( DAC12_Regs *dac12, uint32_t eventMask) { dac12->GEN_EVENT.IMASK |= (eventMask); } /** * @brief Disable DAC event * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] eventMask Bit mask of interrupts to enable. Bitwise OR of * @ref DL_DAC12_EVENT. */ __STATIC_INLINE void DL_DAC12_disableEvent( DAC12_Regs *dac12, uint32_t eventMask) { dac12->GEN_EVENT.IMASK &= ~(eventMask); } /** * @brief Check which DAC events are enabled * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] eventMask Bit mask of interrupts to check. Bitwise OR of * @ref DL_DAC12_EVENT. * * @return Which of the requested DAC interrupts are enabled * * @retval Bitwise OR of @ref DL_DAC12_EVENT values */ __STATIC_INLINE uint32_t DL_DAC12_getEnabledEvents( const DAC12_Regs *dac12, uint32_t eventMask) { return ((dac12->GEN_EVENT.IMASK) & (eventMask)); } /** * @brief Check event flag of enabled DAC event * * Checks if any of the DAC events that were previously enabled are * pending. * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] eventMask Bit mask of interrupts to check. Bitwise OR of * @ref DL_DAC12_EVENT. * * @return Which of the requested DAC interrupts are pending * * @retval Bitwise OR of @ref DL_DAC12_EVENT values * * @sa DL_DAC12_enableInterrupt */ __STATIC_INLINE uint32_t DL_DAC12_getEnabledEventStatus( const DAC12_Regs *dac12, uint32_t eventMask) { return ((dac12->GEN_EVENT.MIS) & eventMask); } /** * @brief Check interrupt flag of any DAC event * * Checks if any events are pending. Events do not have to * be previously enabled. * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] eventMask Bit mask of interrupts to check. Bitwise OR of * @ref DL_DAC12_EVENT. * * @return Which of the requested DAC interrupts are pending * * @retval Bitwise OR of @ref DL_DAC12_EVENT values */ __STATIC_INLINE uint32_t DL_DAC12_getRawEventsStatus( const DAC12_Regs *dac12, uint32_t eventMask) { return ((dac12->GEN_EVENT.RIS) & eventMask); } /** * @brief Clear pending DAC events * * @param[in] dac12 Pointer to the register overlay for the peripheral * @param[in] eventMask Bit mask of interrupts to clear. Bitwise OR of * @ref DL_DAC12_EVENT. */ __STATIC_INLINE void DL_DAC12_clearEventsStatus( DAC12_Regs *dac12, uint32_t eventMask) { dac12->GEN_EVENT.ICLR |= (eventMask); } #ifdef __cplusplus } #endif #endif /* __MSPM0_HAS_DAC12__ */ #endif /* ti_dl_dl_dac12__include */ /** @}*/