STM32F103xB HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32f1xx_ll_dac.h 00004 * @author MCD Application Team 00005 * @brief Header file of DAC LL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * <h2><center>© Copyright (c) 2016 STMicroelectronics. 00010 * All rights reserved.</center></h2> 00011 * 00012 * This software component is licensed by ST under BSD 3-Clause license, 00013 * the "License"; You may not use this file except in compliance with the 00014 * License. You may obtain a copy of the License at: 00015 * opensource.org/licenses/BSD-3-Clause 00016 * 00017 ****************************************************************************** 00018 */ 00019 00020 /* Define to prevent recursive inclusion -------------------------------------*/ 00021 #ifndef STM32F1xx_LL_DAC_H 00022 #define STM32F1xx_LL_DAC_H 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 /* Includes ------------------------------------------------------------------*/ 00029 #include "stm32f1xx.h" 00030 00031 /** @addtogroup STM32F1xx_LL_Driver 00032 * @{ 00033 */ 00034 00035 #if defined(DAC) 00036 00037 /** @defgroup DAC_LL DAC 00038 * @{ 00039 */ 00040 00041 /* Private types -------------------------------------------------------------*/ 00042 /* Private variables ---------------------------------------------------------*/ 00043 00044 /* Private constants ---------------------------------------------------------*/ 00045 /** @defgroup DAC_LL_Private_Constants DAC Private Constants 00046 * @{ 00047 */ 00048 00049 /* Internal masks for DAC channels definition */ 00050 /* To select into literal LL_DAC_CHANNEL_x the relevant bits for: */ 00051 /* - channel bits position into registers CR, MCR, CCR, SHHR, SHRR */ 00052 /* - channel bits position into register SWTRIG */ 00053 /* - channel register offset of data holding register DHRx */ 00054 /* - channel register offset of data output register DORx */ 00055 #define DAC_CR_CH1_BITOFFSET 0UL /* Position of channel bits into registers 00056 CR, MCR, CCR, SHHR, SHRR of channel 1 */ 00057 #define DAC_CR_CH2_BITOFFSET 16UL /* Position of channel bits into registers 00058 CR, MCR, CCR, SHHR, SHRR of channel 2 */ 00059 #define DAC_CR_CHX_BITOFFSET_MASK (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET) 00060 00061 #define DAC_SWTR_CH1 (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. */ 00062 #define DAC_SWTR_CH2 (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. */ 00063 #define DAC_SWTR_CHX_MASK (DAC_SWTR_CH1 | DAC_SWTR_CH2) 00064 00065 #define DAC_REG_DHR12R1_REGOFFSET 0x00000000UL /* Register DHR12Rx channel 1 taken as reference */ 00066 #define DAC_REG_DHR12L1_REGOFFSET 0x00100000UL /* Register offset of DHR12Lx channel 1 versus 00067 DHR12Rx channel 1 (shifted left of 20 bits) */ 00068 #define DAC_REG_DHR8R1_REGOFFSET 0x02000000UL /* Register offset of DHR8Rx channel 1 versus 00069 DHR12Rx channel 1 (shifted left of 24 bits) */ 00070 00071 #define DAC_REG_DHR12R2_REGOFFSET 0x00030000UL /* Register offset of DHR12Rx channel 2 versus 00072 DHR12Rx channel 1 (shifted left of 16 bits) */ 00073 #define DAC_REG_DHR12L2_REGOFFSET 0x00400000UL /* Register offset of DHR12Lx channel 2 versus 00074 DHR12Rx channel 1 (shifted left of 20 bits) */ 00075 #define DAC_REG_DHR8R2_REGOFFSET 0x05000000UL /* Register offset of DHR8Rx channel 2 versus 00076 DHR12Rx channel 1 (shifted left of 24 bits) */ 00077 00078 #define DAC_REG_DHR12RX_REGOFFSET_MASK 0x000F0000UL 00079 #define DAC_REG_DHR12LX_REGOFFSET_MASK 0x00F00000UL 00080 #define DAC_REG_DHR8RX_REGOFFSET_MASK 0x0F000000UL 00081 #define DAC_REG_DHRX_REGOFFSET_MASK (DAC_REG_DHR12RX_REGOFFSET_MASK\ 00082 | DAC_REG_DHR12LX_REGOFFSET_MASK | DAC_REG_DHR8RX_REGOFFSET_MASK) 00083 00084 #define DAC_REG_DOR1_REGOFFSET 0x00000000UL /* Register DORx channel 1 taken as reference */ 00085 00086 #define DAC_REG_DOR2_REGOFFSET 0x10000000UL /* Register offset of DORx channel 1 versus 00087 DORx channel 2 (shifted left of 28 bits) */ 00088 #define DAC_REG_DORX_REGOFFSET_MASK (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET) 00089 00090 00091 00092 #define DAC_REG_DHR_REGOFFSET_MASK_POSBIT0 0x0000000FUL /* Mask of data hold registers offset (DHR12Rx, 00093 DHR12Lx, DHR8Rx, ...) when shifted to position 0 */ 00094 #define DAC_REG_DORX_REGOFFSET_MASK_POSBIT0 0x00000001UL /* Mask of DORx registers offset when shifted 00095 to position 0 */ 00096 #define DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0 0x00000001UL /* Mask of SHSRx registers offset when shifted 00097 to position 0 */ 00098 00099 #define DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS 16UL /* Position of bits register offset of DHR12Rx 00100 channel 1 or 2 versus DHR12Rx channel 1 00101 (shifted left of 16 bits) */ 00102 #define DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS 20UL /* Position of bits register offset of DHR12Lx 00103 channel 1 or 2 versus DHR12Rx channel 1 00104 (shifted left of 20 bits) */ 00105 #define DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS 24UL /* Position of bits register offset of DHR8Rx 00106 channel 1 or 2 versus DHR12Rx channel 1 00107 (shifted left of 24 bits) */ 00108 #define DAC_REG_DORX_REGOFFSET_BITOFFSET_POS 28UL /* Position of bits register offset of DORx 00109 channel 1 or 2 versus DORx channel 1 00110 (shifted left of 28 bits) */ 00111 00112 /* DAC registers bits positions */ 00113 #define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS DAC_DHR12RD_DACC2DHR_Pos 00114 #define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS DAC_DHR12LD_DACC2DHR_Pos 00115 #define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS DAC_DHR8RD_DACC2DHR_Pos 00116 00117 /* Miscellaneous data */ 00118 #define DAC_DIGITAL_SCALE_12BITS 4095UL /* Full-scale digital value with a resolution of 12 00119 bits (voltage range determined by analog voltage 00120 references Vref+ and Vref-, refer to reference manual) */ 00121 00122 /** 00123 * @} 00124 */ 00125 00126 00127 /* Private macros ------------------------------------------------------------*/ 00128 /** @defgroup DAC_LL_Private_Macros DAC Private Macros 00129 * @{ 00130 */ 00131 00132 /** 00133 * @brief Driver macro reserved for internal use: set a pointer to 00134 * a register from a register basis from which an offset 00135 * is applied. 00136 * @param __REG__ Register basis from which the offset is applied. 00137 * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers). 00138 * @retval Pointer to register address 00139 */ 00140 #define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \ 00141 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2UL)))) 00142 00143 /** 00144 * @} 00145 */ 00146 00147 00148 /* Exported types ------------------------------------------------------------*/ 00149 #if defined(USE_FULL_LL_DRIVER) 00150 /** @defgroup DAC_LL_ES_INIT DAC Exported Init structure 00151 * @{ 00152 */ 00153 00154 /** 00155 * @brief Structure definition of some features of DAC instance. 00156 */ 00157 typedef struct 00158 { 00159 uint32_t TriggerSource; /*!< Set the conversion trigger source for the selected DAC channel: 00160 internal (SW start) or from external peripheral 00161 (timer event, external interrupt line). 00162 This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE 00163 00164 This feature can be modified afterwards using unitary 00165 function @ref LL_DAC_SetTriggerSource(). */ 00166 00167 uint32_t WaveAutoGeneration; /*!< Set the waveform automatic generation mode for the selected DAC channel. 00168 This parameter can be a value of @ref DAC_LL_EC_WAVE_AUTO_GENERATION_MODE 00169 00170 This feature can be modified afterwards using unitary 00171 function @ref LL_DAC_SetWaveAutoGeneration(). */ 00172 00173 uint32_t WaveAutoGenerationConfig; /*!< Set the waveform automatic generation mode for the selected DAC channel. 00174 If waveform automatic generation mode is set to noise, this parameter 00175 can be a value of @ref DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS 00176 If waveform automatic generation mode is set to triangle, 00177 this parameter can be a value of @ref DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE 00178 @note If waveform automatic generation mode is disabled, 00179 this parameter is discarded. 00180 00181 This feature can be modified afterwards using unitary 00182 function @ref LL_DAC_SetWaveNoiseLFSR(), 00183 @ref LL_DAC_SetWaveTriangleAmplitude() 00184 depending on the wave automatic generation selected. */ 00185 00186 uint32_t OutputBuffer; /*!< Set the output buffer for the selected DAC channel. 00187 This parameter can be a value of @ref DAC_LL_EC_OUTPUT_BUFFER 00188 00189 This feature can be modified afterwards using unitary 00190 function @ref LL_DAC_SetOutputBuffer(). */ 00191 } LL_DAC_InitTypeDef; 00192 00193 /** 00194 * @} 00195 */ 00196 #endif /* USE_FULL_LL_DRIVER */ 00197 00198 /* Exported constants --------------------------------------------------------*/ 00199 /** @defgroup DAC_LL_Exported_Constants DAC Exported Constants 00200 * @{ 00201 */ 00202 00203 /** @defgroup DAC_LL_EC_GET_FLAG DAC flags 00204 * @brief Flags defines which can be used with LL_DAC_ReadReg function 00205 * @{ 00206 */ 00207 /* DAC channel 1 flags */ 00208 #define LL_DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1) /*!< DAC channel 1 flag DMA underrun */ 00209 00210 /* DAC channel 2 flags */ 00211 #define LL_DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2) /*!< DAC channel 2 flag DMA underrun */ 00212 00213 /** 00214 * @} 00215 */ 00216 00217 /** @defgroup DAC_LL_EC_IT DAC interruptions 00218 * @brief IT defines which can be used with LL_DAC_ReadReg and LL_DAC_WriteReg functions 00219 * @{ 00220 */ 00221 #define LL_DAC_IT_DMAUDRIE1 (DAC_CR_DMAUDRIE1) /*!< DAC channel 1 interruption DMA underrun */ 00222 00223 #define LL_DAC_IT_DMAUDRIE2 (DAC_CR_DMAUDRIE2) /*!< DAC channel 2 interruption DMA underrun */ 00224 00225 /** 00226 * @} 00227 */ 00228 00229 /** @defgroup DAC_LL_EC_CHANNEL DAC channels 00230 * @{ 00231 */ 00232 #define LL_DAC_CHANNEL_1 (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 */ 00233 00234 #define LL_DAC_CHANNEL_2 (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 */ 00235 00236 /** 00237 * @} 00238 */ 00239 00240 /** @defgroup DAC_LL_EC_TRIGGER_SOURCE DAC trigger source 00241 * @{ 00242 */ 00243 #define LL_DAC_TRIG_SOFTWARE (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger internal (SW start) */ 00244 #define LL_DAC_TRIG_EXT_TIM3_TRGO ( DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM3 TRGO. */ 00245 #define LL_DAC_TRIG_EXT_TIM15_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM15 TRGO. */ 00246 #define LL_DAC_TRIG_EXT_TIM2_TRGO (DAC_CR_TSEL1_2 ) /*!< DAC channel conversion trigger from external peripheral: TIM2 TRGO. */ 00247 #define LL_DAC_TRIG_EXT_TIM8_TRGO ( DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM8 TRGO. */ 00248 #define LL_DAC_TRIG_EXT_TIM4_TRGO (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM4 TRGO. */ 00249 #define LL_DAC_TRIG_EXT_TIM6_TRGO 0x00000000UL /*!< DAC channel conversion trigger from external peripheral: TIM6 TRGO. */ 00250 #define LL_DAC_TRIG_EXT_TIM7_TRGO ( DAC_CR_TSEL1_1 ) /*!< DAC channel conversion trigger from external peripheral: TIM7 TRGO. */ 00251 #define LL_DAC_TRIG_EXT_TIM5_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM5 TRGO. */ 00252 #define LL_DAC_TRIG_EXT_EXTI_LINE9 (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC channel conversion trigger from external peripheral: external interrupt line 9. */ 00253 /** 00254 * @} 00255 */ 00256 00257 /** @defgroup DAC_LL_EC_WAVE_AUTO_GENERATION_MODE DAC waveform automatic generation mode 00258 * @{ 00259 */ 00260 #define LL_DAC_WAVE_AUTO_GENERATION_NONE 0x00000000UL /*!< DAC channel wave auto generation mode disabled. */ 00261 #define LL_DAC_WAVE_AUTO_GENERATION_NOISE ( DAC_CR_WAVE1_0) /*!< DAC channel wave auto generation mode enabled, set generated noise waveform. */ 00262 #define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1 ) /*!< DAC channel wave auto generation mode enabled, set generated triangle waveform. */ 00263 /** 00264 * @} 00265 */ 00266 00267 /** @defgroup DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS DAC wave generation - Noise LFSR unmask bits 00268 * @{ 00269 */ 00270 #define LL_DAC_NOISE_LFSR_UNMASK_BIT0 0x00000000UL /*!< Noise wave generation, unmask LFSR bit0, for the selected DAC channel */ 00271 #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 */ 00272 #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 */ 00273 #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 */ 00274 #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 */ 00275 #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 */ 00276 #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 */ 00277 #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 */ 00278 #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 */ 00279 #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 */ 00280 #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 */ 00281 #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 */ 00282 /** 00283 * @} 00284 */ 00285 00286 /** @defgroup DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE DAC wave generation - Triangle amplitude 00287 * @{ 00288 */ 00289 #define LL_DAC_TRIANGLE_AMPLITUDE_1 0x00000000UL /*!< Triangle wave generation, amplitude of 1 LSB of DAC output range, for the selected DAC channel */ 00290 #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 */ 00291 #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 */ 00292 #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 */ 00293 #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 */ 00294 #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 */ 00295 #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 */ 00296 #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 */ 00297 #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 */ 00298 #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 */ 00299 #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 */ 00300 #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 */ 00301 /** 00302 * @} 00303 */ 00304 00305 /** @defgroup DAC_LL_EC_OUTPUT_BUFFER DAC channel output buffer 00306 * @{ 00307 */ 00308 #define LL_DAC_OUTPUT_BUFFER_ENABLE 0x00000000UL /*!< The selected DAC channel output is buffered: higher drive current capability, but also higher current consumption */ 00309 #define LL_DAC_OUTPUT_BUFFER_DISABLE (DAC_CR_BOFF1) /*!< The selected DAC channel output is not buffered: lower drive current capability, but also lower current consumption */ 00310 /** 00311 * @} 00312 */ 00313 00314 /** @defgroup DAC_LL_EC_RESOLUTION DAC channel output resolution 00315 * @{ 00316 */ 00317 #define LL_DAC_RESOLUTION_12B 0x00000000UL /*!< DAC channel resolution 12 bits */ 00318 #define LL_DAC_RESOLUTION_8B 0x00000002UL /*!< DAC channel resolution 8 bits */ 00319 /** 00320 * @} 00321 */ 00322 00323 /** @defgroup DAC_LL_EC_REGISTERS DAC registers compliant with specific purpose 00324 * @{ 00325 */ 00326 /* List of DAC registers intended to be used (most commonly) with */ 00327 /* DMA transfer. */ 00328 /* Refer to function @ref LL_DAC_DMA_GetRegAddr(). */ 00329 #define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits right aligned */ 00330 #define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits left aligned */ 00331 #define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 8 bits right aligned */ 00332 /** 00333 * @} 00334 */ 00335 00336 /** @defgroup DAC_LL_EC_HW_DELAYS Definitions of DAC hardware constraints delays 00337 * @note Only DAC peripheral HW delays are defined in DAC LL driver driver, 00338 * not timeout values. 00339 * For details on delays values, refer to descriptions in source code 00340 * above each literal definition. 00341 * @{ 00342 */ 00343 00344 /* Delay for DAC channel voltage settling time from DAC channel startup */ 00345 /* (transition from disable to enable). */ 00346 /* Note: DAC channel startup time depends on board application environment: */ 00347 /* impedance connected to DAC channel output. */ 00348 /* The delay below is specified under conditions: */ 00349 /* - voltage maximum transition (lowest to highest value) */ 00350 /* - until voltage reaches final value +-1LSB */ 00351 /* - DAC channel output buffer enabled */ 00352 /* - load impedance of 5kOhm (min), 50pF (max) */ 00353 /* Literal set to maximum value (refer to device datasheet, */ 00354 /* parameter "tWAKEUP"). */ 00355 /* Unit: us */ 00356 #define LL_DAC_DELAY_STARTUP_VOLTAGE_SETTLING_US 15UL /*!< Delay for DAC channel voltage settling time from DAC channel startup (transition from disable to enable) */ 00357 00358 /* Delay for DAC channel voltage settling time. */ 00359 /* Note: DAC channel startup time depends on board application environment: */ 00360 /* impedance connected to DAC channel output. */ 00361 /* The delay below is specified under conditions: */ 00362 /* - voltage maximum transition (lowest to highest value) */ 00363 /* - until voltage reaches final value +-1LSB */ 00364 /* - DAC channel output buffer enabled */ 00365 /* - load impedance of 5kOhm min, 50pF max */ 00366 /* Literal set to maximum value (refer to device datasheet, */ 00367 /* parameter "tSETTLING"). */ 00368 /* Unit: us */ 00369 #define LL_DAC_DELAY_VOLTAGE_SETTLING_US 12UL /*!< Delay for DAC channel voltage settling time */ 00370 00371 /** 00372 * @} 00373 */ 00374 00375 /** 00376 * @} 00377 */ 00378 00379 /* Exported macro ------------------------------------------------------------*/ 00380 /** @defgroup DAC_LL_Exported_Macros DAC Exported Macros 00381 * @{ 00382 */ 00383 00384 /** @defgroup DAC_LL_EM_WRITE_READ Common write and read registers macros 00385 * @{ 00386 */ 00387 00388 /** 00389 * @brief Write a value in DAC register 00390 * @param __INSTANCE__ DAC Instance 00391 * @param __REG__ Register to be written 00392 * @param __VALUE__ Value to be written in the register 00393 * @retval None 00394 */ 00395 #define LL_DAC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 00396 00397 /** 00398 * @brief Read a value in DAC register 00399 * @param __INSTANCE__ DAC Instance 00400 * @param __REG__ Register to be read 00401 * @retval Register value 00402 */ 00403 #define LL_DAC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 00404 00405 /** 00406 * @} 00407 */ 00408 00409 /** @defgroup DAC_LL_EM_HELPER_MACRO DAC helper macro 00410 * @{ 00411 */ 00412 00413 /** 00414 * @brief Helper macro to get DAC channel number in decimal format 00415 * from literals LL_DAC_CHANNEL_x. 00416 * Example: 00417 * __LL_DAC_CHANNEL_TO_DECIMAL_NB(LL_DAC_CHANNEL_1) 00418 * will return decimal number "1". 00419 * @note The input can be a value from functions where a channel 00420 * number is returned. 00421 * @param __CHANNEL__ This parameter can be one of the following values: 00422 * @arg @ref LL_DAC_CHANNEL_1 00423 * @arg @ref LL_DAC_CHANNEL_2 00424 * @retval 1...2 00425 */ 00426 #define __LL_DAC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \ 00427 ((__CHANNEL__) & DAC_SWTR_CHX_MASK) 00428 00429 /** 00430 * @brief Helper macro to get DAC channel in literal format LL_DAC_CHANNEL_x 00431 * from number in decimal format. 00432 * Example: 00433 * __LL_DAC_DECIMAL_NB_TO_CHANNEL(1) 00434 * will return a data equivalent to "LL_DAC_CHANNEL_1". 00435 * @note If the input parameter does not correspond to a DAC channel, 00436 * this macro returns value '0'. 00437 * @param __DECIMAL_NB__ 1...2 00438 * @retval Returned value can be one of the following values: 00439 * @arg @ref LL_DAC_CHANNEL_1 00440 * @arg @ref LL_DAC_CHANNEL_2 00441 */ 00442 #define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__)\ 00443 (((__DECIMAL_NB__) == 1UL)? (LL_DAC_CHANNEL_1 ):(((__DECIMAL_NB__) == 2UL) ? ( LL_DAC_CHANNEL_2):(0UL))) 00444 00445 /** 00446 * @brief Helper macro to define the DAC conversion data full-scale digital 00447 * value corresponding to the selected DAC resolution. 00448 * @note DAC conversion data full-scale corresponds to voltage range 00449 * determined by analog voltage references Vref+ and Vref- 00450 * (refer to reference manual). 00451 * @param __DAC_RESOLUTION__ This parameter can be one of the following values: 00452 * @arg @ref LL_DAC_RESOLUTION_12B 00453 * @arg @ref LL_DAC_RESOLUTION_8B 00454 * @retval ADC conversion data equivalent voltage value (unit: mVolt) 00455 */ 00456 #define __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \ 00457 ((0x00000FFFUL) >> ((__DAC_RESOLUTION__) << 1UL)) 00458 00459 /** 00460 * @brief Helper macro to calculate the DAC conversion data (unit: digital 00461 * value) corresponding to a voltage (unit: mVolt). 00462 * @note This helper macro is intended to provide input data in voltage 00463 * rather than digital value, 00464 * to be used with LL DAC functions such as 00465 * @ref LL_DAC_ConvertData12RightAligned(). 00466 * @note Analog reference voltage (Vref+) must be either known from 00467 * user board environment or can be calculated using ADC measurement 00468 * and ADC helper macro __LL_ADC_CALC_VREFANALOG_VOLTAGE(). 00469 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV) 00470 * @param __DAC_VOLTAGE__ Voltage to be generated by DAC channel 00471 * (unit: mVolt). 00472 * @param __DAC_RESOLUTION__ This parameter can be one of the following values: 00473 * @arg @ref LL_DAC_RESOLUTION_12B 00474 * @arg @ref LL_DAC_RESOLUTION_8B 00475 * @retval DAC conversion data (unit: digital value) 00476 */ 00477 #define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__,\ 00478 __DAC_VOLTAGE__,\ 00479 __DAC_RESOLUTION__) \ 00480 ((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \ 00481 / (__VREFANALOG_VOLTAGE__) \ 00482 ) 00483 00484 /** 00485 * @} 00486 */ 00487 00488 /** 00489 * @} 00490 */ 00491 00492 00493 /* Exported functions --------------------------------------------------------*/ 00494 /** @defgroup DAC_LL_Exported_Functions DAC Exported Functions 00495 * @{ 00496 */ 00497 /** 00498 * @brief Set the conversion trigger source for the selected DAC channel. 00499 * @note For conversion trigger source to be effective, DAC trigger 00500 * must be enabled using function @ref LL_DAC_EnableTrigger(). 00501 * @note To set conversion trigger source, DAC channel must be disabled. 00502 * Otherwise, the setting is discarded. 00503 * @note Availability of parameters of trigger sources from timer 00504 * depends on timers availability on the selected device. 00505 * @rmtoll CR TSEL1 LL_DAC_SetTriggerSource\n 00506 * CR TSEL2 LL_DAC_SetTriggerSource 00507 * @param DACx DAC instance 00508 * @param DAC_Channel This parameter can be one of the following values: 00509 * @arg @ref LL_DAC_CHANNEL_1 00510 * @arg @ref LL_DAC_CHANNEL_2 00511 * @param TriggerSource This parameter can be one of the following values: 00512 * @arg @ref LL_DAC_TRIG_SOFTWARE 00513 * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO 00514 * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO 00515 * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO 00516 * @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO 00517 * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO 00518 * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO 00519 * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO 00520 * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9 00521 * @retval None 00522 */ 00523 __STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource) 00524 { 00525 MODIFY_REG(DACx->CR, 00526 DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), 00527 TriggerSource << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00528 } 00529 00530 /** 00531 * @brief Get the conversion trigger source for the selected DAC channel. 00532 * @note For conversion trigger source to be effective, DAC trigger 00533 * must be enabled using function @ref LL_DAC_EnableTrigger(). 00534 * @note Availability of parameters of trigger sources from timer 00535 * depends on timers availability on the selected device. 00536 * @rmtoll CR TSEL1 LL_DAC_GetTriggerSource\n 00537 * CR TSEL2 LL_DAC_GetTriggerSource 00538 * @param DACx DAC instance 00539 * @param DAC_Channel This parameter can be one of the following values: 00540 * @arg @ref LL_DAC_CHANNEL_1 00541 * @arg @ref LL_DAC_CHANNEL_2 00542 * @retval Returned value can be one of the following values: 00543 * @arg @ref LL_DAC_TRIG_SOFTWARE 00544 * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO 00545 * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO 00546 * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO 00547 * @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO 00548 * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO 00549 * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO 00550 * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO 00551 * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9 00552 */ 00553 __STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00554 { 00555 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00556 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) 00557 ); 00558 } 00559 00560 /** 00561 * @brief Set the waveform automatic generation mode 00562 * for the selected DAC channel. 00563 * @rmtoll CR WAVE1 LL_DAC_SetWaveAutoGeneration\n 00564 * CR WAVE2 LL_DAC_SetWaveAutoGeneration 00565 * @param DACx DAC instance 00566 * @param DAC_Channel This parameter can be one of the following values: 00567 * @arg @ref LL_DAC_CHANNEL_1 00568 * @arg @ref LL_DAC_CHANNEL_2 00569 * @param WaveAutoGeneration This parameter can be one of the following values: 00570 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE 00571 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE 00572 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE 00573 * @retval None 00574 */ 00575 __STATIC_INLINE void LL_DAC_SetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveAutoGeneration) 00576 { 00577 MODIFY_REG(DACx->CR, 00578 DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), 00579 WaveAutoGeneration << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00580 } 00581 00582 /** 00583 * @brief Get the waveform automatic generation mode 00584 * for the selected DAC channel. 00585 * @rmtoll CR WAVE1 LL_DAC_GetWaveAutoGeneration\n 00586 * CR WAVE2 LL_DAC_GetWaveAutoGeneration 00587 * @param DACx DAC instance 00588 * @param DAC_Channel This parameter can be one of the following values: 00589 * @arg @ref LL_DAC_CHANNEL_1 00590 * @arg @ref LL_DAC_CHANNEL_2 00591 * @retval Returned value can be one of the following values: 00592 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE 00593 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE 00594 * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE 00595 */ 00596 __STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00597 { 00598 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00599 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) 00600 ); 00601 } 00602 00603 /** 00604 * @brief Set the noise waveform generation for the selected DAC channel: 00605 * Noise mode and parameters LFSR (linear feedback shift register). 00606 * @note For wave generation to be effective, DAC channel 00607 * wave generation mode must be enabled using 00608 * function @ref LL_DAC_SetWaveAutoGeneration(). 00609 * @note This setting can be set when the selected DAC channel is disabled 00610 * (otherwise, the setting operation is ignored). 00611 * @rmtoll CR MAMP1 LL_DAC_SetWaveNoiseLFSR\n 00612 * CR MAMP2 LL_DAC_SetWaveNoiseLFSR 00613 * @param DACx DAC instance 00614 * @param DAC_Channel This parameter can be one of the following values: 00615 * @arg @ref LL_DAC_CHANNEL_1 00616 * @arg @ref LL_DAC_CHANNEL_2 00617 * @param NoiseLFSRMask This parameter can be one of the following values: 00618 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0 00619 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 00620 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 00621 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 00622 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 00623 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 00624 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 00625 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 00626 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 00627 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 00628 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 00629 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 00630 * @retval None 00631 */ 00632 __STATIC_INLINE void LL_DAC_SetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t NoiseLFSRMask) 00633 { 00634 MODIFY_REG(DACx->CR, 00635 DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), 00636 NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00637 } 00638 00639 /** 00640 * @brief Get the noise waveform generation for the selected DAC channel: 00641 * Noise mode and parameters LFSR (linear feedback shift register). 00642 * @rmtoll CR MAMP1 LL_DAC_GetWaveNoiseLFSR\n 00643 * CR MAMP2 LL_DAC_GetWaveNoiseLFSR 00644 * @param DACx DAC instance 00645 * @param DAC_Channel This parameter can be one of the following values: 00646 * @arg @ref LL_DAC_CHANNEL_1 00647 * @arg @ref LL_DAC_CHANNEL_2 00648 * @retval Returned value can be one of the following values: 00649 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0 00650 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 00651 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 00652 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 00653 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 00654 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 00655 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 00656 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 00657 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 00658 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 00659 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 00660 * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 00661 */ 00662 __STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00663 { 00664 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00665 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) 00666 ); 00667 } 00668 00669 /** 00670 * @brief Set the triangle waveform generation for the selected DAC channel: 00671 * triangle mode and amplitude. 00672 * @note For wave generation to be effective, DAC channel 00673 * wave generation mode must be enabled using 00674 * function @ref LL_DAC_SetWaveAutoGeneration(). 00675 * @note This setting can be set when the selected DAC channel is disabled 00676 * (otherwise, the setting operation is ignored). 00677 * @rmtoll CR MAMP1 LL_DAC_SetWaveTriangleAmplitude\n 00678 * CR MAMP2 LL_DAC_SetWaveTriangleAmplitude 00679 * @param DACx DAC instance 00680 * @param DAC_Channel This parameter can be one of the following values: 00681 * @arg @ref LL_DAC_CHANNEL_1 00682 * @arg @ref LL_DAC_CHANNEL_2 00683 * @param TriangleAmplitude This parameter can be one of the following values: 00684 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1 00685 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3 00686 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7 00687 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15 00688 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31 00689 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63 00690 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127 00691 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255 00692 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511 00693 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023 00694 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047 00695 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095 00696 * @retval None 00697 */ 00698 __STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel, 00699 uint32_t TriangleAmplitude) 00700 { 00701 MODIFY_REG(DACx->CR, 00702 DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), 00703 TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00704 } 00705 00706 /** 00707 * @brief Get the triangle waveform generation for the selected DAC channel: 00708 * triangle mode and amplitude. 00709 * @rmtoll CR MAMP1 LL_DAC_GetWaveTriangleAmplitude\n 00710 * CR MAMP2 LL_DAC_GetWaveTriangleAmplitude 00711 * @param DACx DAC instance 00712 * @param DAC_Channel This parameter can be one of the following values: 00713 * @arg @ref LL_DAC_CHANNEL_1 00714 * @arg @ref LL_DAC_CHANNEL_2 00715 * @retval Returned value can be one of the following values: 00716 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1 00717 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3 00718 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7 00719 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15 00720 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31 00721 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63 00722 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127 00723 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255 00724 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511 00725 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023 00726 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047 00727 * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095 00728 */ 00729 __STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00730 { 00731 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00732 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) 00733 ); 00734 } 00735 00736 /** 00737 * @brief Set the output buffer for the selected DAC channel. 00738 * @rmtoll CR BOFF1 LL_DAC_SetOutputBuffer\n 00739 * CR BOFF2 LL_DAC_SetOutputBuffer 00740 * @param DACx DAC instance 00741 * @param DAC_Channel This parameter can be one of the following values: 00742 * @arg @ref LL_DAC_CHANNEL_1 00743 * @arg @ref LL_DAC_CHANNEL_2 00744 * @param OutputBuffer This parameter can be one of the following values: 00745 * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE 00746 * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE 00747 * @retval None 00748 */ 00749 __STATIC_INLINE void LL_DAC_SetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputBuffer) 00750 { 00751 MODIFY_REG(DACx->CR, 00752 DAC_CR_BOFF1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), 00753 OutputBuffer << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00754 } 00755 00756 /** 00757 * @brief Get the output buffer state for the selected DAC channel. 00758 * @rmtoll CR BOFF1 LL_DAC_GetOutputBuffer\n 00759 * CR BOFF2 LL_DAC_GetOutputBuffer 00760 * @param DACx DAC instance 00761 * @param DAC_Channel This parameter can be one of the following values: 00762 * @arg @ref LL_DAC_CHANNEL_1 00763 * @arg @ref LL_DAC_CHANNEL_2 00764 * @retval Returned value can be one of the following values: 00765 * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE 00766 * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE 00767 */ 00768 __STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00769 { 00770 return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_BOFF1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00771 >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) 00772 ); 00773 } 00774 00775 /** 00776 * @} 00777 */ 00778 00779 /** @defgroup DAC_LL_EF_DMA_Management DMA Management 00780 * @{ 00781 */ 00782 00783 /** 00784 * @brief Enable DAC DMA transfer request of the selected channel. 00785 * @note To configure DMA source address (peripheral address), 00786 * use function @ref LL_DAC_DMA_GetRegAddr(). 00787 * @rmtoll CR DMAEN1 LL_DAC_EnableDMAReq\n 00788 * CR DMAEN2 LL_DAC_EnableDMAReq 00789 * @param DACx DAC instance 00790 * @param DAC_Channel This parameter can be one of the following values: 00791 * @arg @ref LL_DAC_CHANNEL_1 00792 * @arg @ref LL_DAC_CHANNEL_2 00793 * @retval None 00794 */ 00795 __STATIC_INLINE void LL_DAC_EnableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00796 { 00797 SET_BIT(DACx->CR, 00798 DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00799 } 00800 00801 /** 00802 * @brief Disable DAC DMA transfer request of the selected channel. 00803 * @note To configure DMA source address (peripheral address), 00804 * use function @ref LL_DAC_DMA_GetRegAddr(). 00805 * @rmtoll CR DMAEN1 LL_DAC_DisableDMAReq\n 00806 * CR DMAEN2 LL_DAC_DisableDMAReq 00807 * @param DACx DAC instance 00808 * @param DAC_Channel This parameter can be one of the following values: 00809 * @arg @ref LL_DAC_CHANNEL_1 00810 * @arg @ref LL_DAC_CHANNEL_2 00811 * @retval None 00812 */ 00813 __STATIC_INLINE void LL_DAC_DisableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00814 { 00815 CLEAR_BIT(DACx->CR, 00816 DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00817 } 00818 00819 /** 00820 * @brief Get DAC DMA transfer request state of the selected channel. 00821 * (0: DAC DMA transfer request is disabled, 1: DAC DMA transfer request is enabled) 00822 * @rmtoll CR DMAEN1 LL_DAC_IsDMAReqEnabled\n 00823 * CR DMAEN2 LL_DAC_IsDMAReqEnabled 00824 * @param DACx DAC instance 00825 * @param DAC_Channel This parameter can be one of the following values: 00826 * @arg @ref LL_DAC_CHANNEL_1 00827 * @arg @ref LL_DAC_CHANNEL_2 00828 * @retval State of bit (1 or 0). 00829 */ 00830 __STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00831 { 00832 return ((READ_BIT(DACx->CR, 00833 DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00834 == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL); 00835 } 00836 00837 /** 00838 * @brief Function to help to configure DMA transfer to DAC: retrieve the 00839 * DAC register address from DAC instance and a list of DAC registers 00840 * intended to be used (most commonly) with DMA transfer. 00841 * @note These DAC registers are data holding registers: 00842 * when DAC conversion is requested, DAC generates a DMA transfer 00843 * request to have data available in DAC data holding registers. 00844 * @note This macro is intended to be used with LL DMA driver, refer to 00845 * function "LL_DMA_ConfigAddresses()". 00846 * Example: 00847 * LL_DMA_ConfigAddresses(DMA1, 00848 * LL_DMA_CHANNEL_1, 00849 * (uint32_t)&< array or variable >, 00850 * LL_DAC_DMA_GetRegAddr(DAC1, LL_DAC_CHANNEL_1, 00851 * LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED), 00852 * LL_DMA_DIRECTION_MEMORY_TO_PERIPH); 00853 * @rmtoll DHR12R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n 00854 * DHR12L1 DACC1DHR LL_DAC_DMA_GetRegAddr\n 00855 * DHR8R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n 00856 * DHR12R2 DACC2DHR LL_DAC_DMA_GetRegAddr\n 00857 * DHR12L2 DACC2DHR LL_DAC_DMA_GetRegAddr\n 00858 * DHR8R2 DACC2DHR LL_DAC_DMA_GetRegAddr 00859 * @param DACx DAC instance 00860 * @param DAC_Channel This parameter can be one of the following values: 00861 * @arg @ref LL_DAC_CHANNEL_1 00862 * @arg @ref LL_DAC_CHANNEL_2 00863 * @param Register This parameter can be one of the following values: 00864 * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED 00865 * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED 00866 * @arg @ref LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED 00867 * @retval DAC register address 00868 */ 00869 __STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register) 00870 { 00871 /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on */ 00872 /* DAC channel selected. */ 00873 return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1, ((DAC_Channel >> (Register & 0x1FUL)) 00874 & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0)))); 00875 } 00876 /** 00877 * @} 00878 */ 00879 00880 /** @defgroup DAC_LL_EF_Operation Operation on DAC channels 00881 * @{ 00882 */ 00883 00884 /** 00885 * @brief Enable DAC selected channel. 00886 * @rmtoll CR EN1 LL_DAC_Enable\n 00887 * CR EN2 LL_DAC_Enable 00888 * @note After enable from off state, DAC channel requires a delay 00889 * for output voltage to reach accuracy +/- 1 LSB. 00890 * Refer to device datasheet, parameter "tWAKEUP". 00891 * @param DACx DAC instance 00892 * @param DAC_Channel This parameter can be one of the following values: 00893 * @arg @ref LL_DAC_CHANNEL_1 00894 * @arg @ref LL_DAC_CHANNEL_2 00895 * @retval None 00896 */ 00897 __STATIC_INLINE void LL_DAC_Enable(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00898 { 00899 SET_BIT(DACx->CR, 00900 DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00901 } 00902 00903 /** 00904 * @brief Disable DAC selected channel. 00905 * @rmtoll CR EN1 LL_DAC_Disable\n 00906 * CR EN2 LL_DAC_Disable 00907 * @param DACx DAC instance 00908 * @param DAC_Channel This parameter can be one of the following values: 00909 * @arg @ref LL_DAC_CHANNEL_1 00910 * @arg @ref LL_DAC_CHANNEL_2 00911 * @retval None 00912 */ 00913 __STATIC_INLINE void LL_DAC_Disable(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00914 { 00915 CLEAR_BIT(DACx->CR, 00916 DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00917 } 00918 00919 /** 00920 * @brief Get DAC enable state of the selected channel. 00921 * (0: DAC channel is disabled, 1: DAC channel is enabled) 00922 * @rmtoll CR EN1 LL_DAC_IsEnabled\n 00923 * CR EN2 LL_DAC_IsEnabled 00924 * @param DACx DAC instance 00925 * @param DAC_Channel This parameter can be one of the following values: 00926 * @arg @ref LL_DAC_CHANNEL_1 00927 * @arg @ref LL_DAC_CHANNEL_2 00928 * @retval State of bit (1 or 0). 00929 */ 00930 __STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00931 { 00932 return ((READ_BIT(DACx->CR, 00933 DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00934 == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL); 00935 } 00936 00937 /** 00938 * @brief Enable DAC trigger of the selected channel. 00939 * @note - If DAC trigger is disabled, DAC conversion is performed 00940 * automatically once the data holding register is updated, 00941 * using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()": 00942 * @ref LL_DAC_ConvertData12RightAligned(), ... 00943 * - If DAC trigger is enabled, DAC conversion is performed 00944 * only when a hardware of software trigger event is occurring. 00945 * Select trigger source using 00946 * function @ref LL_DAC_SetTriggerSource(). 00947 * @rmtoll CR TEN1 LL_DAC_EnableTrigger\n 00948 * CR TEN2 LL_DAC_EnableTrigger 00949 * @param DACx DAC instance 00950 * @param DAC_Channel This parameter can be one of the following values: 00951 * @arg @ref LL_DAC_CHANNEL_1 00952 * @arg @ref LL_DAC_CHANNEL_2 00953 * @retval None 00954 */ 00955 __STATIC_INLINE void LL_DAC_EnableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00956 { 00957 SET_BIT(DACx->CR, 00958 DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00959 } 00960 00961 /** 00962 * @brief Disable DAC trigger of the selected channel. 00963 * @rmtoll CR TEN1 LL_DAC_DisableTrigger\n 00964 * CR TEN2 LL_DAC_DisableTrigger 00965 * @param DACx DAC instance 00966 * @param DAC_Channel This parameter can be one of the following values: 00967 * @arg @ref LL_DAC_CHANNEL_1 00968 * @arg @ref LL_DAC_CHANNEL_2 00969 * @retval None 00970 */ 00971 __STATIC_INLINE void LL_DAC_DisableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00972 { 00973 CLEAR_BIT(DACx->CR, 00974 DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); 00975 } 00976 00977 /** 00978 * @brief Get DAC trigger state of the selected channel. 00979 * (0: DAC trigger is disabled, 1: DAC trigger is enabled) 00980 * @rmtoll CR TEN1 LL_DAC_IsTriggerEnabled\n 00981 * CR TEN2 LL_DAC_IsTriggerEnabled 00982 * @param DACx DAC instance 00983 * @param DAC_Channel This parameter can be one of the following values: 00984 * @arg @ref LL_DAC_CHANNEL_1 00985 * @arg @ref LL_DAC_CHANNEL_2 00986 * @retval State of bit (1 or 0). 00987 */ 00988 __STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel) 00989 { 00990 return ((READ_BIT(DACx->CR, 00991 DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) 00992 == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL); 00993 } 00994 00995 /** 00996 * @brief Trig DAC conversion by software for the selected DAC channel. 00997 * @note Preliminarily, DAC trigger must be set to software trigger 00998 * using function 00999 * @ref LL_DAC_Init() 01000 * @ref LL_DAC_SetTriggerSource() 01001 * with parameter "LL_DAC_TRIGGER_SOFTWARE". 01002 * and DAC trigger must be enabled using 01003 * function @ref LL_DAC_EnableTrigger(). 01004 * @note For devices featuring DAC with 2 channels: this function 01005 * can perform a SW start of both DAC channels simultaneously. 01006 * Two channels can be selected as parameter. 01007 * Example: (LL_DAC_CHANNEL_1 | LL_DAC_CHANNEL_2) 01008 * @rmtoll SWTRIGR SWTRIG1 LL_DAC_TrigSWConversion\n 01009 * SWTRIGR SWTRIG2 LL_DAC_TrigSWConversion 01010 * @param DACx DAC instance 01011 * @param DAC_Channel This parameter can a combination of the following values: 01012 * @arg @ref LL_DAC_CHANNEL_1 01013 * @arg @ref LL_DAC_CHANNEL_2 01014 * @retval None 01015 */ 01016 __STATIC_INLINE void LL_DAC_TrigSWConversion(DAC_TypeDef *DACx, uint32_t DAC_Channel) 01017 { 01018 SET_BIT(DACx->SWTRIGR, 01019 (DAC_Channel & DAC_SWTR_CHX_MASK)); 01020 } 01021 01022 /** 01023 * @brief Set the data to be loaded in the data holding register 01024 * in format 12 bits left alignment (LSB aligned on bit 0), 01025 * for the selected DAC channel. 01026 * @rmtoll DHR12R1 DACC1DHR LL_DAC_ConvertData12RightAligned\n 01027 * DHR12R2 DACC2DHR LL_DAC_ConvertData12RightAligned 01028 * @param DACx DAC instance 01029 * @param DAC_Channel This parameter can be one of the following values: 01030 * @arg @ref LL_DAC_CHANNEL_1 01031 * @arg @ref LL_DAC_CHANNEL_2 01032 * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF 01033 * @retval None 01034 */ 01035 __STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data) 01036 { 01037 __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS) 01038 & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0); 01039 01040 MODIFY_REG(*preg, DAC_DHR12R1_DACC1DHR, Data); 01041 } 01042 01043 /** 01044 * @brief Set the data to be loaded in the data holding register 01045 * in format 12 bits left alignment (MSB aligned on bit 15), 01046 * for the selected DAC channel. 01047 * @rmtoll DHR12L1 DACC1DHR LL_DAC_ConvertData12LeftAligned\n 01048 * DHR12L2 DACC2DHR LL_DAC_ConvertData12LeftAligned 01049 * @param DACx DAC instance 01050 * @param DAC_Channel This parameter can be one of the following values: 01051 * @arg @ref LL_DAC_CHANNEL_1 01052 * @arg @ref LL_DAC_CHANNEL_2 01053 * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF 01054 * @retval None 01055 */ 01056 __STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data) 01057 { 01058 __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS) 01059 & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0); 01060 01061 MODIFY_REG(*preg, DAC_DHR12L1_DACC1DHR, Data); 01062 } 01063 01064 /** 01065 * @brief Set the data to be loaded in the data holding register 01066 * in format 8 bits left alignment (LSB aligned on bit 0), 01067 * for the selected DAC channel. 01068 * @rmtoll DHR8R1 DACC1DHR LL_DAC_ConvertData8RightAligned\n 01069 * DHR8R2 DACC2DHR LL_DAC_ConvertData8RightAligned 01070 * @param DACx DAC instance 01071 * @param DAC_Channel This parameter can be one of the following values: 01072 * @arg @ref LL_DAC_CHANNEL_1 01073 * @arg @ref LL_DAC_CHANNEL_2 01074 * @param Data Value between Min_Data=0x00 and Max_Data=0xFF 01075 * @retval None 01076 */ 01077 __STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data) 01078 { 01079 __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS) 01080 & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0); 01081 01082 MODIFY_REG(*preg, DAC_DHR8R1_DACC1DHR, Data); 01083 } 01084 01085 01086 /** 01087 * @brief Set the data to be loaded in the data holding register 01088 * in format 12 bits left alignment (LSB aligned on bit 0), 01089 * for both DAC channels. 01090 * @rmtoll DHR12RD DACC1DHR LL_DAC_ConvertDualData12RightAligned\n 01091 * DHR12RD DACC2DHR LL_DAC_ConvertDualData12RightAligned 01092 * @param DACx DAC instance 01093 * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF 01094 * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF 01095 * @retval None 01096 */ 01097 __STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, 01098 uint32_t DataChannel2) 01099 { 01100 MODIFY_REG(DACx->DHR12RD, 01101 (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR), 01102 ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1)); 01103 } 01104 01105 /** 01106 * @brief Set the data to be loaded in the data holding register 01107 * in format 12 bits left alignment (MSB aligned on bit 15), 01108 * for both DAC channels. 01109 * @rmtoll DHR12LD DACC1DHR LL_DAC_ConvertDualData12LeftAligned\n 01110 * DHR12LD DACC2DHR LL_DAC_ConvertDualData12LeftAligned 01111 * @param DACx DAC instance 01112 * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF 01113 * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF 01114 * @retval None 01115 */ 01116 __STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, 01117 uint32_t DataChannel2) 01118 { 01119 /* Note: Data of DAC channel 2 shift value subtracted of 4 because */ 01120 /* data on 16 bits and DAC channel 2 bits field is on the 12 MSB, */ 01121 /* the 4 LSB must be taken into account for the shift value. */ 01122 MODIFY_REG(DACx->DHR12LD, 01123 (DAC_DHR12LD_DACC2DHR | DAC_DHR12LD_DACC1DHR), 01124 ((DataChannel2 << (DAC_DHR12LD_DACC2DHR_BITOFFSET_POS - 4U)) | DataChannel1)); 01125 } 01126 01127 /** 01128 * @brief Set the data to be loaded in the data holding register 01129 * in format 8 bits left alignment (LSB aligned on bit 0), 01130 * for both DAC channels. 01131 * @rmtoll DHR8RD DACC1DHR LL_DAC_ConvertDualData8RightAligned\n 01132 * DHR8RD DACC2DHR LL_DAC_ConvertDualData8RightAligned 01133 * @param DACx DAC instance 01134 * @param DataChannel1 Value between Min_Data=0x00 and Max_Data=0xFF 01135 * @param DataChannel2 Value between Min_Data=0x00 and Max_Data=0xFF 01136 * @retval None 01137 */ 01138 __STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, 01139 uint32_t DataChannel2) 01140 { 01141 MODIFY_REG(DACx->DHR8RD, 01142 (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR), 01143 ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1)); 01144 } 01145 01146 01147 /** 01148 * @brief Retrieve output data currently generated for the selected DAC channel. 01149 * @note Whatever alignment and resolution settings 01150 * (using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()": 01151 * @ref LL_DAC_ConvertData12RightAligned(), ...), 01152 * output data format is 12 bits right aligned (LSB aligned on bit 0). 01153 * @rmtoll DOR1 DACC1DOR LL_DAC_RetrieveOutputData\n 01154 * DOR2 DACC2DOR LL_DAC_RetrieveOutputData 01155 * @param DACx DAC instance 01156 * @param DAC_Channel This parameter can be one of the following values: 01157 * @arg @ref LL_DAC_CHANNEL_1 01158 * @arg @ref LL_DAC_CHANNEL_2 01159 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF 01160 */ 01161 __STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel) 01162 { 01163 __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, (DAC_Channel >> DAC_REG_DORX_REGOFFSET_BITOFFSET_POS) 01164 & DAC_REG_DORX_REGOFFSET_MASK_POSBIT0); 01165 01166 return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR); 01167 } 01168 01169 /** 01170 * @} 01171 */ 01172 01173 /** @defgroup DAC_LL_EF_FLAG_Management FLAG Management 01174 * @{ 01175 */ 01176 01177 #if defined(DAC_SR_DMAUDR1) 01178 /** 01179 * @brief Get DAC underrun flag for DAC channel 1 01180 * @rmtoll SR DMAUDR1 LL_DAC_IsActiveFlag_DMAUDR1 01181 * @param DACx DAC instance 01182 * @retval State of bit (1 or 0). 01183 */ 01184 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx) 01185 { 01186 return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1)) ? 1UL : 0UL); 01187 } 01188 #endif /* DAC_SR_DMAUDR1 */ 01189 01190 #if defined(DAC_SR_DMAUDR2) 01191 /** 01192 * @brief Get DAC underrun flag for DAC channel 2 01193 * @rmtoll SR DMAUDR2 LL_DAC_IsActiveFlag_DMAUDR2 01194 * @param DACx DAC instance 01195 * @retval State of bit (1 or 0). 01196 */ 01197 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx) 01198 { 01199 return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2)) ? 1UL : 0UL); 01200 } 01201 #endif /* DAC_SR_DMAUDR2 */ 01202 01203 #if defined(DAC_SR_DMAUDR1) 01204 /** 01205 * @brief Clear DAC underrun flag for DAC channel 1 01206 * @rmtoll SR DMAUDR1 LL_DAC_ClearFlag_DMAUDR1 01207 * @param DACx DAC instance 01208 * @retval None 01209 */ 01210 __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR1(DAC_TypeDef *DACx) 01211 { 01212 WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR1); 01213 } 01214 #endif /* DAC_SR_DMAUDR1 */ 01215 01216 #if defined(DAC_SR_DMAUDR2) 01217 /** 01218 * @brief Clear DAC underrun flag for DAC channel 2 01219 * @rmtoll SR DMAUDR2 LL_DAC_ClearFlag_DMAUDR2 01220 * @param DACx DAC instance 01221 * @retval None 01222 */ 01223 __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR2(DAC_TypeDef *DACx) 01224 { 01225 WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR2); 01226 } 01227 #endif /* DAC_SR_DMAUDR2 */ 01228 01229 /** 01230 * @} 01231 */ 01232 01233 /** @defgroup DAC_LL_EF_IT_Management IT management 01234 * @{ 01235 */ 01236 01237 #if defined(DAC_CR_DMAUDRIE1) 01238 /** 01239 * @brief Enable DMA underrun interrupt for DAC channel 1 01240 * @rmtoll CR DMAUDRIE1 LL_DAC_EnableIT_DMAUDR1 01241 * @param DACx DAC instance 01242 * @retval None 01243 */ 01244 __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR1(DAC_TypeDef *DACx) 01245 { 01246 SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1); 01247 } 01248 #endif /* DAC_CR_DMAUDRIE1 */ 01249 01250 #if defined(DAC_CR_DMAUDRIE2) 01251 /** 01252 * @brief Enable DMA underrun interrupt for DAC channel 2 01253 * @rmtoll CR DMAUDRIE2 LL_DAC_EnableIT_DMAUDR2 01254 * @param DACx DAC instance 01255 * @retval None 01256 */ 01257 __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR2(DAC_TypeDef *DACx) 01258 { 01259 SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2); 01260 } 01261 #endif /* DAC_CR_DMAUDRIE2 */ 01262 01263 #if defined(DAC_CR_DMAUDRIE1) 01264 /** 01265 * @brief Disable DMA underrun interrupt for DAC channel 1 01266 * @rmtoll CR DMAUDRIE1 LL_DAC_DisableIT_DMAUDR1 01267 * @param DACx DAC instance 01268 * @retval None 01269 */ 01270 __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR1(DAC_TypeDef *DACx) 01271 { 01272 CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1); 01273 } 01274 #endif /* DAC_CR_DMAUDRIE1 */ 01275 01276 #if defined(DAC_CR_DMAUDRIE2) 01277 /** 01278 * @brief Disable DMA underrun interrupt for DAC channel 2 01279 * @rmtoll CR DMAUDRIE2 LL_DAC_DisableIT_DMAUDR2 01280 * @param DACx DAC instance 01281 * @retval None 01282 */ 01283 __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR2(DAC_TypeDef *DACx) 01284 { 01285 CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2); 01286 } 01287 #endif /* DAC_CR_DMAUDRIE2 */ 01288 01289 #if defined(DAC_CR_DMAUDRIE1) 01290 /** 01291 * @brief Get DMA underrun interrupt for DAC channel 1 01292 * @rmtoll CR DMAUDRIE1 LL_DAC_IsEnabledIT_DMAUDR1 01293 * @param DACx DAC instance 01294 * @retval State of bit (1 or 0). 01295 */ 01296 __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx) 01297 { 01298 return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1)) ? 1UL : 0UL); 01299 } 01300 #endif /* DAC_CR_DMAUDRIE1 */ 01301 01302 #if defined(DAC_CR_DMAUDRIE2) 01303 /** 01304 * @brief Get DMA underrun interrupt for DAC channel 2 01305 * @rmtoll CR DMAUDRIE2 LL_DAC_IsEnabledIT_DMAUDR2 01306 * @param DACx DAC instance 01307 * @retval State of bit (1 or 0). 01308 */ 01309 __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx) 01310 { 01311 return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2)) ? 1UL : 0UL); 01312 } 01313 #endif /* DAC_CR_DMAUDRIE2 */ 01314 01315 /** 01316 * @} 01317 */ 01318 01319 #if defined(USE_FULL_LL_DRIVER) 01320 /** @defgroup DAC_LL_EF_Init Initialization and de-initialization functions 01321 * @{ 01322 */ 01323 01324 ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx); 01325 ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct); 01326 void LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct); 01327 01328 /** 01329 * @} 01330 */ 01331 #endif /* USE_FULL_LL_DRIVER */ 01332 01333 /** 01334 * @} 01335 */ 01336 01337 /** 01338 * @} 01339 */ 01340 01341 #endif /* DAC */ 01342 01343 /** 01344 * @} 01345 */ 01346 01347 #ifdef __cplusplus 01348 } 01349 #endif 01350 01351 #endif /* STM32F1xx_LL_DAC_H */ 01352 01353 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/