TUKS MCU Introductory course / TUKS-COURSE-THERMOMETER

Fork of TUKS-COURSE-TIMER by TUKS MCU Introductory course

Committer:
elmot
Date:
Fri Feb 24 21:13:56 2017 +0000
Revision:
1:d0dfbce63a89
Ready-to-copy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elmot 1:d0dfbce63a89 1 /**
elmot 1:d0dfbce63a89 2 ******************************************************************************
elmot 1:d0dfbce63a89 3 * @file stm32l4xx_ll_dac.h
elmot 1:d0dfbce63a89 4 * @author MCD Application Team
elmot 1:d0dfbce63a89 5 * @version V1.5.1
elmot 1:d0dfbce63a89 6 * @date 31-May-2016
elmot 1:d0dfbce63a89 7 * @brief Header file of DAC LL module.
elmot 1:d0dfbce63a89 8 ******************************************************************************
elmot 1:d0dfbce63a89 9 * @attention
elmot 1:d0dfbce63a89 10 *
elmot 1:d0dfbce63a89 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
elmot 1:d0dfbce63a89 12 *
elmot 1:d0dfbce63a89 13 * Redistribution and use in source and binary forms, with or without modification,
elmot 1:d0dfbce63a89 14 * are permitted provided that the following conditions are met:
elmot 1:d0dfbce63a89 15 * 1. Redistributions of source code must retain the above copyright notice,
elmot 1:d0dfbce63a89 16 * this list of conditions and the following disclaimer.
elmot 1:d0dfbce63a89 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
elmot 1:d0dfbce63a89 18 * this list of conditions and the following disclaimer in the documentation
elmot 1:d0dfbce63a89 19 * and/or other materials provided with the distribution.
elmot 1:d0dfbce63a89 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
elmot 1:d0dfbce63a89 21 * may be used to endorse or promote products derived from this software
elmot 1:d0dfbce63a89 22 * without specific prior written permission.
elmot 1:d0dfbce63a89 23 *
elmot 1:d0dfbce63a89 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
elmot 1:d0dfbce63a89 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
elmot 1:d0dfbce63a89 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
elmot 1:d0dfbce63a89 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
elmot 1:d0dfbce63a89 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
elmot 1:d0dfbce63a89 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
elmot 1:d0dfbce63a89 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
elmot 1:d0dfbce63a89 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
elmot 1:d0dfbce63a89 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
elmot 1:d0dfbce63a89 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
elmot 1:d0dfbce63a89 34 *
elmot 1:d0dfbce63a89 35 ******************************************************************************
elmot 1:d0dfbce63a89 36 */
elmot 1:d0dfbce63a89 37
elmot 1:d0dfbce63a89 38 /* Define to prevent recursive inclusion -------------------------------------*/
elmot 1:d0dfbce63a89 39 #ifndef __STM32L4xx_LL_DAC_H
elmot 1:d0dfbce63a89 40 #define __STM32L4xx_LL_DAC_H
elmot 1:d0dfbce63a89 41
elmot 1:d0dfbce63a89 42 #ifdef __cplusplus
elmot 1:d0dfbce63a89 43 extern "C" {
elmot 1:d0dfbce63a89 44 #endif
elmot 1:d0dfbce63a89 45
elmot 1:d0dfbce63a89 46 /* Includes ------------------------------------------------------------------*/
elmot 1:d0dfbce63a89 47 #include "stm32l4xx.h"
elmot 1:d0dfbce63a89 48
elmot 1:d0dfbce63a89 49 /** @addtogroup STM32L4xx_LL_Driver
elmot 1:d0dfbce63a89 50 * @{
elmot 1:d0dfbce63a89 51 */
elmot 1:d0dfbce63a89 52
elmot 1:d0dfbce63a89 53 #if defined (DAC1)
elmot 1:d0dfbce63a89 54
elmot 1:d0dfbce63a89 55 /** @defgroup DAC_LL DAC
elmot 1:d0dfbce63a89 56 * @{
elmot 1:d0dfbce63a89 57 */
elmot 1:d0dfbce63a89 58
elmot 1:d0dfbce63a89 59 /* Private types -------------------------------------------------------------*/
elmot 1:d0dfbce63a89 60 /* Private variables ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 61
elmot 1:d0dfbce63a89 62 /* Private constants ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 63 /** @defgroup DAC_LL_Private_Constants DAC Private Constants
elmot 1:d0dfbce63a89 64 * @{
elmot 1:d0dfbce63a89 65 */
elmot 1:d0dfbce63a89 66
elmot 1:d0dfbce63a89 67 /* Internal masks for DAC channels definition */
elmot 1:d0dfbce63a89 68 /* To select into literal LL_DAC_CHANNEL_x the relevant bits for: */
elmot 1:d0dfbce63a89 69 /* - channel bits position into registers CR, MCR, CCR, SHHR, SHRR */
elmot 1:d0dfbce63a89 70 /* - channel bits position into register SWTRIG */
elmot 1:d0dfbce63a89 71 /* - channel register offset of data holding register DHRx */
elmot 1:d0dfbce63a89 72 /* - channel register offset of data output register DORx */
elmot 1:d0dfbce63a89 73 /* - channel register offset of sample-and-hold sample time register SHSRx */
elmot 1:d0dfbce63a89 74
elmot 1:d0dfbce63a89 75 #define DAC_CR_CH1_BITOFFSET ((uint32_t) 0U) /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 1 */
elmot 1:d0dfbce63a89 76 #define DAC_CR_CH2_BITOFFSET ((uint32_t)16U) /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 2 */
elmot 1:d0dfbce63a89 77 #define DAC_CR_CHX_BITOFFSET_MASK (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET)
elmot 1:d0dfbce63a89 78
elmot 1:d0dfbce63a89 79 #define DAC_SWTR_CH1 (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. This bit is into area of LL_DAC_CR_CHx_BITOFFSET but excluded by mask DAC_CR_CHX_BITOFFSET_MASK (done to be enable to trig SW start of both DAC channels simultaneously). */
elmot 1:d0dfbce63a89 80 #define DAC_SWTR_CH2 (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. This bit is into area of LL_DAC_CR_CHx_BITOFFSET but excluded by mask DAC_CR_CHX_BITOFFSET_MASK (done to be enable to trig SW start of both DAC channels simultaneously). */
elmot 1:d0dfbce63a89 81 #define DAC_SWTR_CHX_MASK (DAC_SWTR_CH1 | DAC_SWTR_CH2)
elmot 1:d0dfbce63a89 82
elmot 1:d0dfbce63a89 83 #define DAC_REG_DHR12R1_REGOFFSET ((uint32_t)0x00000000U) /* Register DHR12Rx channel 1 taken as reference */
elmot 1:d0dfbce63a89 84 #define DAC_REG_DHR12L1_REGOFFSET ((uint32_t)0x00100000U) /* Register offset of DHR12Lx channel 1 versus DHR12Rx channel 1 (shifted left of 20 bits) */
elmot 1:d0dfbce63a89 85 #define DAC_REG_DHR8R1_REGOFFSET ((uint32_t)0x02000000U) /* Register offset of DHR8Rx channel 1 versus DHR12Rx channel 1 (shifted left of 24 bits) */
elmot 1:d0dfbce63a89 86 #define DAC_REG_DHR12R2_REGOFFSET ((uint32_t)0x00030000U) /* Register offset of DHR12Rx channel 2 versus DHR12Rx channel 1 (shifted left of 16 bits) */
elmot 1:d0dfbce63a89 87 #define DAC_REG_DHR12L2_REGOFFSET ((uint32_t)0x00400000U) /* Register offset of DHR12Lx channel 2 versus DHR12Rx channel 1 (shifted left of 20 bits) */
elmot 1:d0dfbce63a89 88 #define DAC_REG_DHR8R2_REGOFFSET ((uint32_t)0x05000000U) /* Register offset of DHR8Rx channel 2 versus DHR12Rx channel 1 (shifted left of 24 bits) */
elmot 1:d0dfbce63a89 89 #define DAC_REG_DHR12RX_REGOFFSET_MASK ((uint32_t)0x000F0000U)
elmot 1:d0dfbce63a89 90 #define DAC_REG_DHR12LX_REGOFFSET_MASK ((uint32_t)0x00F00000U)
elmot 1:d0dfbce63a89 91 #define DAC_REG_DHR8RX_REGOFFSET_MASK ((uint32_t)0x0F000000U)
elmot 1:d0dfbce63a89 92 #define DAC_REG_DHRX_REGOFFSET_MASK (DAC_REG_DHR12RX_REGOFFSET_MASK | DAC_REG_DHR12LX_REGOFFSET_MASK | DAC_REG_DHR8RX_REGOFFSET_MASK)
elmot 1:d0dfbce63a89 93
elmot 1:d0dfbce63a89 94 #define DAC_REG_DOR1_REGOFFSET ((uint32_t)0x00000000U) /* Register DORx channel 1 taken as reference */
elmot 1:d0dfbce63a89 95 #define DAC_REG_DOR2_REGOFFSET ((uint32_t)0x10000000U)/* Register offset of DORx channel 1 versus DORx channel 2 (shifted left of 28 bits) */
elmot 1:d0dfbce63a89 96 #define DAC_REG_DORX_REGOFFSET_MASK (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET)
elmot 1:d0dfbce63a89 97
elmot 1:d0dfbce63a89 98 #define DAC_REG_SHSR1_REGOFFSET ((uint32_t)0x00000000U) /* Register SHSRx channel 1 taken as reference */
elmot 1:d0dfbce63a89 99 #define DAC_REG_SHSR2_REGOFFSET ((uint32_t)0x00001000U) /* Register offset of SHSRx channel 1 versus SHSRx channel 2 (shifted left of 12 bits) */
elmot 1:d0dfbce63a89 100 #define DAC_REG_SHSRX_REGOFFSET_MASK (DAC_REG_SHSR1_REGOFFSET | DAC_REG_SHSR2_REGOFFSET)
elmot 1:d0dfbce63a89 101
elmot 1:d0dfbce63a89 102 /* DAC registers bits positions */
elmot 1:d0dfbce63a89 103 #define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS ((uint32_t)16U) /* Value equivalent to POSITION_VAL(DAC_DHR12RD_DACC2DHR) */
elmot 1:d0dfbce63a89 104 #define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS ((uint32_t)20U) /* Value equivalent to POSITION_VAL(DAC_DHR12LD_DACC2DHR) */
elmot 1:d0dfbce63a89 105 #define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS ((uint32_t) 8U) /* Value equivalent to POSITION_VAL(DAC_DHR8RD_DACC2DHR) */
elmot 1:d0dfbce63a89 106
elmot 1:d0dfbce63a89 107 /* Miscellaneous data */
elmot 1:d0dfbce63a89 108 #define DAC_DIGITAL_SCALE_12BITS ((uint32_t)4095U) /* Full-scale digital value with a resolution of 12 bits (voltage range determined by analog voltage references Vref+ and Vref-, refer to reference manual) */
elmot 1:d0dfbce63a89 109
elmot 1:d0dfbce63a89 110 /**
elmot 1:d0dfbce63a89 111 * @}
elmot 1:d0dfbce63a89 112 */
elmot 1:d0dfbce63a89 113
elmot 1:d0dfbce63a89 114
elmot 1:d0dfbce63a89 115 /* Private macros ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 116 /** @defgroup DAC_LL_Private_Macros DAC Private Macros
elmot 1:d0dfbce63a89 117 * @{
elmot 1:d0dfbce63a89 118 */
elmot 1:d0dfbce63a89 119
elmot 1:d0dfbce63a89 120 /**
elmot 1:d0dfbce63a89 121 * @brief Driver macro reserved for internal use: isolate bits with the
elmot 1:d0dfbce63a89 122 * selected mask and shift them to the register LSB
elmot 1:d0dfbce63a89 123 * (shift mask on register position bit 0).
elmot 1:d0dfbce63a89 124 * @param __BITS__ Bits in register 32 bits
elmot 1:d0dfbce63a89 125 * @param __MASK__ Mask in register 32 bits
elmot 1:d0dfbce63a89 126 * @retval Bits in register 32 bits
elmot 1:d0dfbce63a89 127 */
elmot 1:d0dfbce63a89 128 #define __DAC_MASK_SHIFT(__BITS__, __MASK__) \
elmot 1:d0dfbce63a89 129 (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__)))
elmot 1:d0dfbce63a89 130
elmot 1:d0dfbce63a89 131 /**
elmot 1:d0dfbce63a89 132 * @brief Driver macro reserved for internal use: set a pointer to
elmot 1:d0dfbce63a89 133 * a register from a register basis from which an offset
elmot 1:d0dfbce63a89 134 * is applied.
elmot 1:d0dfbce63a89 135 * @param __REG__ Register basis from which the offset is applied.
elmot 1:d0dfbce63a89 136 * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers).
elmot 1:d0dfbce63a89 137 * @retval Pointer to register address
elmot 1:d0dfbce63a89 138 */
elmot 1:d0dfbce63a89 139 #define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
elmot 1:d0dfbce63a89 140 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
elmot 1:d0dfbce63a89 141
elmot 1:d0dfbce63a89 142 /**
elmot 1:d0dfbce63a89 143 * @}
elmot 1:d0dfbce63a89 144 */
elmot 1:d0dfbce63a89 145
elmot 1:d0dfbce63a89 146
elmot 1:d0dfbce63a89 147 /* Exported types ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 148 #if defined(USE_FULL_LL_DRIVER)
elmot 1:d0dfbce63a89 149 /** @defgroup DAC_LL_ES_INIT DAC Exported Init structure
elmot 1:d0dfbce63a89 150 * @{
elmot 1:d0dfbce63a89 151 */
elmot 1:d0dfbce63a89 152
elmot 1:d0dfbce63a89 153 /**
elmot 1:d0dfbce63a89 154 * @brief Structure definition of some features of DAC instance.
elmot 1:d0dfbce63a89 155 */
elmot 1:d0dfbce63a89 156 typedef struct
elmot 1:d0dfbce63a89 157 {
elmot 1:d0dfbce63a89 158 uint32_t TriggerSource; /*!< Set the conversion trigger source for the selected DAC channel: internal (SW start) or from external IP (timer event, external interrupt line).
elmot 1:d0dfbce63a89 159 This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE
elmot 1:d0dfbce63a89 160
elmot 1:d0dfbce63a89 161 This feature can be modified afterwards using unitary function @ref LL_DAC_SetTriggerSource(). */
elmot 1:d0dfbce63a89 162
elmot 1:d0dfbce63a89 163 uint32_t WaveAutoGeneration; /*!< Set the waveform automatic generation mode for the selected DAC channel.
elmot 1:d0dfbce63a89 164 This parameter can be a value of @ref DAC_LL_EC_WAVE_AUTO_GENERATION_MODE
elmot 1:d0dfbce63a89 165
elmot 1:d0dfbce63a89 166 This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveAutoGeneration(). */
elmot 1:d0dfbce63a89 167
elmot 1:d0dfbce63a89 168 uint32_t WaveAutoGenerationConfig; /*!< Set the waveform automatic generation mode for the selected DAC channel.
elmot 1:d0dfbce63a89 169 If waveform automatic generation mode is set to noise, this parameter can be a value of @ref DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS
elmot 1:d0dfbce63a89 170 If waveform automatic generation mode is set to triangle, this parameter can be a value of @ref DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE
elmot 1:d0dfbce63a89 171 @note If waveform automatic generation mode is disabled, this parameter is discarded.
elmot 1:d0dfbce63a89 172
elmot 1:d0dfbce63a89 173 This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveNoiseLFSR() or @ref LL_DAC_SetWaveTriangleAmplitude(), depending on the wave automatic generation selected. */
elmot 1:d0dfbce63a89 174
elmot 1:d0dfbce63a89 175 uint32_t OutputBuffer; /*!< Set the output buffer for the selected DAC channel.
elmot 1:d0dfbce63a89 176 This parameter can be a value of @ref DAC_LL_EC_OUTPUT_BUFFER
elmot 1:d0dfbce63a89 177
elmot 1:d0dfbce63a89 178 This feature can be modified afterwards using unitary function @ref LL_DAC_SetOutputBuffer(). */
elmot 1:d0dfbce63a89 179
elmot 1:d0dfbce63a89 180 uint32_t OutputConnection; /*!< Set the output connection for the selected DAC channel.
elmot 1:d0dfbce63a89 181 This parameter can be a value of @ref DAC_LL_EC_OUTPUT_CONNECTION
elmot 1:d0dfbce63a89 182
elmot 1:d0dfbce63a89 183 This feature can be modified afterwards using unitary function @ref LL_DAC_SetOutputConnection(). */
elmot 1:d0dfbce63a89 184
elmot 1:d0dfbce63a89 185 uint32_t OutputMode; /*!< Set the output mode normal or sample-and-hold for the selected DAC channel.
elmot 1:d0dfbce63a89 186 This parameter can be a value of @ref DAC_LL_EC_OUTPUT_MODE
elmot 1:d0dfbce63a89 187
elmot 1:d0dfbce63a89 188 This feature can be modified afterwards using unitary function @ref LL_DAC_SetOutputMode(). */
elmot 1:d0dfbce63a89 189
elmot 1:d0dfbce63a89 190 } LL_DAC_InitTypeDef;
elmot 1:d0dfbce63a89 191
elmot 1:d0dfbce63a89 192 /**
elmot 1:d0dfbce63a89 193 * @}
elmot 1:d0dfbce63a89 194 */
elmot 1:d0dfbce63a89 195 #endif /* USE_FULL_LL_DRIVER */
elmot 1:d0dfbce63a89 196
elmot 1:d0dfbce63a89 197 /* Exported constants --------------------------------------------------------*/
elmot 1:d0dfbce63a89 198 /** @defgroup DAC_LL_Exported_Constants DAC Exported Constants
elmot 1:d0dfbce63a89 199 * @{
elmot 1:d0dfbce63a89 200 */
elmot 1:d0dfbce63a89 201
elmot 1:d0dfbce63a89 202 /** @defgroup DAC_LL_EC_GET_FLAG DAC flags
elmot 1:d0dfbce63a89 203 * @brief Flags defines which can be used with LL_DAC_ReadReg function
elmot 1:d0dfbce63a89 204 * @{
elmot 1:d0dfbce63a89 205 */
elmot 1:d0dfbce63a89 206 /* DAC channel 1 flags */
elmot 1:d0dfbce63a89 207 #define LL_DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1) /*!< DAC channel 1 flag DMA underrun */
elmot 1:d0dfbce63a89 208 #define LL_DAC_FLAG_CAL1 (DAC_SR_CAL_FLAG1) /*!< DAC channel 1 flag offset calibration status */
elmot 1:d0dfbce63a89 209 #define LL_DAC_FLAG_BWST1 (DAC_SR_BWST1) /*!< DAC channel 1 flag busy writing sample time */
elmot 1:d0dfbce63a89 210
elmot 1:d0dfbce63a89 211 /* DAC channel 2 flags */
elmot 1:d0dfbce63a89 212 #define LL_DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2) /*!< DAC channel 2 flag DMA underrun */
elmot 1:d0dfbce63a89 213 #define LL_DAC_FLAG_CAL2 (DAC_SR_CAL_FLAG2) /*!< DAC channel 2 flag offset calibration status */
elmot 1:d0dfbce63a89 214 #define LL_DAC_FLAG_BWST2 (DAC_SR_BWST2) /*!< DAC channel 2 flag busy writing sample time */
elmot 1:d0dfbce63a89 215 /**
elmot 1:d0dfbce63a89 216 * @}
elmot 1:d0dfbce63a89 217 */
elmot 1:d0dfbce63a89 218
elmot 1:d0dfbce63a89 219 /** @defgroup DAC_LL_EC_IT DAC interruptions
elmot 1:d0dfbce63a89 220 * @brief IT defines which can be used with LL_DAC_ReadReg and LL_DAC_WriteReg functions
elmot 1:d0dfbce63a89 221 * @{
elmot 1:d0dfbce63a89 222 */
elmot 1:d0dfbce63a89 223 #define LL_DAC_IT_DMAUDRIE1 (DAC_CR_DMAUDRIE1) /*!< DAC channel 1 interruption DMA underrun */
elmot 1:d0dfbce63a89 224 #define LL_DAC_IT_DMAUDRIE2 (DAC_CR_DMAUDRIE2) /*!< DAC channel 2 interruption DMA underrun */
elmot 1:d0dfbce63a89 225 /**
elmot 1:d0dfbce63a89 226 * @}
elmot 1:d0dfbce63a89 227 */
elmot 1:d0dfbce63a89 228
elmot 1:d0dfbce63a89 229 /** @defgroup DAC_LL_EC_CHANNEL DAC channels
elmot 1:d0dfbce63a89 230 * @{
elmot 1:d0dfbce63a89 231 */
elmot 1:d0dfbce63a89 232 #define LL_DAC_CHANNEL_1 (DAC_REG_SHSR1_REGOFFSET | DAC_REG_DOR1_REGOFFSET | DAC_REG_DHR12R1_REGOFFSET | DAC_REG_DHR12L1_REGOFFSET | DAC_REG_DHR8R1_REGOFFSET | DAC_CR_CH1_BITOFFSET | DAC_SWTR_CH1) /*!< DAC channel 1 */
elmot 1:d0dfbce63a89 233 #define LL_DAC_CHANNEL_2 (DAC_REG_SHSR2_REGOFFSET | DAC_REG_DOR2_REGOFFSET | DAC_REG_DHR12R2_REGOFFSET | DAC_REG_DHR12L2_REGOFFSET | DAC_REG_DHR8R2_REGOFFSET | DAC_CR_CH2_BITOFFSET | DAC_SWTR_CH2) /*!< DAC channel 2 */
elmot 1:d0dfbce63a89 234 /**
elmot 1:d0dfbce63a89 235 * @}
elmot 1:d0dfbce63a89 236 */
elmot 1:d0dfbce63a89 237
elmot 1:d0dfbce63a89 238 /** @defgroup DAC_LL_EC_OPERATING_MODE DAC operating mode
elmot 1:d0dfbce63a89 239 * @{
elmot 1:d0dfbce63a89 240 */
elmot 1:d0dfbce63a89 241 #define LL_DAC_MODE_NORMAL_OPERATION ((uint32_t)0x00000000U) /*!< DAC channel in mode normal operation */
elmot 1:d0dfbce63a89 242 #define LL_DAC_MODE_CALIBRATION (DAC_CR_CEN1) /*!< DAC channel in mode calibration */
elmot 1:d0dfbce63a89 243 /**
elmot 1:d0dfbce63a89 244 * @}
elmot 1:d0dfbce63a89 245 */
elmot 1:d0dfbce63a89 246
elmot 1:d0dfbce63a89 247 /** @defgroup DAC_LL_EC_TRIGGER_SOURCE DAC trigger source
elmot 1:d0dfbce63a89 248 * @{
elmot 1:d0dfbce63a89 249 */
elmot 1:d0dfbce63a89 250 #define LL_DAC_TRIG_SOFTWARE (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger internal (SW start) */
elmot 1:d0dfbce63a89 251 #define LL_DAC_TRIG_EXT_TIM2_TRGO (DAC_CR_TSEL1_2 ) /*!< DAC channel conversion trigger from external IP: TIM2 TRGO. */
elmot 1:d0dfbce63a89 252 #define LL_DAC_TRIG_EXT_TIM4_TRGO (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM4 TRGO. */
elmot 1:d0dfbce63a89 253 #define LL_DAC_TRIG_EXT_TIM5_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM5 TRGO. */
elmot 1:d0dfbce63a89 254 #define LL_DAC_TRIG_EXT_TIM6_TRGO ((uint32_t)0x00000000U) /*!< DAC channel conversion trigger from external IP: TIM6 TRGO. */
elmot 1:d0dfbce63a89 255 #define LL_DAC_TRIG_EXT_TIM7_TRGO ( DAC_CR_TSEL1_1 ) /*!< DAC channel conversion trigger from external IP: TIM7 TRGO. */
elmot 1:d0dfbce63a89 256 #define LL_DAC_TRIG_EXT_TIM8_TRGO ( DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM8 TRGO. */
elmot 1:d0dfbce63a89 257 #define LL_DAC_TRIG_EXT_EXTI_LINE9 (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC channel conversion trigger from external IP: external interrupt line 9. */
elmot 1:d0dfbce63a89 258 /**
elmot 1:d0dfbce63a89 259 * @}
elmot 1:d0dfbce63a89 260 */
elmot 1:d0dfbce63a89 261
elmot 1:d0dfbce63a89 262 /** @defgroup DAC_LL_EC_WAVE_AUTO_GENERATION_MODE DAC waveform automatic generation mode
elmot 1:d0dfbce63a89 263 * @{
elmot 1:d0dfbce63a89 264 */
elmot 1:d0dfbce63a89 265 #define LL_DAC_WAVE_AUTO_GENERATION_NONE ((uint32_t)0x00000000U) /*!< DAC channel wave auto generation mode disabled. */
elmot 1:d0dfbce63a89 266 #define LL_DAC_WAVE_AUTO_GENERATION_NOISE (DAC_CR_WAVE1_0) /*!< DAC channel wave auto generation mode enabled, set generated noise waveform. */
elmot 1:d0dfbce63a89 267 #define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1) /*!< DAC channel wave auto generation mode enabled, set generated triangle waveform. */
elmot 1:d0dfbce63a89 268 /**
elmot 1:d0dfbce63a89 269 * @}
elmot 1:d0dfbce63a89 270 */
elmot 1:d0dfbce63a89 271
elmot 1:d0dfbce63a89 272 /** @defgroup DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS DAC wave generation - Noise LFSR unmask bits
elmot 1:d0dfbce63a89 273 * @{
elmot 1:d0dfbce63a89 274 */
elmot 1:d0dfbce63a89 275 #define LL_DAC_NOISE_LFSR_UNMASK_BIT0 ((uint32_t)0x00000000U) /*!< Noise wave generation, unmask LFSR bit0, for the selected DAC channel */
elmot 1:d0dfbce63a89 276 #define LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 ( DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[1:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 277 #define LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 ( DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[2:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 278 #define LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[3:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 279 #define LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 ( DAC_CR_MAMP1_2 ) /*!< Noise wave generation, unmask LFSR bits[4:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 280 #define LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[5:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 281 #define LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[6:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 282 #define LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[7:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 283 #define LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 (DAC_CR_MAMP1_3 ) /*!< Noise wave generation, unmask LFSR bits[8:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 284 #define LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[9:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 285 #define LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[10:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 286 #define LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[11:0], for the selected DAC channel */
elmot 1:d0dfbce63a89 287 /**
elmot 1:d0dfbce63a89 288 * @}
elmot 1:d0dfbce63a89 289 */
elmot 1:d0dfbce63a89 290
elmot 1:d0dfbce63a89 291 /** @defgroup DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE DAC wave generation - Triangle amplitude
elmot 1:d0dfbce63a89 292 * @{
elmot 1:d0dfbce63a89 293 */
elmot 1:d0dfbce63a89 294 #define LL_DAC_TRIANGLE_AMPLITUDE_1 ((uint32_t)0x00000000U) /*!< Triangle wave generation, amplitude of 1 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 295 #define LL_DAC_TRIANGLE_AMPLITUDE_3 ( DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 3 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 296 #define LL_DAC_TRIANGLE_AMPLITUDE_7 ( DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 7 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 297 #define LL_DAC_TRIANGLE_AMPLITUDE_15 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 15 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 298 #define LL_DAC_TRIANGLE_AMPLITUDE_31 ( DAC_CR_MAMP1_2 ) /*!< Triangle wave generation, amplitude of 31 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 299 #define LL_DAC_TRIANGLE_AMPLITUDE_63 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 63 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 300 #define LL_DAC_TRIANGLE_AMPLITUDE_127 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 127 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 301 #define LL_DAC_TRIANGLE_AMPLITUDE_255 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 255 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 302 #define LL_DAC_TRIANGLE_AMPLITUDE_511 (DAC_CR_MAMP1_3 ) /*!< Triangle wave generation, amplitude of 512 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 303 #define LL_DAC_TRIANGLE_AMPLITUDE_1023 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 1023 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 304 #define LL_DAC_TRIANGLE_AMPLITUDE_2047 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 2047 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 305 #define LL_DAC_TRIANGLE_AMPLITUDE_4095 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 4095 LSB of DAC output range, for the selected DAC channel */
elmot 1:d0dfbce63a89 306 /**
elmot 1:d0dfbce63a89 307 * @}
elmot 1:d0dfbce63a89 308 */
elmot 1:d0dfbce63a89 309
elmot 1:d0dfbce63a89 310 /** @defgroup DAC_LL_EC_OUTPUT_MODE DAC channel output mode
elmot 1:d0dfbce63a89 311 * @{
elmot 1:d0dfbce63a89 312 */
elmot 1:d0dfbce63a89 313 #define LL_DAC_OUTPUT_MODE_NORMAL ((uint32_t)0x00000000U) /*!< The selected DAC channel output is on mode normal. */
elmot 1:d0dfbce63a89 314 #define LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD (DAC_MCR_MODE1_2) /*!< The selected DAC channel output is on mode sample-and-hold. Mode sample-and-hold requires an external capacitor, refer to description of function @ref LL_DAC_ConfigOutput() or @ref LL_DAC_SetOutputMode(). */
elmot 1:d0dfbce63a89 315 /**
elmot 1:d0dfbce63a89 316 * @}
elmot 1:d0dfbce63a89 317 */
elmot 1:d0dfbce63a89 318
elmot 1:d0dfbce63a89 319 /** @defgroup DAC_LL_EC_OUTPUT_BUFFER DAC channel output buffer
elmot 1:d0dfbce63a89 320 * @{
elmot 1:d0dfbce63a89 321 */
elmot 1:d0dfbce63a89 322 #define LL_DAC_OUTPUT_BUFFER_ENABLE ((uint32_t)0x00000000U) /*!< The selected DAC channel output is buffered: higher drive current capability, but also higher current consumption */
elmot 1:d0dfbce63a89 323 #define LL_DAC_OUTPUT_BUFFER_DISABLE (DAC_MCR_MODE1_1) /*!< The selected DAC channel output is not buffered: lower drive current capability, but also lower current consumption */
elmot 1:d0dfbce63a89 324 /**
elmot 1:d0dfbce63a89 325 * @}
elmot 1:d0dfbce63a89 326 */
elmot 1:d0dfbce63a89 327
elmot 1:d0dfbce63a89 328 /** @defgroup DAC_LL_EC_OUTPUT_CONNECTION DAC channel output connection
elmot 1:d0dfbce63a89 329 * @{
elmot 1:d0dfbce63a89 330 */
elmot 1:d0dfbce63a89 331 #define LL_DAC_OUTPUT_CONNECT_GPIO ((uint32_t)0x00000000U) /*!< The selected DAC channel output is connected to external pin */
elmot 1:d0dfbce63a89 332 #define LL_DAC_OUTPUT_CONNECT_INTERNAL (DAC_MCR_MODE1_0) /*!< The selected DAC channel output is connected to on-chip peripherals via internal paths. On this STM32 serie, output connection depends on output mode (normal or sample and hold) and output buffer state. Refer to comments of function @ref LL_DAC_SetOutputConnection(). */
elmot 1:d0dfbce63a89 333 /**
elmot 1:d0dfbce63a89 334 * @}
elmot 1:d0dfbce63a89 335 */
elmot 1:d0dfbce63a89 336
elmot 1:d0dfbce63a89 337 /** @defgroup DAC_LL_EC_LEGACY DAC literals legacy naming
elmot 1:d0dfbce63a89 338 * @{
elmot 1:d0dfbce63a89 339 */
elmot 1:d0dfbce63a89 340 #define LL_DAC_TRIGGER_SOFTWARE (LL_DAC_TRIG_SOFTWARE)
elmot 1:d0dfbce63a89 341 #define LL_DAC_TRIGGER_TIM2_TRGO (LL_DAC_TRIG_EXT_TIM2_TRGO)
elmot 1:d0dfbce63a89 342 #define LL_DAC_TRIGGER_TIM4_TRGO (LL_DAC_TRIG_EXT_TIM4_TRGO)
elmot 1:d0dfbce63a89 343 #define LL_DAC_TRIGGER_TIM5_TRGO (LL_DAC_TRIG_EXT_TIM5_TRGO)
elmot 1:d0dfbce63a89 344 #define LL_DAC_TRIGGER_TIM6_TRGO (LL_DAC_TRIG_EXT_TIM6_TRGO)
elmot 1:d0dfbce63a89 345 #define LL_DAC_TRIGGER_TIM7_TRGO (LL_DAC_TRIG_EXT_TIM7_TRGO)
elmot 1:d0dfbce63a89 346 #define LL_DAC_TRIGGER_TIM8_TRGO (LL_DAC_TRIG_EXT_TIM8_TRGO)
elmot 1:d0dfbce63a89 347 #define LL_DAC_TRIGGER_EXT_IT9 (LL_DAC_TRIG_EXT_EXTI_LINE9)
elmot 1:d0dfbce63a89 348
elmot 1:d0dfbce63a89 349 #define LL_DAC_WAVEGENERATION_NONE (LL_DAC_WAVE_AUTO_GENERATION_NONE)
elmot 1:d0dfbce63a89 350 #define LL_DAC_WAVEGENERATION_NOISE (LL_DAC_WAVE_AUTO_GENERATION_NOISE)
elmot 1:d0dfbce63a89 351 #define LL_DAC_WAVEGENERATION_TRIANGLE (LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE)
elmot 1:d0dfbce63a89 352
elmot 1:d0dfbce63a89 353 #define LL_DAC_CONNECT_GPIO (LL_DAC_OUTPUT_CONNECT_GPIO)
elmot 1:d0dfbce63a89 354 #define LL_DAC_CONNECT_INTERNAL (LL_DAC_OUTPUT_CONNECT_INTERNAL)
elmot 1:d0dfbce63a89 355 /**
elmot 1:d0dfbce63a89 356 * @}
elmot 1:d0dfbce63a89 357 */
elmot 1:d0dfbce63a89 358
elmot 1:d0dfbce63a89 359
elmot 1:d0dfbce63a89 360 /** @defgroup DAC_LL_EC_RESOLUTION DAC channel output resolution
elmot 1:d0dfbce63a89 361 * @{
elmot 1:d0dfbce63a89 362 */
elmot 1:d0dfbce63a89 363 #define LL_DAC_RESOLUTION_12B ((uint32_t)0x00000000U) /*!< DAC channel resolution 12 bits */
elmot 1:d0dfbce63a89 364 #define LL_DAC_RESOLUTION_8B ((uint32_t)0x00000002U) /*!< DAC channel resolution 8 bits */
elmot 1:d0dfbce63a89 365 /**
elmot 1:d0dfbce63a89 366 * @}
elmot 1:d0dfbce63a89 367 */
elmot 1:d0dfbce63a89 368
elmot 1:d0dfbce63a89 369 /** @defgroup DAC_LL_EC_REGISTERS DAC registers compliant with specific purpose
elmot 1:d0dfbce63a89 370 * @{
elmot 1:d0dfbce63a89 371 */
elmot 1:d0dfbce63a89 372 /* List of DAC registers intended to be used (most commonly) with */
elmot 1:d0dfbce63a89 373 /* DMA transfer. */
elmot 1:d0dfbce63a89 374 /* Refer to function @ref LL_DAC_DMA_GetRegAddr(). */
elmot 1:d0dfbce63a89 375 #define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED DAC_REG_DHR12RX_REGOFFSET_MASK /*!< DAC channel data holding register 12 bits right aligned */
elmot 1:d0dfbce63a89 376 #define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED DAC_REG_DHR12LX_REGOFFSET_MASK /*!< DAC channel data holding register 12 bits left aligned */
elmot 1:d0dfbce63a89 377 #define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED DAC_REG_DHR8RX_REGOFFSET_MASK /*!< DAC channel data holding register 8 bits right aligned */
elmot 1:d0dfbce63a89 378 /**
elmot 1:d0dfbce63a89 379 * @}
elmot 1:d0dfbce63a89 380 */
elmot 1:d0dfbce63a89 381
elmot 1:d0dfbce63a89 382 /** @defgroup DAC_LL_EC_HW_DELAYS Definitions of DAC hardware constraints delays
elmot 1:d0dfbce63a89 383 * @note Only DAC IP HW delays are defined in DAC LL driver driver,
elmot 1:d0dfbce63a89 384 * not timeout values.
elmot 1:d0dfbce63a89 385 * For details on delays values, refer to descriptions in source code
elmot 1:d0dfbce63a89 386 * above each literal definition.
elmot 1:d0dfbce63a89 387 * @{
elmot 1:d0dfbce63a89 388 */
elmot 1:d0dfbce63a89 389
elmot 1:d0dfbce63a89 390 /* Delay for DAC channel voltage settling time from DAC channel startup */
elmot 1:d0dfbce63a89 391 /* (transition from disable to enable). */
elmot 1:d0dfbce63a89 392 /* Note: DAC channel startup time depends on board application environment: */
elmot 1:d0dfbce63a89 393 /* impedance connected to DAC channel output. */
elmot 1:d0dfbce63a89 394 /* The delay below is specified under conditions: */
elmot 1:d0dfbce63a89 395 /* - voltage maximum transition (lowest to highest value) */
elmot 1:d0dfbce63a89 396 /* - until voltage reaches final value +-1LSB */
elmot 1:d0dfbce63a89 397 /* - DAC channel output buffer enabled */
elmot 1:d0dfbce63a89 398 /* - load impedance of 5kOhm (min), 50pF (max) */
elmot 1:d0dfbce63a89 399 /* Literal set to maximum value (refer to device datasheet, */
elmot 1:d0dfbce63a89 400 /* parameter "tWAKEUP"). */
elmot 1:d0dfbce63a89 401 /* Unit: us */
elmot 1:d0dfbce63a89 402 #define LL_DAC_DELAY_STARTUP_VOLTAGE_SETTLING_US ((uint32_t) 8U) /*!< Delay for DAC channel voltage settling time from DAC channel startup (transition from disable to enable) */
elmot 1:d0dfbce63a89 403
elmot 1:d0dfbce63a89 404
elmot 1:d0dfbce63a89 405 /* Delay for DAC channel voltage settling time. */
elmot 1:d0dfbce63a89 406 /* Note: DAC channel startup time depends on board application environment: */
elmot 1:d0dfbce63a89 407 /* impedance connected to DAC channel output. */
elmot 1:d0dfbce63a89 408 /* The delay below is specified under conditions: */
elmot 1:d0dfbce63a89 409 /* - voltage maximum transition (lowest to highest value) */
elmot 1:d0dfbce63a89 410 /* - until voltage reaches final value +-1LSB */
elmot 1:d0dfbce63a89 411 /* - DAC channel output buffer enabled */
elmot 1:d0dfbce63a89 412 /* - load impedance of 5kOhm min, 50pF max */
elmot 1:d0dfbce63a89 413 /* Literal set to maximum value (refer to device datasheet, */
elmot 1:d0dfbce63a89 414 /* parameter "tSETTLING"). */
elmot 1:d0dfbce63a89 415 /* Unit: us */
elmot 1:d0dfbce63a89 416 #define LL_DAC_DELAY_VOLTAGE_SETTLING_US ((uint32_t) 2U) /*!< Delay for DAC channel voltage settling time */
elmot 1:d0dfbce63a89 417
elmot 1:d0dfbce63a89 418 /**
elmot 1:d0dfbce63a89 419 * @}
elmot 1:d0dfbce63a89 420 */
elmot 1:d0dfbce63a89 421
elmot 1:d0dfbce63a89 422 /**
elmot 1:d0dfbce63a89 423 * @}
elmot 1:d0dfbce63a89 424 */
elmot 1:d0dfbce63a89 425
elmot 1:d0dfbce63a89 426 /* Exported macro ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 427 /** @defgroup DAC_LL_Exported_Macros DAC Exported Macros
elmot 1:d0dfbce63a89 428 * @{
elmot 1:d0dfbce63a89 429 */
elmot 1:d0dfbce63a89 430
elmot 1:d0dfbce63a89 431 /** @defgroup DAC_LL_EM_WRITE_READ Common write and read registers macros
elmot 1:d0dfbce63a89 432 * @{
elmot 1:d0dfbce63a89 433 */
elmot 1:d0dfbce63a89 434
elmot 1:d0dfbce63a89 435 /**
elmot 1:d0dfbce63a89 436 * @brief Write a value in DAC register
elmot 1:d0dfbce63a89 437 * @param __INSTANCE__ DAC Instance
elmot 1:d0dfbce63a89 438 * @param __REG__ Register to be written
elmot 1:d0dfbce63a89 439 * @param __VALUE__ Value to be written in the register
elmot 1:d0dfbce63a89 440 * @retval None
elmot 1:d0dfbce63a89 441 */
elmot 1:d0dfbce63a89 442 #define LL_DAC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
elmot 1:d0dfbce63a89 443
elmot 1:d0dfbce63a89 444 /**
elmot 1:d0dfbce63a89 445 * @brief Read a value in DAC register
elmot 1:d0dfbce63a89 446 * @param __INSTANCE__ DAC Instance
elmot 1:d0dfbce63a89 447 * @param __REG__ Register to be read
elmot 1:d0dfbce63a89 448 * @retval Register value
elmot 1:d0dfbce63a89 449 */
elmot 1:d0dfbce63a89 450 #define LL_DAC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
elmot 1:d0dfbce63a89 451
elmot 1:d0dfbce63a89 452 /**
elmot 1:d0dfbce63a89 453 * @}
elmot 1:d0dfbce63a89 454 */
elmot 1:d0dfbce63a89 455
elmot 1:d0dfbce63a89 456 /** @defgroup DAC_LL_EM_HELPER_MACRO DAC helper macro
elmot 1:d0dfbce63a89 457 * @{
elmot 1:d0dfbce63a89 458 */
elmot 1:d0dfbce63a89 459
elmot 1:d0dfbce63a89 460 /**
elmot 1:d0dfbce63a89 461 * @brief Helper macro to get DAC channel number in decimal format
elmot 1:d0dfbce63a89 462 * from literals LL_DAC_CHANNEL_x.
elmot 1:d0dfbce63a89 463 * Example:
elmot 1:d0dfbce63a89 464 * __LL_DAC_CHANNEL_TO_DECIMAL_NB(LL_DAC_CHANNEL_1)
elmot 1:d0dfbce63a89 465 * will return decimal number "1".
elmot 1:d0dfbce63a89 466 * @note The input can be a value from functions where a channel
elmot 1:d0dfbce63a89 467 * number is returned.
elmot 1:d0dfbce63a89 468 * @param __CHANNEL__ This parameter can be one of the following values:
elmot 1:d0dfbce63a89 469 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 470 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 471 * @retval 1...2
elmot 1:d0dfbce63a89 472 */
elmot 1:d0dfbce63a89 473 #define __LL_DAC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
elmot 1:d0dfbce63a89 474 ((__CHANNEL__) & DAC_SWTR_CHX_MASK)
elmot 1:d0dfbce63a89 475
elmot 1:d0dfbce63a89 476 /**
elmot 1:d0dfbce63a89 477 * @brief Helper macro to get DAC channel in literal format LL_DAC_CHANNEL_x
elmot 1:d0dfbce63a89 478 * from number in decimal format.
elmot 1:d0dfbce63a89 479 * Example:
elmot 1:d0dfbce63a89 480 * __LL_DAC_DECIMAL_NB_TO_CHANNEL(1)
elmot 1:d0dfbce63a89 481 * will return a data equivalent to "LL_DAC_CHANNEL_1".
elmot 1:d0dfbce63a89 482 * @note If the input parameter does not correspond to a DAC channel,
elmot 1:d0dfbce63a89 483 * this macro returns value '0'.
elmot 1:d0dfbce63a89 484 * @param __DECIMAL_NB__ 1...2
elmot 1:d0dfbce63a89 485 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 486 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 487 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 488 */
elmot 1:d0dfbce63a89 489 #define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
elmot 1:d0dfbce63a89 490 (((__DECIMAL_NB__) == 1U) \
elmot 1:d0dfbce63a89 491 ? ( \
elmot 1:d0dfbce63a89 492 LL_DAC_CHANNEL_1 \
elmot 1:d0dfbce63a89 493 ) \
elmot 1:d0dfbce63a89 494 : \
elmot 1:d0dfbce63a89 495 (((__DECIMAL_NB__) == 2U) \
elmot 1:d0dfbce63a89 496 ? ( \
elmot 1:d0dfbce63a89 497 LL_DAC_CHANNEL_2 \
elmot 1:d0dfbce63a89 498 ) \
elmot 1:d0dfbce63a89 499 : \
elmot 1:d0dfbce63a89 500 ( \
elmot 1:d0dfbce63a89 501 0 \
elmot 1:d0dfbce63a89 502 ) \
elmot 1:d0dfbce63a89 503 ) \
elmot 1:d0dfbce63a89 504 )
elmot 1:d0dfbce63a89 505
elmot 1:d0dfbce63a89 506 /**
elmot 1:d0dfbce63a89 507 * @brief Helper macro to define the DAC conversion data full-scale digital
elmot 1:d0dfbce63a89 508 * value corresponding to the selected DAC resolution.
elmot 1:d0dfbce63a89 509 * @note DAC conversion data full-scale corresponds to voltage range
elmot 1:d0dfbce63a89 510 * determined by analog voltage references Vref+ and Vref-
elmot 1:d0dfbce63a89 511 * (refer to reference manual).
elmot 1:d0dfbce63a89 512 * @param __DAC_RESOLUTION__ This parameter can be one of the following values:
elmot 1:d0dfbce63a89 513 * @arg @ref LL_DAC_RESOLUTION_12B
elmot 1:d0dfbce63a89 514 * @arg @ref LL_DAC_RESOLUTION_8B
elmot 1:d0dfbce63a89 515 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
elmot 1:d0dfbce63a89 516 */
elmot 1:d0dfbce63a89 517 #define __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \
elmot 1:d0dfbce63a89 518 (((uint32_t)0xFFFU) >> ((__DAC_RESOLUTION__) << 1U))
elmot 1:d0dfbce63a89 519
elmot 1:d0dfbce63a89 520 /**
elmot 1:d0dfbce63a89 521 * @brief Helper macro to calculate the DAC conversion data (unit: digital
elmot 1:d0dfbce63a89 522 * value) corresponding to a voltage (unit: mVolt).
elmot 1:d0dfbce63a89 523 * @note This helper macro is intended to provide input data in voltage
elmot 1:d0dfbce63a89 524 * rather than digital value,
elmot 1:d0dfbce63a89 525 * to be used with LL DAC functions such as
elmot 1:d0dfbce63a89 526 * @ref LL_DAC_ConvertData12RightAligned().
elmot 1:d0dfbce63a89 527 * @note Analog reference voltage (Vref+) must be either known from
elmot 1:d0dfbce63a89 528 * user board environment or can be calculated using ADC measurement
elmot 1:d0dfbce63a89 529 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
elmot 1:d0dfbce63a89 530 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
elmot 1:d0dfbce63a89 531 * @param __DAC_VOLTAGE__ Voltage to be generated by DAC channel
elmot 1:d0dfbce63a89 532 * (unit: mVolt).
elmot 1:d0dfbce63a89 533 * @param __DAC_RESOLUTION__ This parameter can be one of the following values:
elmot 1:d0dfbce63a89 534 * @arg @ref LL_DAC_RESOLUTION_12B
elmot 1:d0dfbce63a89 535 * @arg @ref LL_DAC_RESOLUTION_8B
elmot 1:d0dfbce63a89 536 * @retval DAC conversion data (unit: digital value)
elmot 1:d0dfbce63a89 537 */
elmot 1:d0dfbce63a89 538 #define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__,\
elmot 1:d0dfbce63a89 539 __DAC_VOLTAGE__,\
elmot 1:d0dfbce63a89 540 __DAC_RESOLUTION__) \
elmot 1:d0dfbce63a89 541 ((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \
elmot 1:d0dfbce63a89 542 / (__VREFANALOG_VOLTAGE__) \
elmot 1:d0dfbce63a89 543 )
elmot 1:d0dfbce63a89 544
elmot 1:d0dfbce63a89 545 /**
elmot 1:d0dfbce63a89 546 * @}
elmot 1:d0dfbce63a89 547 */
elmot 1:d0dfbce63a89 548
elmot 1:d0dfbce63a89 549 /**
elmot 1:d0dfbce63a89 550 * @}
elmot 1:d0dfbce63a89 551 */
elmot 1:d0dfbce63a89 552
elmot 1:d0dfbce63a89 553
elmot 1:d0dfbce63a89 554 /* Exported functions --------------------------------------------------------*/
elmot 1:d0dfbce63a89 555 /** @defgroup DAC_LL_Exported_Functions DAC Exported Functions
elmot 1:d0dfbce63a89 556 * @{
elmot 1:d0dfbce63a89 557 */
elmot 1:d0dfbce63a89 558 /** @defgroup DAC_LL_EF_Configuration Configuration of DAC channels
elmot 1:d0dfbce63a89 559 * @{
elmot 1:d0dfbce63a89 560 */
elmot 1:d0dfbce63a89 561
elmot 1:d0dfbce63a89 562 /**
elmot 1:d0dfbce63a89 563 * @brief Set the operating mode for the selected DAC channel:
elmot 1:d0dfbce63a89 564 * calibration or normal operating mode.
elmot 1:d0dfbce63a89 565 * @rmtoll CR CEN1 LL_DAC_SetMode\n
elmot 1:d0dfbce63a89 566 * CR CEN2 LL_DAC_SetMode
elmot 1:d0dfbce63a89 567 * @param DACx DAC instance
elmot 1:d0dfbce63a89 568 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 569 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 570 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 571 * @param ChannelMode This parameter can be one of the following values:
elmot 1:d0dfbce63a89 572 * @arg @ref LL_DAC_MODE_NORMAL_OPERATION
elmot 1:d0dfbce63a89 573 * @arg @ref LL_DAC_MODE_CALIBRATION
elmot 1:d0dfbce63a89 574 * @retval None
elmot 1:d0dfbce63a89 575 */
elmot 1:d0dfbce63a89 576 __STATIC_INLINE void LL_DAC_SetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t ChannelMode)
elmot 1:d0dfbce63a89 577 {
elmot 1:d0dfbce63a89 578 MODIFY_REG(DACx->CR,
elmot 1:d0dfbce63a89 579 DAC_CR_CEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 580 ChannelMode << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 581 }
elmot 1:d0dfbce63a89 582
elmot 1:d0dfbce63a89 583 /**
elmot 1:d0dfbce63a89 584 * @brief Get the operating mode for the selected DAC channel:
elmot 1:d0dfbce63a89 585 * calibration or normal operating mode.
elmot 1:d0dfbce63a89 586 * @rmtoll CR CEN1 LL_DAC_GetMode\n
elmot 1:d0dfbce63a89 587 * CR CEN2 LL_DAC_GetMode
elmot 1:d0dfbce63a89 588 * @param DACx DAC instance
elmot 1:d0dfbce63a89 589 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 590 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 591 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 592 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 593 * @arg @ref LL_DAC_MODE_NORMAL_OPERATION
elmot 1:d0dfbce63a89 594 * @arg @ref LL_DAC_MODE_CALIBRATION
elmot 1:d0dfbce63a89 595 */
elmot 1:d0dfbce63a89 596 __STATIC_INLINE uint32_t LL_DAC_GetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 597 {
elmot 1:d0dfbce63a89 598 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_CEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 599 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 600 );
elmot 1:d0dfbce63a89 601 }
elmot 1:d0dfbce63a89 602
elmot 1:d0dfbce63a89 603 /**
elmot 1:d0dfbce63a89 604 * @brief Set the offset trimming value for the selected DAC channel.
elmot 1:d0dfbce63a89 605 * Trimming has an impact when output buffer is enabled
elmot 1:d0dfbce63a89 606 * and is intended to replace factory calibration default values.
elmot 1:d0dfbce63a89 607 * @rmtoll CCR OTRIM1 LL_DAC_SetTrimmingValue\n
elmot 1:d0dfbce63a89 608 * CCR OTRIM2 LL_DAC_SetTrimmingValue
elmot 1:d0dfbce63a89 609 * @param DACx DAC instance
elmot 1:d0dfbce63a89 610 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 611 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 612 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 613 * @param TrimmingValue Value between Min_Data=0x00 and Max_Data=0x1F
elmot 1:d0dfbce63a89 614 * @retval None
elmot 1:d0dfbce63a89 615 */
elmot 1:d0dfbce63a89 616 __STATIC_INLINE void LL_DAC_SetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TrimmingValue)
elmot 1:d0dfbce63a89 617 {
elmot 1:d0dfbce63a89 618 MODIFY_REG(DACx->CCR,
elmot 1:d0dfbce63a89 619 DAC_CCR_OTRIM1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 620 TrimmingValue << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 621 }
elmot 1:d0dfbce63a89 622
elmot 1:d0dfbce63a89 623 /**
elmot 1:d0dfbce63a89 624 * @brief Get the offset trimming value for the selected DAC channel.
elmot 1:d0dfbce63a89 625 * Trimming has an impact when output buffer is enabled
elmot 1:d0dfbce63a89 626 * and is intended to replace factory calibration default values.
elmot 1:d0dfbce63a89 627 * @rmtoll CCR OTRIM1 LL_DAC_GetTrimmingValue\n
elmot 1:d0dfbce63a89 628 * CCR OTRIM2 LL_DAC_GetTrimmingValue
elmot 1:d0dfbce63a89 629 * @param DACx DAC instance
elmot 1:d0dfbce63a89 630 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 631 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 632 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 633 * @retval TrimmingValue Value between Min_Data=0x00 and Max_Data=0x1F
elmot 1:d0dfbce63a89 634 */
elmot 1:d0dfbce63a89 635 __STATIC_INLINE uint32_t LL_DAC_GetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 636 {
elmot 1:d0dfbce63a89 637 return (uint32_t)(READ_BIT(DACx->CCR, DAC_CCR_OTRIM1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 638 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 639 );
elmot 1:d0dfbce63a89 640 }
elmot 1:d0dfbce63a89 641
elmot 1:d0dfbce63a89 642 /**
elmot 1:d0dfbce63a89 643 * @brief Set the conversion trigger source for the selected DAC channel.
elmot 1:d0dfbce63a89 644 * @note For conversion trigger source to be effective, DAC trigger
elmot 1:d0dfbce63a89 645 * must be enabled using function @ref LL_DAC_EnableTrigger().
elmot 1:d0dfbce63a89 646 * @note To set conversion trigger source, DAC channel must be disabled.
elmot 1:d0dfbce63a89 647 * Otherwise, the setting is discarded.
elmot 1:d0dfbce63a89 648 * @note Availability of parameters of trigger sources from timer
elmot 1:d0dfbce63a89 649 * depends on timers availability on the selected device.
elmot 1:d0dfbce63a89 650 * @rmtoll CR TSEL1 LL_DAC_SetTriggerSource\n
elmot 1:d0dfbce63a89 651 * CR TSEL2 LL_DAC_SetTriggerSource
elmot 1:d0dfbce63a89 652 * @param DACx DAC instance
elmot 1:d0dfbce63a89 653 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 654 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 655 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 656 * @param TriggerSource This parameter can be one of the following values:
elmot 1:d0dfbce63a89 657 * @arg @ref LL_DAC_TRIG_SOFTWARE
elmot 1:d0dfbce63a89 658 * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
elmot 1:d0dfbce63a89 659 * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
elmot 1:d0dfbce63a89 660 * @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO
elmot 1:d0dfbce63a89 661 * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
elmot 1:d0dfbce63a89 662 * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
elmot 1:d0dfbce63a89 663 * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO
elmot 1:d0dfbce63a89 664 * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
elmot 1:d0dfbce63a89 665 * @retval None
elmot 1:d0dfbce63a89 666 */
elmot 1:d0dfbce63a89 667 __STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource)
elmot 1:d0dfbce63a89 668 {
elmot 1:d0dfbce63a89 669 MODIFY_REG(DACx->CR,
elmot 1:d0dfbce63a89 670 DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 671 TriggerSource << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 672 }
elmot 1:d0dfbce63a89 673
elmot 1:d0dfbce63a89 674 /**
elmot 1:d0dfbce63a89 675 * @brief Get the conversion trigger source for the selected DAC channel.
elmot 1:d0dfbce63a89 676 * @note For conversion trigger source to be effective, DAC trigger
elmot 1:d0dfbce63a89 677 * must be enabled using function @ref LL_DAC_EnableTrigger().
elmot 1:d0dfbce63a89 678 * @note Availability of parameters of trigger sources from timer
elmot 1:d0dfbce63a89 679 * depends on timers availability on the selected device.
elmot 1:d0dfbce63a89 680 * @rmtoll CR TSEL1 LL_DAC_GetTriggerSource\n
elmot 1:d0dfbce63a89 681 * CR TSEL2 LL_DAC_GetTriggerSource
elmot 1:d0dfbce63a89 682 * @param DACx DAC instance
elmot 1:d0dfbce63a89 683 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 684 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 685 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 686 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 687 * @arg @ref LL_DAC_TRIG_SOFTWARE
elmot 1:d0dfbce63a89 688 * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
elmot 1:d0dfbce63a89 689 * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
elmot 1:d0dfbce63a89 690 * @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO
elmot 1:d0dfbce63a89 691 * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
elmot 1:d0dfbce63a89 692 * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
elmot 1:d0dfbce63a89 693 * @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO
elmot 1:d0dfbce63a89 694 * @arg @ref LL_DAC_TRIGGER_EXT_IT9
elmot 1:d0dfbce63a89 695 */
elmot 1:d0dfbce63a89 696 __STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 697 {
elmot 1:d0dfbce63a89 698 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 699 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 700 );
elmot 1:d0dfbce63a89 701 }
elmot 1:d0dfbce63a89 702
elmot 1:d0dfbce63a89 703 /**
elmot 1:d0dfbce63a89 704 * @brief Set the waveform automatic generation mode
elmot 1:d0dfbce63a89 705 * for the selected DAC channel.
elmot 1:d0dfbce63a89 706 * @rmtoll CR WAVE1 LL_DAC_SetWaveAutoGeneration\n
elmot 1:d0dfbce63a89 707 * CR WAVE2 LL_DAC_SetWaveAutoGeneration
elmot 1:d0dfbce63a89 708 * @param DACx DAC instance
elmot 1:d0dfbce63a89 709 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 710 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 711 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 712 * @param WaveAutoGeneration This parameter can be one of the following values:
elmot 1:d0dfbce63a89 713 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE
elmot 1:d0dfbce63a89 714 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE
elmot 1:d0dfbce63a89 715 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE
elmot 1:d0dfbce63a89 716 * @retval None
elmot 1:d0dfbce63a89 717 */
elmot 1:d0dfbce63a89 718 __STATIC_INLINE void LL_DAC_SetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveAutoGeneration)
elmot 1:d0dfbce63a89 719 {
elmot 1:d0dfbce63a89 720 MODIFY_REG(DACx->CR,
elmot 1:d0dfbce63a89 721 DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 722 WaveAutoGeneration << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 723 }
elmot 1:d0dfbce63a89 724
elmot 1:d0dfbce63a89 725 /**
elmot 1:d0dfbce63a89 726 * @brief Get the waveform automatic generation mode
elmot 1:d0dfbce63a89 727 * for the selected DAC channel.
elmot 1:d0dfbce63a89 728 * @rmtoll CR WAVE1 LL_DAC_GetWaveAutoGeneration\n
elmot 1:d0dfbce63a89 729 * CR WAVE2 LL_DAC_GetWaveAutoGeneration
elmot 1:d0dfbce63a89 730 * @param DACx DAC instance
elmot 1:d0dfbce63a89 731 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 732 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 733 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 734 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 735 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE
elmot 1:d0dfbce63a89 736 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE
elmot 1:d0dfbce63a89 737 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE
elmot 1:d0dfbce63a89 738 */
elmot 1:d0dfbce63a89 739 __STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 740 {
elmot 1:d0dfbce63a89 741 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 742 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 743 );
elmot 1:d0dfbce63a89 744 }
elmot 1:d0dfbce63a89 745
elmot 1:d0dfbce63a89 746 /**
elmot 1:d0dfbce63a89 747 * @brief Set the noise waveform generation for the selected DAC channel:
elmot 1:d0dfbce63a89 748 * Noise mode and parameters LFSR (linear feedback shift register).
elmot 1:d0dfbce63a89 749 * @note For wave generation to be effective, DAC channel
elmot 1:d0dfbce63a89 750 * wave generation mode must be enabled using
elmot 1:d0dfbce63a89 751 * function @ref LL_DAC_SetWaveAutoGeneration().
elmot 1:d0dfbce63a89 752 * @note This setting can be set when the selected DAC channel is disabled
elmot 1:d0dfbce63a89 753 * (otherwise, the setting operation is ignored).
elmot 1:d0dfbce63a89 754 * @rmtoll CR MAMP1 LL_DAC_SetWaveNoiseLFSR\n
elmot 1:d0dfbce63a89 755 * CR MAMP2 LL_DAC_SetWaveNoiseLFSR
elmot 1:d0dfbce63a89 756 * @param DACx DAC instance
elmot 1:d0dfbce63a89 757 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 758 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 759 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 760 * @param NoiseLFSRMask This parameter can be one of the following values:
elmot 1:d0dfbce63a89 761 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0
elmot 1:d0dfbce63a89 762 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0
elmot 1:d0dfbce63a89 763 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0
elmot 1:d0dfbce63a89 764 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0
elmot 1:d0dfbce63a89 765 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0
elmot 1:d0dfbce63a89 766 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0
elmot 1:d0dfbce63a89 767 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0
elmot 1:d0dfbce63a89 768 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0
elmot 1:d0dfbce63a89 769 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0
elmot 1:d0dfbce63a89 770 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0
elmot 1:d0dfbce63a89 771 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0
elmot 1:d0dfbce63a89 772 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0
elmot 1:d0dfbce63a89 773 * @retval None
elmot 1:d0dfbce63a89 774 */
elmot 1:d0dfbce63a89 775 __STATIC_INLINE void LL_DAC_SetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t NoiseLFSRMask)
elmot 1:d0dfbce63a89 776 {
elmot 1:d0dfbce63a89 777 MODIFY_REG(DACx->CR,
elmot 1:d0dfbce63a89 778 DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 779 NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 780 }
elmot 1:d0dfbce63a89 781
elmot 1:d0dfbce63a89 782 /**
elmot 1:d0dfbce63a89 783 * @brief Set the noise waveform generation for the selected DAC channel:
elmot 1:d0dfbce63a89 784 * Noise mode and parameters LFSR (linear feedback shift register).
elmot 1:d0dfbce63a89 785 * @rmtoll CR MAMP1 LL_DAC_GetWaveNoiseLFSR\n
elmot 1:d0dfbce63a89 786 * CR MAMP2 LL_DAC_GetWaveNoiseLFSR
elmot 1:d0dfbce63a89 787 * @param DACx DAC instance
elmot 1:d0dfbce63a89 788 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 789 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 790 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 791 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 792 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0
elmot 1:d0dfbce63a89 793 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0
elmot 1:d0dfbce63a89 794 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0
elmot 1:d0dfbce63a89 795 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0
elmot 1:d0dfbce63a89 796 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0
elmot 1:d0dfbce63a89 797 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0
elmot 1:d0dfbce63a89 798 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0
elmot 1:d0dfbce63a89 799 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0
elmot 1:d0dfbce63a89 800 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0
elmot 1:d0dfbce63a89 801 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0
elmot 1:d0dfbce63a89 802 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0
elmot 1:d0dfbce63a89 803 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0
elmot 1:d0dfbce63a89 804 */
elmot 1:d0dfbce63a89 805 __STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 806 {
elmot 1:d0dfbce63a89 807 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 808 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 809 );
elmot 1:d0dfbce63a89 810 }
elmot 1:d0dfbce63a89 811
elmot 1:d0dfbce63a89 812 /**
elmot 1:d0dfbce63a89 813 * @brief Set the triangle waveform generation for the selected DAC channel:
elmot 1:d0dfbce63a89 814 * triangle mode and amplitude.
elmot 1:d0dfbce63a89 815 * @note For wave generation to be effective, DAC channel
elmot 1:d0dfbce63a89 816 * wave generation mode must be enabled using
elmot 1:d0dfbce63a89 817 * function @ref LL_DAC_SetWaveAutoGeneration().
elmot 1:d0dfbce63a89 818 * @note This setting can be set when the selected DAC channel is disabled
elmot 1:d0dfbce63a89 819 * (otherwise, the setting operation is ignored).
elmot 1:d0dfbce63a89 820 * @rmtoll CR MAMP1 LL_DAC_SetWaveTriangleAmplitude\n
elmot 1:d0dfbce63a89 821 * CR MAMP2 LL_DAC_SetWaveTriangleAmplitude
elmot 1:d0dfbce63a89 822 * @param DACx DAC instance
elmot 1:d0dfbce63a89 823 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 824 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 825 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 826 * @param TriangleAmplitude This parameter can be one of the following values:
elmot 1:d0dfbce63a89 827 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1
elmot 1:d0dfbce63a89 828 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3
elmot 1:d0dfbce63a89 829 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7
elmot 1:d0dfbce63a89 830 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15
elmot 1:d0dfbce63a89 831 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31
elmot 1:d0dfbce63a89 832 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63
elmot 1:d0dfbce63a89 833 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127
elmot 1:d0dfbce63a89 834 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255
elmot 1:d0dfbce63a89 835 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511
elmot 1:d0dfbce63a89 836 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023
elmot 1:d0dfbce63a89 837 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
elmot 1:d0dfbce63a89 838 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
elmot 1:d0dfbce63a89 839 * @retval None
elmot 1:d0dfbce63a89 840 */
elmot 1:d0dfbce63a89 841 __STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriangleAmplitude)
elmot 1:d0dfbce63a89 842 {
elmot 1:d0dfbce63a89 843 MODIFY_REG(DACx->CR,
elmot 1:d0dfbce63a89 844 DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 845 TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 846 }
elmot 1:d0dfbce63a89 847
elmot 1:d0dfbce63a89 848 /**
elmot 1:d0dfbce63a89 849 * @brief Set the triangle waveform generation for the selected DAC channel:
elmot 1:d0dfbce63a89 850 * triangle mode and amplitude.
elmot 1:d0dfbce63a89 851 * @rmtoll CR MAMP1 LL_DAC_GetWaveTriangleAmplitude\n
elmot 1:d0dfbce63a89 852 * CR MAMP2 LL_DAC_GetWaveTriangleAmplitude
elmot 1:d0dfbce63a89 853 * @param DACx DAC instance
elmot 1:d0dfbce63a89 854 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 855 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 856 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 857 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 858 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1
elmot 1:d0dfbce63a89 859 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3
elmot 1:d0dfbce63a89 860 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7
elmot 1:d0dfbce63a89 861 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15
elmot 1:d0dfbce63a89 862 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31
elmot 1:d0dfbce63a89 863 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63
elmot 1:d0dfbce63a89 864 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127
elmot 1:d0dfbce63a89 865 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255
elmot 1:d0dfbce63a89 866 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511
elmot 1:d0dfbce63a89 867 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023
elmot 1:d0dfbce63a89 868 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
elmot 1:d0dfbce63a89 869 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
elmot 1:d0dfbce63a89 870 */
elmot 1:d0dfbce63a89 871 __STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 872 {
elmot 1:d0dfbce63a89 873 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 874 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 875 );
elmot 1:d0dfbce63a89 876 }
elmot 1:d0dfbce63a89 877
elmot 1:d0dfbce63a89 878 /**
elmot 1:d0dfbce63a89 879 * @brief Set the output for the selected DAC channel.
elmot 1:d0dfbce63a89 880 * @note This function set several features:
elmot 1:d0dfbce63a89 881 * - mode normal or sample-and-hold
elmot 1:d0dfbce63a89 882 * - buffer
elmot 1:d0dfbce63a89 883 * - connection to GPIO or internal path.
elmot 1:d0dfbce63a89 884 * These features can also be set individually using
elmot 1:d0dfbce63a89 885 * dedicated functions:
elmot 1:d0dfbce63a89 886 * - @ref LL_DAC_SetOutputBuffer()
elmot 1:d0dfbce63a89 887 * - @ref LL_DAC_SetOutputMode()
elmot 1:d0dfbce63a89 888 * - @ref LL_DAC_SetOutputConnection()
elmot 1:d0dfbce63a89 889 * @note On this STM32 serie, output connection depends on output mode
elmot 1:d0dfbce63a89 890 * (normal or sample and hold) and output buffer state.
elmot 1:d0dfbce63a89 891 * - if output connection is set to internal path and output buffer
elmot 1:d0dfbce63a89 892 * is enabled (whatever output mode):
elmot 1:d0dfbce63a89 893 * output connection is also connected to GPIO pin
elmot 1:d0dfbce63a89 894 * (both connections to GPIO pin and internal path).
elmot 1:d0dfbce63a89 895 * - if output connection is set to GPIO pin, output buffer
elmot 1:d0dfbce63a89 896 * is disabled, output mode set to sample and hold:
elmot 1:d0dfbce63a89 897 * output connection is also connected to internal path
elmot 1:d0dfbce63a89 898 * (both connections to GPIO pin and internal path).
elmot 1:d0dfbce63a89 899 * @note Mode sample-and-hold requires an external capacitor
elmot 1:d0dfbce63a89 900 * to be connected between DAC channel output and ground.
elmot 1:d0dfbce63a89 901 * Capacitor value depends on load on DAC channel output and
elmot 1:d0dfbce63a89 902 * sample-and-hold timings configured.
elmot 1:d0dfbce63a89 903 * As indication, capacitor typical value is 100nF
elmot 1:d0dfbce63a89 904 * (refer to device datasheet, parameter "CSH").
elmot 1:d0dfbce63a89 905 * @rmtoll CR MODE1 LL_DAC_ConfigOutput\n
elmot 1:d0dfbce63a89 906 * CR MODE2 LL_DAC_ConfigOutput
elmot 1:d0dfbce63a89 907 * @param DACx DAC instance
elmot 1:d0dfbce63a89 908 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 909 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 910 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 911 * @param OutputMode This parameter can be one of the following values:
elmot 1:d0dfbce63a89 912 * @arg @ref LL_DAC_OUTPUT_MODE_NORMAL
elmot 1:d0dfbce63a89 913 * @arg @ref LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD
elmot 1:d0dfbce63a89 914 * @param OutputBuffer This parameter can be one of the following values:
elmot 1:d0dfbce63a89 915 * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
elmot 1:d0dfbce63a89 916 * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
elmot 1:d0dfbce63a89 917 * @param OutputConnection This parameter can be one of the following values:
elmot 1:d0dfbce63a89 918 * @arg @ref LL_DAC_OUTPUT_CONNECT_GPIO
elmot 1:d0dfbce63a89 919 * @arg @ref LL_DAC_OUTPUT_CONNECT_INTERNAL
elmot 1:d0dfbce63a89 920 * @retval None
elmot 1:d0dfbce63a89 921 */
elmot 1:d0dfbce63a89 922 __STATIC_INLINE void LL_DAC_ConfigOutput(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode, uint32_t OutputBuffer, uint32_t OutputConnection)
elmot 1:d0dfbce63a89 923 {
elmot 1:d0dfbce63a89 924 MODIFY_REG(DACx->MCR,
elmot 1:d0dfbce63a89 925 (DAC_MCR_MODE1_2 | DAC_MCR_MODE1_1 | DAC_MCR_MODE1_0) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 926 (OutputMode | OutputBuffer | OutputConnection) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 927 }
elmot 1:d0dfbce63a89 928
elmot 1:d0dfbce63a89 929 /**
elmot 1:d0dfbce63a89 930 * @brief Set the output mode normal or sample-and-hold
elmot 1:d0dfbce63a89 931 * for the selected DAC channel.
elmot 1:d0dfbce63a89 932 * @note Mode sample-and-hold requires an external capacitor
elmot 1:d0dfbce63a89 933 * to be connected between DAC channel output and ground.
elmot 1:d0dfbce63a89 934 * Capacitor value depends on load on DAC channel output and
elmot 1:d0dfbce63a89 935 * sample-and-hold timings configured.
elmot 1:d0dfbce63a89 936 * As indication, capacitor typical value is 100nF
elmot 1:d0dfbce63a89 937 * (refer to device datasheet, parameter "CSH").
elmot 1:d0dfbce63a89 938 * @rmtoll CR MODE1 LL_DAC_SetOutputMode\n
elmot 1:d0dfbce63a89 939 * CR MODE2 LL_DAC_SetOutputMode
elmot 1:d0dfbce63a89 940 * @param DACx DAC instance
elmot 1:d0dfbce63a89 941 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 942 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 943 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 944 * @param OutputMode This parameter can be one of the following values:
elmot 1:d0dfbce63a89 945 * @arg @ref LL_DAC_OUTPUT_MODE_NORMAL
elmot 1:d0dfbce63a89 946 * @arg @ref LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD
elmot 1:d0dfbce63a89 947 * @retval None
elmot 1:d0dfbce63a89 948 */
elmot 1:d0dfbce63a89 949 __STATIC_INLINE void LL_DAC_SetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode)
elmot 1:d0dfbce63a89 950 {
elmot 1:d0dfbce63a89 951 MODIFY_REG(DACx->MCR,
elmot 1:d0dfbce63a89 952 DAC_MCR_MODE1_2 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 953 OutputMode << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 954 }
elmot 1:d0dfbce63a89 955
elmot 1:d0dfbce63a89 956 /**
elmot 1:d0dfbce63a89 957 * @brief Get the output mode normal or sample-and-hold for the selected DAC channel.
elmot 1:d0dfbce63a89 958 * @rmtoll CR MODE1 LL_DAC_GetOutputMode\n
elmot 1:d0dfbce63a89 959 * CR MODE2 LL_DAC_GetOutputMode
elmot 1:d0dfbce63a89 960 * @param DACx DAC instance
elmot 1:d0dfbce63a89 961 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 962 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 963 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 964 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 965 * @arg @ref LL_DAC_OUTPUT_MODE_NORMAL
elmot 1:d0dfbce63a89 966 * @arg @ref LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD
elmot 1:d0dfbce63a89 967 */
elmot 1:d0dfbce63a89 968 __STATIC_INLINE uint32_t LL_DAC_GetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 969 {
elmot 1:d0dfbce63a89 970 return (uint32_t)(READ_BIT(DACx->MCR, DAC_MCR_MODE1_2 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 971 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 972 );
elmot 1:d0dfbce63a89 973 }
elmot 1:d0dfbce63a89 974
elmot 1:d0dfbce63a89 975 /**
elmot 1:d0dfbce63a89 976 * @brief Set the output buffer for the selected DAC channel.
elmot 1:d0dfbce63a89 977 * @note On this STM32 serie, when buffer is enabled, its offset can be
elmot 1:d0dfbce63a89 978 * trimmed: factory calibration default values can be
elmot 1:d0dfbce63a89 979 * replaced by user trimming values, using function
elmot 1:d0dfbce63a89 980 * @ref LL_DAC_SetTrimmingValue().
elmot 1:d0dfbce63a89 981 * @rmtoll CR MODE1 LL_DAC_SetOutputBuffer\n
elmot 1:d0dfbce63a89 982 * CR MODE2 LL_DAC_SetOutputBuffer
elmot 1:d0dfbce63a89 983 * @param DACx DAC instance
elmot 1:d0dfbce63a89 984 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 985 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 986 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 987 * @param OutputBuffer This parameter can be one of the following values:
elmot 1:d0dfbce63a89 988 * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
elmot 1:d0dfbce63a89 989 * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
elmot 1:d0dfbce63a89 990 * @retval None
elmot 1:d0dfbce63a89 991 */
elmot 1:d0dfbce63a89 992 __STATIC_INLINE void LL_DAC_SetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputBuffer)
elmot 1:d0dfbce63a89 993 {
elmot 1:d0dfbce63a89 994 MODIFY_REG(DACx->MCR,
elmot 1:d0dfbce63a89 995 DAC_MCR_MODE1_1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 996 OutputBuffer << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 997 }
elmot 1:d0dfbce63a89 998
elmot 1:d0dfbce63a89 999 /**
elmot 1:d0dfbce63a89 1000 * @brief Get the output buffer state for the selected DAC channel.
elmot 1:d0dfbce63a89 1001 * @rmtoll CR MODE1 LL_DAC_GetOutputBuffer\n
elmot 1:d0dfbce63a89 1002 * CR MODE2 LL_DAC_GetOutputBuffer
elmot 1:d0dfbce63a89 1003 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1004 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1005 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1006 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1007 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 1008 * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
elmot 1:d0dfbce63a89 1009 * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
elmot 1:d0dfbce63a89 1010 */
elmot 1:d0dfbce63a89 1011 __STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1012 {
elmot 1:d0dfbce63a89 1013 return (uint32_t)(READ_BIT(DACx->MCR, DAC_MCR_MODE1_1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1014 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 1015 );
elmot 1:d0dfbce63a89 1016 }
elmot 1:d0dfbce63a89 1017
elmot 1:d0dfbce63a89 1018 /**
elmot 1:d0dfbce63a89 1019 * @brief Set the output connection for the selected DAC channel.
elmot 1:d0dfbce63a89 1020 * @note On this STM32 serie, output connection depends on output mode (normal or
elmot 1:d0dfbce63a89 1021 * sample and hold) and output buffer state.
elmot 1:d0dfbce63a89 1022 * - if output connection is set to internal path and output buffer
elmot 1:d0dfbce63a89 1023 * is enabled (whatever output mode):
elmot 1:d0dfbce63a89 1024 * output connection is also connected to GPIO pin
elmot 1:d0dfbce63a89 1025 * (both connections to GPIO pin and internal path).
elmot 1:d0dfbce63a89 1026 * - if output connection is set to GPIO pin, output buffer
elmot 1:d0dfbce63a89 1027 * is disabled, output mode set to sample and hold:
elmot 1:d0dfbce63a89 1028 * output connection is also connected to internal path
elmot 1:d0dfbce63a89 1029 * (both connections to GPIO pin and internal path).
elmot 1:d0dfbce63a89 1030 * @rmtoll CR MODE1 LL_DAC_SetOutputConnection\n
elmot 1:d0dfbce63a89 1031 * CR MODE2 LL_DAC_SetOutputConnection
elmot 1:d0dfbce63a89 1032 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1033 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1034 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1035 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1036 * @param OutputConnection This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1037 * @arg @ref LL_DAC_OUTPUT_CONNECT_GPIO
elmot 1:d0dfbce63a89 1038 * @arg @ref LL_DAC_OUTPUT_CONNECT_INTERNAL
elmot 1:d0dfbce63a89 1039 * @retval None
elmot 1:d0dfbce63a89 1040 */
elmot 1:d0dfbce63a89 1041 __STATIC_INLINE void LL_DAC_SetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputConnection)
elmot 1:d0dfbce63a89 1042 {
elmot 1:d0dfbce63a89 1043 MODIFY_REG(DACx->MCR,
elmot 1:d0dfbce63a89 1044 DAC_MCR_MODE1_0 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 1045 OutputConnection << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1046 }
elmot 1:d0dfbce63a89 1047
elmot 1:d0dfbce63a89 1048 /**
elmot 1:d0dfbce63a89 1049 * @brief Get the output connection for the selected DAC channel.
elmot 1:d0dfbce63a89 1050 * @note On this STM32 serie, output connection depends on output mode (normal or
elmot 1:d0dfbce63a89 1051 * sample and hold) and output buffer state.
elmot 1:d0dfbce63a89 1052 * - if output connection is set to internal path and output buffer
elmot 1:d0dfbce63a89 1053 * is enabled (whatever output mode):
elmot 1:d0dfbce63a89 1054 * output connection is also connected to GPIO pin
elmot 1:d0dfbce63a89 1055 * (both connections to GPIO pin and internal path).
elmot 1:d0dfbce63a89 1056 * - if output connection is set to GPIO pin, output buffer
elmot 1:d0dfbce63a89 1057 * is disabled, output mode set to sample and hold:
elmot 1:d0dfbce63a89 1058 * output connection is also connected to internal path
elmot 1:d0dfbce63a89 1059 * (both connections to GPIO pin and internal path).
elmot 1:d0dfbce63a89 1060 * @rmtoll CR MODE1 LL_DAC_GetOutputConnection\n
elmot 1:d0dfbce63a89 1061 * CR MODE2 LL_DAC_GetOutputConnection
elmot 1:d0dfbce63a89 1062 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1063 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1064 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1065 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1066 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 1067 * @arg @ref LL_DAC_OUTPUT_CONNECT_GPIO
elmot 1:d0dfbce63a89 1068 * @arg @ref LL_DAC_OUTPUT_CONNECT_INTERNAL
elmot 1:d0dfbce63a89 1069 */
elmot 1:d0dfbce63a89 1070 __STATIC_INLINE uint32_t LL_DAC_GetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1071 {
elmot 1:d0dfbce63a89 1072 return (uint32_t)(READ_BIT(DACx->MCR, DAC_MCR_MODE1_0 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1073 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 1074 );
elmot 1:d0dfbce63a89 1075 }
elmot 1:d0dfbce63a89 1076
elmot 1:d0dfbce63a89 1077 /**
elmot 1:d0dfbce63a89 1078 * @brief Set the sample-and-hold timing for the selected DAC channel:
elmot 1:d0dfbce63a89 1079 * sample time
elmot 1:d0dfbce63a89 1080 * @note Sample time must be set when DAC channel is disabled
elmot 1:d0dfbce63a89 1081 * or during DAC operation when DAC channel flag BWSTx is reset,
elmot 1:d0dfbce63a89 1082 * otherwise the setting is ignored.
elmot 1:d0dfbce63a89 1083 * Check BWSTx flag state using function "LL_DAC_IsActiveFlag_BWSTx()".
elmot 1:d0dfbce63a89 1084 * @rmtoll SHSR1 TSAMPLE1 LL_DAC_SetSampleAndHoldSampleTime\n
elmot 1:d0dfbce63a89 1085 * SHSR2 TSAMPLE2 LL_DAC_SetSampleAndHoldSampleTime
elmot 1:d0dfbce63a89 1086 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1087 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1088 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1089 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1090 * @param SampleTime Value between Min_Data=0x000 and Max_Data=0x3FF
elmot 1:d0dfbce63a89 1091 * @retval None
elmot 1:d0dfbce63a89 1092 */
elmot 1:d0dfbce63a89 1093 __STATIC_INLINE void LL_DAC_SetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t SampleTime)
elmot 1:d0dfbce63a89 1094 {
elmot 1:d0dfbce63a89 1095 register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->SHSR1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_SHSRX_REGOFFSET_MASK));
elmot 1:d0dfbce63a89 1096
elmot 1:d0dfbce63a89 1097 MODIFY_REG(*preg,
elmot 1:d0dfbce63a89 1098 DAC_SHSR1_TSAMPLE1,
elmot 1:d0dfbce63a89 1099 SampleTime);
elmot 1:d0dfbce63a89 1100 }
elmot 1:d0dfbce63a89 1101
elmot 1:d0dfbce63a89 1102 /**
elmot 1:d0dfbce63a89 1103 * @brief Get the sample-and-hold timing for the selected DAC channel:
elmot 1:d0dfbce63a89 1104 * sample time
elmot 1:d0dfbce63a89 1105 * @rmtoll SHSR1 TSAMPLE1 LL_DAC_GetSampleAndHoldSampleTime\n
elmot 1:d0dfbce63a89 1106 * SHSR2 TSAMPLE2 LL_DAC_GetSampleAndHoldSampleTime
elmot 1:d0dfbce63a89 1107 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1108 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1109 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1110 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1111 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
elmot 1:d0dfbce63a89 1112 */
elmot 1:d0dfbce63a89 1113 __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1114 {
elmot 1:d0dfbce63a89 1115 register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->SHSR1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_SHSRX_REGOFFSET_MASK));
elmot 1:d0dfbce63a89 1116
elmot 1:d0dfbce63a89 1117 return (uint32_t) READ_BIT(*preg, DAC_SHSR1_TSAMPLE1);
elmot 1:d0dfbce63a89 1118 }
elmot 1:d0dfbce63a89 1119
elmot 1:d0dfbce63a89 1120 /**
elmot 1:d0dfbce63a89 1121 * @brief Set the sample-and-hold timing for the selected DAC channel:
elmot 1:d0dfbce63a89 1122 * hold time
elmot 1:d0dfbce63a89 1123 * @rmtoll SHHR THOLD1 LL_DAC_SetSampleAndHoldHoldTime\n
elmot 1:d0dfbce63a89 1124 * SHHR THOLD2 LL_DAC_SetSampleAndHoldHoldTime
elmot 1:d0dfbce63a89 1125 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1126 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1127 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1128 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1129 * @param HoldTime Value between Min_Data=0x000 and Max_Data=0x3FF
elmot 1:d0dfbce63a89 1130 * @retval None
elmot 1:d0dfbce63a89 1131 */
elmot 1:d0dfbce63a89 1132 __STATIC_INLINE void LL_DAC_SetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t HoldTime)
elmot 1:d0dfbce63a89 1133 {
elmot 1:d0dfbce63a89 1134 MODIFY_REG(DACx->SHHR,
elmot 1:d0dfbce63a89 1135 DAC_SHHR_THOLD1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 1136 HoldTime << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1137 }
elmot 1:d0dfbce63a89 1138
elmot 1:d0dfbce63a89 1139 /**
elmot 1:d0dfbce63a89 1140 * @brief Get the sample-and-hold timing for the selected DAC channel:
elmot 1:d0dfbce63a89 1141 * hold time
elmot 1:d0dfbce63a89 1142 * @rmtoll SHHR THOLD1 LL_DAC_GetSampleAndHoldHoldTime\n
elmot 1:d0dfbce63a89 1143 * SHHR THOLD2 LL_DAC_GetSampleAndHoldHoldTime
elmot 1:d0dfbce63a89 1144 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1145 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1146 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1147 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1148 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
elmot 1:d0dfbce63a89 1149 */
elmot 1:d0dfbce63a89 1150 __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1151 {
elmot 1:d0dfbce63a89 1152 return (uint32_t)(READ_BIT(DACx->SHHR, DAC_SHHR_THOLD1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1153 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 1154 );
elmot 1:d0dfbce63a89 1155 }
elmot 1:d0dfbce63a89 1156
elmot 1:d0dfbce63a89 1157 /**
elmot 1:d0dfbce63a89 1158 * @brief Set the sample-and-hold timing for the selected DAC channel:
elmot 1:d0dfbce63a89 1159 * refresh time
elmot 1:d0dfbce63a89 1160 * @rmtoll SHRR TREFRESH1 LL_DAC_SetSampleAndHoldRefreshTime\n
elmot 1:d0dfbce63a89 1161 * SHRR TREFRESH2 LL_DAC_SetSampleAndHoldRefreshTime
elmot 1:d0dfbce63a89 1162 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1163 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1164 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1165 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1166 * @param RefreshTime Value between Min_Data=0x00 and Max_Data=0xFF
elmot 1:d0dfbce63a89 1167 * @retval None
elmot 1:d0dfbce63a89 1168 */
elmot 1:d0dfbce63a89 1169 __STATIC_INLINE void LL_DAC_SetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t RefreshTime)
elmot 1:d0dfbce63a89 1170 {
elmot 1:d0dfbce63a89 1171 MODIFY_REG(DACx->SHRR,
elmot 1:d0dfbce63a89 1172 DAC_SHRR_TREFRESH1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
elmot 1:d0dfbce63a89 1173 RefreshTime << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1174 }
elmot 1:d0dfbce63a89 1175
elmot 1:d0dfbce63a89 1176 /**
elmot 1:d0dfbce63a89 1177 * @brief Get the sample-and-hold timing for the selected DAC channel:
elmot 1:d0dfbce63a89 1178 * refresh time
elmot 1:d0dfbce63a89 1179 * @rmtoll SHRR TREFRESH1 LL_DAC_GetSampleAndHoldRefreshTime\n
elmot 1:d0dfbce63a89 1180 * SHRR TREFRESH2 LL_DAC_GetSampleAndHoldRefreshTime
elmot 1:d0dfbce63a89 1181 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1182 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1183 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1184 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1185 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
elmot 1:d0dfbce63a89 1186 */
elmot 1:d0dfbce63a89 1187 __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1188 {
elmot 1:d0dfbce63a89 1189 return (uint32_t)(READ_BIT(DACx->SHRR, DAC_SHRR_TREFRESH1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1190 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
elmot 1:d0dfbce63a89 1191 );
elmot 1:d0dfbce63a89 1192 }
elmot 1:d0dfbce63a89 1193
elmot 1:d0dfbce63a89 1194 /**
elmot 1:d0dfbce63a89 1195 * @}
elmot 1:d0dfbce63a89 1196 */
elmot 1:d0dfbce63a89 1197
elmot 1:d0dfbce63a89 1198 /** @defgroup DAC_LL_EF_Configuration_Legacy_Functions DAC configuration, legacy functions name
elmot 1:d0dfbce63a89 1199 * @{
elmot 1:d0dfbce63a89 1200 */
elmot 1:d0dfbce63a89 1201 /* Old functions name kept for legacy purpose, to be replaced by the */
elmot 1:d0dfbce63a89 1202 /* current functions name. */
elmot 1:d0dfbce63a89 1203 __STATIC_INLINE void LL_DAC_SetWaveMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveMode)
elmot 1:d0dfbce63a89 1204 {
elmot 1:d0dfbce63a89 1205 LL_DAC_SetWaveAutoGeneration(DACx, DAC_Channel, WaveMode);
elmot 1:d0dfbce63a89 1206 }
elmot 1:d0dfbce63a89 1207 __STATIC_INLINE uint32_t LL_DAC_GetWaveMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1208 {
elmot 1:d0dfbce63a89 1209 return LL_DAC_GetWaveAutoGeneration(DACx, DAC_Channel);
elmot 1:d0dfbce63a89 1210 }
elmot 1:d0dfbce63a89 1211
elmot 1:d0dfbce63a89 1212 /**
elmot 1:d0dfbce63a89 1213 * @}
elmot 1:d0dfbce63a89 1214 */
elmot 1:d0dfbce63a89 1215
elmot 1:d0dfbce63a89 1216 /** @defgroup DAC_LL_EF_DMA_Management DMA Management
elmot 1:d0dfbce63a89 1217 * @{
elmot 1:d0dfbce63a89 1218 */
elmot 1:d0dfbce63a89 1219
elmot 1:d0dfbce63a89 1220 /**
elmot 1:d0dfbce63a89 1221 * @brief Enable DAC DMA transfer request of the selected channel.
elmot 1:d0dfbce63a89 1222 * @note To configure DMA source address (peripheral address),
elmot 1:d0dfbce63a89 1223 * use function @ref LL_DAC_DMA_GetRegAddr().
elmot 1:d0dfbce63a89 1224 * @rmtoll CR DMAEN1 LL_DAC_EnableDMAReq\n
elmot 1:d0dfbce63a89 1225 * CR DMAEN2 LL_DAC_EnableDMAReq
elmot 1:d0dfbce63a89 1226 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1227 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1228 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1229 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1230 * @retval None
elmot 1:d0dfbce63a89 1231 */
elmot 1:d0dfbce63a89 1232 __STATIC_INLINE void LL_DAC_EnableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1233 {
elmot 1:d0dfbce63a89 1234 SET_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1235 DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1236 }
elmot 1:d0dfbce63a89 1237
elmot 1:d0dfbce63a89 1238 /**
elmot 1:d0dfbce63a89 1239 * @brief Disable DAC DMA transfer request of the selected channel.
elmot 1:d0dfbce63a89 1240 * @note To configure DMA source address (peripheral address),
elmot 1:d0dfbce63a89 1241 * use function @ref LL_DAC_DMA_GetRegAddr().
elmot 1:d0dfbce63a89 1242 * @rmtoll CR DMAEN1 LL_DAC_DisableDMAReq\n
elmot 1:d0dfbce63a89 1243 * CR DMAEN2 LL_DAC_DisableDMAReq
elmot 1:d0dfbce63a89 1244 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1245 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1246 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1247 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1248 * @retval None
elmot 1:d0dfbce63a89 1249 */
elmot 1:d0dfbce63a89 1250 __STATIC_INLINE void LL_DAC_DisableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1251 {
elmot 1:d0dfbce63a89 1252 CLEAR_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1253 DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1254 }
elmot 1:d0dfbce63a89 1255
elmot 1:d0dfbce63a89 1256 /**
elmot 1:d0dfbce63a89 1257 * @brief Get DAC DMA transfer request state of the selected channel.
elmot 1:d0dfbce63a89 1258 * (0: DAC DMA transfer request is disabled, 1: DAC DMA transfer request is enabled)
elmot 1:d0dfbce63a89 1259 * @rmtoll CR DMAEN1 LL_DAC_IsDMAReqEnabled\n
elmot 1:d0dfbce63a89 1260 * CR DMAEN2 LL_DAC_IsDMAReqEnabled
elmot 1:d0dfbce63a89 1261 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1262 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1263 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1264 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1265 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1266 */
elmot 1:d0dfbce63a89 1267 __STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1268 {
elmot 1:d0dfbce63a89 1269 return (READ_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1270 DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1271 == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)));
elmot 1:d0dfbce63a89 1272 }
elmot 1:d0dfbce63a89 1273
elmot 1:d0dfbce63a89 1274 /**
elmot 1:d0dfbce63a89 1275 * @brief Function to help to configure DMA transfer to DAC: retrieve the
elmot 1:d0dfbce63a89 1276 * DAC register address from DAC instance and a list of DAC registers
elmot 1:d0dfbce63a89 1277 * intended to be used (most commonly) with DMA transfer.
elmot 1:d0dfbce63a89 1278 * @note These DAC registers are data holding registers:
elmot 1:d0dfbce63a89 1279 * when DAC conversion is requested, DAC generates a DMA transfer
elmot 1:d0dfbce63a89 1280 * request to have data available in DAC data holding registers.
elmot 1:d0dfbce63a89 1281 * @note This macro is intended to be used with LL DMA driver, refer to
elmot 1:d0dfbce63a89 1282 * function "LL_DMA_ConfigAddresses()".
elmot 1:d0dfbce63a89 1283 * Example:
elmot 1:d0dfbce63a89 1284 * LL_DMA_ConfigAddresses(DMA1,
elmot 1:d0dfbce63a89 1285 * LL_DMA_CHANNEL_1,
elmot 1:d0dfbce63a89 1286 * (uint32_t)&< array or variable >,
elmot 1:d0dfbce63a89 1287 * LL_DAC_DMA_GetRegAddr(DAC1, LL_DAC_CHANNEL_1, LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED),
elmot 1:d0dfbce63a89 1288 * LL_DMA_DIRECTION_MEMORY_TO_PERIPH);
elmot 1:d0dfbce63a89 1289 * @rmtoll DHR12R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n
elmot 1:d0dfbce63a89 1290 * DHR12L1 DACC1DHR LL_DAC_DMA_GetRegAddr\n
elmot 1:d0dfbce63a89 1291 * DHR8R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n
elmot 1:d0dfbce63a89 1292 * DHR12R2 DACC2DHR LL_DAC_DMA_GetRegAddr\n
elmot 1:d0dfbce63a89 1293 * DHR12L2 DACC2DHR LL_DAC_DMA_GetRegAddr\n
elmot 1:d0dfbce63a89 1294 * DHR8R2 DACC2DHR LL_DAC_DMA_GetRegAddr
elmot 1:d0dfbce63a89 1295 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1296 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1297 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1298 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1299 * @param Register This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1300 * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED
elmot 1:d0dfbce63a89 1301 * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED
elmot 1:d0dfbce63a89 1302 * @arg @ref LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED
elmot 1:d0dfbce63a89 1303 * @retval DAC register address
elmot 1:d0dfbce63a89 1304 */
elmot 1:d0dfbce63a89 1305 __STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
elmot 1:d0dfbce63a89 1306 {
elmot 1:d0dfbce63a89 1307 /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on */
elmot 1:d0dfbce63a89 1308 /* DAC channel selected. */
elmot 1:d0dfbce63a89 1309 return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, Register))));
elmot 1:d0dfbce63a89 1310 }
elmot 1:d0dfbce63a89 1311 /**
elmot 1:d0dfbce63a89 1312 * @}
elmot 1:d0dfbce63a89 1313 */
elmot 1:d0dfbce63a89 1314
elmot 1:d0dfbce63a89 1315 /** @defgroup DAC_LL_EF_Operation Operation on DAC channels
elmot 1:d0dfbce63a89 1316 * @{
elmot 1:d0dfbce63a89 1317 */
elmot 1:d0dfbce63a89 1318
elmot 1:d0dfbce63a89 1319 /**
elmot 1:d0dfbce63a89 1320 * @brief Enable DAC selected channel.
elmot 1:d0dfbce63a89 1321 * @rmtoll CR EN1 LL_DAC_Enable\n
elmot 1:d0dfbce63a89 1322 * CR EN2 LL_DAC_Enable
elmot 1:d0dfbce63a89 1323 * @note After enable from off state, DAC channel requires a delay
elmot 1:d0dfbce63a89 1324 * for output voltage to reach accuracy +/- 1 LSB.
elmot 1:d0dfbce63a89 1325 * Refer to device datasheet, parameter "tWAKEUP".
elmot 1:d0dfbce63a89 1326 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1327 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1328 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1329 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1330 * @retval None
elmot 1:d0dfbce63a89 1331 */
elmot 1:d0dfbce63a89 1332 __STATIC_INLINE void LL_DAC_Enable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1333 {
elmot 1:d0dfbce63a89 1334 SET_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1335 DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1336 }
elmot 1:d0dfbce63a89 1337
elmot 1:d0dfbce63a89 1338 /**
elmot 1:d0dfbce63a89 1339 * @brief Disable DAC selected channel.
elmot 1:d0dfbce63a89 1340 * @rmtoll CR EN1 LL_DAC_Disable\n
elmot 1:d0dfbce63a89 1341 * CR EN2 LL_DAC_Disable
elmot 1:d0dfbce63a89 1342 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1343 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1344 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1345 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1346 * @retval None
elmot 1:d0dfbce63a89 1347 */
elmot 1:d0dfbce63a89 1348 __STATIC_INLINE void LL_DAC_Disable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1349 {
elmot 1:d0dfbce63a89 1350 CLEAR_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1351 DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1352 }
elmot 1:d0dfbce63a89 1353
elmot 1:d0dfbce63a89 1354 /**
elmot 1:d0dfbce63a89 1355 * @brief Get DAC enable state of the selected channel.
elmot 1:d0dfbce63a89 1356 * (0: DAC channel is disabled, 1: DAC channel is enabled)
elmot 1:d0dfbce63a89 1357 * @rmtoll CR EN1 LL_DAC_IsEnabled\n
elmot 1:d0dfbce63a89 1358 * CR EN2 LL_DAC_IsEnabled
elmot 1:d0dfbce63a89 1359 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1360 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1361 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1362 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1363 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1364 */
elmot 1:d0dfbce63a89 1365 __STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1366 {
elmot 1:d0dfbce63a89 1367 return (READ_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1368 DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1369 == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)));
elmot 1:d0dfbce63a89 1370 }
elmot 1:d0dfbce63a89 1371
elmot 1:d0dfbce63a89 1372 /**
elmot 1:d0dfbce63a89 1373 * @brief Enable DAC trigger of the selected channel.
elmot 1:d0dfbce63a89 1374 * @note - If DAC trigger is disabled, DAC conversion is performed
elmot 1:d0dfbce63a89 1375 * automatically once the data holding register is updated,
elmot 1:d0dfbce63a89 1376 * using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()":
elmot 1:d0dfbce63a89 1377 * @ref LL_DAC_ConvertData12RightAligned(), ...
elmot 1:d0dfbce63a89 1378 * - If DAC trigger is enabled, DAC conversion is performed
elmot 1:d0dfbce63a89 1379 * only when a hardware of software trigger event is occurring.
elmot 1:d0dfbce63a89 1380 * Select trigger source using
elmot 1:d0dfbce63a89 1381 * function @ref LL_DAC_SetTriggerSource().
elmot 1:d0dfbce63a89 1382 * @rmtoll CR TEN1 LL_DAC_EnableTrigger\n
elmot 1:d0dfbce63a89 1383 * CR TEN2 LL_DAC_EnableTrigger
elmot 1:d0dfbce63a89 1384 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1385 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1386 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1387 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1388 * @retval None
elmot 1:d0dfbce63a89 1389 */
elmot 1:d0dfbce63a89 1390 __STATIC_INLINE void LL_DAC_EnableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1391 {
elmot 1:d0dfbce63a89 1392 SET_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1393 DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1394 }
elmot 1:d0dfbce63a89 1395
elmot 1:d0dfbce63a89 1396 /**
elmot 1:d0dfbce63a89 1397 * @brief Disable DAC trigger of the selected channel.
elmot 1:d0dfbce63a89 1398 * @rmtoll CR TEN1 LL_DAC_DisableTrigger\n
elmot 1:d0dfbce63a89 1399 * CR TEN2 LL_DAC_DisableTrigger
elmot 1:d0dfbce63a89 1400 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1401 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1402 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1403 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1404 * @retval None
elmot 1:d0dfbce63a89 1405 */
elmot 1:d0dfbce63a89 1406 __STATIC_INLINE void LL_DAC_DisableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1407 {
elmot 1:d0dfbce63a89 1408 CLEAR_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1409 DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
elmot 1:d0dfbce63a89 1410 }
elmot 1:d0dfbce63a89 1411
elmot 1:d0dfbce63a89 1412 /**
elmot 1:d0dfbce63a89 1413 * @brief Get DAC trigger state of the selected channel.
elmot 1:d0dfbce63a89 1414 * (0: DAC trigger is disabled, 1: DAC trigger is enabled)
elmot 1:d0dfbce63a89 1415 * @rmtoll CR TEN1 LL_DAC_IsTriggerEnabled\n
elmot 1:d0dfbce63a89 1416 * CR TEN2 LL_DAC_IsTriggerEnabled
elmot 1:d0dfbce63a89 1417 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1418 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1419 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1420 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1421 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1422 */
elmot 1:d0dfbce63a89 1423 __STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1424 {
elmot 1:d0dfbce63a89 1425 return (READ_BIT(DACx->CR,
elmot 1:d0dfbce63a89 1426 DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
elmot 1:d0dfbce63a89 1427 == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)));
elmot 1:d0dfbce63a89 1428 }
elmot 1:d0dfbce63a89 1429
elmot 1:d0dfbce63a89 1430 /**
elmot 1:d0dfbce63a89 1431 * @brief Trig DAC conversion by software for the selected DAC channel.
elmot 1:d0dfbce63a89 1432 * @note Preliminarily, DAC trigger must be set to software trigger
elmot 1:d0dfbce63a89 1433 * using function @ref LL_DAC_SetTriggerSource()
elmot 1:d0dfbce63a89 1434 * with parameter "LL_DAC_TRIGGER_SOFTWARE".
elmot 1:d0dfbce63a89 1435 * and DAC trigger must be enabled using
elmot 1:d0dfbce63a89 1436 * function @ref LL_DAC_EnableTrigger().
elmot 1:d0dfbce63a89 1437 * @note For devices featuring DAC with 2 channels: this function
elmot 1:d0dfbce63a89 1438 * can perform a SW start of both DAC channels simultaneously.
elmot 1:d0dfbce63a89 1439 * Two channels can be selected as parameter.
elmot 1:d0dfbce63a89 1440 * Example: (LL_DAC_CHANNEL_1 | LL_DAC_CHANNEL_2)
elmot 1:d0dfbce63a89 1441 * @rmtoll SWTRIGR SWTRIG1 LL_DAC_TrigSWConversion\n
elmot 1:d0dfbce63a89 1442 * SWTRIGR SWTRIG2 LL_DAC_TrigSWConversion
elmot 1:d0dfbce63a89 1443 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1444 * @param DAC_Channel This parameter can a combination of the following values:
elmot 1:d0dfbce63a89 1445 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1446 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1447 * @retval None
elmot 1:d0dfbce63a89 1448 */
elmot 1:d0dfbce63a89 1449 __STATIC_INLINE void LL_DAC_TrigSWConversion(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1450 {
elmot 1:d0dfbce63a89 1451 SET_BIT(DACx->SWTRIGR,
elmot 1:d0dfbce63a89 1452 (DAC_Channel & DAC_SWTR_CHX_MASK));
elmot 1:d0dfbce63a89 1453 }
elmot 1:d0dfbce63a89 1454
elmot 1:d0dfbce63a89 1455 /**
elmot 1:d0dfbce63a89 1456 * @brief Set the data to be loaded in the data holding register
elmot 1:d0dfbce63a89 1457 * in format 12 bits left alignment (LSB aligned on bit 0),
elmot 1:d0dfbce63a89 1458 * for the selected DAC channel.
elmot 1:d0dfbce63a89 1459 * @rmtoll DHR12R1 DACC1DHR LL_DAC_ConvertData12RightAligned\n
elmot 1:d0dfbce63a89 1460 * DHR12R2 DACC2DHR LL_DAC_ConvertData12RightAligned
elmot 1:d0dfbce63a89 1461 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1462 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1463 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1464 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1465 * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1466 * @retval None
elmot 1:d0dfbce63a89 1467 */
elmot 1:d0dfbce63a89 1468 __STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
elmot 1:d0dfbce63a89 1469 {
elmot 1:d0dfbce63a89 1470 register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DHR12RX_REGOFFSET_MASK));
elmot 1:d0dfbce63a89 1471
elmot 1:d0dfbce63a89 1472 MODIFY_REG(*preg,
elmot 1:d0dfbce63a89 1473 DAC_DHR12R1_DACC1DHR,
elmot 1:d0dfbce63a89 1474 Data);
elmot 1:d0dfbce63a89 1475 }
elmot 1:d0dfbce63a89 1476
elmot 1:d0dfbce63a89 1477 /**
elmot 1:d0dfbce63a89 1478 * @brief Set the data to be loaded in the data holding register
elmot 1:d0dfbce63a89 1479 * in format 12 bits left alignment (MSB aligned on bit 15),
elmot 1:d0dfbce63a89 1480 * for the selected DAC channel.
elmot 1:d0dfbce63a89 1481 * @rmtoll DHR12L1 DACC1DHR LL_DAC_ConvertData12LeftAligned\n
elmot 1:d0dfbce63a89 1482 * DHR12L2 DACC2DHR LL_DAC_ConvertData12LeftAligned
elmot 1:d0dfbce63a89 1483 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1484 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1485 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1486 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1487 * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1488 * @retval None
elmot 1:d0dfbce63a89 1489 */
elmot 1:d0dfbce63a89 1490 __STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
elmot 1:d0dfbce63a89 1491 {
elmot 1:d0dfbce63a89 1492 register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DHR12LX_REGOFFSET_MASK));
elmot 1:d0dfbce63a89 1493
elmot 1:d0dfbce63a89 1494 MODIFY_REG(*preg,
elmot 1:d0dfbce63a89 1495 DAC_DHR12L1_DACC1DHR,
elmot 1:d0dfbce63a89 1496 Data);
elmot 1:d0dfbce63a89 1497 }
elmot 1:d0dfbce63a89 1498
elmot 1:d0dfbce63a89 1499 /**
elmot 1:d0dfbce63a89 1500 * @brief Set the data to be loaded in the data holding register
elmot 1:d0dfbce63a89 1501 * in format 8 bits left alignment (LSB aligned on bit 0),
elmot 1:d0dfbce63a89 1502 * for the selected DAC channel.
elmot 1:d0dfbce63a89 1503 * @rmtoll DHR8R1 DACC1DHR LL_DAC_ConvertData8RightAligned\n
elmot 1:d0dfbce63a89 1504 * DHR8R2 DACC2DHR LL_DAC_ConvertData8RightAligned
elmot 1:d0dfbce63a89 1505 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1506 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1507 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1508 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1509 * @param Data Value between Min_Data=0x00 and Max_Data=0xFF
elmot 1:d0dfbce63a89 1510 * @retval None
elmot 1:d0dfbce63a89 1511 */
elmot 1:d0dfbce63a89 1512 __STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
elmot 1:d0dfbce63a89 1513 {
elmot 1:d0dfbce63a89 1514 register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DHR8RX_REGOFFSET_MASK));
elmot 1:d0dfbce63a89 1515
elmot 1:d0dfbce63a89 1516 MODIFY_REG(*preg,
elmot 1:d0dfbce63a89 1517 DAC_DHR8R1_DACC1DHR,
elmot 1:d0dfbce63a89 1518 Data);
elmot 1:d0dfbce63a89 1519 }
elmot 1:d0dfbce63a89 1520
elmot 1:d0dfbce63a89 1521 /**
elmot 1:d0dfbce63a89 1522 * @brief Set the data to be loaded in the data holding register
elmot 1:d0dfbce63a89 1523 * in format 12 bits left alignment (LSB aligned on bit 0),
elmot 1:d0dfbce63a89 1524 * for both DAC channels.
elmot 1:d0dfbce63a89 1525 * @rmtoll DHR12RD DACC1DHR LL_DAC_ConvertDualData12RightAligned\n
elmot 1:d0dfbce63a89 1526 * DHR12RD DACC2DHR LL_DAC_ConvertDualData12RightAligned
elmot 1:d0dfbce63a89 1527 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1528 * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1529 * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1530 * @retval None
elmot 1:d0dfbce63a89 1531 */
elmot 1:d0dfbce63a89 1532 __STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
elmot 1:d0dfbce63a89 1533 {
elmot 1:d0dfbce63a89 1534 MODIFY_REG(DACx->DHR12RD,
elmot 1:d0dfbce63a89 1535 (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR),
elmot 1:d0dfbce63a89 1536 ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
elmot 1:d0dfbce63a89 1537 }
elmot 1:d0dfbce63a89 1538
elmot 1:d0dfbce63a89 1539 /**
elmot 1:d0dfbce63a89 1540 * @brief Set the data to be loaded in the data holding register
elmot 1:d0dfbce63a89 1541 * in format 12 bits left alignment (MSB aligned on bit 15),
elmot 1:d0dfbce63a89 1542 * for both DAC channels.
elmot 1:d0dfbce63a89 1543 * @rmtoll DHR12LD DACC1DHR LL_DAC_ConvertDualData12LeftAligned\n
elmot 1:d0dfbce63a89 1544 * DHR12LD DACC2DHR LL_DAC_ConvertDualData12LeftAligned
elmot 1:d0dfbce63a89 1545 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1546 * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1547 * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1548 * @retval None
elmot 1:d0dfbce63a89 1549 */
elmot 1:d0dfbce63a89 1550 __STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
elmot 1:d0dfbce63a89 1551 {
elmot 1:d0dfbce63a89 1552 /* Note: Data of DAC channel 2 shift value subtracted of 4 because */
elmot 1:d0dfbce63a89 1553 /* data on 16 bits and DAC channel 2 bits field is on the 12 MSB, */
elmot 1:d0dfbce63a89 1554 /* the 4 LSB must be taken into account for the shift value. */
elmot 1:d0dfbce63a89 1555 MODIFY_REG(DACx->DHR12LD,
elmot 1:d0dfbce63a89 1556 (DAC_DHR12LD_DACC2DHR | DAC_DHR12LD_DACC1DHR),
elmot 1:d0dfbce63a89 1557 ((DataChannel2 << (DAC_DHR12LD_DACC2DHR_BITOFFSET_POS - 4U)) | DataChannel1));
elmot 1:d0dfbce63a89 1558 }
elmot 1:d0dfbce63a89 1559
elmot 1:d0dfbce63a89 1560 /**
elmot 1:d0dfbce63a89 1561 * @brief Set the data to be loaded in the data holding register
elmot 1:d0dfbce63a89 1562 * in format 8 bits left alignment (LSB aligned on bit 0),
elmot 1:d0dfbce63a89 1563 * for both DAC channels.
elmot 1:d0dfbce63a89 1564 * @rmtoll DHR8RD DACC1DHR LL_DAC_ConvertDualData8RightAligned\n
elmot 1:d0dfbce63a89 1565 * DHR8RD DACC2DHR LL_DAC_ConvertDualData8RightAligned
elmot 1:d0dfbce63a89 1566 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1567 * @param DataChannel1 Value between Min_Data=0x00 and Max_Data=0xFF
elmot 1:d0dfbce63a89 1568 * @param DataChannel2 Value between Min_Data=0x00 and Max_Data=0xFF
elmot 1:d0dfbce63a89 1569 * @retval None
elmot 1:d0dfbce63a89 1570 */
elmot 1:d0dfbce63a89 1571 __STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
elmot 1:d0dfbce63a89 1572 {
elmot 1:d0dfbce63a89 1573 MODIFY_REG(DACx->DHR8RD,
elmot 1:d0dfbce63a89 1574 (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR),
elmot 1:d0dfbce63a89 1575 ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
elmot 1:d0dfbce63a89 1576 }
elmot 1:d0dfbce63a89 1577
elmot 1:d0dfbce63a89 1578 /**
elmot 1:d0dfbce63a89 1579 * @brief Retrieve output data currently generated for the selected DAC channel.
elmot 1:d0dfbce63a89 1580 * @note Whatever alignment and resolution settings
elmot 1:d0dfbce63a89 1581 * (using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()":
elmot 1:d0dfbce63a89 1582 * @ref LL_DAC_ConvertData12RightAligned(), ...),
elmot 1:d0dfbce63a89 1583 * output data format is 12 bits right aligned (LSB aligned on bit 0).
elmot 1:d0dfbce63a89 1584 * @rmtoll DOR1 DACC1DOR LL_DAC_RetrieveOutputData\n
elmot 1:d0dfbce63a89 1585 * DOR2 DACC2DOR LL_DAC_RetrieveOutputData
elmot 1:d0dfbce63a89 1586 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1587 * @param DAC_Channel This parameter can be one of the following values:
elmot 1:d0dfbce63a89 1588 * @arg @ref LL_DAC_CHANNEL_1
elmot 1:d0dfbce63a89 1589 * @arg @ref LL_DAC_CHANNEL_2
elmot 1:d0dfbce63a89 1590 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
elmot 1:d0dfbce63a89 1591 */
elmot 1:d0dfbce63a89 1592 __STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel)
elmot 1:d0dfbce63a89 1593 {
elmot 1:d0dfbce63a89 1594 register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DORX_REGOFFSET_MASK));
elmot 1:d0dfbce63a89 1595
elmot 1:d0dfbce63a89 1596 return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR);
elmot 1:d0dfbce63a89 1597 }
elmot 1:d0dfbce63a89 1598
elmot 1:d0dfbce63a89 1599 /**
elmot 1:d0dfbce63a89 1600 * @}
elmot 1:d0dfbce63a89 1601 */
elmot 1:d0dfbce63a89 1602
elmot 1:d0dfbce63a89 1603 /** @defgroup DAC_LL_EF_FLAG_Management FLAG Management
elmot 1:d0dfbce63a89 1604 * @{
elmot 1:d0dfbce63a89 1605 */
elmot 1:d0dfbce63a89 1606 /**
elmot 1:d0dfbce63a89 1607 * @brief Get DAC calibration offset flag for DAC channel 1
elmot 1:d0dfbce63a89 1608 * @rmtoll SR CAL_FLAG1 LL_DAC_IsActiveFlag_CAL1
elmot 1:d0dfbce63a89 1609 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1610 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1611 */
elmot 1:d0dfbce63a89 1612 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1613 {
elmot 1:d0dfbce63a89 1614 return (READ_BIT(DACx->SR, LL_DAC_FLAG_CAL1) == (LL_DAC_FLAG_CAL1));
elmot 1:d0dfbce63a89 1615 }
elmot 1:d0dfbce63a89 1616
elmot 1:d0dfbce63a89 1617 /**
elmot 1:d0dfbce63a89 1618 * @brief Get DAC calibration offset flag for DAC channel 2
elmot 1:d0dfbce63a89 1619 * @rmtoll SR CAL_FLAG2 LL_DAC_IsActiveFlag_CAL2
elmot 1:d0dfbce63a89 1620 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1621 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1622 */
elmot 1:d0dfbce63a89 1623 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1624 {
elmot 1:d0dfbce63a89 1625 return (READ_BIT(DACx->SR, LL_DAC_FLAG_CAL2) == (LL_DAC_FLAG_CAL2));
elmot 1:d0dfbce63a89 1626 }
elmot 1:d0dfbce63a89 1627
elmot 1:d0dfbce63a89 1628 /**
elmot 1:d0dfbce63a89 1629 * @brief Get DAC busy writing sample time flag for DAC channel 1
elmot 1:d0dfbce63a89 1630 * @rmtoll SR BWST1 LL_DAC_IsActiveFlag_BWST1
elmot 1:d0dfbce63a89 1631 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1632 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1633 */
elmot 1:d0dfbce63a89 1634 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1635 {
elmot 1:d0dfbce63a89 1636 return (READ_BIT(DACx->SR, LL_DAC_FLAG_BWST1) == (LL_DAC_FLAG_BWST1));
elmot 1:d0dfbce63a89 1637 }
elmot 1:d0dfbce63a89 1638
elmot 1:d0dfbce63a89 1639 /**
elmot 1:d0dfbce63a89 1640 * @brief Get DAC busy writing sample time flag for DAC channel 2
elmot 1:d0dfbce63a89 1641 * @rmtoll SR BWST2 LL_DAC_IsActiveFlag_BWST2
elmot 1:d0dfbce63a89 1642 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1643 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1644 */
elmot 1:d0dfbce63a89 1645 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1646 {
elmot 1:d0dfbce63a89 1647 return (READ_BIT(DACx->SR, LL_DAC_FLAG_BWST2) == (LL_DAC_FLAG_BWST2));
elmot 1:d0dfbce63a89 1648 }
elmot 1:d0dfbce63a89 1649
elmot 1:d0dfbce63a89 1650 /**
elmot 1:d0dfbce63a89 1651 * @brief Get DAC underrun flag for DAC channel 1
elmot 1:d0dfbce63a89 1652 * @rmtoll SR DMAUDR1 LL_DAC_IsActiveFlag_DMAUDR1
elmot 1:d0dfbce63a89 1653 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1654 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1655 */
elmot 1:d0dfbce63a89 1656 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1657 {
elmot 1:d0dfbce63a89 1658 return (READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1));
elmot 1:d0dfbce63a89 1659 }
elmot 1:d0dfbce63a89 1660
elmot 1:d0dfbce63a89 1661 /**
elmot 1:d0dfbce63a89 1662 * @brief Get DAC underrun flag for DAC channel 2
elmot 1:d0dfbce63a89 1663 * @rmtoll SR DMAUDR2 LL_DAC_IsActiveFlag_DMAUDR2
elmot 1:d0dfbce63a89 1664 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1665 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1666 */
elmot 1:d0dfbce63a89 1667 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1668 {
elmot 1:d0dfbce63a89 1669 return (READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2));
elmot 1:d0dfbce63a89 1670 }
elmot 1:d0dfbce63a89 1671
elmot 1:d0dfbce63a89 1672 /**
elmot 1:d0dfbce63a89 1673 * @brief Clear DAC underrun flag for DAC channel 1
elmot 1:d0dfbce63a89 1674 * @rmtoll SR DMAUDR1 LL_DAC_ClearFlag_DMAUDR1
elmot 1:d0dfbce63a89 1675 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1676 * @retval None
elmot 1:d0dfbce63a89 1677 */
elmot 1:d0dfbce63a89 1678 __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1679 {
elmot 1:d0dfbce63a89 1680 WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR1);
elmot 1:d0dfbce63a89 1681 }
elmot 1:d0dfbce63a89 1682
elmot 1:d0dfbce63a89 1683 /**
elmot 1:d0dfbce63a89 1684 * @brief Clear DAC underrun flag for DAC channel 2
elmot 1:d0dfbce63a89 1685 * @rmtoll SR DMAUDR2 LL_DAC_ClearFlag_DMAUDR2
elmot 1:d0dfbce63a89 1686 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1687 * @retval None
elmot 1:d0dfbce63a89 1688 */
elmot 1:d0dfbce63a89 1689 __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1690 {
elmot 1:d0dfbce63a89 1691 WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR2);
elmot 1:d0dfbce63a89 1692 }
elmot 1:d0dfbce63a89 1693
elmot 1:d0dfbce63a89 1694 /**
elmot 1:d0dfbce63a89 1695 * @}
elmot 1:d0dfbce63a89 1696 */
elmot 1:d0dfbce63a89 1697
elmot 1:d0dfbce63a89 1698 /** @defgroup DAC_LL_EF_IT_Management IT management
elmot 1:d0dfbce63a89 1699 * @{
elmot 1:d0dfbce63a89 1700 */
elmot 1:d0dfbce63a89 1701
elmot 1:d0dfbce63a89 1702 /**
elmot 1:d0dfbce63a89 1703 * @brief Enable DMA underrun interrupt for DAC channel 1
elmot 1:d0dfbce63a89 1704 * @rmtoll CR DMAUDRIE1 LL_DAC_EnableIT_DMAUDR1
elmot 1:d0dfbce63a89 1705 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1706 * @retval None
elmot 1:d0dfbce63a89 1707 */
elmot 1:d0dfbce63a89 1708 __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1709 {
elmot 1:d0dfbce63a89 1710 SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1);
elmot 1:d0dfbce63a89 1711 }
elmot 1:d0dfbce63a89 1712
elmot 1:d0dfbce63a89 1713 /**
elmot 1:d0dfbce63a89 1714 * @brief Enable DMA underrun interrupt for DAC channel 2
elmot 1:d0dfbce63a89 1715 * @rmtoll CR DMAUDRIE2 LL_DAC_EnableIT_DMAUDR2
elmot 1:d0dfbce63a89 1716 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1717 * @retval None
elmot 1:d0dfbce63a89 1718 */
elmot 1:d0dfbce63a89 1719 __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1720 {
elmot 1:d0dfbce63a89 1721 SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2);
elmot 1:d0dfbce63a89 1722 }
elmot 1:d0dfbce63a89 1723
elmot 1:d0dfbce63a89 1724 /**
elmot 1:d0dfbce63a89 1725 * @brief Disable DMA underrun interrupt for DAC channel 1
elmot 1:d0dfbce63a89 1726 * @rmtoll CR DMAUDRIE1 LL_DAC_DisableIT_DMAUDR1
elmot 1:d0dfbce63a89 1727 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1728 * @retval None
elmot 1:d0dfbce63a89 1729 */
elmot 1:d0dfbce63a89 1730 __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1731 {
elmot 1:d0dfbce63a89 1732 CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1);
elmot 1:d0dfbce63a89 1733 }
elmot 1:d0dfbce63a89 1734
elmot 1:d0dfbce63a89 1735 /**
elmot 1:d0dfbce63a89 1736 * @brief Disable DMA underrun interrupt for DAC channel 2
elmot 1:d0dfbce63a89 1737 * @rmtoll CR DMAUDRIE2 LL_DAC_DisableIT_DMAUDR2
elmot 1:d0dfbce63a89 1738 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1739 * @retval None
elmot 1:d0dfbce63a89 1740 */
elmot 1:d0dfbce63a89 1741 __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1742 {
elmot 1:d0dfbce63a89 1743 CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2);
elmot 1:d0dfbce63a89 1744 }
elmot 1:d0dfbce63a89 1745
elmot 1:d0dfbce63a89 1746 /**
elmot 1:d0dfbce63a89 1747 * @brief Get DMA underrun interrupt for DAC channel 1
elmot 1:d0dfbce63a89 1748 * @rmtoll CR DMAUDRIE1 LL_DAC_IsEnabledIT_DMAUDR1
elmot 1:d0dfbce63a89 1749 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1750 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1751 */
elmot 1:d0dfbce63a89 1752 __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1753 {
elmot 1:d0dfbce63a89 1754 return (READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1));
elmot 1:d0dfbce63a89 1755 }
elmot 1:d0dfbce63a89 1756
elmot 1:d0dfbce63a89 1757 /**
elmot 1:d0dfbce63a89 1758 * @brief Get DMA underrun interrupt for DAC channel 2
elmot 1:d0dfbce63a89 1759 * @rmtoll CR DMAUDRIE2 LL_DAC_IsEnabledIT_DMAUDR2
elmot 1:d0dfbce63a89 1760 * @param DACx DAC instance
elmot 1:d0dfbce63a89 1761 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 1762 */
elmot 1:d0dfbce63a89 1763 __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx)
elmot 1:d0dfbce63a89 1764 {
elmot 1:d0dfbce63a89 1765 return (READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2));
elmot 1:d0dfbce63a89 1766 }
elmot 1:d0dfbce63a89 1767
elmot 1:d0dfbce63a89 1768 /**
elmot 1:d0dfbce63a89 1769 * @}
elmot 1:d0dfbce63a89 1770 */
elmot 1:d0dfbce63a89 1771
elmot 1:d0dfbce63a89 1772 #if defined(USE_FULL_LL_DRIVER)
elmot 1:d0dfbce63a89 1773 /** @defgroup DAC_LL_EF_Init Initialization and de-initialization functions
elmot 1:d0dfbce63a89 1774 * @{
elmot 1:d0dfbce63a89 1775 */
elmot 1:d0dfbce63a89 1776
elmot 1:d0dfbce63a89 1777 ErrorStatus LL_DAC_DeInit(DAC_TypeDef* DACx);
elmot 1:d0dfbce63a89 1778 ErrorStatus LL_DAC_Init(DAC_TypeDef* DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef* DAC_InitStruct);
elmot 1:d0dfbce63a89 1779 void LL_DAC_StructInit(LL_DAC_InitTypeDef* DAC_InitStruct);
elmot 1:d0dfbce63a89 1780
elmot 1:d0dfbce63a89 1781 /**
elmot 1:d0dfbce63a89 1782 * @}
elmot 1:d0dfbce63a89 1783 */
elmot 1:d0dfbce63a89 1784 #endif /* USE_FULL_LL_DRIVER */
elmot 1:d0dfbce63a89 1785
elmot 1:d0dfbce63a89 1786 /**
elmot 1:d0dfbce63a89 1787 * @}
elmot 1:d0dfbce63a89 1788 */
elmot 1:d0dfbce63a89 1789
elmot 1:d0dfbce63a89 1790 /**
elmot 1:d0dfbce63a89 1791 * @}
elmot 1:d0dfbce63a89 1792 */
elmot 1:d0dfbce63a89 1793
elmot 1:d0dfbce63a89 1794 #endif /* DAC1 */
elmot 1:d0dfbce63a89 1795
elmot 1:d0dfbce63a89 1796 /**
elmot 1:d0dfbce63a89 1797 * @}
elmot 1:d0dfbce63a89 1798 */
elmot 1:d0dfbce63a89 1799
elmot 1:d0dfbce63a89 1800 #ifdef __cplusplus
elmot 1:d0dfbce63a89 1801 }
elmot 1:d0dfbce63a89 1802 #endif
elmot 1:d0dfbce63a89 1803
elmot 1:d0dfbce63a89 1804 #endif /* __STM32L4xx_LL_DAC_H */
elmot 1:d0dfbce63a89 1805
elmot 1:d0dfbce63a89 1806 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/