mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 189:f392fc9709a3 1 /**
AnnaBridge 189:f392fc9709a3 2 ******************************************************************************
AnnaBridge 189:f392fc9709a3 3 * @file stm32l4xx_ll_adc.h
AnnaBridge 189:f392fc9709a3 4 * @author MCD Application Team
AnnaBridge 189:f392fc9709a3 5 * @brief Header file of ADC LL module.
AnnaBridge 189:f392fc9709a3 6 ******************************************************************************
AnnaBridge 189:f392fc9709a3 7 * @attention
AnnaBridge 189:f392fc9709a3 8 *
AnnaBridge 189:f392fc9709a3 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 189:f392fc9709a3 10 *
AnnaBridge 189:f392fc9709a3 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 189:f392fc9709a3 12 * are permitted provided that the following conditions are met:
AnnaBridge 189:f392fc9709a3 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 189:f392fc9709a3 14 * this list of conditions and the following disclaimer.
AnnaBridge 189:f392fc9709a3 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 189:f392fc9709a3 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 189:f392fc9709a3 17 * and/or other materials provided with the distribution.
AnnaBridge 189:f392fc9709a3 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 189:f392fc9709a3 19 * may be used to endorse or promote products derived from this software
AnnaBridge 189:f392fc9709a3 20 * without specific prior written permission.
AnnaBridge 189:f392fc9709a3 21 *
AnnaBridge 189:f392fc9709a3 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 189:f392fc9709a3 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 189:f392fc9709a3 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 189:f392fc9709a3 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 189:f392fc9709a3 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 189:f392fc9709a3 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 189:f392fc9709a3 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 189:f392fc9709a3 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 189:f392fc9709a3 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 189:f392fc9709a3 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 189:f392fc9709a3 32 *
AnnaBridge 189:f392fc9709a3 33 ******************************************************************************
AnnaBridge 189:f392fc9709a3 34 */
AnnaBridge 189:f392fc9709a3 35
AnnaBridge 189:f392fc9709a3 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 189:f392fc9709a3 37 #ifndef __STM32L4xx_LL_ADC_H
AnnaBridge 189:f392fc9709a3 38 #define __STM32L4xx_LL_ADC_H
AnnaBridge 189:f392fc9709a3 39
AnnaBridge 189:f392fc9709a3 40 #ifdef __cplusplus
AnnaBridge 189:f392fc9709a3 41 extern "C" {
AnnaBridge 189:f392fc9709a3 42 #endif
AnnaBridge 189:f392fc9709a3 43
AnnaBridge 189:f392fc9709a3 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 45 #include "stm32l4xx.h"
AnnaBridge 189:f392fc9709a3 46
AnnaBridge 189:f392fc9709a3 47 /** @addtogroup STM32L4xx_LL_Driver
AnnaBridge 189:f392fc9709a3 48 * @{
AnnaBridge 189:f392fc9709a3 49 */
AnnaBridge 189:f392fc9709a3 50
AnnaBridge 189:f392fc9709a3 51 #if defined (ADC1) || defined (ADC2) || defined (ADC3)
AnnaBridge 189:f392fc9709a3 52
AnnaBridge 189:f392fc9709a3 53 /** @defgroup ADC_LL ADC
AnnaBridge 189:f392fc9709a3 54 * @{
AnnaBridge 189:f392fc9709a3 55 */
AnnaBridge 189:f392fc9709a3 56
AnnaBridge 189:f392fc9709a3 57 /* Private types -------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 58 /* Private variables ---------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 59
AnnaBridge 189:f392fc9709a3 60 /* Private constants ---------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 61 /** @defgroup ADC_LL_Private_Constants ADC Private Constants
AnnaBridge 189:f392fc9709a3 62 * @{
AnnaBridge 189:f392fc9709a3 63 */
AnnaBridge 189:f392fc9709a3 64
AnnaBridge 189:f392fc9709a3 65 /* Internal mask for ADC group regular sequencer: */
AnnaBridge 189:f392fc9709a3 66 /* To select into literal LL_ADC_REG_RANK_x the relevant bits for: */
AnnaBridge 189:f392fc9709a3 67 /* - sequencer register offset */
AnnaBridge 189:f392fc9709a3 68 /* - sequencer rank bits position into the selected register */
AnnaBridge 189:f392fc9709a3 69
AnnaBridge 189:f392fc9709a3 70 /* Internal register offset for ADC group regular sequencer configuration */
AnnaBridge 189:f392fc9709a3 71 /* (offset placed into a spare area of literal definition) */
AnnaBridge 189:f392fc9709a3 72 #define ADC_SQR1_REGOFFSET (0x00000000U)
AnnaBridge 189:f392fc9709a3 73 #define ADC_SQR2_REGOFFSET (0x00000100U)
AnnaBridge 189:f392fc9709a3 74 #define ADC_SQR3_REGOFFSET (0x00000200U)
AnnaBridge 189:f392fc9709a3 75 #define ADC_SQR4_REGOFFSET (0x00000300U)
AnnaBridge 189:f392fc9709a3 76
AnnaBridge 189:f392fc9709a3 77 #define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET | ADC_SQR3_REGOFFSET | ADC_SQR4_REGOFFSET)
AnnaBridge 189:f392fc9709a3 78 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 79 #define ADC_SQRX_REGOFFSET_POS (8U) /* Position of bits ADC_SQRx_REGOFFSET in ADC_REG_SQRX_REGOFFSET_MASK */
AnnaBridge 189:f392fc9709a3 80 #endif
AnnaBridge 189:f392fc9709a3 81 #define ADC_REG_RANK_ID_SQRX_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
AnnaBridge 189:f392fc9709a3 82
AnnaBridge 189:f392fc9709a3 83 /* Definition of ADC group regular sequencer bits information to be inserted */
AnnaBridge 189:f392fc9709a3 84 /* into ADC group regular sequencer ranks literals definition. */
AnnaBridge 189:f392fc9709a3 85 #define ADC_REG_RANK_1_SQRX_BITOFFSET_POS ( 6U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ1) */
AnnaBridge 189:f392fc9709a3 86 #define ADC_REG_RANK_2_SQRX_BITOFFSET_POS (12U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ2) */
AnnaBridge 189:f392fc9709a3 87 #define ADC_REG_RANK_3_SQRX_BITOFFSET_POS (18U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ3) */
AnnaBridge 189:f392fc9709a3 88 #define ADC_REG_RANK_4_SQRX_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ4) */
AnnaBridge 189:f392fc9709a3 89 #define ADC_REG_RANK_5_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ5) */
AnnaBridge 189:f392fc9709a3 90 #define ADC_REG_RANK_6_SQRX_BITOFFSET_POS ( 6U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ6) */
AnnaBridge 189:f392fc9709a3 91 #define ADC_REG_RANK_7_SQRX_BITOFFSET_POS (12U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ7) */
AnnaBridge 189:f392fc9709a3 92 #define ADC_REG_RANK_8_SQRX_BITOFFSET_POS (18U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ8) */
AnnaBridge 189:f392fc9709a3 93 #define ADC_REG_RANK_9_SQRX_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ9) */
AnnaBridge 189:f392fc9709a3 94 #define ADC_REG_RANK_10_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ10) */
AnnaBridge 189:f392fc9709a3 95 #define ADC_REG_RANK_11_SQRX_BITOFFSET_POS ( 6U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ11) */
AnnaBridge 189:f392fc9709a3 96 #define ADC_REG_RANK_12_SQRX_BITOFFSET_POS (12U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ12) */
AnnaBridge 189:f392fc9709a3 97 #define ADC_REG_RANK_13_SQRX_BITOFFSET_POS (18U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ13) */
AnnaBridge 189:f392fc9709a3 98 #define ADC_REG_RANK_14_SQRX_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ14) */
AnnaBridge 189:f392fc9709a3 99 #define ADC_REG_RANK_15_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR4_SQ15) */
AnnaBridge 189:f392fc9709a3 100 #define ADC_REG_RANK_16_SQRX_BITOFFSET_POS ( 6U) /* Value equivalent to POSITION_VAL(ADC_SQR4_SQ16) */
AnnaBridge 189:f392fc9709a3 101
AnnaBridge 189:f392fc9709a3 102
AnnaBridge 189:f392fc9709a3 103
AnnaBridge 189:f392fc9709a3 104 /* Internal mask for ADC group injected sequencer: */
AnnaBridge 189:f392fc9709a3 105 /* To select into literal LL_ADC_INJ_RANK_x the relevant bits for: */
AnnaBridge 189:f392fc9709a3 106 /* - data register offset */
AnnaBridge 189:f392fc9709a3 107 /* - sequencer rank bits position into the selected register */
AnnaBridge 189:f392fc9709a3 108
AnnaBridge 189:f392fc9709a3 109 /* Internal register offset for ADC group injected data register */
AnnaBridge 189:f392fc9709a3 110 /* (offset placed into a spare area of literal definition) */
AnnaBridge 189:f392fc9709a3 111 #define ADC_JDR1_REGOFFSET (0x00000000U)
AnnaBridge 189:f392fc9709a3 112 #define ADC_JDR2_REGOFFSET (0x00000100U)
AnnaBridge 189:f392fc9709a3 113 #define ADC_JDR3_REGOFFSET (0x00000200U)
AnnaBridge 189:f392fc9709a3 114 #define ADC_JDR4_REGOFFSET (0x00000300U)
AnnaBridge 189:f392fc9709a3 115
AnnaBridge 189:f392fc9709a3 116 #define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET)
AnnaBridge 189:f392fc9709a3 117 #define ADC_INJ_RANK_ID_JSQR_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0)
AnnaBridge 189:f392fc9709a3 118 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 119 #define ADC_JDRX_REGOFFSET_POS (8U) /* Position of bits ADC_JDRx_REGOFFSET in ADC_INJ_JDRX_REGOFFSET_MASK */
AnnaBridge 189:f392fc9709a3 120 #endif
AnnaBridge 189:f392fc9709a3 121
AnnaBridge 189:f392fc9709a3 122 /* Definition of ADC group injected sequencer bits information to be inserted */
AnnaBridge 189:f392fc9709a3 123 /* into ADC group injected sequencer ranks literals definition. */
AnnaBridge 189:f392fc9709a3 124 #define ADC_INJ_RANK_1_JSQR_BITOFFSET_POS ( 8U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ1) */
AnnaBridge 189:f392fc9709a3 125 #define ADC_INJ_RANK_2_JSQR_BITOFFSET_POS (14U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ2) */
AnnaBridge 189:f392fc9709a3 126 #define ADC_INJ_RANK_3_JSQR_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ3) */
AnnaBridge 189:f392fc9709a3 127 #define ADC_INJ_RANK_4_JSQR_BITOFFSET_POS (26U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JSQ4) */
AnnaBridge 189:f392fc9709a3 128
AnnaBridge 189:f392fc9709a3 129
AnnaBridge 189:f392fc9709a3 130
AnnaBridge 189:f392fc9709a3 131 /* Internal mask for ADC group regular trigger: */
AnnaBridge 189:f392fc9709a3 132 /* To select into literal LL_ADC_REG_TRIG_x the relevant bits for: */
AnnaBridge 189:f392fc9709a3 133 /* - regular trigger source */
AnnaBridge 189:f392fc9709a3 134 /* - regular trigger edge */
AnnaBridge 189:f392fc9709a3 135 #define ADC_REG_TRIG_EXT_EDGE_DEFAULT (ADC_CFGR_EXTEN_0) /* Trigger edge set to rising edge (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value) */
AnnaBridge 189:f392fc9709a3 136
AnnaBridge 189:f392fc9709a3 137 /* Mask containing trigger source masks for each of possible */
AnnaBridge 189:f392fc9709a3 138 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 189:f392fc9709a3 139 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 189:f392fc9709a3 140 #define ADC_REG_TRIG_SOURCE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTSEL) << (4U * 0U)) | \
AnnaBridge 189:f392fc9709a3 141 ((ADC_CFGR_EXTSEL) << (4U * 1U)) | \
AnnaBridge 189:f392fc9709a3 142 ((ADC_CFGR_EXTSEL) << (4U * 2U)) | \
AnnaBridge 189:f392fc9709a3 143 ((ADC_CFGR_EXTSEL) << (4U * 3U)) )
AnnaBridge 189:f392fc9709a3 144
AnnaBridge 189:f392fc9709a3 145 /* Mask containing trigger edge masks for each of possible */
AnnaBridge 189:f392fc9709a3 146 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 189:f392fc9709a3 147 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 189:f392fc9709a3 148 #define ADC_REG_TRIG_EDGE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN) << (4U * 0U)) | \
AnnaBridge 189:f392fc9709a3 149 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 1U)) | \
AnnaBridge 189:f392fc9709a3 150 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 2U)) | \
AnnaBridge 189:f392fc9709a3 151 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 3U)) )
AnnaBridge 189:f392fc9709a3 152
AnnaBridge 189:f392fc9709a3 153 /* Definition of ADC group regular trigger bits information. */
AnnaBridge 189:f392fc9709a3 154 #define ADC_REG_TRIG_EXTSEL_BITOFFSET_POS ( 6U) /* Value equivalent to POSITION_VAL(ADC_CFGR_EXTSEL) */
AnnaBridge 189:f392fc9709a3 155 #define ADC_REG_TRIG_EXTEN_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_CFGR_EXTEN) */
AnnaBridge 189:f392fc9709a3 156
AnnaBridge 189:f392fc9709a3 157
AnnaBridge 189:f392fc9709a3 158
AnnaBridge 189:f392fc9709a3 159 /* Internal mask for ADC group injected trigger: */
AnnaBridge 189:f392fc9709a3 160 /* To select into literal LL_ADC_INJ_TRIG_x the relevant bits for: */
AnnaBridge 189:f392fc9709a3 161 /* - injected trigger source */
AnnaBridge 189:f392fc9709a3 162 /* - injected trigger edge */
AnnaBridge 189:f392fc9709a3 163 #define ADC_INJ_TRIG_EXT_EDGE_DEFAULT (ADC_JSQR_JEXTEN_0) /* Trigger edge set to rising edge (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value) */
AnnaBridge 189:f392fc9709a3 164
AnnaBridge 189:f392fc9709a3 165 /* Mask containing trigger source masks for each of possible */
AnnaBridge 189:f392fc9709a3 166 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 189:f392fc9709a3 167 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 189:f392fc9709a3 168 #define ADC_INJ_TRIG_SOURCE_MASK (((LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTSEL) << (4U * 0U)) | \
AnnaBridge 189:f392fc9709a3 169 ((ADC_JSQR_JEXTSEL) << (4U * 1U)) | \
AnnaBridge 189:f392fc9709a3 170 ((ADC_JSQR_JEXTSEL) << (4U * 2U)) | \
AnnaBridge 189:f392fc9709a3 171 ((ADC_JSQR_JEXTSEL) << (4U * 3U)) )
AnnaBridge 189:f392fc9709a3 172
AnnaBridge 189:f392fc9709a3 173 /* Mask containing trigger edge masks for each of possible */
AnnaBridge 189:f392fc9709a3 174 /* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
AnnaBridge 189:f392fc9709a3 175 /* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
AnnaBridge 189:f392fc9709a3 176 #define ADC_INJ_TRIG_EDGE_MASK (((LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN) << (4U * 0U)) | \
AnnaBridge 189:f392fc9709a3 177 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 1U)) | \
AnnaBridge 189:f392fc9709a3 178 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 2U)) | \
AnnaBridge 189:f392fc9709a3 179 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 3U)) )
AnnaBridge 189:f392fc9709a3 180
AnnaBridge 189:f392fc9709a3 181 /* Definition of ADC group injected trigger bits information. */
AnnaBridge 189:f392fc9709a3 182 #define ADC_INJ_TRIG_EXTSEL_BITOFFSET_POS ( 2U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JEXTSEL) */
AnnaBridge 189:f392fc9709a3 183 #define ADC_INJ_TRIG_EXTEN_BITOFFSET_POS ( 6U) /* Value equivalent to POSITION_VAL(ADC_JSQR_JEXTEN) */
AnnaBridge 189:f392fc9709a3 184
AnnaBridge 189:f392fc9709a3 185
AnnaBridge 189:f392fc9709a3 186
AnnaBridge 189:f392fc9709a3 187
AnnaBridge 189:f392fc9709a3 188
AnnaBridge 189:f392fc9709a3 189
AnnaBridge 189:f392fc9709a3 190 /* Internal mask for ADC channel: */
AnnaBridge 189:f392fc9709a3 191 /* To select into literal LL_ADC_CHANNEL_x the relevant bits for: */
AnnaBridge 189:f392fc9709a3 192 /* - channel identifier defined by number */
AnnaBridge 189:f392fc9709a3 193 /* - channel identifier defined by bitfield */
AnnaBridge 189:f392fc9709a3 194 /* - channel differentiation between external channels (connected to */
AnnaBridge 189:f392fc9709a3 195 /* GPIO pins) and internal channels (connected to internal paths) */
AnnaBridge 189:f392fc9709a3 196 /* - channel sampling time defined by SMPRx register offset */
AnnaBridge 189:f392fc9709a3 197 /* and SMPx bits positions into SMPRx register */
AnnaBridge 189:f392fc9709a3 198 #define ADC_CHANNEL_ID_NUMBER_MASK (ADC_CFGR_AWD1CH)
AnnaBridge 189:f392fc9709a3 199 #define ADC_CHANNEL_ID_BITFIELD_MASK (ADC_AWD2CR_AWD2CH)
AnnaBridge 189:f392fc9709a3 200 #define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS (26U)/* Value equivalent to POSITION_VAL(ADC_CHANNEL_ID_NUMBER_MASK) */
AnnaBridge 189:f392fc9709a3 201 #define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_BITFIELD_MASK | ADC_CHANNEL_ID_INTERNAL_CH_MASK)
AnnaBridge 189:f392fc9709a3 202 /* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */
AnnaBridge 189:f392fc9709a3 203 #define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 (ADC_SQR2_SQ5) /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> POSITION_VAL(ADC_CHANNEL_NUMBER_MASK)) */
AnnaBridge 189:f392fc9709a3 204
AnnaBridge 189:f392fc9709a3 205 /* Channel differentiation between external and internal channels */
AnnaBridge 189:f392fc9709a3 206 #define ADC_CHANNEL_ID_INTERNAL_CH (0x80000000U) /* Marker of internal channel */
AnnaBridge 189:f392fc9709a3 207 #define ADC_CHANNEL_ID_INTERNAL_CH_2 (0x00080000U) /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */
AnnaBridge 189:f392fc9709a3 208 #define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2)
AnnaBridge 189:f392fc9709a3 209
AnnaBridge 189:f392fc9709a3 210 /* Internal register offset for ADC channel sampling time configuration */
AnnaBridge 189:f392fc9709a3 211 /* (offset placed into a spare area of literal definition) */
AnnaBridge 189:f392fc9709a3 212 #define ADC_SMPR1_REGOFFSET (0x00000000U)
AnnaBridge 189:f392fc9709a3 213 #define ADC_SMPR2_REGOFFSET (0x02000000U)
AnnaBridge 189:f392fc9709a3 214 #define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET | ADC_SMPR2_REGOFFSET)
AnnaBridge 189:f392fc9709a3 215 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 216 #define ADC_SMPRX_REGOFFSET_POS (25U) /* Position of bits ADC_SMPRx_REGOFFSET in ADC_CHANNEL_SMPRX_REGOFFSET_MASK */
AnnaBridge 189:f392fc9709a3 217 #endif
AnnaBridge 189:f392fc9709a3 218
AnnaBridge 189:f392fc9709a3 219 #define ADC_CHANNEL_SMPx_BITOFFSET_MASK (0x01F00000U)
AnnaBridge 189:f392fc9709a3 220 #define ADC_CHANNEL_SMPx_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_CHANNEL_SMPx_BITOFFSET_MASK) */
AnnaBridge 189:f392fc9709a3 221
AnnaBridge 189:f392fc9709a3 222 /* Definition of channels ID number information to be inserted into */
AnnaBridge 189:f392fc9709a3 223 /* channels literals definition. */
AnnaBridge 189:f392fc9709a3 224 #define ADC_CHANNEL_0_NUMBER (0x00000000U)
AnnaBridge 189:f392fc9709a3 225 #define ADC_CHANNEL_1_NUMBER ( ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 226 #define ADC_CHANNEL_2_NUMBER ( ADC_CFGR_AWD1CH_1 )
AnnaBridge 189:f392fc9709a3 227 #define ADC_CHANNEL_3_NUMBER ( ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 228 #define ADC_CHANNEL_4_NUMBER ( ADC_CFGR_AWD1CH_2 )
AnnaBridge 189:f392fc9709a3 229 #define ADC_CHANNEL_5_NUMBER ( ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 230 #define ADC_CHANNEL_6_NUMBER ( ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 189:f392fc9709a3 231 #define ADC_CHANNEL_7_NUMBER ( ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 232 #define ADC_CHANNEL_8_NUMBER ( ADC_CFGR_AWD1CH_3 )
AnnaBridge 189:f392fc9709a3 233 #define ADC_CHANNEL_9_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 234 #define ADC_CHANNEL_10_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 189:f392fc9709a3 235 #define ADC_CHANNEL_11_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 236 #define ADC_CHANNEL_12_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 )
AnnaBridge 189:f392fc9709a3 237 #define ADC_CHANNEL_13_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 238 #define ADC_CHANNEL_14_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 189:f392fc9709a3 239 #define ADC_CHANNEL_15_NUMBER ( ADC_CFGR_AWD1CH_3 | ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 240 #define ADC_CHANNEL_16_NUMBER (ADC_CFGR_AWD1CH_4 )
AnnaBridge 189:f392fc9709a3 241 #define ADC_CHANNEL_17_NUMBER (ADC_CFGR_AWD1CH_4 | ADC_CFGR_AWD1CH_0)
AnnaBridge 189:f392fc9709a3 242 #define ADC_CHANNEL_18_NUMBER (ADC_CFGR_AWD1CH_4 | ADC_CFGR_AWD1CH_1 )
AnnaBridge 189:f392fc9709a3 243
AnnaBridge 189:f392fc9709a3 244 /* Definition of channels ID bitfield information to be inserted into */
AnnaBridge 189:f392fc9709a3 245 /* channels literals definition. */
AnnaBridge 189:f392fc9709a3 246 #define ADC_CHANNEL_0_BITFIELD (ADC_AWD2CR_AWD2CH_0)
AnnaBridge 189:f392fc9709a3 247 #define ADC_CHANNEL_1_BITFIELD (ADC_AWD2CR_AWD2CH_1)
AnnaBridge 189:f392fc9709a3 248 #define ADC_CHANNEL_2_BITFIELD (ADC_AWD2CR_AWD2CH_2)
AnnaBridge 189:f392fc9709a3 249 #define ADC_CHANNEL_3_BITFIELD (ADC_AWD2CR_AWD2CH_3)
AnnaBridge 189:f392fc9709a3 250 #define ADC_CHANNEL_4_BITFIELD (ADC_AWD2CR_AWD2CH_4)
AnnaBridge 189:f392fc9709a3 251 #define ADC_CHANNEL_5_BITFIELD (ADC_AWD2CR_AWD2CH_5)
AnnaBridge 189:f392fc9709a3 252 #define ADC_CHANNEL_6_BITFIELD (ADC_AWD2CR_AWD2CH_6)
AnnaBridge 189:f392fc9709a3 253 #define ADC_CHANNEL_7_BITFIELD (ADC_AWD2CR_AWD2CH_7)
AnnaBridge 189:f392fc9709a3 254 #define ADC_CHANNEL_8_BITFIELD (ADC_AWD2CR_AWD2CH_8)
AnnaBridge 189:f392fc9709a3 255 #define ADC_CHANNEL_9_BITFIELD (ADC_AWD2CR_AWD2CH_9)
AnnaBridge 189:f392fc9709a3 256 #define ADC_CHANNEL_10_BITFIELD (ADC_AWD2CR_AWD2CH_10)
AnnaBridge 189:f392fc9709a3 257 #define ADC_CHANNEL_11_BITFIELD (ADC_AWD2CR_AWD2CH_11)
AnnaBridge 189:f392fc9709a3 258 #define ADC_CHANNEL_12_BITFIELD (ADC_AWD2CR_AWD2CH_12)
AnnaBridge 189:f392fc9709a3 259 #define ADC_CHANNEL_13_BITFIELD (ADC_AWD2CR_AWD2CH_13)
AnnaBridge 189:f392fc9709a3 260 #define ADC_CHANNEL_14_BITFIELD (ADC_AWD2CR_AWD2CH_14)
AnnaBridge 189:f392fc9709a3 261 #define ADC_CHANNEL_15_BITFIELD (ADC_AWD2CR_AWD2CH_15)
AnnaBridge 189:f392fc9709a3 262 #define ADC_CHANNEL_16_BITFIELD (ADC_AWD2CR_AWD2CH_16)
AnnaBridge 189:f392fc9709a3 263 #define ADC_CHANNEL_17_BITFIELD (ADC_AWD2CR_AWD2CH_17)
AnnaBridge 189:f392fc9709a3 264 #define ADC_CHANNEL_18_BITFIELD (ADC_AWD2CR_AWD2CH_18)
AnnaBridge 189:f392fc9709a3 265
AnnaBridge 189:f392fc9709a3 266 /* Definition of channels sampling time information to be inserted into */
AnnaBridge 189:f392fc9709a3 267 /* channels literals definition. */
AnnaBridge 189:f392fc9709a3 268 #define ADC_CHANNEL_0_SMP (ADC_SMPR1_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP0) */
AnnaBridge 189:f392fc9709a3 269 #define ADC_CHANNEL_1_SMP (ADC_SMPR1_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP1) */
AnnaBridge 189:f392fc9709a3 270 #define ADC_CHANNEL_2_SMP (ADC_SMPR1_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP2) */
AnnaBridge 189:f392fc9709a3 271 #define ADC_CHANNEL_3_SMP (ADC_SMPR1_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP3) */
AnnaBridge 189:f392fc9709a3 272 #define ADC_CHANNEL_4_SMP (ADC_SMPR1_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP4) */
AnnaBridge 189:f392fc9709a3 273 #define ADC_CHANNEL_5_SMP (ADC_SMPR1_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP5) */
AnnaBridge 189:f392fc9709a3 274 #define ADC_CHANNEL_6_SMP (ADC_SMPR1_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP6) */
AnnaBridge 189:f392fc9709a3 275 #define ADC_CHANNEL_7_SMP (ADC_SMPR1_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP7) */
AnnaBridge 189:f392fc9709a3 276 #define ADC_CHANNEL_8_SMP (ADC_SMPR1_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP8) */
AnnaBridge 189:f392fc9709a3 277 #define ADC_CHANNEL_9_SMP (ADC_SMPR1_REGOFFSET | ((27U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP9) */
AnnaBridge 189:f392fc9709a3 278 #define ADC_CHANNEL_10_SMP (ADC_SMPR2_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP10) */
AnnaBridge 189:f392fc9709a3 279 #define ADC_CHANNEL_11_SMP (ADC_SMPR2_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP11) */
AnnaBridge 189:f392fc9709a3 280 #define ADC_CHANNEL_12_SMP (ADC_SMPR2_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP12) */
AnnaBridge 189:f392fc9709a3 281 #define ADC_CHANNEL_13_SMP (ADC_SMPR2_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP13) */
AnnaBridge 189:f392fc9709a3 282 #define ADC_CHANNEL_14_SMP (ADC_SMPR2_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP14) */
AnnaBridge 189:f392fc9709a3 283 #define ADC_CHANNEL_15_SMP (ADC_SMPR2_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP15) */
AnnaBridge 189:f392fc9709a3 284 #define ADC_CHANNEL_16_SMP (ADC_SMPR2_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP16) */
AnnaBridge 189:f392fc9709a3 285 #define ADC_CHANNEL_17_SMP (ADC_SMPR2_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP17) */
AnnaBridge 189:f392fc9709a3 286 #define ADC_CHANNEL_18_SMP (ADC_SMPR2_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP18) */
AnnaBridge 189:f392fc9709a3 287
AnnaBridge 189:f392fc9709a3 288
AnnaBridge 189:f392fc9709a3 289 /* Internal mask for ADC mode single or differential ended: */
AnnaBridge 189:f392fc9709a3 290 /* To select into literals LL_ADC_SINGLE_ENDED or LL_ADC_SINGLE_DIFFERENTIAL */
AnnaBridge 189:f392fc9709a3 291 /* the relevant bits for: */
AnnaBridge 189:f392fc9709a3 292 /* (concatenation of multiple bits used in different registers) */
AnnaBridge 189:f392fc9709a3 293 /* - ADC calibration: calibration start, calibration factor get or set */
AnnaBridge 189:f392fc9709a3 294 /* - ADC channels: set each ADC channel ending mode */
AnnaBridge 189:f392fc9709a3 295 #define ADC_SINGLEDIFF_CALIB_START_MASK (ADC_CR_ADCALDIF)
AnnaBridge 189:f392fc9709a3 296 #define ADC_SINGLEDIFF_CALIB_FACTOR_MASK (ADC_CALFACT_CALFACT_D | ADC_CALFACT_CALFACT_S)
AnnaBridge 189:f392fc9709a3 297 #define ADC_SINGLEDIFF_CHANNEL_MASK (ADC_CHANNEL_ID_BITFIELD_MASK) /* Equivalent to ADC_DIFSEL_DIFSEL */
AnnaBridge 189:f392fc9709a3 298 #define ADC_SINGLEDIFF_CHANNEL_SHIFT_MASK (ADC_CALFACT_CALFACT_S_5) /* Bit chosen to perform of shift when single mode is selected, shift value out of channels bits range. */
AnnaBridge 189:f392fc9709a3 299 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 300 #define ADC_SINGLEDIFF_CALIB_F_BIT_D_MASK (0x00010000U) /* Selection of 1 bit to discriminate differential mode: mask of bit */
AnnaBridge 189:f392fc9709a3 301 #define ADC_SINGLEDIFF_CALIB_F_BIT_D_POS (16U) /* Selection of 1 bit to discriminate differential mode: position of bit */
AnnaBridge 189:f392fc9709a3 302 #define ADC_SINGLEDIFF_CALIB_F_BIT_D_SHIFT4 (ADC_SINGLEDIFF_CALIB_F_BIT_D_POS - 4U) /* Shift of bit ADC_SINGLEDIFF_CALIB_F_BIT_D to position to perform a shift of 4 ranks */
AnnaBridge 189:f392fc9709a3 303 #endif
AnnaBridge 189:f392fc9709a3 304
AnnaBridge 189:f392fc9709a3 305 /* Internal mask for ADC analog watchdog: */
AnnaBridge 189:f392fc9709a3 306 /* To select into literals LL_ADC_AWD_CHANNELx_xxx the relevant bits for: */
AnnaBridge 189:f392fc9709a3 307 /* (concatenation of multiple bits used in different analog watchdogs, */
AnnaBridge 189:f392fc9709a3 308 /* (feature of several watchdogs not available on all STM32 families)). */
AnnaBridge 189:f392fc9709a3 309 /* - analog watchdog 1: monitored channel defined by number, */
AnnaBridge 189:f392fc9709a3 310 /* selection of ADC group (ADC groups regular and-or injected). */
AnnaBridge 189:f392fc9709a3 311 /* - analog watchdog 2 and 3: monitored channel defined by bitfield, no */
AnnaBridge 189:f392fc9709a3 312 /* selection on groups. */
AnnaBridge 189:f392fc9709a3 313
AnnaBridge 189:f392fc9709a3 314 /* Internal register offset for ADC analog watchdog channel configuration */
AnnaBridge 189:f392fc9709a3 315 #define ADC_AWD_CR1_REGOFFSET (0x00000000U)
AnnaBridge 189:f392fc9709a3 316 #define ADC_AWD_CR2_REGOFFSET (0x00100000U)
AnnaBridge 189:f392fc9709a3 317 #define ADC_AWD_CR3_REGOFFSET (0x00200000U)
AnnaBridge 189:f392fc9709a3 318
AnnaBridge 189:f392fc9709a3 319 /* Register offset gap between AWD1 and AWD2-AWD3 configuration registers */
AnnaBridge 189:f392fc9709a3 320 /* (Set separately as ADC_AWD_CRX_REGOFFSET to spare 32 bits space */
AnnaBridge 189:f392fc9709a3 321 #define ADC_AWD_CR12_REGOFFSETGAP_MASK (ADC_AWD2CR_AWD2CH_0)
AnnaBridge 189:f392fc9709a3 322 #define ADC_AWD_CR12_REGOFFSETGAP_VAL (0x00000024U)
AnnaBridge 189:f392fc9709a3 323
AnnaBridge 189:f392fc9709a3 324 #define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET | ADC_AWD_CR2_REGOFFSET | ADC_AWD_CR3_REGOFFSET)
AnnaBridge 189:f392fc9709a3 325
AnnaBridge 189:f392fc9709a3 326 #define ADC_AWD_CR1_CHANNEL_MASK (ADC_CFGR_AWD1CH | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
AnnaBridge 189:f392fc9709a3 327 #define ADC_AWD_CR23_CHANNEL_MASK (ADC_AWD2CR_AWD2CH)
AnnaBridge 189:f392fc9709a3 328 #define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR23_CHANNEL_MASK)
AnnaBridge 189:f392fc9709a3 329
AnnaBridge 189:f392fc9709a3 330 #define ADC_AWD_CRX_REGOFFSET_POS (20U) /* Position of bits ADC_AWD_CRx_REGOFFSET in ADC_AWD_CRX_REGOFFSET_MASK */
AnnaBridge 189:f392fc9709a3 331
AnnaBridge 189:f392fc9709a3 332 /* Internal register offset for ADC analog watchdog threshold configuration */
AnnaBridge 189:f392fc9709a3 333 #define ADC_AWD_TR1_REGOFFSET (ADC_AWD_CR1_REGOFFSET)
AnnaBridge 189:f392fc9709a3 334 #define ADC_AWD_TR2_REGOFFSET (ADC_AWD_CR2_REGOFFSET)
AnnaBridge 189:f392fc9709a3 335 #define ADC_AWD_TR3_REGOFFSET (ADC_AWD_CR3_REGOFFSET)
AnnaBridge 189:f392fc9709a3 336 #define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_REGOFFSET | ADC_AWD_TR2_REGOFFSET | ADC_AWD_TR3_REGOFFSET)
AnnaBridge 189:f392fc9709a3 337 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 338 #define ADC_AWD_TRX_REGOFFSET_POS (ADC_AWD_CRX_REGOFFSET_POS) /* Position of bits ADC_SQRx_REGOFFSET in ADC_AWD_TRX_REGOFFSET_MASK */
AnnaBridge 189:f392fc9709a3 339 #define ADC_AWD_TRX_BIT_HIGH_MASK (0x00010000U) /* Selection of 1 bit to discriminate threshold high: mask of bit */
AnnaBridge 189:f392fc9709a3 340 #define ADC_AWD_TRX_BIT_HIGH_POS (16U) /* Selection of 1 bit to discriminate threshold high: position of bit */
AnnaBridge 189:f392fc9709a3 341 #define ADC_AWD_TRX_BIT_HIGH_SHIFT4 (ADC_AWD_TRX_BIT_HIGH_POS - 4U) /* Shift of bit ADC_AWD_TRX_BIT_HIGH to position to perform a shift of 4 ranks */
AnnaBridge 189:f392fc9709a3 342 #endif
AnnaBridge 189:f392fc9709a3 343
AnnaBridge 189:f392fc9709a3 344 /* Internal mask for ADC offset: */
AnnaBridge 189:f392fc9709a3 345 /* Internal register offset for ADC offset number configuration */
AnnaBridge 189:f392fc9709a3 346 #define ADC_OFR1_REGOFFSET (0x00000000U)
AnnaBridge 189:f392fc9709a3 347 #define ADC_OFR2_REGOFFSET (0x00000001U)
AnnaBridge 189:f392fc9709a3 348 #define ADC_OFR3_REGOFFSET (0x00000002U)
AnnaBridge 189:f392fc9709a3 349 #define ADC_OFR4_REGOFFSET (0x00000003U)
AnnaBridge 189:f392fc9709a3 350 #define ADC_OFRx_REGOFFSET_MASK (ADC_OFR1_REGOFFSET | ADC_OFR2_REGOFFSET | ADC_OFR3_REGOFFSET | ADC_OFR4_REGOFFSET)
AnnaBridge 189:f392fc9709a3 351
AnnaBridge 189:f392fc9709a3 352
AnnaBridge 189:f392fc9709a3 353 /* ADC registers bits positions */
AnnaBridge 189:f392fc9709a3 354 #define ADC_CFGR_RES_BITOFFSET_POS ( 3U) /* Value equivalent to POSITION_VAL(ADC_CFGR_RES) */
AnnaBridge 189:f392fc9709a3 355 #define ADC_CFGR_AWD1SGL_BITOFFSET_POS (22U) /* Value equivalent to POSITION_VAL(ADC_CFGR_AWD1SGL) */
AnnaBridge 189:f392fc9709a3 356 #define ADC_CFGR_AWD1EN_BITOFFSET_POS (23U) /* Value equivalent to POSITION_VAL(ADC_CFGR_AWD1EN) */
AnnaBridge 189:f392fc9709a3 357 #define ADC_CFGR_JAWD1EN_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_CFGR_JAWD1EN) */
AnnaBridge 189:f392fc9709a3 358 #define ADC_TR1_HT1_BITOFFSET_POS (16U) /* Value equivalent to POSITION_VAL(ADC_TR1_HT1) */
AnnaBridge 189:f392fc9709a3 359
AnnaBridge 189:f392fc9709a3 360
AnnaBridge 189:f392fc9709a3 361 /* ADC registers bits groups */
AnnaBridge 189:f392fc9709a3 362 #define ADC_CR_BITS_PROPERTY_RS (ADC_CR_ADCAL | ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN) /* ADC register CR bits with HW property "rs": Software can read as well as set this bit. Writing '0' has no effect on the bit value. */
AnnaBridge 189:f392fc9709a3 363
AnnaBridge 189:f392fc9709a3 364
AnnaBridge 189:f392fc9709a3 365 /* ADC internal channels related definitions */
AnnaBridge 189:f392fc9709a3 366 /* Internal voltage reference VrefInt */
AnnaBridge 189:f392fc9709a3 367 #define VREFINT_CAL_ADDR ((uint16_t*) (0x1FFF75AAU)) /* Internal voltage reference, address of parameter VREFINT_CAL: VrefInt ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.0 V (tolerance: +-10 mV). */
AnnaBridge 189:f392fc9709a3 368 #define VREFINT_CAL_VREF ( 3000U) /* Analog voltage reference (Vref+) value with which temperature sensor has been calibrated in production (tolerance: +-10 mV) (unit: mV). */
AnnaBridge 189:f392fc9709a3 369 /* Temperature sensor */
AnnaBridge 189:f392fc9709a3 370 #define TEMPSENSOR_CAL1_ADDR ((uint16_t*) (0x1FFF75A8U)) /* Internal temperature sensor, address of parameter TS_CAL1: On STM32L4, temperature sensor ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.0 V (tolerance: +-10 mV). */
AnnaBridge 189:f392fc9709a3 371 #define TEMPSENSOR_CAL2_ADDR ((uint16_t*) (0x1FFF75CAU)) /* Internal temperature sensor, address of parameter TS_CAL2: On STM32L4, temperature sensor ADC raw data acquired at temperature 110 DegC (tolerance: +-5 DegC), Vref+ = 3.0 V (tolerance: +-10 mV). */
AnnaBridge 189:f392fc9709a3 372 #define TEMPSENSOR_CAL1_TEMP (( int32_t) 30) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL1_ADDR (tolerance: +-5 DegC) (unit: DegC). */
AnnaBridge 189:f392fc9709a3 373 #define TEMPSENSOR_CAL2_TEMP (( int32_t) 110) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL2_ADDR (tolerance: +-5 DegC) (unit: DegC). */
AnnaBridge 189:f392fc9709a3 374 #define TEMPSENSOR_CAL_VREFANALOG ( 3000U) /* Analog voltage reference (Vref+) voltage with which temperature sensor has been calibrated in production (+-10 mV) (unit: mV). */
AnnaBridge 189:f392fc9709a3 375
AnnaBridge 189:f392fc9709a3 376
AnnaBridge 189:f392fc9709a3 377 /**
AnnaBridge 189:f392fc9709a3 378 * @}
AnnaBridge 189:f392fc9709a3 379 */
AnnaBridge 189:f392fc9709a3 380
AnnaBridge 189:f392fc9709a3 381
AnnaBridge 189:f392fc9709a3 382 /* Private macros ------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 383 /** @defgroup ADC_LL_Private_Macros ADC Private Macros
AnnaBridge 189:f392fc9709a3 384 * @{
AnnaBridge 189:f392fc9709a3 385 */
AnnaBridge 189:f392fc9709a3 386
AnnaBridge 189:f392fc9709a3 387 /**
AnnaBridge 189:f392fc9709a3 388 * @brief Driver macro reserved for internal use: isolate bits with the
AnnaBridge 189:f392fc9709a3 389 * selected mask and shift them to the register LSB
AnnaBridge 189:f392fc9709a3 390 * (shift mask on register position bit 0).
AnnaBridge 189:f392fc9709a3 391 * @param __BITS__ Bits in register 32 bits
AnnaBridge 189:f392fc9709a3 392 * @param __MASK__ Mask in register 32 bits
AnnaBridge 189:f392fc9709a3 393 * @retval Bits in register 32 bits
AnnaBridge 189:f392fc9709a3 394 */
AnnaBridge 189:f392fc9709a3 395 #define __ADC_MASK_SHIFT(__BITS__, __MASK__) \
AnnaBridge 189:f392fc9709a3 396 (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__)))
AnnaBridge 189:f392fc9709a3 397
AnnaBridge 189:f392fc9709a3 398 /**
AnnaBridge 189:f392fc9709a3 399 * @brief Driver macro reserved for internal use: set a pointer to
AnnaBridge 189:f392fc9709a3 400 * a register from a register basis from which an offset
AnnaBridge 189:f392fc9709a3 401 * is applied.
AnnaBridge 189:f392fc9709a3 402 * @param __REG__ Register basis from which the offset is applied.
AnnaBridge 189:f392fc9709a3 403 * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers).
AnnaBridge 189:f392fc9709a3 404 * @retval Pointer to register address
AnnaBridge 189:f392fc9709a3 405 */
AnnaBridge 189:f392fc9709a3 406 #define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
AnnaBridge 189:f392fc9709a3 407 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
AnnaBridge 189:f392fc9709a3 408
AnnaBridge 189:f392fc9709a3 409 /**
AnnaBridge 189:f392fc9709a3 410 * @}
AnnaBridge 189:f392fc9709a3 411 */
AnnaBridge 189:f392fc9709a3 412
AnnaBridge 189:f392fc9709a3 413
AnnaBridge 189:f392fc9709a3 414 /* Exported types ------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 415 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 189:f392fc9709a3 416 /** @defgroup ADC_LL_ES_INIT ADC Exported Init structure
AnnaBridge 189:f392fc9709a3 417 * @{
AnnaBridge 189:f392fc9709a3 418 */
AnnaBridge 189:f392fc9709a3 419
AnnaBridge 189:f392fc9709a3 420 /**
AnnaBridge 189:f392fc9709a3 421 * @brief Structure definition of some features of ADC common parameters
AnnaBridge 189:f392fc9709a3 422 * and multimode
AnnaBridge 189:f392fc9709a3 423 * (all ADC instances belonging to the same ADC common instance).
AnnaBridge 189:f392fc9709a3 424 * @note The setting of these parameters by function @ref LL_ADC_CommonInit()
AnnaBridge 189:f392fc9709a3 425 * is conditioned to ADC instances state (all ADC instances
AnnaBridge 189:f392fc9709a3 426 * sharing the same ADC common instance):
AnnaBridge 189:f392fc9709a3 427 * All ADC instances sharing the same ADC common instance must be
AnnaBridge 189:f392fc9709a3 428 * disabled.
AnnaBridge 189:f392fc9709a3 429 */
AnnaBridge 189:f392fc9709a3 430 typedef struct
AnnaBridge 189:f392fc9709a3 431 {
AnnaBridge 189:f392fc9709a3 432 uint32_t CommonClock; /*!< Set parameter common to several ADC: Clock source and prescaler.
AnnaBridge 189:f392fc9709a3 433 This parameter can be a value of @ref ADC_LL_EC_COMMON_CLOCK_SOURCE
AnnaBridge 189:f392fc9709a3 434 @note On this STM32 serie, if ADC group injected is used, some
AnnaBridge 189:f392fc9709a3 435 clock ratio constraints between ADC clock and AHB clock
AnnaBridge 189:f392fc9709a3 436 must be respected. Refer to reference manual.
AnnaBridge 189:f392fc9709a3 437
AnnaBridge 189:f392fc9709a3 438 This feature can be modified afterwards using unitary function @ref LL_ADC_SetCommonClock(). */
AnnaBridge 189:f392fc9709a3 439
AnnaBridge 189:f392fc9709a3 440 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 441 uint32_t Multimode; /*!< Set ADC multimode configuration to operate in independent mode or multimode (for devices with several ADC instances).
AnnaBridge 189:f392fc9709a3 442 This parameter can be a value of @ref ADC_LL_EC_MULTI_MODE
AnnaBridge 189:f392fc9709a3 443
AnnaBridge 189:f392fc9709a3 444 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultimode(). */
AnnaBridge 189:f392fc9709a3 445
AnnaBridge 189:f392fc9709a3 446 uint32_t MultiDMATransfer; /*!< Set ADC multimode conversion data transfer: no transfer or transfer by DMA.
AnnaBridge 189:f392fc9709a3 447 This parameter can be a value of @ref ADC_LL_EC_MULTI_DMA_TRANSFER
AnnaBridge 189:f392fc9709a3 448
AnnaBridge 189:f392fc9709a3 449 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiDMATransfer(). */
AnnaBridge 189:f392fc9709a3 450
AnnaBridge 189:f392fc9709a3 451 uint32_t MultiTwoSamplingDelay; /*!< Set ADC multimode delay between 2 sampling phases.
AnnaBridge 189:f392fc9709a3 452 This parameter can be a value of @ref ADC_LL_EC_MULTI_TWOSMP_DELAY
AnnaBridge 189:f392fc9709a3 453
AnnaBridge 189:f392fc9709a3 454 This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiTwoSamplingDelay(). */
AnnaBridge 189:f392fc9709a3 455 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 189:f392fc9709a3 456
AnnaBridge 189:f392fc9709a3 457 } LL_ADC_CommonInitTypeDef;
AnnaBridge 189:f392fc9709a3 458
AnnaBridge 189:f392fc9709a3 459 /**
AnnaBridge 189:f392fc9709a3 460 * @brief Structure definition of some features of ADC instance.
AnnaBridge 189:f392fc9709a3 461 * @note These parameters have an impact on ADC scope: ADC instance.
AnnaBridge 189:f392fc9709a3 462 * Affects both group regular and group injected (availability
AnnaBridge 189:f392fc9709a3 463 * of ADC group injected depends on STM32 families).
AnnaBridge 189:f392fc9709a3 464 * Refer to corresponding unitary functions into
AnnaBridge 189:f392fc9709a3 465 * @ref ADC_LL_EF_Configuration_ADC_Instance .
AnnaBridge 189:f392fc9709a3 466 * @note The setting of these parameters by function @ref LL_ADC_Init()
AnnaBridge 189:f392fc9709a3 467 * is conditioned to ADC state:
AnnaBridge 189:f392fc9709a3 468 * ADC instance must be disabled.
AnnaBridge 189:f392fc9709a3 469 * This condition is applied to all ADC features, for efficiency
AnnaBridge 189:f392fc9709a3 470 * and compatibility over all STM32 families. However, the different
AnnaBridge 189:f392fc9709a3 471 * features can be set under different ADC state conditions
AnnaBridge 189:f392fc9709a3 472 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 189:f392fc9709a3 473 * ADC enabled with conversion on going, ...)
AnnaBridge 189:f392fc9709a3 474 * Each feature can be updated afterwards with a unitary function
AnnaBridge 189:f392fc9709a3 475 * and potentially with ADC in a different state than disabled,
AnnaBridge 189:f392fc9709a3 476 * refer to description of each function for setting
AnnaBridge 189:f392fc9709a3 477 * conditioned to ADC state.
AnnaBridge 189:f392fc9709a3 478 */
AnnaBridge 189:f392fc9709a3 479 typedef struct
AnnaBridge 189:f392fc9709a3 480 {
AnnaBridge 189:f392fc9709a3 481 uint32_t Resolution; /*!< Set ADC resolution.
AnnaBridge 189:f392fc9709a3 482 This parameter can be a value of @ref ADC_LL_EC_RESOLUTION
AnnaBridge 189:f392fc9709a3 483
AnnaBridge 189:f392fc9709a3 484 This feature can be modified afterwards using unitary function @ref LL_ADC_SetResolution(). */
AnnaBridge 189:f392fc9709a3 485
AnnaBridge 189:f392fc9709a3 486 uint32_t DataAlignment; /*!< Set ADC conversion data alignment.
AnnaBridge 189:f392fc9709a3 487 This parameter can be a value of @ref ADC_LL_EC_DATA_ALIGN
AnnaBridge 189:f392fc9709a3 488
AnnaBridge 189:f392fc9709a3 489 This feature can be modified afterwards using unitary function @ref LL_ADC_SetDataAlignment(). */
AnnaBridge 189:f392fc9709a3 490
AnnaBridge 189:f392fc9709a3 491 uint32_t LowPowerMode; /*!< Set ADC low power mode.
AnnaBridge 189:f392fc9709a3 492 This parameter can be a value of @ref ADC_LL_EC_LP_MODE
AnnaBridge 189:f392fc9709a3 493
AnnaBridge 189:f392fc9709a3 494 This feature can be modified afterwards using unitary function @ref LL_ADC_SetLowPowerMode(). */
AnnaBridge 189:f392fc9709a3 495
AnnaBridge 189:f392fc9709a3 496 } LL_ADC_InitTypeDef;
AnnaBridge 189:f392fc9709a3 497
AnnaBridge 189:f392fc9709a3 498 /**
AnnaBridge 189:f392fc9709a3 499 * @brief Structure definition of some features of ADC group regular.
AnnaBridge 189:f392fc9709a3 500 * @note These parameters have an impact on ADC scope: ADC group regular.
AnnaBridge 189:f392fc9709a3 501 * Refer to corresponding unitary functions into
AnnaBridge 189:f392fc9709a3 502 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
AnnaBridge 189:f392fc9709a3 503 * (functions with prefix "REG").
AnnaBridge 189:f392fc9709a3 504 * @note The setting of these parameters by function @ref LL_ADC_REG_Init()
AnnaBridge 189:f392fc9709a3 505 * is conditioned to ADC state:
AnnaBridge 189:f392fc9709a3 506 * ADC instance must be disabled.
AnnaBridge 189:f392fc9709a3 507 * This condition is applied to all ADC features, for efficiency
AnnaBridge 189:f392fc9709a3 508 * and compatibility over all STM32 families. However, the different
AnnaBridge 189:f392fc9709a3 509 * features can be set under different ADC state conditions
AnnaBridge 189:f392fc9709a3 510 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 189:f392fc9709a3 511 * ADC enabled with conversion on going, ...)
AnnaBridge 189:f392fc9709a3 512 * Each feature can be updated afterwards with a unitary function
AnnaBridge 189:f392fc9709a3 513 * and potentially with ADC in a different state than disabled,
AnnaBridge 189:f392fc9709a3 514 * refer to description of each function for setting
AnnaBridge 189:f392fc9709a3 515 * conditioned to ADC state.
AnnaBridge 189:f392fc9709a3 516 */
AnnaBridge 189:f392fc9709a3 517 typedef struct
AnnaBridge 189:f392fc9709a3 518 {
AnnaBridge 189:f392fc9709a3 519 uint32_t TriggerSource; /*!< Set ADC group regular conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line).
AnnaBridge 189:f392fc9709a3 520 This parameter can be a value of @ref ADC_LL_EC_REG_TRIGGER_SOURCE
AnnaBridge 189:f392fc9709a3 521 @note On this STM32 serie, setting trigger source to external trigger also set trigger polarity to rising edge
AnnaBridge 189:f392fc9709a3 522 (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value).
AnnaBridge 189:f392fc9709a3 523 In case of need to modify trigger edge, use function @ref LL_ADC_REG_SetTriggerEdge().
AnnaBridge 189:f392fc9709a3 524
AnnaBridge 189:f392fc9709a3 525 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetTriggerSource(). */
AnnaBridge 189:f392fc9709a3 526
AnnaBridge 189:f392fc9709a3 527 uint32_t SequencerLength; /*!< Set ADC group regular sequencer length.
AnnaBridge 189:f392fc9709a3 528 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_SCAN_LENGTH
AnnaBridge 189:f392fc9709a3 529
AnnaBridge 189:f392fc9709a3 530 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerLength(). */
AnnaBridge 189:f392fc9709a3 531
AnnaBridge 189:f392fc9709a3 532 uint32_t SequencerDiscont; /*!< Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
AnnaBridge 189:f392fc9709a3 533 This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_DISCONT_MODE
AnnaBridge 189:f392fc9709a3 534 @note This parameter has an effect only if group regular sequencer is enabled
AnnaBridge 189:f392fc9709a3 535 (scan length of 2 ranks or more).
AnnaBridge 189:f392fc9709a3 536
AnnaBridge 189:f392fc9709a3 537 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerDiscont(). */
AnnaBridge 189:f392fc9709a3 538
AnnaBridge 189:f392fc9709a3 539 uint32_t ContinuousMode; /*!< Set ADC continuous conversion mode on ADC group regular, whether ADC conversions are performed in single mode (one conversion per trigger) or in continuous mode (after the first trigger, following conversions launched successively automatically).
AnnaBridge 189:f392fc9709a3 540 This parameter can be a value of @ref ADC_LL_EC_REG_CONTINUOUS_MODE
AnnaBridge 189:f392fc9709a3 541 Note: It is not possible to enable both ADC group regular continuous mode and discontinuous mode.
AnnaBridge 189:f392fc9709a3 542
AnnaBridge 189:f392fc9709a3 543 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetContinuousMode(). */
AnnaBridge 189:f392fc9709a3 544
AnnaBridge 189:f392fc9709a3 545 uint32_t DMATransfer; /*!< Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode.
AnnaBridge 189:f392fc9709a3 546 This parameter can be a value of @ref ADC_LL_EC_REG_DMA_TRANSFER
AnnaBridge 189:f392fc9709a3 547
AnnaBridge 189:f392fc9709a3 548 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetDMATransfer(). */
AnnaBridge 189:f392fc9709a3 549
AnnaBridge 189:f392fc9709a3 550 uint32_t Overrun; /*!< Set ADC group regular behavior in case of overrun:
AnnaBridge 189:f392fc9709a3 551 data preserved or overwritten.
AnnaBridge 189:f392fc9709a3 552 This parameter can be a value of @ref ADC_LL_EC_REG_OVR_DATA_BEHAVIOR
AnnaBridge 189:f392fc9709a3 553
AnnaBridge 189:f392fc9709a3 554 This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetOverrun(). */
AnnaBridge 189:f392fc9709a3 555
AnnaBridge 189:f392fc9709a3 556 } LL_ADC_REG_InitTypeDef;
AnnaBridge 189:f392fc9709a3 557
AnnaBridge 189:f392fc9709a3 558 /**
AnnaBridge 189:f392fc9709a3 559 * @brief Structure definition of some features of ADC group injected.
AnnaBridge 189:f392fc9709a3 560 * @note These parameters have an impact on ADC scope: ADC group injected.
AnnaBridge 189:f392fc9709a3 561 * Refer to corresponding unitary functions into
AnnaBridge 189:f392fc9709a3 562 * @ref ADC_LL_EF_Configuration_ADC_Group_Regular
AnnaBridge 189:f392fc9709a3 563 * (functions with prefix "INJ").
AnnaBridge 189:f392fc9709a3 564 * @note The setting of these parameters by function @ref LL_ADC_INJ_Init()
AnnaBridge 189:f392fc9709a3 565 * is conditioned to ADC state:
AnnaBridge 189:f392fc9709a3 566 * ADC instance must be disabled.
AnnaBridge 189:f392fc9709a3 567 * This condition is applied to all ADC features, for efficiency
AnnaBridge 189:f392fc9709a3 568 * and compatibility over all STM32 families. However, the different
AnnaBridge 189:f392fc9709a3 569 * features can be set under different ADC state conditions
AnnaBridge 189:f392fc9709a3 570 * (setting possible with ADC enabled without conversion on going,
AnnaBridge 189:f392fc9709a3 571 * ADC enabled with conversion on going, ...)
AnnaBridge 189:f392fc9709a3 572 * Each feature can be updated afterwards with a unitary function
AnnaBridge 189:f392fc9709a3 573 * and potentially with ADC in a different state than disabled,
AnnaBridge 189:f392fc9709a3 574 * refer to description of each function for setting
AnnaBridge 189:f392fc9709a3 575 * conditioned to ADC state.
AnnaBridge 189:f392fc9709a3 576 */
AnnaBridge 189:f392fc9709a3 577 typedef struct
AnnaBridge 189:f392fc9709a3 578 {
AnnaBridge 189:f392fc9709a3 579 uint32_t TriggerSource; /*!< Set ADC group injected conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line).
AnnaBridge 189:f392fc9709a3 580 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIGGER_SOURCE
AnnaBridge 189:f392fc9709a3 581 @note On this STM32 serie, setting trigger source to external trigger also set trigger polarity to rising edge
AnnaBridge 189:f392fc9709a3 582 (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value).
AnnaBridge 189:f392fc9709a3 583 In case of need to modify trigger edge, use function @ref LL_ADC_INJ_SetTriggerEdge().
AnnaBridge 189:f392fc9709a3 584
AnnaBridge 189:f392fc9709a3 585 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTriggerSource(). */
AnnaBridge 189:f392fc9709a3 586
AnnaBridge 189:f392fc9709a3 587 uint32_t SequencerLength; /*!< Set ADC group injected sequencer length.
AnnaBridge 189:f392fc9709a3 588 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_SCAN_LENGTH
AnnaBridge 189:f392fc9709a3 589
AnnaBridge 189:f392fc9709a3 590 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerLength(). */
AnnaBridge 189:f392fc9709a3 591
AnnaBridge 189:f392fc9709a3 592 uint32_t SequencerDiscont; /*!< Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks.
AnnaBridge 189:f392fc9709a3 593 This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_DISCONT_MODE
AnnaBridge 189:f392fc9709a3 594 @note This parameter has an effect only if group injected sequencer is enabled
AnnaBridge 189:f392fc9709a3 595 (scan length of 2 ranks or more).
AnnaBridge 189:f392fc9709a3 596
AnnaBridge 189:f392fc9709a3 597 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerDiscont(). */
AnnaBridge 189:f392fc9709a3 598
AnnaBridge 189:f392fc9709a3 599 uint32_t TrigAuto; /*!< Set ADC group injected conversion trigger: independent or from ADC group regular.
AnnaBridge 189:f392fc9709a3 600 This parameter can be a value of @ref ADC_LL_EC_INJ_TRIG_AUTO
AnnaBridge 189:f392fc9709a3 601 Note: This parameter must be set to set to independent trigger if injected trigger source is set to an external trigger.
AnnaBridge 189:f392fc9709a3 602
AnnaBridge 189:f392fc9709a3 603 This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTrigAuto(). */
AnnaBridge 189:f392fc9709a3 604
AnnaBridge 189:f392fc9709a3 605 } LL_ADC_INJ_InitTypeDef;
AnnaBridge 189:f392fc9709a3 606
AnnaBridge 189:f392fc9709a3 607 /**
AnnaBridge 189:f392fc9709a3 608 * @}
AnnaBridge 189:f392fc9709a3 609 */
AnnaBridge 189:f392fc9709a3 610 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 189:f392fc9709a3 611
AnnaBridge 189:f392fc9709a3 612 /* Exported constants --------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 613 /** @defgroup ADC_LL_Exported_Constants ADC Exported Constants
AnnaBridge 189:f392fc9709a3 614 * @{
AnnaBridge 189:f392fc9709a3 615 */
AnnaBridge 189:f392fc9709a3 616
AnnaBridge 189:f392fc9709a3 617 /** @defgroup ADC_LL_EC_FLAG ADC flags
AnnaBridge 189:f392fc9709a3 618 * @brief Flags defines which can be used with LL_ADC_ReadReg function
AnnaBridge 189:f392fc9709a3 619 * @{
AnnaBridge 189:f392fc9709a3 620 */
AnnaBridge 189:f392fc9709a3 621 #define LL_ADC_FLAG_ADRDY ADC_ISR_ADRDY /*!< ADC flag ADC instance ready */
AnnaBridge 189:f392fc9709a3 622 #define LL_ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC flag ADC group regular end of unitary conversion */
AnnaBridge 189:f392fc9709a3 623 #define LL_ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC flag ADC group regular end of sequence conversions */
AnnaBridge 189:f392fc9709a3 624 #define LL_ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC flag ADC group regular overrun */
AnnaBridge 189:f392fc9709a3 625 #define LL_ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC flag ADC group regular end of sampling phase */
AnnaBridge 189:f392fc9709a3 626 #define LL_ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC flag ADC group injected end of unitary conversion */
AnnaBridge 189:f392fc9709a3 627 #define LL_ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC flag ADC group injected end of sequence conversions */
AnnaBridge 189:f392fc9709a3 628 #define LL_ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC flag ADC group injected contexts queue overflow */
AnnaBridge 189:f392fc9709a3 629 #define LL_ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC flag ADC analog watchdog 1 */
AnnaBridge 189:f392fc9709a3 630 #define LL_ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC flag ADC analog watchdog 2 */
AnnaBridge 189:f392fc9709a3 631 #define LL_ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC flag ADC analog watchdog 3 */
AnnaBridge 189:f392fc9709a3 632 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 633 #define LL_ADC_FLAG_ADRDY_MST ADC_CSR_ADRDY_MST /*!< ADC flag ADC multimode master instance ready */
AnnaBridge 189:f392fc9709a3 634 #define LL_ADC_FLAG_ADRDY_SLV ADC_CSR_ADRDY_SLV /*!< ADC flag ADC multimode slave instance ready */
AnnaBridge 189:f392fc9709a3 635 #define LL_ADC_FLAG_EOC_MST ADC_CSR_EOC_MST /*!< ADC flag ADC multimode master group regular end of unitary conversion */
AnnaBridge 189:f392fc9709a3 636 #define LL_ADC_FLAG_EOC_SLV ADC_CSR_EOC_SLV /*!< ADC flag ADC multimode slave group regular end of unitary conversion */
AnnaBridge 189:f392fc9709a3 637 #define LL_ADC_FLAG_EOS_MST ADC_CSR_EOS_MST /*!< ADC flag ADC multimode master group regular end of sequence conversions */
AnnaBridge 189:f392fc9709a3 638 #define LL_ADC_FLAG_EOS_SLV ADC_CSR_EOS_SLV /*!< ADC flag ADC multimode slave group regular end of sequence conversions */
AnnaBridge 189:f392fc9709a3 639 #define LL_ADC_FLAG_OVR_MST ADC_CSR_OVR_MST /*!< ADC flag ADC multimode master group regular overrun */
AnnaBridge 189:f392fc9709a3 640 #define LL_ADC_FLAG_OVR_SLV ADC_CSR_OVR_SLV /*!< ADC flag ADC multimode slave group regular overrun */
AnnaBridge 189:f392fc9709a3 641 #define LL_ADC_FLAG_EOSMP_MST ADC_CSR_EOSMP_MST /*!< ADC flag ADC multimode master group regular end of sampling phase */
AnnaBridge 189:f392fc9709a3 642 #define LL_ADC_FLAG_EOSMP_SLV ADC_CSR_EOSMP_SLV /*!< ADC flag ADC multimode slave group regular end of sampling phase */
AnnaBridge 189:f392fc9709a3 643 #define LL_ADC_FLAG_JEOC_MST ADC_CSR_JEOC_MST /*!< ADC flag ADC multimode master group injected end of unitary conversion */
AnnaBridge 189:f392fc9709a3 644 #define LL_ADC_FLAG_JEOC_SLV ADC_CSR_JEOC_SLV /*!< ADC flag ADC multimode slave group injected end of unitary conversion */
AnnaBridge 189:f392fc9709a3 645 #define LL_ADC_FLAG_JEOS_MST ADC_CSR_JEOS_MST /*!< ADC flag ADC multimode master group injected end of sequence conversions */
AnnaBridge 189:f392fc9709a3 646 #define LL_ADC_FLAG_JEOS_SLV ADC_CSR_JEOS_SLV /*!< ADC flag ADC multimode slave group injected end of sequence conversions */
AnnaBridge 189:f392fc9709a3 647 #define LL_ADC_FLAG_JQOVF_MST ADC_CSR_JQOVF_MST /*!< ADC flag ADC multimode master group injected contexts queue overflow */
AnnaBridge 189:f392fc9709a3 648 #define LL_ADC_FLAG_JQOVF_SLV ADC_CSR_JQOVF_SLV /*!< ADC flag ADC multimode slave group injected contexts queue overflow */
AnnaBridge 189:f392fc9709a3 649 #define LL_ADC_FLAG_AWD1_MST ADC_CSR_AWD1_MST /*!< ADC flag ADC multimode master analog watchdog 1 of the ADC master */
AnnaBridge 189:f392fc9709a3 650 #define LL_ADC_FLAG_AWD1_SLV ADC_CSR_AWD1_SLV /*!< ADC flag ADC multimode slave analog watchdog 1 of the ADC slave */
AnnaBridge 189:f392fc9709a3 651 #define LL_ADC_FLAG_AWD2_MST ADC_CSR_AWD2_MST /*!< ADC flag ADC multimode master analog watchdog 2 of the ADC master */
AnnaBridge 189:f392fc9709a3 652 #define LL_ADC_FLAG_AWD2_SLV ADC_CSR_AWD2_SLV /*!< ADC flag ADC multimode slave analog watchdog 2 of the ADC slave */
AnnaBridge 189:f392fc9709a3 653 #define LL_ADC_FLAG_AWD3_MST ADC_CSR_AWD3_MST /*!< ADC flag ADC multimode master analog watchdog 3 of the ADC master */
AnnaBridge 189:f392fc9709a3 654 #define LL_ADC_FLAG_AWD3_SLV ADC_CSR_AWD3_SLV /*!< ADC flag ADC multimode slave analog watchdog 3 of the ADC slave */
AnnaBridge 189:f392fc9709a3 655 #endif
AnnaBridge 189:f392fc9709a3 656 /**
AnnaBridge 189:f392fc9709a3 657 * @}
AnnaBridge 189:f392fc9709a3 658 */
AnnaBridge 189:f392fc9709a3 659
AnnaBridge 189:f392fc9709a3 660 /** @defgroup ADC_LL_EC_IT ADC interruptions for configuration (interruption enable or disable)
AnnaBridge 189:f392fc9709a3 661 * @brief IT defines which can be used with LL_ADC_ReadReg and LL_ADC_WriteReg functions
AnnaBridge 189:f392fc9709a3 662 * @{
AnnaBridge 189:f392fc9709a3 663 */
AnnaBridge 189:f392fc9709a3 664 #define LL_ADC_IT_ADRDY ADC_IER_ADRDYIE /*!< ADC interruption ADC instance ready */
AnnaBridge 189:f392fc9709a3 665 #define LL_ADC_IT_EOC ADC_IER_EOCIE /*!< ADC interruption ADC group regular end of unitary conversion */
AnnaBridge 189:f392fc9709a3 666 #define LL_ADC_IT_EOS ADC_IER_EOSIE /*!< ADC interruption ADC group regular end of sequence conversions */
AnnaBridge 189:f392fc9709a3 667 #define LL_ADC_IT_OVR ADC_IER_OVRIE /*!< ADC interruption ADC group regular overrun */
AnnaBridge 189:f392fc9709a3 668 #define LL_ADC_IT_EOSMP ADC_IER_EOSMPIE /*!< ADC interruption ADC group regular end of sampling phase */
AnnaBridge 189:f392fc9709a3 669 #define LL_ADC_IT_JEOC ADC_IER_JEOCIE /*!< ADC interruption ADC group injected end of unitary conversion */
AnnaBridge 189:f392fc9709a3 670 #define LL_ADC_IT_JEOS ADC_IER_JEOSIE /*!< ADC interruption ADC group injected end of sequence conversions */
AnnaBridge 189:f392fc9709a3 671 #define LL_ADC_IT_JQOVF ADC_IER_JQOVFIE /*!< ADC interruption ADC group injected contexts queue overflow */
AnnaBridge 189:f392fc9709a3 672 #define LL_ADC_IT_AWD1 ADC_IER_AWD1IE /*!< ADC interruption ADC analog watchdog 1 */
AnnaBridge 189:f392fc9709a3 673 #define LL_ADC_IT_AWD2 ADC_IER_AWD2IE /*!< ADC interruption ADC analog watchdog 2 */
AnnaBridge 189:f392fc9709a3 674 #define LL_ADC_IT_AWD3 ADC_IER_AWD3IE /*!< ADC interruption ADC analog watchdog 3 */
AnnaBridge 189:f392fc9709a3 675 /**
AnnaBridge 189:f392fc9709a3 676 * @}
AnnaBridge 189:f392fc9709a3 677 */
AnnaBridge 189:f392fc9709a3 678
AnnaBridge 189:f392fc9709a3 679 /** @defgroup ADC_LL_EC_REGISTERS ADC registers compliant with specific purpose
AnnaBridge 189:f392fc9709a3 680 * @{
AnnaBridge 189:f392fc9709a3 681 */
AnnaBridge 189:f392fc9709a3 682 /* List of ADC registers intended to be used (most commonly) with */
AnnaBridge 189:f392fc9709a3 683 /* DMA transfer. */
AnnaBridge 189:f392fc9709a3 684 /* Refer to function @ref LL_ADC_DMA_GetRegAddr(). */
AnnaBridge 189:f392fc9709a3 685 #define LL_ADC_DMA_REG_REGULAR_DATA (0x00000000U) /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadConversionData32() and other functions @ref LL_ADC_REG_ReadConversionDatax() */
AnnaBridge 189:f392fc9709a3 686 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 687 #define LL_ADC_DMA_REG_REGULAR_DATA_MULTI (0x00000001U) /* ADC group regular conversion data register (corresponding to register CDR) to be used with ADC configured in multimode (available on STM32 devices with several ADC instances). Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadMultiConversionData32() */
AnnaBridge 189:f392fc9709a3 688 #endif
AnnaBridge 189:f392fc9709a3 689 /**
AnnaBridge 189:f392fc9709a3 690 * @}
AnnaBridge 189:f392fc9709a3 691 */
AnnaBridge 189:f392fc9709a3 692
AnnaBridge 189:f392fc9709a3 693 /** @defgroup ADC_LL_EC_COMMON_CLOCK_SOURCE ADC common - Clock source
AnnaBridge 189:f392fc9709a3 694 * @{
AnnaBridge 189:f392fc9709a3 695 */
AnnaBridge 189:f392fc9709a3 696 #define LL_ADC_CLOCK_SYNC_PCLK_DIV1 (ADC_CCR_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock without prescaler */
AnnaBridge 189:f392fc9709a3 697 #define LL_ADC_CLOCK_SYNC_PCLK_DIV2 (ADC_CCR_CKMODE_1 ) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 2 */
AnnaBridge 189:f392fc9709a3 698 #define LL_ADC_CLOCK_SYNC_PCLK_DIV4 (ADC_CCR_CKMODE_1 | ADC_CCR_CKMODE_0) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 4 */
AnnaBridge 189:f392fc9709a3 699 #define LL_ADC_CLOCK_ASYNC_DIV1 (0x00000000U) /*!< ADC asynchronous clock without prescaler */
AnnaBridge 189:f392fc9709a3 700 #define LL_ADC_CLOCK_ASYNC_DIV2 (ADC_CCR_PRESC_0) /*!< ADC asynchronous clock with prescaler division by 2 */
AnnaBridge 189:f392fc9709a3 701 #define LL_ADC_CLOCK_ASYNC_DIV4 (ADC_CCR_PRESC_1 ) /*!< ADC asynchronous clock with prescaler division by 4 */
AnnaBridge 189:f392fc9709a3 702 #define LL_ADC_CLOCK_ASYNC_DIV6 (ADC_CCR_PRESC_1 | ADC_CCR_PRESC_0) /*!< ADC asynchronous clock with prescaler division by 6 */
AnnaBridge 189:f392fc9709a3 703 #define LL_ADC_CLOCK_ASYNC_DIV8 (ADC_CCR_PRESC_2 ) /*!< ADC asynchronous clock with prescaler division by 8 */
AnnaBridge 189:f392fc9709a3 704 #define LL_ADC_CLOCK_ASYNC_DIV10 (ADC_CCR_PRESC_2 | ADC_CCR_PRESC_0) /*!< ADC asynchronous clock with prescaler division by 10 */
AnnaBridge 189:f392fc9709a3 705 #define LL_ADC_CLOCK_ASYNC_DIV12 (ADC_CCR_PRESC_2 | ADC_CCR_PRESC_1 ) /*!< ADC asynchronous clock with prescaler division by 12 */
AnnaBridge 189:f392fc9709a3 706 #define LL_ADC_CLOCK_ASYNC_DIV16 (ADC_CCR_PRESC_2 | ADC_CCR_PRESC_1 | ADC_CCR_PRESC_0) /*!< ADC asynchronous clock with prescaler division by 16 */
AnnaBridge 189:f392fc9709a3 707 #define LL_ADC_CLOCK_ASYNC_DIV32 (ADC_CCR_PRESC_3) /*!< ADC asynchronous clock with prescaler division by 32 */
AnnaBridge 189:f392fc9709a3 708 #define LL_ADC_CLOCK_ASYNC_DIV64 (ADC_CCR_PRESC_3 | ADC_CCR_PRESC_0) /*!< ADC asynchronous clock with prescaler division by 64 */
AnnaBridge 189:f392fc9709a3 709 #define LL_ADC_CLOCK_ASYNC_DIV128 (ADC_CCR_PRESC_3 | ADC_CCR_PRESC_1) /*!< ADC asynchronous clock with prescaler division by 128 */
AnnaBridge 189:f392fc9709a3 710 #define LL_ADC_CLOCK_ASYNC_DIV256 (ADC_CCR_PRESC_3 | ADC_CCR_PRESC_1 | ADC_CCR_PRESC_0) /*!< ADC asynchronous clock with prescaler division by 256 */
AnnaBridge 189:f392fc9709a3 711 /**
AnnaBridge 189:f392fc9709a3 712 * @}
AnnaBridge 189:f392fc9709a3 713 */
AnnaBridge 189:f392fc9709a3 714
AnnaBridge 189:f392fc9709a3 715 /** @defgroup ADC_LL_EC_COMMON_PATH_INTERNAL ADC common - Measurement path to internal channels
AnnaBridge 189:f392fc9709a3 716 * @{
AnnaBridge 189:f392fc9709a3 717 */
AnnaBridge 189:f392fc9709a3 718 /* Note: Other measurement paths to internal channels may be available */
AnnaBridge 189:f392fc9709a3 719 /* (connections to other peripherals). */
AnnaBridge 189:f392fc9709a3 720 /* If they are not listed below, they do not require any specific */
AnnaBridge 189:f392fc9709a3 721 /* path enable. In this case, Access to measurement path is done */
AnnaBridge 189:f392fc9709a3 722 /* only by selecting the corresponding ADC internal channel. */
AnnaBridge 189:f392fc9709a3 723 #define LL_ADC_PATH_INTERNAL_NONE (0x00000000U)/*!< ADC measurement pathes all disabled */
AnnaBridge 189:f392fc9709a3 724 #define LL_ADC_PATH_INTERNAL_VREFINT (ADC_CCR_VREFEN) /*!< ADC measurement path to internal channel VrefInt */
AnnaBridge 189:f392fc9709a3 725 #define LL_ADC_PATH_INTERNAL_TEMPSENSOR (ADC_CCR_TSEN) /*!< ADC measurement path to internal channel temperature sensor */
AnnaBridge 189:f392fc9709a3 726 #define LL_ADC_PATH_INTERNAL_VBAT (ADC_CCR_VBATEN) /*!< ADC measurement path to internal channel Vbat */
AnnaBridge 189:f392fc9709a3 727 /**
AnnaBridge 189:f392fc9709a3 728 * @}
AnnaBridge 189:f392fc9709a3 729 */
AnnaBridge 189:f392fc9709a3 730
AnnaBridge 189:f392fc9709a3 731 /** @defgroup ADC_LL_EC_RESOLUTION ADC instance - Resolution
AnnaBridge 189:f392fc9709a3 732 * @{
AnnaBridge 189:f392fc9709a3 733 */
AnnaBridge 189:f392fc9709a3 734 #define LL_ADC_RESOLUTION_12B (0x00000000U) /*!< ADC resolution 12 bits */
AnnaBridge 189:f392fc9709a3 735 #define LL_ADC_RESOLUTION_10B ( ADC_CFGR_RES_0) /*!< ADC resolution 10 bits */
AnnaBridge 189:f392fc9709a3 736 #define LL_ADC_RESOLUTION_8B (ADC_CFGR_RES_1 ) /*!< ADC resolution 8 bits */
AnnaBridge 189:f392fc9709a3 737 #define LL_ADC_RESOLUTION_6B (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) /*!< ADC resolution 6 bits */
AnnaBridge 189:f392fc9709a3 738 /**
AnnaBridge 189:f392fc9709a3 739 * @}
AnnaBridge 189:f392fc9709a3 740 */
AnnaBridge 189:f392fc9709a3 741
AnnaBridge 189:f392fc9709a3 742 /** @defgroup ADC_LL_EC_DATA_ALIGN ADC instance - Data alignment
AnnaBridge 189:f392fc9709a3 743 * @{
AnnaBridge 189:f392fc9709a3 744 */
AnnaBridge 189:f392fc9709a3 745 #define LL_ADC_DATA_ALIGN_RIGHT (0x00000000U)/*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/
AnnaBridge 189:f392fc9709a3 746 #define LL_ADC_DATA_ALIGN_LEFT (ADC_CFGR_ALIGN) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/
AnnaBridge 189:f392fc9709a3 747 /**
AnnaBridge 189:f392fc9709a3 748 * @}
AnnaBridge 189:f392fc9709a3 749 */
AnnaBridge 189:f392fc9709a3 750
AnnaBridge 189:f392fc9709a3 751 /** @defgroup ADC_LL_EC_LP_MODE ADC instance - Low power mode
AnnaBridge 189:f392fc9709a3 752 * @{
AnnaBridge 189:f392fc9709a3 753 */
AnnaBridge 189:f392fc9709a3 754 #define LL_ADC_LP_MODE_NONE (0x00000000U) /*!< No ADC low power mode activated */
AnnaBridge 189:f392fc9709a3 755 #define LL_ADC_LP_AUTOWAIT (ADC_CFGR_AUTDLY) /*!< ADC low power mode auto delay: Dynamic low power mode, ADC conversions are performed only when necessary (when previous ADC conversion data is read). See description with function @ref LL_ADC_SetLowPowerMode(). */
AnnaBridge 189:f392fc9709a3 756 /**
AnnaBridge 189:f392fc9709a3 757 * @}
AnnaBridge 189:f392fc9709a3 758 */
AnnaBridge 189:f392fc9709a3 759
AnnaBridge 189:f392fc9709a3 760 /** @defgroup ADC_LL_EC_OFFSET_NB ADC instance - Offset number
AnnaBridge 189:f392fc9709a3 761 * @{
AnnaBridge 189:f392fc9709a3 762 */
AnnaBridge 189:f392fc9709a3 763 #define LL_ADC_OFFSET_1 ADC_OFR1_REGOFFSET /*!< ADC offset number 1: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 189:f392fc9709a3 764 #define LL_ADC_OFFSET_2 ADC_OFR2_REGOFFSET /*!< ADC offset number 2: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 189:f392fc9709a3 765 #define LL_ADC_OFFSET_3 ADC_OFR3_REGOFFSET /*!< ADC offset number 3: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 189:f392fc9709a3 766 #define LL_ADC_OFFSET_4 ADC_OFR4_REGOFFSET /*!< ADC offset number 4: ADC channel and offset level to which the offset programmed will be applied (independently of channel mapped on ADC group regular or group injected) */
AnnaBridge 189:f392fc9709a3 767 /**
AnnaBridge 189:f392fc9709a3 768 * @}
AnnaBridge 189:f392fc9709a3 769 */
AnnaBridge 189:f392fc9709a3 770
AnnaBridge 189:f392fc9709a3 771 /** @defgroup ADC_LL_EC_OFFSET_STATE ADC instance - Offset state
AnnaBridge 189:f392fc9709a3 772 * @{
AnnaBridge 189:f392fc9709a3 773 */
AnnaBridge 189:f392fc9709a3 774 #define LL_ADC_OFFSET_DISABLE (0x00000000U)/*!< ADC offset disabled (among ADC selected offset number 1, 2, 3 or 4) */
AnnaBridge 189:f392fc9709a3 775 #define LL_ADC_OFFSET_ENABLE (ADC_OFR1_OFFSET1_EN) /*!< ADC offset enabled (among ADC selected offset number 1, 2, 3 or 4) */
AnnaBridge 189:f392fc9709a3 776 /**
AnnaBridge 189:f392fc9709a3 777 * @}
AnnaBridge 189:f392fc9709a3 778 */
AnnaBridge 189:f392fc9709a3 779
AnnaBridge 189:f392fc9709a3 780 /** @defgroup ADC_LL_EC_GROUPS ADC instance - Groups
AnnaBridge 189:f392fc9709a3 781 * @{
AnnaBridge 189:f392fc9709a3 782 */
AnnaBridge 189:f392fc9709a3 783 #define LL_ADC_GROUP_REGULAR (0x00000001U) /*!< ADC group regular (available on all STM32 devices) */
AnnaBridge 189:f392fc9709a3 784 #define LL_ADC_GROUP_INJECTED (0x00000002U) /*!< ADC group injected (not available on all STM32 devices)*/
AnnaBridge 189:f392fc9709a3 785 #define LL_ADC_GROUP_REGULAR_INJECTED (0x00000003U) /*!< ADC both groups regular and injected */
AnnaBridge 189:f392fc9709a3 786 /**
AnnaBridge 189:f392fc9709a3 787 * @}
AnnaBridge 189:f392fc9709a3 788 */
AnnaBridge 189:f392fc9709a3 789
AnnaBridge 189:f392fc9709a3 790 /** @defgroup ADC_LL_EC_CHANNEL ADC instance - Channel number
AnnaBridge 189:f392fc9709a3 791 * @{
AnnaBridge 189:f392fc9709a3 792 */
AnnaBridge 189:f392fc9709a3 793 #define LL_ADC_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP | ADC_CHANNEL_0_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */
AnnaBridge 189:f392fc9709a3 794 #define LL_ADC_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP | ADC_CHANNEL_1_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */
AnnaBridge 189:f392fc9709a3 795 #define LL_ADC_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP | ADC_CHANNEL_2_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */
AnnaBridge 189:f392fc9709a3 796 #define LL_ADC_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP | ADC_CHANNEL_3_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */
AnnaBridge 189:f392fc9709a3 797 #define LL_ADC_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP | ADC_CHANNEL_4_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */
AnnaBridge 189:f392fc9709a3 798 #define LL_ADC_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP | ADC_CHANNEL_5_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */
AnnaBridge 189:f392fc9709a3 799 #define LL_ADC_CHANNEL_6 (ADC_CHANNEL_6_NUMBER | ADC_CHANNEL_6_SMP | ADC_CHANNEL_6_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */
AnnaBridge 189:f392fc9709a3 800 #define LL_ADC_CHANNEL_7 (ADC_CHANNEL_7_NUMBER | ADC_CHANNEL_7_SMP | ADC_CHANNEL_7_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */
AnnaBridge 189:f392fc9709a3 801 #define LL_ADC_CHANNEL_8 (ADC_CHANNEL_8_NUMBER | ADC_CHANNEL_8_SMP | ADC_CHANNEL_8_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */
AnnaBridge 189:f392fc9709a3 802 #define LL_ADC_CHANNEL_9 (ADC_CHANNEL_9_NUMBER | ADC_CHANNEL_9_SMP | ADC_CHANNEL_9_BITFIELD ) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */
AnnaBridge 189:f392fc9709a3 803 #define LL_ADC_CHANNEL_10 (ADC_CHANNEL_10_NUMBER | ADC_CHANNEL_10_SMP | ADC_CHANNEL_10_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */
AnnaBridge 189:f392fc9709a3 804 #define LL_ADC_CHANNEL_11 (ADC_CHANNEL_11_NUMBER | ADC_CHANNEL_11_SMP | ADC_CHANNEL_11_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */
AnnaBridge 189:f392fc9709a3 805 #define LL_ADC_CHANNEL_12 (ADC_CHANNEL_12_NUMBER | ADC_CHANNEL_12_SMP | ADC_CHANNEL_12_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */
AnnaBridge 189:f392fc9709a3 806 #define LL_ADC_CHANNEL_13 (ADC_CHANNEL_13_NUMBER | ADC_CHANNEL_13_SMP | ADC_CHANNEL_13_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */
AnnaBridge 189:f392fc9709a3 807 #define LL_ADC_CHANNEL_14 (ADC_CHANNEL_14_NUMBER | ADC_CHANNEL_14_SMP | ADC_CHANNEL_14_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */
AnnaBridge 189:f392fc9709a3 808 #define LL_ADC_CHANNEL_15 (ADC_CHANNEL_15_NUMBER | ADC_CHANNEL_15_SMP | ADC_CHANNEL_15_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */
AnnaBridge 189:f392fc9709a3 809 #define LL_ADC_CHANNEL_16 (ADC_CHANNEL_16_NUMBER | ADC_CHANNEL_16_SMP | ADC_CHANNEL_16_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */
AnnaBridge 189:f392fc9709a3 810 #define LL_ADC_CHANNEL_17 (ADC_CHANNEL_17_NUMBER | ADC_CHANNEL_17_SMP | ADC_CHANNEL_17_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */
AnnaBridge 189:f392fc9709a3 811 #define LL_ADC_CHANNEL_18 (ADC_CHANNEL_18_NUMBER | ADC_CHANNEL_18_SMP | ADC_CHANNEL_18_BITFIELD) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN18 */
AnnaBridge 189:f392fc9709a3 812 #define LL_ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_0 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. On STM32L4, ADC channel available only on ADC instance: ADC1. */
AnnaBridge 189:f392fc9709a3 813 #define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Temperature sensor. On STM32L4, ADC channel available only on ADC instances: ADC1, ADC3. */
AnnaBridge 189:f392fc9709a3 814 #define LL_ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda. On STM32L4, ADC channel available only on ADC instances: ADC1, ADC3. */
AnnaBridge 189:f392fc9709a3 815 #if defined(ADC1) && !defined(ADC2)
AnnaBridge 189:f392fc9709a3 816 #define LL_ADC_CHANNEL_DAC1CH1 (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC1. This channel is shared with ADC internal channel connected to temperature sensor, selection is done using function @ref LL_ADC_SetCommonPathInternalCh(). */
AnnaBridge 189:f392fc9709a3 817 #define LL_ADC_CHANNEL_DAC1CH2 (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC1. This channel is shared with ADC internal channel connected to Vbat, selection is done using function @ref LL_ADC_SetCommonPathInternalCh(). */
AnnaBridge 189:f392fc9709a3 818 #elif defined(ADC2)
AnnaBridge 189:f392fc9709a3 819 #define LL_ADC_CHANNEL_DAC1CH1_ADC2 (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC2 */
AnnaBridge 189:f392fc9709a3 820 #define LL_ADC_CHANNEL_DAC1CH2_ADC2 (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC2 */
AnnaBridge 189:f392fc9709a3 821 #if defined(ADC3)
AnnaBridge 189:f392fc9709a3 822 #define LL_ADC_CHANNEL_DAC1CH1_ADC3 (LL_ADC_CHANNEL_14 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC3 */
AnnaBridge 189:f392fc9709a3 823 #define LL_ADC_CHANNEL_DAC1CH2_ADC3 (LL_ADC_CHANNEL_15 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC3 */
AnnaBridge 189:f392fc9709a3 824 #endif
AnnaBridge 189:f392fc9709a3 825 #endif
AnnaBridge 189:f392fc9709a3 826 /**
AnnaBridge 189:f392fc9709a3 827 * @}
AnnaBridge 189:f392fc9709a3 828 */
AnnaBridge 189:f392fc9709a3 829
AnnaBridge 189:f392fc9709a3 830 /** @defgroup ADC_LL_EC_REG_TRIGGER_SOURCE ADC group regular - Trigger source
AnnaBridge 189:f392fc9709a3 831 * @{
AnnaBridge 189:f392fc9709a3 832 */
AnnaBridge 189:f392fc9709a3 833 #define LL_ADC_REG_TRIG_SOFTWARE (0x00000000U) /*!< ADC group regular conversion trigger internal: SW start. */
AnnaBridge 189:f392fc9709a3 834 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 835 #define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 836 #define LL_ADC_REG_TRIG_EXT_TIM1_CH1 (ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 837 #define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 838 #define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 839 #define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 840 #define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 841 #define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 842 #define LL_ADC_REG_TRIG_EXT_TIM3_CH4 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 843 #define LL_ADC_REG_TRIG_EXT_TIM4_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 844 #define LL_ADC_REG_TRIG_EXT_TIM4_CH4 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 845 #define LL_ADC_REG_TRIG_EXT_TIM6_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 846 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 847 #define LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (ADC_CFGR_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 848 #define LL_ADC_REG_TRIG_EXT_TIM15_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 849 #define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 850 /**
AnnaBridge 189:f392fc9709a3 851 * @}
AnnaBridge 189:f392fc9709a3 852 */
AnnaBridge 189:f392fc9709a3 853
AnnaBridge 189:f392fc9709a3 854 /** @defgroup ADC_LL_EC_REG_TRIGGER_EDGE ADC group regular - Trigger edge
AnnaBridge 189:f392fc9709a3 855 * @{
AnnaBridge 189:f392fc9709a3 856 */
AnnaBridge 189:f392fc9709a3 857 #define LL_ADC_REG_TRIG_EXT_RISING ( ADC_CFGR_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to rising edge */
AnnaBridge 189:f392fc9709a3 858 #define LL_ADC_REG_TRIG_EXT_FALLING (ADC_CFGR_EXTEN_1 ) /*!< ADC group regular conversion trigger polarity set to falling edge */
AnnaBridge 189:f392fc9709a3 859 #define LL_ADC_REG_TRIG_EXT_RISINGFALLING (ADC_CFGR_EXTEN_1 | ADC_CFGR_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to both rising and falling edges */
AnnaBridge 189:f392fc9709a3 860 /**
AnnaBridge 189:f392fc9709a3 861 * @}
AnnaBridge 189:f392fc9709a3 862 */
AnnaBridge 189:f392fc9709a3 863
AnnaBridge 189:f392fc9709a3 864 /** @defgroup ADC_LL_EC_REG_CONTINUOUS_MODE ADC group regular - Continuous mode
AnnaBridge 189:f392fc9709a3 865 * @{
AnnaBridge 189:f392fc9709a3 866 */
AnnaBridge 189:f392fc9709a3 867 #define LL_ADC_REG_CONV_SINGLE (0x00000000U) /*!< ADC conversions are performed in single mode: one conversion per trigger */
AnnaBridge 189:f392fc9709a3 868 #define LL_ADC_REG_CONV_CONTINUOUS (ADC_CFGR_CONT) /*!< ADC conversions are performed in continuous mode: after the first trigger, following conversions launched successively automatically */
AnnaBridge 189:f392fc9709a3 869 /**
AnnaBridge 189:f392fc9709a3 870 * @}
AnnaBridge 189:f392fc9709a3 871 */
AnnaBridge 189:f392fc9709a3 872
AnnaBridge 189:f392fc9709a3 873 /** @defgroup ADC_LL_EC_REG_DMA_TRANSFER ADC group regular - DMA transfer of ADC conversion data
AnnaBridge 189:f392fc9709a3 874 * @{
AnnaBridge 189:f392fc9709a3 875 */
AnnaBridge 189:f392fc9709a3 876 #define LL_ADC_REG_DMA_TRANSFER_NONE (0x00000000U) /*!< ADC conversions are not transferred by DMA */
AnnaBridge 189:f392fc9709a3 877 #define LL_ADC_REG_DMA_TRANSFER_LIMITED ( ADC_CFGR_DMAEN) /*!< ADC conversion data are transferred by DMA, in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. */
AnnaBridge 189:f392fc9709a3 878 #define LL_ADC_REG_DMA_TRANSFER_UNLIMITED (ADC_CFGR_DMACFG | ADC_CFGR_DMAEN) /*!< ADC conversion data are transferred by DMA, in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. */
AnnaBridge 189:f392fc9709a3 879 /**
AnnaBridge 189:f392fc9709a3 880 * @}
AnnaBridge 189:f392fc9709a3 881 */
AnnaBridge 189:f392fc9709a3 882
AnnaBridge 189:f392fc9709a3 883 #if defined(ADC_CFGR_DFSDMCFG) &&defined(DFSDM1_Channel0)
AnnaBridge 189:f392fc9709a3 884 /** @defgroup ADC_LL_EC_REG_DFSDM_TRANSFER ADC group regular - DFSDM transfer of ADC conversion data
AnnaBridge 189:f392fc9709a3 885 * @{
AnnaBridge 189:f392fc9709a3 886 */
AnnaBridge 189:f392fc9709a3 887 #define LL_ADC_REG_DFSDM_TRANSFER_NONE (0x00000000U) /*!< ADC conversions are not transferred by DFSDM. */
AnnaBridge 189:f392fc9709a3 888 #define LL_ADC_REG_DFSDM_TRANSFER_ENABLE (ADC_CFGR_DFSDMCFG) /*!< ADC conversion data are transfered to DFSDM for post processing. The ADC conversion data format must be 16-bit signed and right aligned, refer to reference manual. DFSDM transfer cannot be used if DMA transfer is enabled. */
AnnaBridge 189:f392fc9709a3 889 /**
AnnaBridge 189:f392fc9709a3 890 * @}
AnnaBridge 189:f392fc9709a3 891 */
AnnaBridge 189:f392fc9709a3 892 #endif
AnnaBridge 189:f392fc9709a3 893
AnnaBridge 189:f392fc9709a3 894 #if defined(ADC_SMPR1_SMPPLUS)
AnnaBridge 189:f392fc9709a3 895 /** @defgroup ADC_LL_EC_SAMPLINGTIME_COMMON_CONFIG ADC instance - ADC sampling time common configuration
AnnaBridge 189:f392fc9709a3 896 * @{
AnnaBridge 189:f392fc9709a3 897 */
AnnaBridge 189:f392fc9709a3 898 #define LL_ADC_SAMPLINGTIME_COMMON_DEFAULT (0x00000000U) /*!< ADC sampling time let to default settings. */
AnnaBridge 189:f392fc9709a3 899 #define LL_ADC_SAMPLINGTIME_COMMON_3C5_REPL_2C5 (ADC_SMPR1_SMPPLUS) /*!< ADC additional sampling time 3.5 ADC clock cycles replacing 2.5 ADC clock cycles (this applies to all channels mapped with selection sampling time 2.5 ADC clock cycles, whatever channels mapped on ADC groups regular or injected). */
AnnaBridge 189:f392fc9709a3 900 /**
AnnaBridge 189:f392fc9709a3 901 * @}
AnnaBridge 189:f392fc9709a3 902 */
AnnaBridge 189:f392fc9709a3 903 #endif
AnnaBridge 189:f392fc9709a3 904
AnnaBridge 189:f392fc9709a3 905 /** @defgroup ADC_LL_EC_REG_OVR_DATA_BEHAVIOR ADC group regular - Overrun behavior on conversion data
AnnaBridge 189:f392fc9709a3 906 * @{
AnnaBridge 189:f392fc9709a3 907 */
AnnaBridge 189:f392fc9709a3 908 #define LL_ADC_REG_OVR_DATA_PRESERVED (0x00000000U) /*!< ADC group regular behavior in case of overrun: data preserved */
AnnaBridge 189:f392fc9709a3 909 #define LL_ADC_REG_OVR_DATA_OVERWRITTEN (ADC_CFGR_OVRMOD) /*!< ADC group regular behavior in case of overrun: data overwritten */
AnnaBridge 189:f392fc9709a3 910 /**
AnnaBridge 189:f392fc9709a3 911 * @}
AnnaBridge 189:f392fc9709a3 912 */
AnnaBridge 189:f392fc9709a3 913
AnnaBridge 189:f392fc9709a3 914 /** @defgroup ADC_LL_EC_REG_SEQ_SCAN_LENGTH ADC group regular - Sequencer scan length
AnnaBridge 189:f392fc9709a3 915 * @{
AnnaBridge 189:f392fc9709a3 916 */
AnnaBridge 189:f392fc9709a3 917 #define LL_ADC_REG_SEQ_SCAN_DISABLE (0x00000000U) /*!< ADC group regular sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
AnnaBridge 189:f392fc9709a3 918 #define LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 2 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 919 #define LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 3 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 920 #define LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 4 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 921 #define LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 5 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 922 #define LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 6 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 923 #define LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 7 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 924 #define LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 8 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 925 #define LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_L_3 ) /*!< ADC group regular sequencer enable with 9 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 926 #define LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 10 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 927 #define LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 11 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 928 #define LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 12 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 929 #define LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 13 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 930 #define LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 14 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 931 #define LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 15 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 932 #define LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 16 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 933 /**
AnnaBridge 189:f392fc9709a3 934 * @}
AnnaBridge 189:f392fc9709a3 935 */
AnnaBridge 189:f392fc9709a3 936
AnnaBridge 189:f392fc9709a3 937 /** @defgroup ADC_LL_EC_REG_SEQ_DISCONT_MODE ADC group regular - Sequencer discontinuous mode
AnnaBridge 189:f392fc9709a3 938 * @{
AnnaBridge 189:f392fc9709a3 939 */
AnnaBridge 189:f392fc9709a3 940 #define LL_ADC_REG_SEQ_DISCONT_DISABLE (0x00000000U) /*!< ADC group regular sequencer discontinuous mode disable */
AnnaBridge 189:f392fc9709a3 941 #define LL_ADC_REG_SEQ_DISCONT_1RANK ( ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every rank */
AnnaBridge 189:f392fc9709a3 942 #define LL_ADC_REG_SEQ_DISCONT_2RANKS ( ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enabled with sequence interruption every 2 ranks */
AnnaBridge 189:f392fc9709a3 943 #define LL_ADC_REG_SEQ_DISCONT_3RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 3 ranks */
AnnaBridge 189:f392fc9709a3 944 #define LL_ADC_REG_SEQ_DISCONT_4RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 4 ranks */
AnnaBridge 189:f392fc9709a3 945 #define LL_ADC_REG_SEQ_DISCONT_5RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 5 ranks */
AnnaBridge 189:f392fc9709a3 946 #define LL_ADC_REG_SEQ_DISCONT_6RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 6 ranks */
AnnaBridge 189:f392fc9709a3 947 #define LL_ADC_REG_SEQ_DISCONT_7RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 7 ranks */
AnnaBridge 189:f392fc9709a3 948 #define LL_ADC_REG_SEQ_DISCONT_8RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 8 ranks */
AnnaBridge 189:f392fc9709a3 949 /**
AnnaBridge 189:f392fc9709a3 950 * @}
AnnaBridge 189:f392fc9709a3 951 */
AnnaBridge 189:f392fc9709a3 952
AnnaBridge 189:f392fc9709a3 953 /** @defgroup ADC_LL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks
AnnaBridge 189:f392fc9709a3 954 * @{
AnnaBridge 189:f392fc9709a3 955 */
AnnaBridge 189:f392fc9709a3 956 #define LL_ADC_REG_RANK_1 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 1 */
AnnaBridge 189:f392fc9709a3 957 #define LL_ADC_REG_RANK_2 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 2 */
AnnaBridge 189:f392fc9709a3 958 #define LL_ADC_REG_RANK_3 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 3 */
AnnaBridge 189:f392fc9709a3 959 #define LL_ADC_REG_RANK_4 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 4 */
AnnaBridge 189:f392fc9709a3 960 #define LL_ADC_REG_RANK_5 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 5 */
AnnaBridge 189:f392fc9709a3 961 #define LL_ADC_REG_RANK_6 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 6 */
AnnaBridge 189:f392fc9709a3 962 #define LL_ADC_REG_RANK_7 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 7 */
AnnaBridge 189:f392fc9709a3 963 #define LL_ADC_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 8 */
AnnaBridge 189:f392fc9709a3 964 #define LL_ADC_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 9 */
AnnaBridge 189:f392fc9709a3 965 #define LL_ADC_REG_RANK_10 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 10 */
AnnaBridge 189:f392fc9709a3 966 #define LL_ADC_REG_RANK_11 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 11 */
AnnaBridge 189:f392fc9709a3 967 #define LL_ADC_REG_RANK_12 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 12 */
AnnaBridge 189:f392fc9709a3 968 #define LL_ADC_REG_RANK_13 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_13_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 13 */
AnnaBridge 189:f392fc9709a3 969 #define LL_ADC_REG_RANK_14 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_14_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 14 */
AnnaBridge 189:f392fc9709a3 970 #define LL_ADC_REG_RANK_15 (ADC_SQR4_REGOFFSET | ADC_REG_RANK_15_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 15 */
AnnaBridge 189:f392fc9709a3 971 #define LL_ADC_REG_RANK_16 (ADC_SQR4_REGOFFSET | ADC_REG_RANK_16_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 16 */
AnnaBridge 189:f392fc9709a3 972 /**
AnnaBridge 189:f392fc9709a3 973 * @}
AnnaBridge 189:f392fc9709a3 974 */
AnnaBridge 189:f392fc9709a3 975
AnnaBridge 189:f392fc9709a3 976 /** @defgroup ADC_LL_EC_INJ_TRIGGER_SOURCE ADC group injected - Trigger source
AnnaBridge 189:f392fc9709a3 977 * @{
AnnaBridge 189:f392fc9709a3 978 */
AnnaBridge 189:f392fc9709a3 979 #define LL_ADC_INJ_TRIG_SOFTWARE (0x00000000U) /*!< ADC group injected conversion trigger internal: SW start.. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 980 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 981 #define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 982 #define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 983 #define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 984 #define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 985 #define LL_ADC_INJ_TRIG_EXT_TIM3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 986 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 987 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 988 #define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 989 #define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 990 #define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 991 #define LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 992 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 993 #define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 994 #define LL_ADC_INJ_TRIG_EXT_TIM15_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 995 #define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */
AnnaBridge 189:f392fc9709a3 996 /**
AnnaBridge 189:f392fc9709a3 997 * @}
AnnaBridge 189:f392fc9709a3 998 */
AnnaBridge 189:f392fc9709a3 999
AnnaBridge 189:f392fc9709a3 1000 /** @defgroup ADC_LL_EC_INJ_TRIGGER_EDGE ADC group injected - Trigger edge
AnnaBridge 189:f392fc9709a3 1001 * @{
AnnaBridge 189:f392fc9709a3 1002 */
AnnaBridge 189:f392fc9709a3 1003 #define LL_ADC_INJ_TRIG_EXT_RISING ( ADC_JSQR_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to rising edge */
AnnaBridge 189:f392fc9709a3 1004 #define LL_ADC_INJ_TRIG_EXT_FALLING (ADC_JSQR_JEXTEN_1 ) /*!< ADC group injected conversion trigger polarity set to falling edge */
AnnaBridge 189:f392fc9709a3 1005 #define LL_ADC_INJ_TRIG_EXT_RISINGFALLING (ADC_JSQR_JEXTEN_1 | ADC_JSQR_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to both rising and falling edges */
AnnaBridge 189:f392fc9709a3 1006 /**
AnnaBridge 189:f392fc9709a3 1007 * @}
AnnaBridge 189:f392fc9709a3 1008 */
AnnaBridge 189:f392fc9709a3 1009
AnnaBridge 189:f392fc9709a3 1010 /** @defgroup ADC_LL_EC_INJ_TRIG_AUTO ADC group injected - Automatic trigger mode
AnnaBridge 189:f392fc9709a3 1011 * @{
AnnaBridge 189:f392fc9709a3 1012 */
AnnaBridge 189:f392fc9709a3 1013 #define LL_ADC_INJ_TRIG_INDEPENDENT (0x00000000U) /*!< ADC group injected conversion trigger independent. Setting mandatory if ADC group injected injected trigger source is set to an external trigger. */
AnnaBridge 189:f392fc9709a3 1014 #define LL_ADC_INJ_TRIG_FROM_GRP_REGULAR (ADC_CFGR_JAUTO) /*!< ADC group injected conversion trigger from ADC group regular. Setting compliant only with group injected trigger source set to SW start, without any further action on ADC group injected conversion start or stop: in this case, ADC group injected is controlled only from ADC group regular. */
AnnaBridge 189:f392fc9709a3 1015 /**
AnnaBridge 189:f392fc9709a3 1016 * @}
AnnaBridge 189:f392fc9709a3 1017 */
AnnaBridge 189:f392fc9709a3 1018
AnnaBridge 189:f392fc9709a3 1019 /** @defgroup ADC_LL_EC_INJ_CONTEXT_QUEUE ADC group injected - Context queue mode
AnnaBridge 189:f392fc9709a3 1020 * @{
AnnaBridge 189:f392fc9709a3 1021 */
AnnaBridge 189:f392fc9709a3 1022 #define LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE (0x00000000U) /* Group injected sequence context queue is enabled and can contain up to 2 contexts. When all contexts have been processed, the queue maintains the last context active perpetually. */
AnnaBridge 189:f392fc9709a3 1023 #define LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY (ADC_CFGR_JQM) /* Group injected sequence context queue is enabled and can contain up to 2 contexts. When all contexts have been processed, the queue is empty and injected group triggers are disabled. */
AnnaBridge 189:f392fc9709a3 1024 #define LL_ADC_INJ_QUEUE_DISABLE (ADC_CFGR_JQDIS) /* Group injected sequence context queue is disabled: only 1 sequence can be configured and is active perpetually. */
AnnaBridge 189:f392fc9709a3 1025 /**
AnnaBridge 189:f392fc9709a3 1026 * @}
AnnaBridge 189:f392fc9709a3 1027 */
AnnaBridge 189:f392fc9709a3 1028
AnnaBridge 189:f392fc9709a3 1029 /** @defgroup ADC_LL_EC_INJ_SEQ_SCAN_LENGTH ADC group injected - Sequencer scan length
AnnaBridge 189:f392fc9709a3 1030 * @{
AnnaBridge 189:f392fc9709a3 1031 */
AnnaBridge 189:f392fc9709a3 1032 #define LL_ADC_INJ_SEQ_SCAN_DISABLE (0x00000000U) /*!< ADC group injected sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */
AnnaBridge 189:f392fc9709a3 1033 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 2 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 1034 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 ) /*!< ADC group injected sequencer enable with 3 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 1035 #define LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 4 ranks in the sequence */
AnnaBridge 189:f392fc9709a3 1036 /**
AnnaBridge 189:f392fc9709a3 1037 * @}
AnnaBridge 189:f392fc9709a3 1038 */
AnnaBridge 189:f392fc9709a3 1039
AnnaBridge 189:f392fc9709a3 1040 /** @defgroup ADC_LL_EC_INJ_SEQ_DISCONT_MODE ADC group injected - Sequencer discontinuous mode
AnnaBridge 189:f392fc9709a3 1041 * @{
AnnaBridge 189:f392fc9709a3 1042 */
AnnaBridge 189:f392fc9709a3 1043 #define LL_ADC_INJ_SEQ_DISCONT_DISABLE (0x00000000U) /*!< ADC group injected sequencer discontinuous mode disable */
AnnaBridge 189:f392fc9709a3 1044 #define LL_ADC_INJ_SEQ_DISCONT_1RANK (ADC_CFGR_JDISCEN) /*!< ADC group injected sequencer discontinuous mode enable with sequence interruption every rank */
AnnaBridge 189:f392fc9709a3 1045 /**
AnnaBridge 189:f392fc9709a3 1046 * @}
AnnaBridge 189:f392fc9709a3 1047 */
AnnaBridge 189:f392fc9709a3 1048
AnnaBridge 189:f392fc9709a3 1049 /** @defgroup ADC_LL_EC_INJ_SEQ_RANKS ADC group injected - Sequencer ranks
AnnaBridge 189:f392fc9709a3 1050 * @{
AnnaBridge 189:f392fc9709a3 1051 */
AnnaBridge 189:f392fc9709a3 1052 #define LL_ADC_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_INJ_RANK_1_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 1 */
AnnaBridge 189:f392fc9709a3 1053 #define LL_ADC_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_INJ_RANK_2_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 2 */
AnnaBridge 189:f392fc9709a3 1054 #define LL_ADC_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_INJ_RANK_3_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 3 */
AnnaBridge 189:f392fc9709a3 1055 #define LL_ADC_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_INJ_RANK_4_JSQR_BITOFFSET_POS) /*!< ADC group injected sequencer rank 4 */
AnnaBridge 189:f392fc9709a3 1056 /**
AnnaBridge 189:f392fc9709a3 1057 * @}
AnnaBridge 189:f392fc9709a3 1058 */
AnnaBridge 189:f392fc9709a3 1059
AnnaBridge 189:f392fc9709a3 1060 /** @defgroup ADC_LL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time
AnnaBridge 189:f392fc9709a3 1061 * @{
AnnaBridge 189:f392fc9709a3 1062 */
AnnaBridge 189:f392fc9709a3 1063 #define LL_ADC_SAMPLINGTIME_2CYCLES_5 (0x00000000U) /*!< Sampling time 2.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1064 #define LL_ADC_SAMPLINGTIME_6CYCLES_5 ( ADC_SMPR2_SMP10_0) /*!< Sampling time 6.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1065 #define LL_ADC_SAMPLINGTIME_12CYCLES_5 ( ADC_SMPR2_SMP10_1 ) /*!< Sampling time 12.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1066 #define LL_ADC_SAMPLINGTIME_24CYCLES_5 ( ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0) /*!< Sampling time 24.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1067 #define LL_ADC_SAMPLINGTIME_47CYCLES_5 (ADC_SMPR2_SMP10_2 ) /*!< Sampling time 47.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1068 #define LL_ADC_SAMPLINGTIME_92CYCLES_5 (ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_0) /*!< Sampling time 92.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1069 #define LL_ADC_SAMPLINGTIME_247CYCLES_5 (ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1 ) /*!< Sampling time 247.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1070 #define LL_ADC_SAMPLINGTIME_640CYCLES_5 (ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0) /*!< Sampling time 640.5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1071 /**
AnnaBridge 189:f392fc9709a3 1072 * @}
AnnaBridge 189:f392fc9709a3 1073 */
AnnaBridge 189:f392fc9709a3 1074
AnnaBridge 189:f392fc9709a3 1075 /** @defgroup ADC_LL_EC_CHANNEL_SINGLE_DIFF_ENDING Channel - Single or differential ending
AnnaBridge 189:f392fc9709a3 1076 * @{
AnnaBridge 189:f392fc9709a3 1077 */
AnnaBridge 189:f392fc9709a3 1078 #define LL_ADC_SINGLE_ENDED ( ADC_CALFACT_CALFACT_S) /*!< ADC channel ending set to single ended (literal also used to set calibration mode) */
AnnaBridge 189:f392fc9709a3 1079 #define LL_ADC_DIFFERENTIAL_ENDED (ADC_CR_ADCALDIF | ADC_CALFACT_CALFACT_D) /*!< ADC channel ending set to differential (literal also used to set calibration mode) */
AnnaBridge 189:f392fc9709a3 1080 #define LL_ADC_BOTH_SINGLE_DIFF_ENDED (LL_ADC_SINGLE_ENDED | LL_ADC_DIFFERENTIAL_ENDED) /*!< ADC channel ending set to both single ended and differential (literal used only to set calibration factors) */
AnnaBridge 189:f392fc9709a3 1081 /**
AnnaBridge 189:f392fc9709a3 1082 * @}
AnnaBridge 189:f392fc9709a3 1083 */
AnnaBridge 189:f392fc9709a3 1084
AnnaBridge 189:f392fc9709a3 1085 /** @defgroup ADC_LL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number
AnnaBridge 189:f392fc9709a3 1086 * @{
AnnaBridge 189:f392fc9709a3 1087 */
AnnaBridge 189:f392fc9709a3 1088 #define LL_ADC_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET) /*!< ADC analog watchdog number 1 */
AnnaBridge 189:f392fc9709a3 1089 #define LL_ADC_AWD2 (ADC_AWD_CR23_CHANNEL_MASK | ADC_AWD_CR2_REGOFFSET) /*!< ADC analog watchdog number 2 */
AnnaBridge 189:f392fc9709a3 1090 #define LL_ADC_AWD3 (ADC_AWD_CR23_CHANNEL_MASK | ADC_AWD_CR3_REGOFFSET) /*!< ADC analog watchdog number 3 */
AnnaBridge 189:f392fc9709a3 1091 /**
AnnaBridge 189:f392fc9709a3 1092 * @}
AnnaBridge 189:f392fc9709a3 1093 */
AnnaBridge 189:f392fc9709a3 1094
AnnaBridge 189:f392fc9709a3 1095 /** @defgroup ADC_LL_EC_AWD_CHANNELS Analog watchdog - Monitored channels
AnnaBridge 189:f392fc9709a3 1096 * @{
AnnaBridge 189:f392fc9709a3 1097 */
AnnaBridge 189:f392fc9709a3 1098 #define LL_ADC_AWD_DISABLE (0x00000000U) /*!< ADC analog watchdog monitoring disabled */
AnnaBridge 189:f392fc9709a3 1099 #define LL_ADC_AWD_ALL_CHANNELS_REG (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_AWD1EN ) /*!< ADC analog watchdog monitoring of all channels, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1100 #define LL_ADC_AWD_ALL_CHANNELS_INJ (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_JAWD1EN ) /*!< ADC analog watchdog monitoring of all channels, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1101 #define LL_ADC_AWD_ALL_CHANNELS_REG_INJ (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN ) /*!< ADC analog watchdog monitoring of all channels, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1102 #define LL_ADC_AWD_CHANNEL_0_REG ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1103 #define LL_ADC_AWD_CHANNEL_0_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1104 #define LL_ADC_AWD_CHANNEL_0_REG_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1105 #define LL_ADC_AWD_CHANNEL_1_REG ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1106 #define LL_ADC_AWD_CHANNEL_1_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1107 #define LL_ADC_AWD_CHANNEL_1_REG_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1108 #define LL_ADC_AWD_CHANNEL_2_REG ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1109 #define LL_ADC_AWD_CHANNEL_2_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1110 #define LL_ADC_AWD_CHANNEL_2_REG_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1111 #define LL_ADC_AWD_CHANNEL_3_REG ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1112 #define LL_ADC_AWD_CHANNEL_3_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1113 #define LL_ADC_AWD_CHANNEL_3_REG_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1114 #define LL_ADC_AWD_CHANNEL_4_REG ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1115 #define LL_ADC_AWD_CHANNEL_4_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1116 #define LL_ADC_AWD_CHANNEL_4_REG_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1117 #define LL_ADC_AWD_CHANNEL_5_REG ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1118 #define LL_ADC_AWD_CHANNEL_5_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1119 #define LL_ADC_AWD_CHANNEL_5_REG_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1120 #define LL_ADC_AWD_CHANNEL_6_REG ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1121 #define LL_ADC_AWD_CHANNEL_6_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1122 #define LL_ADC_AWD_CHANNEL_6_REG_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1123 #define LL_ADC_AWD_CHANNEL_7_REG ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1124 #define LL_ADC_AWD_CHANNEL_7_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1125 #define LL_ADC_AWD_CHANNEL_7_REG_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1126 #define LL_ADC_AWD_CHANNEL_8_REG ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1127 #define LL_ADC_AWD_CHANNEL_8_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1128 #define LL_ADC_AWD_CHANNEL_8_REG_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1129 #define LL_ADC_AWD_CHANNEL_9_REG ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1130 #define LL_ADC_AWD_CHANNEL_9_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1131 #define LL_ADC_AWD_CHANNEL_9_REG_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1132 #define LL_ADC_AWD_CHANNEL_10_REG ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1133 #define LL_ADC_AWD_CHANNEL_10_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1134 #define LL_ADC_AWD_CHANNEL_10_REG_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1135 #define LL_ADC_AWD_CHANNEL_11_REG ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1136 #define LL_ADC_AWD_CHANNEL_11_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1137 #define LL_ADC_AWD_CHANNEL_11_REG_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1138 #define LL_ADC_AWD_CHANNEL_12_REG ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1139 #define LL_ADC_AWD_CHANNEL_12_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1140 #define LL_ADC_AWD_CHANNEL_12_REG_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1141 #define LL_ADC_AWD_CHANNEL_13_REG ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1142 #define LL_ADC_AWD_CHANNEL_13_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1143 #define LL_ADC_AWD_CHANNEL_13_REG_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1144 #define LL_ADC_AWD_CHANNEL_14_REG ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1145 #define LL_ADC_AWD_CHANNEL_14_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1146 #define LL_ADC_AWD_CHANNEL_14_REG_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1147 #define LL_ADC_AWD_CHANNEL_15_REG ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1148 #define LL_ADC_AWD_CHANNEL_15_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1149 #define LL_ADC_AWD_CHANNEL_15_REG_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1150 #define LL_ADC_AWD_CHANNEL_16_REG ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1151 #define LL_ADC_AWD_CHANNEL_16_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1152 #define LL_ADC_AWD_CHANNEL_16_REG_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1153 #define LL_ADC_AWD_CHANNEL_17_REG ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1154 #define LL_ADC_AWD_CHANNEL_17_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1155 #define LL_ADC_AWD_CHANNEL_17_REG_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1156 #define LL_ADC_AWD_CHANNEL_18_REG ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1157 #define LL_ADC_AWD_CHANNEL_18_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1158 #define LL_ADC_AWD_CHANNEL_18_REG_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1159 #define LL_ADC_AWD_CH_VREFINT_REG ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1160 #define LL_ADC_AWD_CH_VREFINT_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1161 #define LL_ADC_AWD_CH_VREFINT_REG_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1162 #define LL_ADC_AWD_CH_TEMPSENSOR_REG ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1163 #define LL_ADC_AWD_CH_TEMPSENSOR_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1164 #define LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1165 #define LL_ADC_AWD_CH_VBAT_REG ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1166 #define LL_ADC_AWD_CH_VBAT_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1167 #define LL_ADC_AWD_CH_VBAT_REG_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda */
AnnaBridge 189:f392fc9709a3 1168 #if defined(ADC1) && !defined(ADC2)
AnnaBridge 189:f392fc9709a3 1169 #define LL_ADC_AWD_CH_DAC1CH1_REG ((LL_ADC_CHANNEL_DAC1CH1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC1, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1170 #define LL_ADC_AWD_CH_DAC1CH1_INJ ((LL_ADC_CHANNEL_DAC1CH1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC1, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1171 #define LL_ADC_AWD_CH_DAC1CH1_REG_INJ ((LL_ADC_CHANNEL_DAC1CH1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC1, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1172 #define LL_ADC_AWD_CH_DAC1CH2_REG ((LL_ADC_CHANNEL_DAC1CH2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC1, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1173 #define LL_ADC_AWD_CH_DAC1CH2_INJ ((LL_ADC_CHANNEL_DAC1CH2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC1, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1174 #define LL_ADC_AWD_CH_DAC1CH2_REG_INJ ((LL_ADC_CHANNEL_DAC1CH2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC1, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1175 #elif defined(ADC2)
AnnaBridge 189:f392fc9709a3 1176 #define LL_ADC_AWD_CH_DAC1CH1_ADC2_REG ((LL_ADC_CHANNEL_DAC1CH1_ADC2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1177 #define LL_ADC_AWD_CH_DAC1CH1_ADC2_INJ ((LL_ADC_CHANNEL_DAC1CH1_ADC2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1178 #define LL_ADC_AWD_CH_DAC1CH1_ADC2_REG_INJ ((LL_ADC_CHANNEL_DAC1CH1_ADC2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1179 #define LL_ADC_AWD_CH_DAC1CH2_ADC2_REG ((LL_ADC_CHANNEL_DAC1CH2_ADC2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1180 #define LL_ADC_AWD_CH_DAC1CH2_ADC2_INJ ((LL_ADC_CHANNEL_DAC1CH2_ADC2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1181 #define LL_ADC_AWD_CH_DAC1CH2_ADC2_REG_INJ ((LL_ADC_CHANNEL_DAC1CH2_ADC2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC2, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1182 #if defined(ADC3)
AnnaBridge 189:f392fc9709a3 1183 #define LL_ADC_AWD_CH_DAC1CH1_ADC3_REG ((LL_ADC_CHANNEL_DAC1CH1_ADC3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1184 #define LL_ADC_AWD_CH_DAC1CH1_ADC3_INJ ((LL_ADC_CHANNEL_DAC1CH1_ADC3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1185 #define LL_ADC_AWD_CH_DAC1CH1_ADC3_REG_INJ ((LL_ADC_CHANNEL_DAC1CH1_ADC3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1186 #define LL_ADC_AWD_CH_DAC1CH2_ADC3_REG ((LL_ADC_CHANNEL_DAC1CH2_ADC3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group regular only */
AnnaBridge 189:f392fc9709a3 1187 #define LL_ADC_AWD_CH_DAC1CH2_ADC3_INJ ((LL_ADC_CHANNEL_DAC1CH2_ADC3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by group injected only */
AnnaBridge 189:f392fc9709a3 1188 #define LL_ADC_AWD_CH_DAC1CH2_ADC3_REG_INJ ((LL_ADC_CHANNEL_DAC1CH2_ADC3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to DAC1 channel 1, channel specific to ADC3, converted by either group regular or injected */
AnnaBridge 189:f392fc9709a3 1189 #endif
AnnaBridge 189:f392fc9709a3 1190 #endif
AnnaBridge 189:f392fc9709a3 1191 /**
AnnaBridge 189:f392fc9709a3 1192 * @}
AnnaBridge 189:f392fc9709a3 1193 */
AnnaBridge 189:f392fc9709a3 1194
AnnaBridge 189:f392fc9709a3 1195 /** @defgroup ADC_LL_EC_AWD_THRESHOLDS Analog watchdog - Thresholds
AnnaBridge 189:f392fc9709a3 1196 * @{
AnnaBridge 189:f392fc9709a3 1197 */
AnnaBridge 189:f392fc9709a3 1198 #define LL_ADC_AWD_THRESHOLD_HIGH (ADC_TR1_HT1 ) /*!< ADC analog watchdog threshold high */
AnnaBridge 189:f392fc9709a3 1199 #define LL_ADC_AWD_THRESHOLD_LOW ( ADC_TR1_LT1) /*!< ADC analog watchdog threshold low */
AnnaBridge 189:f392fc9709a3 1200 #define LL_ADC_AWD_THRESHOLDS_HIGH_LOW (ADC_TR1_HT1 | ADC_TR1_LT1) /*!< ADC analog watchdog both thresholds high and low concatenated into the same data */
AnnaBridge 189:f392fc9709a3 1201 /**
AnnaBridge 189:f392fc9709a3 1202 * @}
AnnaBridge 189:f392fc9709a3 1203 */
AnnaBridge 189:f392fc9709a3 1204
AnnaBridge 189:f392fc9709a3 1205 /** @defgroup ADC_LL_EC_OVS_SCOPE Oversampling - Oversampling scope
AnnaBridge 189:f392fc9709a3 1206 * @{
AnnaBridge 189:f392fc9709a3 1207 */
AnnaBridge 189:f392fc9709a3 1208 #define LL_ADC_OVS_DISABLE (0x00000000U) /*!< ADC oversampling disabled. */
AnnaBridge 189:f392fc9709a3 1209 #define LL_ADC_OVS_GRP_REGULAR_CONTINUED ( ADC_CFGR2_ROVSE) /*!< ADC oversampling on conversions of ADC group regular. If group injected interrupts group regular: when ADC group injected is triggered, the oversampling on ADC group regular is temporary stopped and continued afterwards. */
AnnaBridge 189:f392fc9709a3 1210 #define LL_ADC_OVS_GRP_REGULAR_RESUMED (ADC_CFGR2_ROVSM | ADC_CFGR2_ROVSE) /*!< ADC oversampling on conversions of ADC group regular. If group injected interrupts group regular: when ADC group injected is triggered, the oversampling on ADC group regular is resumed from start (oversampler buffer reset). */
AnnaBridge 189:f392fc9709a3 1211 #define LL_ADC_OVS_GRP_INJECTED ( ADC_CFGR2_JOVSE ) /*!< ADC oversampling on conversions of ADC group injected. */
AnnaBridge 189:f392fc9709a3 1212 #define LL_ADC_OVS_GRP_INJ_REG_RESUMED ( ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSE) /*!< ADC oversampling on conversions of both ADC groups regular and injected. If group injected interrupting group regular: when ADC group injected is triggered, the oversampling on ADC group regular is resumed from start (oversampler buffer reset). */
AnnaBridge 189:f392fc9709a3 1213 /**
AnnaBridge 189:f392fc9709a3 1214 * @}
AnnaBridge 189:f392fc9709a3 1215 */
AnnaBridge 189:f392fc9709a3 1216
AnnaBridge 189:f392fc9709a3 1217 /** @defgroup ADC_LL_EC_OVS_DISCONT_MODE Oversampling - Discontinuous mode
AnnaBridge 189:f392fc9709a3 1218 * @{
AnnaBridge 189:f392fc9709a3 1219 */
AnnaBridge 189:f392fc9709a3 1220 #define LL_ADC_OVS_REG_CONT (0x00000000U) /*!< ADC oversampling discontinuous mode: continuous mode (all conversions of oversampling ratio are done from 1 trigger) */
AnnaBridge 189:f392fc9709a3 1221 #define LL_ADC_OVS_REG_DISCONT (ADC_CFGR2_TROVS) /*!< ADC oversampling discontinuous mode: discontinuous mode (each conversion of oversampling ratio needs a trigger) */
AnnaBridge 189:f392fc9709a3 1222 /**
AnnaBridge 189:f392fc9709a3 1223 * @}
AnnaBridge 189:f392fc9709a3 1224 */
AnnaBridge 189:f392fc9709a3 1225
AnnaBridge 189:f392fc9709a3 1226 /** @defgroup ADC_LL_EC_OVS_RATIO Oversampling - Ratio
AnnaBridge 189:f392fc9709a3 1227 * @{
AnnaBridge 189:f392fc9709a3 1228 */
AnnaBridge 189:f392fc9709a3 1229 #define LL_ADC_OVS_RATIO_2 (0x00000000U) /*!< ADC oversampling ratio of 2 (2 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1230 #define LL_ADC_OVS_RATIO_4 ( ADC_CFGR2_OVSR_0) /*!< ADC oversampling ratio of 4 (4 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1231 #define LL_ADC_OVS_RATIO_8 ( ADC_CFGR2_OVSR_1 ) /*!< ADC oversampling ratio of 8 (8 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1232 #define LL_ADC_OVS_RATIO_16 ( ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSR_0) /*!< ADC oversampling ratio of 16 (16 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1233 #define LL_ADC_OVS_RATIO_32 (ADC_CFGR2_OVSR_2 ) /*!< ADC oversampling ratio of 32 (32 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1234 #define LL_ADC_OVS_RATIO_64 (ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_0) /*!< ADC oversampling ratio of 64 (64 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1235 #define LL_ADC_OVS_RATIO_128 (ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_1 ) /*!< ADC oversampling ratio of 128 (128 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1236 #define LL_ADC_OVS_RATIO_256 (ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSR_0) /*!< ADC oversampling ratio of 256 (256 ADC conversions are performed, sum of these conversions data is computed to result as the ADC oversampling conversion data (before potential shift) */
AnnaBridge 189:f392fc9709a3 1237 /**
AnnaBridge 189:f392fc9709a3 1238 * @}
AnnaBridge 189:f392fc9709a3 1239 */
AnnaBridge 189:f392fc9709a3 1240
AnnaBridge 189:f392fc9709a3 1241 /** @defgroup ADC_LL_EC_OVS_SHIFT Oversampling - Data shift
AnnaBridge 189:f392fc9709a3 1242 * @{
AnnaBridge 189:f392fc9709a3 1243 */
AnnaBridge 189:f392fc9709a3 1244 #define LL_ADC_OVS_SHIFT_NONE (0x00000000U) /*!< ADC oversampling no shift (sum of the ADC conversions data is not divided to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1245 #define LL_ADC_OVS_SHIFT_RIGHT_1 ( ADC_CFGR2_OVSS_0) /*!< ADC oversampling shift of 1 (sum of the ADC conversions data is divided by 2 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1246 #define LL_ADC_OVS_SHIFT_RIGHT_2 ( ADC_CFGR2_OVSS_1 ) /*!< ADC oversampling shift of 2 (sum of the ADC conversions data is divided by 4 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1247 #define LL_ADC_OVS_SHIFT_RIGHT_3 ( ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0) /*!< ADC oversampling shift of 3 (sum of the ADC conversions data is divided by 8 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1248 #define LL_ADC_OVS_SHIFT_RIGHT_4 ( ADC_CFGR2_OVSS_2 ) /*!< ADC oversampling shift of 4 (sum of the ADC conversions data is divided by 16 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1249 #define LL_ADC_OVS_SHIFT_RIGHT_5 ( ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_0) /*!< ADC oversampling shift of 5 (sum of the ADC conversions data is divided by 32 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1250 #define LL_ADC_OVS_SHIFT_RIGHT_6 ( ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_1 ) /*!< ADC oversampling shift of 6 (sum of the ADC conversions data is divided by 64 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1251 #define LL_ADC_OVS_SHIFT_RIGHT_7 ( ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0) /*!< ADC oversampling shift of 7 (sum of the ADC conversions data is divided by 128 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1252 #define LL_ADC_OVS_SHIFT_RIGHT_8 (ADC_CFGR2_OVSS_3 ) /*!< ADC oversampling shift of 8 (sum of the ADC conversions data is divided by 256 to result as the ADC oversampling conversion data) */
AnnaBridge 189:f392fc9709a3 1253 /**
AnnaBridge 189:f392fc9709a3 1254 * @}
AnnaBridge 189:f392fc9709a3 1255 */
AnnaBridge 189:f392fc9709a3 1256
AnnaBridge 189:f392fc9709a3 1257 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 1258 /** @defgroup ADC_LL_EC_MULTI_MODE Multimode - Mode
AnnaBridge 189:f392fc9709a3 1259 * @{
AnnaBridge 189:f392fc9709a3 1260 */
AnnaBridge 189:f392fc9709a3 1261 #define LL_ADC_MULTI_INDEPENDENT (0x00000000U) /*!< ADC dual mode disabled (ADC independent mode) */
AnnaBridge 189:f392fc9709a3 1262 #define LL_ADC_MULTI_DUAL_REG_SIMULT ( ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1 ) /*!< ADC dual mode enabled: group regular simultaneous */
AnnaBridge 189:f392fc9709a3 1263 #define LL_ADC_MULTI_DUAL_REG_INTERL ( ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: Combined group regular interleaved */
AnnaBridge 189:f392fc9709a3 1264 #define LL_ADC_MULTI_DUAL_INJ_SIMULT ( ADC_CCR_DUAL_2 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: group injected simultaneous */
AnnaBridge 189:f392fc9709a3 1265 #define LL_ADC_MULTI_DUAL_INJ_ALTERN (ADC_CCR_DUAL_3 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */
AnnaBridge 189:f392fc9709a3 1266 #define LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM ( ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected simultaneous */
AnnaBridge 189:f392fc9709a3 1267 #define LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT ( ADC_CCR_DUAL_1 ) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected alternate trigger */
AnnaBridge 189:f392fc9709a3 1268 #define LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM ( ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0) /*!< ADC dual mode enabled: Combined group regular interleaved + group injected simultaneous */
AnnaBridge 189:f392fc9709a3 1269 /**
AnnaBridge 189:f392fc9709a3 1270 * @}
AnnaBridge 189:f392fc9709a3 1271 */
AnnaBridge 189:f392fc9709a3 1272
AnnaBridge 189:f392fc9709a3 1273 /** @defgroup ADC_LL_EC_MULTI_DMA_TRANSFER Multimode - DMA transfer
AnnaBridge 189:f392fc9709a3 1274 * @{
AnnaBridge 189:f392fc9709a3 1275 */
AnnaBridge 189:f392fc9709a3 1276 #define LL_ADC_MULTI_REG_DMA_EACH_ADC (0x00000000U) /*!< ADC multimode group regular conversions are transferred by DMA: each ADC uses its own DMA channel, with its individual DMA transfer settings */
AnnaBridge 189:f392fc9709a3 1277 #define LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B ( ADC_CCR_MDMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting for ADC resolution of 12 and 10 bits */
AnnaBridge 189:f392fc9709a3 1278 #define LL_ADC_MULTI_REG_DMA_LIMIT_RES8_6B ( ADC_CCR_MDMA_1 | ADC_CCR_MDMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting for ADC resolution of 8 and 6 bits */
AnnaBridge 189:f392fc9709a3 1279 #define LL_ADC_MULTI_REG_DMA_UNLMT_RES12_10B (ADC_CCR_DMACFG | ADC_CCR_MDMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. Setting for ADC resolution of 12 and 10 bits */
AnnaBridge 189:f392fc9709a3 1280 #define LL_ADC_MULTI_REG_DMA_UNLMT_RES8_6B (ADC_CCR_DMACFG | ADC_CCR_MDMA_1 | ADC_CCR_MDMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for both ADC (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. Setting for ADC resolution of 8 and 6 bits */
AnnaBridge 189:f392fc9709a3 1281 /**
AnnaBridge 189:f392fc9709a3 1282 * @}
AnnaBridge 189:f392fc9709a3 1283 */
AnnaBridge 189:f392fc9709a3 1284
AnnaBridge 189:f392fc9709a3 1285 /** @defgroup ADC_LL_EC_MULTI_TWOSMP_DELAY Multimode - Delay between two sampling phases
AnnaBridge 189:f392fc9709a3 1286 * @{
AnnaBridge 189:f392fc9709a3 1287 */
AnnaBridge 189:f392fc9709a3 1288 #define LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE (0x00000000U) /*!< ADC multimode delay between two sampling phases: 1 ADC clock cycle */
AnnaBridge 189:f392fc9709a3 1289 #define LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES ( ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 2 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1290 #define LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES ( ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 3 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1291 #define LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES ( ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 4 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1292 #define LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES ( ADC_CCR_DELAY_2 ) /*!< ADC multimode delay between two sampling phases: 5 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1293 #define LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 6 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1294 #define LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 7 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1295 #define LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 8 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1296 #define LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES (ADC_CCR_DELAY_3 ) /*!< ADC multimode delay between two sampling phases: 9 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1297 #define LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 10 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1298 #define LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 11 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1299 #define LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 12 ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1300 /**
AnnaBridge 189:f392fc9709a3 1301 * @}
AnnaBridge 189:f392fc9709a3 1302 */
AnnaBridge 189:f392fc9709a3 1303
AnnaBridge 189:f392fc9709a3 1304 /** @defgroup ADC_LL_EC_MULTI_MASTER_SLAVE Multimode - ADC master or slave
AnnaBridge 189:f392fc9709a3 1305 * @{
AnnaBridge 189:f392fc9709a3 1306 */
AnnaBridge 189:f392fc9709a3 1307 #define LL_ADC_MULTI_MASTER ( ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: ADC master */
AnnaBridge 189:f392fc9709a3 1308 #define LL_ADC_MULTI_SLAVE (ADC_CDR_RDATA_SLV ) /*!< In multimode, selection among several ADC instances: ADC slave */
AnnaBridge 189:f392fc9709a3 1309 #define LL_ADC_MULTI_MASTER_SLAVE (ADC_CDR_RDATA_SLV | ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: both ADC master and ADC slave */
AnnaBridge 189:f392fc9709a3 1310 /**
AnnaBridge 189:f392fc9709a3 1311 * @}
AnnaBridge 189:f392fc9709a3 1312 */
AnnaBridge 189:f392fc9709a3 1313
AnnaBridge 189:f392fc9709a3 1314 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 189:f392fc9709a3 1315
AnnaBridge 189:f392fc9709a3 1316 /** @defgroup ADC_LL_EC_LEGACY ADC literals legacy naming
AnnaBridge 189:f392fc9709a3 1317 * @{
AnnaBridge 189:f392fc9709a3 1318 */
AnnaBridge 189:f392fc9709a3 1319 #define LL_ADC_REG_TRIG_SW_START (LL_ADC_REG_TRIG_SOFTWARE)
AnnaBridge 189:f392fc9709a3 1320 #define LL_ADC_REG_TRIG_EXT_TIM1_CC1 (LL_ADC_REG_TRIG_EXT_TIM1_CH1)
AnnaBridge 189:f392fc9709a3 1321 #define LL_ADC_REG_TRIG_EXT_TIM1_CC2 (LL_ADC_REG_TRIG_EXT_TIM1_CH2)
AnnaBridge 189:f392fc9709a3 1322 #define LL_ADC_REG_TRIG_EXT_TIM1_CC3 (LL_ADC_REG_TRIG_EXT_TIM1_CH3)
AnnaBridge 189:f392fc9709a3 1323 #define LL_ADC_REG_TRIG_EXT_TIM2_CC2 (LL_ADC_REG_TRIG_EXT_TIM2_CH2)
AnnaBridge 189:f392fc9709a3 1324 #define LL_ADC_REG_TRIG_EXT_TIM3_CC4 (LL_ADC_REG_TRIG_EXT_TIM3_CH4)
AnnaBridge 189:f392fc9709a3 1325 #define LL_ADC_REG_TRIG_EXT_TIM4_CC4 (LL_ADC_REG_TRIG_EXT_TIM4_CH4)
AnnaBridge 189:f392fc9709a3 1326
AnnaBridge 189:f392fc9709a3 1327 #define LL_ADC_INJ_TRIG_SW_START (LL_ADC_INJ_TRIG_SOFTWARE)
AnnaBridge 189:f392fc9709a3 1328 #define LL_ADC_INJ_TRIG_EXT_TIM1_CC4 (LL_ADC_INJ_TRIG_EXT_TIM1_CH4)
AnnaBridge 189:f392fc9709a3 1329 #define LL_ADC_INJ_TRIG_EXT_TIM2_CC1 (LL_ADC_INJ_TRIG_EXT_TIM2_CH1)
AnnaBridge 189:f392fc9709a3 1330 #define LL_ADC_INJ_TRIG_EXT_TIM3_CC1 (LL_ADC_INJ_TRIG_EXT_TIM3_CH1)
AnnaBridge 189:f392fc9709a3 1331 #define LL_ADC_INJ_TRIG_EXT_TIM3_CC3 (LL_ADC_INJ_TRIG_EXT_TIM3_CH3)
AnnaBridge 189:f392fc9709a3 1332 #define LL_ADC_INJ_TRIG_EXT_TIM3_CC4 (LL_ADC_INJ_TRIG_EXT_TIM3_CH4)
AnnaBridge 189:f392fc9709a3 1333 #define LL_ADC_INJ_TRIG_EXT_TIM8_CC4 (LL_ADC_INJ_TRIG_EXT_TIM8_CH4)
AnnaBridge 189:f392fc9709a3 1334
AnnaBridge 189:f392fc9709a3 1335 #define LL_ADC_OVS_DATA_SHIFT_NONE (LL_ADC_OVS_SHIFT_NONE)
AnnaBridge 189:f392fc9709a3 1336 #define LL_ADC_OVS_DATA_SHIFT_1 (LL_ADC_OVS_SHIFT_RIGHT_1)
AnnaBridge 189:f392fc9709a3 1337 #define LL_ADC_OVS_DATA_SHIFT_2 (LL_ADC_OVS_SHIFT_RIGHT_2)
AnnaBridge 189:f392fc9709a3 1338 #define LL_ADC_OVS_DATA_SHIFT_3 (LL_ADC_OVS_SHIFT_RIGHT_3)
AnnaBridge 189:f392fc9709a3 1339 #define LL_ADC_OVS_DATA_SHIFT_4 (LL_ADC_OVS_SHIFT_RIGHT_4)
AnnaBridge 189:f392fc9709a3 1340 #define LL_ADC_OVS_DATA_SHIFT_5 (LL_ADC_OVS_SHIFT_RIGHT_5)
AnnaBridge 189:f392fc9709a3 1341 #define LL_ADC_OVS_DATA_SHIFT_6 (LL_ADC_OVS_SHIFT_RIGHT_6)
AnnaBridge 189:f392fc9709a3 1342 #define LL_ADC_OVS_DATA_SHIFT_7 (LL_ADC_OVS_SHIFT_RIGHT_7)
AnnaBridge 189:f392fc9709a3 1343 #define LL_ADC_OVS_DATA_SHIFT_8 (LL_ADC_OVS_SHIFT_RIGHT_8)
AnnaBridge 189:f392fc9709a3 1344
AnnaBridge 189:f392fc9709a3 1345 /**
AnnaBridge 189:f392fc9709a3 1346 * @}
AnnaBridge 189:f392fc9709a3 1347 */
AnnaBridge 189:f392fc9709a3 1348
AnnaBridge 189:f392fc9709a3 1349
AnnaBridge 189:f392fc9709a3 1350 /** @defgroup ADC_LL_EC_HW_DELAYS Definitions of ADC hardware constraints delays
AnnaBridge 189:f392fc9709a3 1351 * @note Only ADC IP HW delays are defined in ADC LL driver driver,
AnnaBridge 189:f392fc9709a3 1352 * not timeout values.
AnnaBridge 189:f392fc9709a3 1353 * For details on delays values, refer to descriptions in source code
AnnaBridge 189:f392fc9709a3 1354 * above each literal definition.
AnnaBridge 189:f392fc9709a3 1355 * @{
AnnaBridge 189:f392fc9709a3 1356 */
AnnaBridge 189:f392fc9709a3 1357
AnnaBridge 189:f392fc9709a3 1358 /* Note: Only ADC IP HW delays are defined in ADC LL driver driver, */
AnnaBridge 189:f392fc9709a3 1359 /* not timeout values. */
AnnaBridge 189:f392fc9709a3 1360 /* Timeout values for ADC operations are dependent to device clock */
AnnaBridge 189:f392fc9709a3 1361 /* configuration (system clock versus ADC clock), */
AnnaBridge 189:f392fc9709a3 1362 /* and therefore must be defined in user application. */
AnnaBridge 189:f392fc9709a3 1363 /* Indications for estimation of ADC timeout delays, for this */
AnnaBridge 189:f392fc9709a3 1364 /* STM32 serie: */
AnnaBridge 189:f392fc9709a3 1365 /* - ADC calibration time: maximum delay is 112/fADC. */
AnnaBridge 189:f392fc9709a3 1366 /* (refer to device datasheet, parameter "tCAL") */
AnnaBridge 189:f392fc9709a3 1367 /* - ADC enable time: maximum delay is 1 conversion cycle. */
AnnaBridge 189:f392fc9709a3 1368 /* (refer to device datasheet, parameter "tSTAB") */
AnnaBridge 189:f392fc9709a3 1369 /* - ADC disable time: maximum delay should be a few ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1370 /* - ADC stop conversion time: maximum delay should be a few ADC clock */
AnnaBridge 189:f392fc9709a3 1371 /* cycles */
AnnaBridge 189:f392fc9709a3 1372 /* - ADC conversion time: duration depending on ADC clock and ADC */
AnnaBridge 189:f392fc9709a3 1373 /* configuration. */
AnnaBridge 189:f392fc9709a3 1374 /* (refer to device reference manual, section "Timing") */
AnnaBridge 189:f392fc9709a3 1375
AnnaBridge 189:f392fc9709a3 1376 /* Delay for ADC stabilization time (ADC voltage regulator start-up time) */
AnnaBridge 189:f392fc9709a3 1377 /* Delay set to maximum value (refer to device datasheet, */
AnnaBridge 189:f392fc9709a3 1378 /* parameter "tADCVREG_STUP"). */
AnnaBridge 189:f392fc9709a3 1379 /* Unit: us */
AnnaBridge 189:f392fc9709a3 1380 #define LL_ADC_DELAY_INTERNAL_REGUL_STAB_US ( 10U) /*!< Delay for ADC stabilization time (ADC voltage regulator start-up time) */
AnnaBridge 189:f392fc9709a3 1381
AnnaBridge 189:f392fc9709a3 1382 /* Delay for internal voltage reference stabilization time. */
AnnaBridge 189:f392fc9709a3 1383 /* Delay set to maximum value (refer to device datasheet, */
AnnaBridge 189:f392fc9709a3 1384 /* parameter "tstart_vrefint"). */
AnnaBridge 189:f392fc9709a3 1385 /* Unit: us */
AnnaBridge 189:f392fc9709a3 1386 #define LL_ADC_DELAY_VREFINT_STAB_US ( 12U) /*!< Delay for internal voltage reference stabilization time */
AnnaBridge 189:f392fc9709a3 1387
AnnaBridge 189:f392fc9709a3 1388 /* Delay for temperature sensor stabilization time. */
AnnaBridge 189:f392fc9709a3 1389 /* Literal set to maximum value (refer to device datasheet, */
AnnaBridge 189:f392fc9709a3 1390 /* parameter "tSTART"). */
AnnaBridge 189:f392fc9709a3 1391 /* Unit: us */
AnnaBridge 189:f392fc9709a3 1392 #define LL_ADC_DELAY_TEMPSENSOR_STAB_US ( 120U) /*!< Delay for temperature sensor stabilization time */
AnnaBridge 189:f392fc9709a3 1393
AnnaBridge 189:f392fc9709a3 1394 /* Delay required between ADC end of calibration and ADC enable. */
AnnaBridge 189:f392fc9709a3 1395 /* Note: On this STM32 serie, a minimum number of ADC clock cycles */
AnnaBridge 189:f392fc9709a3 1396 /* are required between ADC end of calibration and ADC enable. */
AnnaBridge 189:f392fc9709a3 1397 /* Wait time can be computed in user application by waiting for the */
AnnaBridge 189:f392fc9709a3 1398 /* equivalent number of CPU cycles, by taking into account */
AnnaBridge 189:f392fc9709a3 1399 /* ratio of CPU clock versus ADC clock prescalers. */
AnnaBridge 189:f392fc9709a3 1400 /* Unit: ADC clock cycles. */
AnnaBridge 189:f392fc9709a3 1401 #define LL_ADC_DELAY_CALIB_ENABLE_ADC_CYCLES ( 4U) /*!< Delay required between ADC end of calibration and ADC enable */
AnnaBridge 189:f392fc9709a3 1402
AnnaBridge 189:f392fc9709a3 1403 /**
AnnaBridge 189:f392fc9709a3 1404 * @}
AnnaBridge 189:f392fc9709a3 1405 */
AnnaBridge 189:f392fc9709a3 1406
AnnaBridge 189:f392fc9709a3 1407 /**
AnnaBridge 189:f392fc9709a3 1408 * @}
AnnaBridge 189:f392fc9709a3 1409 */
AnnaBridge 189:f392fc9709a3 1410
AnnaBridge 189:f392fc9709a3 1411
AnnaBridge 189:f392fc9709a3 1412 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 1413 /** @defgroup ADC_LL_Exported_Macros ADC Exported Macros
AnnaBridge 189:f392fc9709a3 1414 * @{
AnnaBridge 189:f392fc9709a3 1415 */
AnnaBridge 189:f392fc9709a3 1416
AnnaBridge 189:f392fc9709a3 1417 /** @defgroup ADC_LL_EM_WRITE_READ Common write and read registers Macros
AnnaBridge 189:f392fc9709a3 1418 * @{
AnnaBridge 189:f392fc9709a3 1419 */
AnnaBridge 189:f392fc9709a3 1420
AnnaBridge 189:f392fc9709a3 1421 /**
AnnaBridge 189:f392fc9709a3 1422 * @brief Write a value in ADC register
AnnaBridge 189:f392fc9709a3 1423 * @param __INSTANCE__ ADC Instance
AnnaBridge 189:f392fc9709a3 1424 * @param __REG__ Register to be written
AnnaBridge 189:f392fc9709a3 1425 * @param __VALUE__ Value to be written in the register
AnnaBridge 189:f392fc9709a3 1426 * @retval None
AnnaBridge 189:f392fc9709a3 1427 */
AnnaBridge 189:f392fc9709a3 1428 #define LL_ADC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
AnnaBridge 189:f392fc9709a3 1429
AnnaBridge 189:f392fc9709a3 1430 /**
AnnaBridge 189:f392fc9709a3 1431 * @brief Read a value in ADC register
AnnaBridge 189:f392fc9709a3 1432 * @param __INSTANCE__ ADC Instance
AnnaBridge 189:f392fc9709a3 1433 * @param __REG__ Register to be read
AnnaBridge 189:f392fc9709a3 1434 * @retval Register value
AnnaBridge 189:f392fc9709a3 1435 */
AnnaBridge 189:f392fc9709a3 1436 #define LL_ADC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
AnnaBridge 189:f392fc9709a3 1437 /**
AnnaBridge 189:f392fc9709a3 1438 * @}
AnnaBridge 189:f392fc9709a3 1439 */
AnnaBridge 189:f392fc9709a3 1440
AnnaBridge 189:f392fc9709a3 1441 /** @defgroup ADC_LL_EM_HELPER_MACRO ADC helper macro
AnnaBridge 189:f392fc9709a3 1442 * @{
AnnaBridge 189:f392fc9709a3 1443 */
AnnaBridge 189:f392fc9709a3 1444
AnnaBridge 189:f392fc9709a3 1445 /**
AnnaBridge 189:f392fc9709a3 1446 * @brief Helper macro to get ADC channel number in decimal format
AnnaBridge 189:f392fc9709a3 1447 * from literals LL_ADC_CHANNEL_x.
AnnaBridge 189:f392fc9709a3 1448 * @note Example:
AnnaBridge 189:f392fc9709a3 1449 * __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_4)
AnnaBridge 189:f392fc9709a3 1450 * will return decimal number "4".
AnnaBridge 189:f392fc9709a3 1451 * @note The input can be a value from functions where a channel
AnnaBridge 189:f392fc9709a3 1452 * number is returned, either defined with number
AnnaBridge 189:f392fc9709a3 1453 * or with bitfield (only one bit must be set).
AnnaBridge 189:f392fc9709a3 1454 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1455 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 1456 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 1457 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 1458 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 1459 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 1460 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 1461 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 1462 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 1463 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 1464 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 1465 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 1466 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 1467 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 1468 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 1469 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 1470 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 1471 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 1472 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 1473 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 1474 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 1475 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 1476 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 1477 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 1478 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 1479 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1480 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1481 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1482 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1483 *
AnnaBridge 189:f392fc9709a3 1484 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1485 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1486 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1487 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 1488 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1489 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 1490 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 1491 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 1492 * @retval Value between Min_Data=0 and Max_Data=18
AnnaBridge 189:f392fc9709a3 1493 */
AnnaBridge 189:f392fc9709a3 1494 #define __LL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
AnnaBridge 189:f392fc9709a3 1495 ((((__CHANNEL__) & ADC_CHANNEL_ID_BITFIELD_MASK) == 0U) \
AnnaBridge 189:f392fc9709a3 1496 ? ( \
AnnaBridge 189:f392fc9709a3 1497 ((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS \
AnnaBridge 189:f392fc9709a3 1498 ) \
AnnaBridge 189:f392fc9709a3 1499 : \
AnnaBridge 189:f392fc9709a3 1500 ( \
AnnaBridge 189:f392fc9709a3 1501 POSITION_VAL((__CHANNEL__)) \
AnnaBridge 189:f392fc9709a3 1502 ) \
AnnaBridge 189:f392fc9709a3 1503 )
AnnaBridge 189:f392fc9709a3 1504
AnnaBridge 189:f392fc9709a3 1505 /**
AnnaBridge 189:f392fc9709a3 1506 * @brief Helper macro to get ADC channel in literal format LL_ADC_CHANNEL_x
AnnaBridge 189:f392fc9709a3 1507 * from number in decimal format.
AnnaBridge 189:f392fc9709a3 1508 * @note Example:
AnnaBridge 189:f392fc9709a3 1509 * __LL_ADC_DECIMAL_NB_TO_CHANNEL(4)
AnnaBridge 189:f392fc9709a3 1510 * will return a data equivalent to "LL_ADC_CHANNEL_4".
AnnaBridge 189:f392fc9709a3 1511 * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18
AnnaBridge 189:f392fc9709a3 1512 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 1513 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 1514 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 1515 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 1516 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 1517 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 1518 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 1519 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 1520 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 1521 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 1522 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 1523 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 1524 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 1525 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 1526 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 1527 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 1528 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 1529 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 1530 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 1531 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 1532 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 1533 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 1534 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 1535 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 1536 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 1537 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1538 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1539 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1540 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1541 *
AnnaBridge 189:f392fc9709a3 1542 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1543 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1544 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1545 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 1546 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1547 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 1548 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 1549 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 189:f392fc9709a3 1550 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 189:f392fc9709a3 1551 * comparison with internal channel parameter to be done
AnnaBridge 189:f392fc9709a3 1552 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 189:f392fc9709a3 1553 */
AnnaBridge 189:f392fc9709a3 1554 #define __LL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
AnnaBridge 189:f392fc9709a3 1555 (((__DECIMAL_NB__) <= 9U) \
AnnaBridge 189:f392fc9709a3 1556 ? ( \
AnnaBridge 189:f392fc9709a3 1557 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
AnnaBridge 189:f392fc9709a3 1558 (ADC_AWD2CR_AWD2CH_0 << (__DECIMAL_NB__)) | \
AnnaBridge 189:f392fc9709a3 1559 (ADC_SMPR1_REGOFFSET | (((uint32_t) (3U * (__DECIMAL_NB__))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
AnnaBridge 189:f392fc9709a3 1560 ) \
AnnaBridge 189:f392fc9709a3 1561 : \
AnnaBridge 189:f392fc9709a3 1562 ( \
AnnaBridge 189:f392fc9709a3 1563 ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \
AnnaBridge 189:f392fc9709a3 1564 (ADC_AWD2CR_AWD2CH_0 << (__DECIMAL_NB__)) | \
AnnaBridge 189:f392fc9709a3 1565 (ADC_SMPR2_REGOFFSET | (((uint32_t) (3U * ((__DECIMAL_NB__) - 10U))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \
AnnaBridge 189:f392fc9709a3 1566 ) \
AnnaBridge 189:f392fc9709a3 1567 )
AnnaBridge 189:f392fc9709a3 1568
AnnaBridge 189:f392fc9709a3 1569 /**
AnnaBridge 189:f392fc9709a3 1570 * @brief Helper macro to determine whether the selected channel
AnnaBridge 189:f392fc9709a3 1571 * corresponds to literal definitions of driver.
AnnaBridge 189:f392fc9709a3 1572 * @note The different literal definitions of ADC channels are:
AnnaBridge 189:f392fc9709a3 1573 * - ADC internal channel:
AnnaBridge 189:f392fc9709a3 1574 * LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...
AnnaBridge 189:f392fc9709a3 1575 * - ADC external channel (channel connected to a GPIO pin):
AnnaBridge 189:f392fc9709a3 1576 * LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...
AnnaBridge 189:f392fc9709a3 1577 * @note The channel parameter must be a value defined from literal
AnnaBridge 189:f392fc9709a3 1578 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 189:f392fc9709a3 1579 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 189:f392fc9709a3 1580 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...),
AnnaBridge 189:f392fc9709a3 1581 * must not be a value from functions where a channel number is
AnnaBridge 189:f392fc9709a3 1582 * returned from ADC registers,
AnnaBridge 189:f392fc9709a3 1583 * because internal and external channels share the same channel
AnnaBridge 189:f392fc9709a3 1584 * number in ADC registers. The differentiation is made only with
AnnaBridge 189:f392fc9709a3 1585 * parameters definitions of driver.
AnnaBridge 189:f392fc9709a3 1586 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1587 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 1588 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 1589 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 1590 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 1591 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 1592 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 1593 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 1594 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 1595 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 1596 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 1597 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 1598 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 1599 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 1600 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 1601 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 1602 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 1603 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 1604 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 1605 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 1606 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 1607 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 1608 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 1609 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 1610 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 1611 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1612 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1613 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1614 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1615 *
AnnaBridge 189:f392fc9709a3 1616 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1617 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1618 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1619 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 1620 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1621 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 1622 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 1623 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 1624 * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin).
AnnaBridge 189:f392fc9709a3 1625 * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel.
AnnaBridge 189:f392fc9709a3 1626 */
AnnaBridge 189:f392fc9709a3 1627 #define __LL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \
AnnaBridge 189:f392fc9709a3 1628 (((__CHANNEL__) & ADC_CHANNEL_ID_INTERNAL_CH_MASK) != 0U)
AnnaBridge 189:f392fc9709a3 1629
AnnaBridge 189:f392fc9709a3 1630 /**
AnnaBridge 189:f392fc9709a3 1631 * @brief Helper macro to convert a channel defined from parameter
AnnaBridge 189:f392fc9709a3 1632 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 189:f392fc9709a3 1633 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 189:f392fc9709a3 1634 * to its equivalent parameter definition of a ADC external channel
AnnaBridge 189:f392fc9709a3 1635 * (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...).
AnnaBridge 189:f392fc9709a3 1636 * @note The channel parameter can be, additionally to a value
AnnaBridge 189:f392fc9709a3 1637 * defined from parameter definition of a ADC internal channel
AnnaBridge 189:f392fc9709a3 1638 * (LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 189:f392fc9709a3 1639 * a value defined from parameter definition of
AnnaBridge 189:f392fc9709a3 1640 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
AnnaBridge 189:f392fc9709a3 1641 * or a value from functions where a channel number is returned
AnnaBridge 189:f392fc9709a3 1642 * from ADC registers.
AnnaBridge 189:f392fc9709a3 1643 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1644 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 1645 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 1646 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 1647 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 1648 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 1649 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 1650 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 1651 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 1652 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 1653 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 1654 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 1655 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 1656 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 1657 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 1658 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 1659 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 1660 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 1661 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 1662 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 1663 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 1664 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 1665 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 1666 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 1667 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 1668 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1669 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1670 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1671 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1672 *
AnnaBridge 189:f392fc9709a3 1673 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1674 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1675 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1676 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 1677 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1678 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 1679 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 1680 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 1681 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 1682 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 1683 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 189:f392fc9709a3 1684 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 189:f392fc9709a3 1685 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 189:f392fc9709a3 1686 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 189:f392fc9709a3 1687 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 189:f392fc9709a3 1688 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 1689 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 1690 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 1691 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 1692 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 1693 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 1694 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 1695 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 1696 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 1697 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 1698 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 1699 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 1700 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 1701 */
AnnaBridge 189:f392fc9709a3 1702 #define __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \
AnnaBridge 189:f392fc9709a3 1703 ((__CHANNEL__) & ~ADC_CHANNEL_ID_INTERNAL_CH_MASK)
AnnaBridge 189:f392fc9709a3 1704
AnnaBridge 189:f392fc9709a3 1705 /**
AnnaBridge 189:f392fc9709a3 1706 * @brief Helper macro to determine whether the internal channel
AnnaBridge 189:f392fc9709a3 1707 * selected is available on the ADC instance selected.
AnnaBridge 189:f392fc9709a3 1708 * @note The channel parameter must be a value defined from parameter
AnnaBridge 189:f392fc9709a3 1709 * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT,
AnnaBridge 189:f392fc9709a3 1710 * LL_ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 189:f392fc9709a3 1711 * must not be a value defined from parameter definition of
AnnaBridge 189:f392fc9709a3 1712 * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...)
AnnaBridge 189:f392fc9709a3 1713 * or a value from functions where a channel number is
AnnaBridge 189:f392fc9709a3 1714 * returned from ADC registers,
AnnaBridge 189:f392fc9709a3 1715 * because internal and external channels share the same channel
AnnaBridge 189:f392fc9709a3 1716 * number in ADC registers. The differentiation is made only with
AnnaBridge 189:f392fc9709a3 1717 * parameters definitions of driver.
AnnaBridge 189:f392fc9709a3 1718 * @param __ADC_INSTANCE__ ADC instance
AnnaBridge 189:f392fc9709a3 1719 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1720 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 1721 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 1722 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 1723 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 1724 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 1725 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1726 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1727 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1728 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1729 *
AnnaBridge 189:f392fc9709a3 1730 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1731 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1732 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1733 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 1734 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1735 * (6) On STM32L4, parameter available on devices with several ADC instances.
AnnaBridge 189:f392fc9709a3 1736 * @retval Value "0" if the internal channel selected is not available on the ADC instance selected.
AnnaBridge 189:f392fc9709a3 1737 * Value "1" if the internal channel selected is available on the ADC instance selected.
AnnaBridge 189:f392fc9709a3 1738 */
AnnaBridge 189:f392fc9709a3 1739 #if defined (ADC1) && defined (ADC2) && defined (ADC3)
AnnaBridge 189:f392fc9709a3 1740 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 189:f392fc9709a3 1741 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 189:f392fc9709a3 1742 ? ( \
AnnaBridge 189:f392fc9709a3 1743 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 189:f392fc9709a3 1744 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 189:f392fc9709a3 1745 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) \
AnnaBridge 189:f392fc9709a3 1746 ) \
AnnaBridge 189:f392fc9709a3 1747 : \
AnnaBridge 189:f392fc9709a3 1748 ((__ADC_INSTANCE__) == ADC2) \
AnnaBridge 189:f392fc9709a3 1749 ? ( \
AnnaBridge 189:f392fc9709a3 1750 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 189:f392fc9709a3 1751 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH1_ADC2) || \
AnnaBridge 189:f392fc9709a3 1752 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH2_ADC2) \
AnnaBridge 189:f392fc9709a3 1753 ) \
AnnaBridge 189:f392fc9709a3 1754 : \
AnnaBridge 189:f392fc9709a3 1755 ((__ADC_INSTANCE__) == ADC3) \
AnnaBridge 189:f392fc9709a3 1756 ? ( \
AnnaBridge 189:f392fc9709a3 1757 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 189:f392fc9709a3 1758 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 189:f392fc9709a3 1759 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) || \
AnnaBridge 189:f392fc9709a3 1760 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH1_ADC3) || \
AnnaBridge 189:f392fc9709a3 1761 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH2_ADC3) \
AnnaBridge 189:f392fc9709a3 1762 ) \
AnnaBridge 189:f392fc9709a3 1763 : \
AnnaBridge 189:f392fc9709a3 1764 (0U) \
AnnaBridge 189:f392fc9709a3 1765 )
AnnaBridge 189:f392fc9709a3 1766 #elif defined (ADC1) && defined (ADC2)
AnnaBridge 189:f392fc9709a3 1767 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 189:f392fc9709a3 1768 (((__ADC_INSTANCE__) == ADC1) \
AnnaBridge 189:f392fc9709a3 1769 ? ( \
AnnaBridge 189:f392fc9709a3 1770 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 189:f392fc9709a3 1771 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 189:f392fc9709a3 1772 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) \
AnnaBridge 189:f392fc9709a3 1773 ) \
AnnaBridge 189:f392fc9709a3 1774 : \
AnnaBridge 189:f392fc9709a3 1775 ((__ADC_INSTANCE__) == ADC2) \
AnnaBridge 189:f392fc9709a3 1776 ? ( \
AnnaBridge 189:f392fc9709a3 1777 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 189:f392fc9709a3 1778 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH1_ADC2) || \
AnnaBridge 189:f392fc9709a3 1779 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH2_ADC2) \
AnnaBridge 189:f392fc9709a3 1780 ) \
AnnaBridge 189:f392fc9709a3 1781 : \
AnnaBridge 189:f392fc9709a3 1782 (0U) \
AnnaBridge 189:f392fc9709a3 1783 )
AnnaBridge 189:f392fc9709a3 1784 #elif defined (ADC1)
AnnaBridge 189:f392fc9709a3 1785 #define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 189:f392fc9709a3 1786 ( \
AnnaBridge 189:f392fc9709a3 1787 ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \
AnnaBridge 189:f392fc9709a3 1788 ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) || \
AnnaBridge 189:f392fc9709a3 1789 ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) || \
AnnaBridge 189:f392fc9709a3 1790 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH1) || \
AnnaBridge 189:f392fc9709a3 1791 ((__CHANNEL__) == LL_ADC_CHANNEL_DAC1CH2) \
AnnaBridge 189:f392fc9709a3 1792 )
AnnaBridge 189:f392fc9709a3 1793 #endif
AnnaBridge 189:f392fc9709a3 1794
AnnaBridge 189:f392fc9709a3 1795 /**
AnnaBridge 189:f392fc9709a3 1796 * @brief Helper macro to define ADC analog watchdog parameter:
AnnaBridge 189:f392fc9709a3 1797 * define a single channel to monitor with analog watchdog
AnnaBridge 189:f392fc9709a3 1798 * from sequencer channel and groups definition.
AnnaBridge 189:f392fc9709a3 1799 * @note To be used with function @ref LL_ADC_SetAnalogWDMonitChannels().
AnnaBridge 189:f392fc9709a3 1800 * Example:
AnnaBridge 189:f392fc9709a3 1801 * LL_ADC_SetAnalogWDMonitChannels(
AnnaBridge 189:f392fc9709a3 1802 * ADC1, LL_ADC_AWD1,
AnnaBridge 189:f392fc9709a3 1803 * __LL_ADC_ANALOGWD_CHANNEL_GROUP(LL_ADC_CHANNEL4, LL_ADC_GROUP_REGULAR))
AnnaBridge 189:f392fc9709a3 1804 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1805 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 1806 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 1807 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 1808 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 1809 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 1810 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 1811 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 1812 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 1813 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 1814 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 1815 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 1816 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 1817 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 1818 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 1819 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 1820 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 1821 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 1822 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 1823 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 1824 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 1825 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 1826 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 1827 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 1828 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 1829 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1830 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 1831 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1832 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 1833 *
AnnaBridge 189:f392fc9709a3 1834 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1835 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1836 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1837 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 1838 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1839 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 1840 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 1841 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 189:f392fc9709a3 1842 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 189:f392fc9709a3 1843 * comparison with internal channel parameter to be done
AnnaBridge 189:f392fc9709a3 1844 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 189:f392fc9709a3 1845 * @param __GROUP__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1846 * @arg @ref LL_ADC_GROUP_REGULAR
AnnaBridge 189:f392fc9709a3 1847 * @arg @ref LL_ADC_GROUP_INJECTED
AnnaBridge 189:f392fc9709a3 1848 * @arg @ref LL_ADC_GROUP_REGULAR_INJECTED
AnnaBridge 189:f392fc9709a3 1849 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 1850 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 189:f392fc9709a3 1851 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG (0)
AnnaBridge 189:f392fc9709a3 1852 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ (0)
AnnaBridge 189:f392fc9709a3 1853 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 189:f392fc9709a3 1854 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG (0)
AnnaBridge 189:f392fc9709a3 1855 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ (0)
AnnaBridge 189:f392fc9709a3 1856 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 189:f392fc9709a3 1857 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG (0)
AnnaBridge 189:f392fc9709a3 1858 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ (0)
AnnaBridge 189:f392fc9709a3 1859 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 189:f392fc9709a3 1860 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG (0)
AnnaBridge 189:f392fc9709a3 1861 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ (0)
AnnaBridge 189:f392fc9709a3 1862 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 189:f392fc9709a3 1863 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG (0)
AnnaBridge 189:f392fc9709a3 1864 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ (0)
AnnaBridge 189:f392fc9709a3 1865 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 189:f392fc9709a3 1866 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG (0)
AnnaBridge 189:f392fc9709a3 1867 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ (0)
AnnaBridge 189:f392fc9709a3 1868 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 189:f392fc9709a3 1869 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG (0)
AnnaBridge 189:f392fc9709a3 1870 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ (0)
AnnaBridge 189:f392fc9709a3 1871 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 189:f392fc9709a3 1872 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG (0)
AnnaBridge 189:f392fc9709a3 1873 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ (0)
AnnaBridge 189:f392fc9709a3 1874 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 189:f392fc9709a3 1875 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG (0)
AnnaBridge 189:f392fc9709a3 1876 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ (0)
AnnaBridge 189:f392fc9709a3 1877 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 189:f392fc9709a3 1878 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG (0)
AnnaBridge 189:f392fc9709a3 1879 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ (0)
AnnaBridge 189:f392fc9709a3 1880 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 189:f392fc9709a3 1881 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG (0)
AnnaBridge 189:f392fc9709a3 1882 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ (0)
AnnaBridge 189:f392fc9709a3 1883 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 189:f392fc9709a3 1884 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG (0)
AnnaBridge 189:f392fc9709a3 1885 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ (0)
AnnaBridge 189:f392fc9709a3 1886 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 189:f392fc9709a3 1887 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG (0)
AnnaBridge 189:f392fc9709a3 1888 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ (0)
AnnaBridge 189:f392fc9709a3 1889 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 189:f392fc9709a3 1890 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG (0)
AnnaBridge 189:f392fc9709a3 1891 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ (0)
AnnaBridge 189:f392fc9709a3 1892 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 189:f392fc9709a3 1893 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG (0)
AnnaBridge 189:f392fc9709a3 1894 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ (0)
AnnaBridge 189:f392fc9709a3 1895 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 189:f392fc9709a3 1896 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG (0)
AnnaBridge 189:f392fc9709a3 1897 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ (0)
AnnaBridge 189:f392fc9709a3 1898 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 189:f392fc9709a3 1899 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG (0)
AnnaBridge 189:f392fc9709a3 1900 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ (0)
AnnaBridge 189:f392fc9709a3 1901 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 189:f392fc9709a3 1902 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG (0)
AnnaBridge 189:f392fc9709a3 1903 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ (0)
AnnaBridge 189:f392fc9709a3 1904 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 189:f392fc9709a3 1905 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG (0)
AnnaBridge 189:f392fc9709a3 1906 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ (0)
AnnaBridge 189:f392fc9709a3 1907 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 189:f392fc9709a3 1908 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG (0)
AnnaBridge 189:f392fc9709a3 1909 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ (0)
AnnaBridge 189:f392fc9709a3 1910 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
AnnaBridge 189:f392fc9709a3 1911 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (0)(1)
AnnaBridge 189:f392fc9709a3 1912 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (0)(1)
AnnaBridge 189:f392fc9709a3 1913 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1)
AnnaBridge 189:f392fc9709a3 1914 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (0)(4)
AnnaBridge 189:f392fc9709a3 1915 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (0)(4)
AnnaBridge 189:f392fc9709a3 1916 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (4)
AnnaBridge 189:f392fc9709a3 1917 * @arg @ref LL_ADC_AWD_CH_VBAT_REG (0)(4)
AnnaBridge 189:f392fc9709a3 1918 * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (0)(4)
AnnaBridge 189:f392fc9709a3 1919 * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (4)
AnnaBridge 189:f392fc9709a3 1920 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_REG (0)(2)(5)
AnnaBridge 189:f392fc9709a3 1921 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_INJ (0)(2)(5)
AnnaBridge 189:f392fc9709a3 1922 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_REG_INJ (2)(5)
AnnaBridge 189:f392fc9709a3 1923 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_REG (0)(2)(5)
AnnaBridge 189:f392fc9709a3 1924 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_INJ (0)(2)(5)
AnnaBridge 189:f392fc9709a3 1925 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_REG_INJ (2)(5)
AnnaBridge 189:f392fc9709a3 1926 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC2_REG (0)(2)(6)
AnnaBridge 189:f392fc9709a3 1927 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC2_INJ (0)(2)(6)
AnnaBridge 189:f392fc9709a3 1928 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC2_REG_INJ (2)(6)
AnnaBridge 189:f392fc9709a3 1929 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC2_REG (0)(2)(6)
AnnaBridge 189:f392fc9709a3 1930 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC2_INJ (0)(2)(6)
AnnaBridge 189:f392fc9709a3 1931 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC2_REG_INJ (2)(6)
AnnaBridge 189:f392fc9709a3 1932 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC3_REG (0)(3)(6)
AnnaBridge 189:f392fc9709a3 1933 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC3_INJ (0)(3)(6)
AnnaBridge 189:f392fc9709a3 1934 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC3_REG_INJ (3)(6)
AnnaBridge 189:f392fc9709a3 1935 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC3_REG (0)(3)(6)
AnnaBridge 189:f392fc9709a3 1936 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC3_INJ (0)(3)(6)
AnnaBridge 189:f392fc9709a3 1937 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC3_REG_INJ (3)(6)
AnnaBridge 189:f392fc9709a3 1938 *
AnnaBridge 189:f392fc9709a3 1939 * (0) On STM32L4, parameter available only on analog watchdog number: AWD1.\n
AnnaBridge 189:f392fc9709a3 1940 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 1941 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 1942 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 1943 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.
AnnaBridge 189:f392fc9709a3 1944 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 1945 * (6) On STM32L4, parameter available on devices with several ADC instances.
AnnaBridge 189:f392fc9709a3 1946 */
AnnaBridge 189:f392fc9709a3 1947 #define __LL_ADC_ANALOGWD_CHANNEL_GROUP(__CHANNEL__, __GROUP__) \
AnnaBridge 189:f392fc9709a3 1948 (((__GROUP__) == LL_ADC_GROUP_REGULAR) \
AnnaBridge 189:f392fc9709a3 1949 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) \
AnnaBridge 189:f392fc9709a3 1950 : \
AnnaBridge 189:f392fc9709a3 1951 ((__GROUP__) == LL_ADC_GROUP_INJECTED) \
AnnaBridge 189:f392fc9709a3 1952 ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL) \
AnnaBridge 189:f392fc9709a3 1953 : \
AnnaBridge 189:f392fc9709a3 1954 (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL) \
AnnaBridge 189:f392fc9709a3 1955 )
AnnaBridge 189:f392fc9709a3 1956
AnnaBridge 189:f392fc9709a3 1957 /**
AnnaBridge 189:f392fc9709a3 1958 * @brief Helper macro to set the value of ADC analog watchdog threshold high
AnnaBridge 189:f392fc9709a3 1959 * or low in function of ADC resolution, when ADC resolution is
AnnaBridge 189:f392fc9709a3 1960 * different of 12 bits.
AnnaBridge 189:f392fc9709a3 1961 * @note To be used with function @ref LL_ADC_ConfigAnalogWDThresholds()
AnnaBridge 189:f392fc9709a3 1962 * or @ref LL_ADC_SetAnalogWDThresholds().
AnnaBridge 189:f392fc9709a3 1963 * Example, with a ADC resolution of 8 bits, to set the value of
AnnaBridge 189:f392fc9709a3 1964 * analog watchdog threshold high (on 8 bits):
AnnaBridge 189:f392fc9709a3 1965 * LL_ADC_SetAnalogWDThresholds
AnnaBridge 189:f392fc9709a3 1966 * (< ADCx param >,
AnnaBridge 189:f392fc9709a3 1967 * __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(LL_ADC_RESOLUTION_8B, <threshold_value_8_bits>)
AnnaBridge 189:f392fc9709a3 1968 * );
AnnaBridge 189:f392fc9709a3 1969 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1970 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 1971 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 1972 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 1973 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 1974 * @param __AWD_THRESHOLD__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 1975 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 1976 */
AnnaBridge 189:f392fc9709a3 1977 #define __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD__) \
AnnaBridge 189:f392fc9709a3 1978 ((__AWD_THRESHOLD__) << ((__ADC_RESOLUTION__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U )))
AnnaBridge 189:f392fc9709a3 1979
AnnaBridge 189:f392fc9709a3 1980 /**
AnnaBridge 189:f392fc9709a3 1981 * @brief Helper macro to get the value of ADC analog watchdog threshold high
AnnaBridge 189:f392fc9709a3 1982 * or low in function of ADC resolution, when ADC resolution is
AnnaBridge 189:f392fc9709a3 1983 * different of 12 bits.
AnnaBridge 189:f392fc9709a3 1984 * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds().
AnnaBridge 189:f392fc9709a3 1985 * Example, with a ADC resolution of 8 bits, to get the value of
AnnaBridge 189:f392fc9709a3 1986 * analog watchdog threshold high (on 8 bits):
AnnaBridge 189:f392fc9709a3 1987 * < threshold_value_6_bits > = __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION
AnnaBridge 189:f392fc9709a3 1988 * (LL_ADC_RESOLUTION_8B,
AnnaBridge 189:f392fc9709a3 1989 * LL_ADC_GetAnalogWDThresholds(<ADCx param>, LL_ADC_AWD_THRESHOLD_HIGH)
AnnaBridge 189:f392fc9709a3 1990 * );
AnnaBridge 189:f392fc9709a3 1991 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 1992 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 1993 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 1994 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 1995 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 1996 * @param __AWD_THRESHOLD_12_BITS__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 1997 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 1998 */
AnnaBridge 189:f392fc9709a3 1999 #define __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD_12_BITS__) \
AnnaBridge 189:f392fc9709a3 2000 ((__AWD_THRESHOLD_12_BITS__) >> ((__ADC_RESOLUTION__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U )))
AnnaBridge 189:f392fc9709a3 2001
AnnaBridge 189:f392fc9709a3 2002 /**
AnnaBridge 189:f392fc9709a3 2003 * @brief Helper macro to get the ADC analog watchdog threshold high
AnnaBridge 189:f392fc9709a3 2004 * or low from raw value containing both thresholds concatenated.
AnnaBridge 189:f392fc9709a3 2005 * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds().
AnnaBridge 189:f392fc9709a3 2006 * Example, to get analog watchdog threshold high from the register raw value:
AnnaBridge 189:f392fc9709a3 2007 * __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW(LL_ADC_AWD_THRESHOLD_HIGH, <raw_value_with_both_thresholds>);
AnnaBridge 189:f392fc9709a3 2008 * @param __AWD_THRESHOLD_TYPE__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2009 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 189:f392fc9709a3 2010 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 189:f392fc9709a3 2011 * @param __AWD_THRESHOLDS__ Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 189:f392fc9709a3 2012 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 2013 */
AnnaBridge 189:f392fc9709a3 2014 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 2015 #define __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW(__AWD_THRESHOLD_TYPE__, __AWD_THRESHOLDS__) \
AnnaBridge 189:f392fc9709a3 2016 (((__AWD_THRESHOLDS__) >> (((__AWD_THRESHOLD_TYPE__) & ADC_AWD_TRX_BIT_HIGH_MASK) >> ADC_AWD_TRX_BIT_HIGH_SHIFT4)) & LL_ADC_AWD_THRESHOLD_LOW)
AnnaBridge 189:f392fc9709a3 2017 #else
AnnaBridge 189:f392fc9709a3 2018 #define __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW(__AWD_THRESHOLD_TYPE__, __AWD_THRESHOLDS__) \
AnnaBridge 189:f392fc9709a3 2019 (((__AWD_THRESHOLDS__) >> POSITION_VAL((__AWD_THRESHOLD_TYPE__))) & LL_ADC_AWD_THRESHOLD_LOW)
AnnaBridge 189:f392fc9709a3 2020 #endif
AnnaBridge 189:f392fc9709a3 2021
AnnaBridge 189:f392fc9709a3 2022 /**
AnnaBridge 189:f392fc9709a3 2023 * @brief Helper macro to set the ADC calibration value with both single ended
AnnaBridge 189:f392fc9709a3 2024 * and differential modes calibration factors concatenated.
AnnaBridge 189:f392fc9709a3 2025 * @note To be used with function @ref LL_ADC_SetCalibrationFactor().
AnnaBridge 189:f392fc9709a3 2026 * Example, to set calibration factors single ended to 0x55
AnnaBridge 189:f392fc9709a3 2027 * and differential ended to 0x2A:
AnnaBridge 189:f392fc9709a3 2028 * LL_ADC_SetCalibrationFactor(
AnnaBridge 189:f392fc9709a3 2029 * ADC1,
AnnaBridge 189:f392fc9709a3 2030 * __LL_ADC_CALIB_FACTOR_SINGLE_DIFF(0x55, 0x2A))
AnnaBridge 189:f392fc9709a3 2031 * @param __CALIB_FACTOR_SINGLE_ENDED__ Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 189:f392fc9709a3 2032 * @param __CALIB_FACTOR_DIFFERENTIAL__ Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 189:f392fc9709a3 2033 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 189:f392fc9709a3 2034 */
AnnaBridge 189:f392fc9709a3 2035 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 2036 #define __LL_ADC_CALIB_FACTOR_SINGLE_DIFF(__CALIB_FACTOR_SINGLE_ENDED__, __CALIB_FACTOR_DIFFERENTIAL__) \
AnnaBridge 189:f392fc9709a3 2037 (((__CALIB_FACTOR_DIFFERENTIAL__) << ADC_CALFACT_CALFACT_D_Pos) | (__CALIB_FACTOR_SINGLE_ENDED__))
AnnaBridge 189:f392fc9709a3 2038 #else
AnnaBridge 189:f392fc9709a3 2039 #define __LL_ADC_CALIB_FACTOR_SINGLE_DIFF(__CALIB_FACTOR_SINGLE_ENDED__, __CALIB_FACTOR_DIFFERENTIAL__) \
AnnaBridge 189:f392fc9709a3 2040 (((__CALIB_FACTOR_DIFFERENTIAL__) << POSITION_VAL(ADC_CALFACT_CALFACT_D)) | (__CALIB_FACTOR_SINGLE_ENDED__))
AnnaBridge 189:f392fc9709a3 2041 #endif
AnnaBridge 189:f392fc9709a3 2042
AnnaBridge 189:f392fc9709a3 2043 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 2044 /**
AnnaBridge 189:f392fc9709a3 2045 * @brief Helper macro to get the ADC multimode conversion data of ADC master
AnnaBridge 189:f392fc9709a3 2046 * or ADC slave from raw value with both ADC conversion data concatenated.
AnnaBridge 189:f392fc9709a3 2047 * @note This macro is intended to be used when multimode transfer by DMA
AnnaBridge 189:f392fc9709a3 2048 * is enabled: refer to function @ref LL_ADC_SetMultiDMATransfer().
AnnaBridge 189:f392fc9709a3 2049 * In this case the transferred data need to processed with this macro
AnnaBridge 189:f392fc9709a3 2050 * to separate the conversion data of ADC master and ADC slave.
AnnaBridge 189:f392fc9709a3 2051 * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2052 * @arg @ref LL_ADC_MULTI_MASTER
AnnaBridge 189:f392fc9709a3 2053 * @arg @ref LL_ADC_MULTI_SLAVE
AnnaBridge 189:f392fc9709a3 2054 * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 2055 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 2056 */
AnnaBridge 189:f392fc9709a3 2057 #define __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \
AnnaBridge 189:f392fc9709a3 2058 (((__ADC_MULTI_CONV_DATA__) >> POSITION_VAL((__ADC_MULTI_MASTER_SLAVE__))) & ADC_CDR_RDATA_MST)
AnnaBridge 189:f392fc9709a3 2059 #endif
AnnaBridge 189:f392fc9709a3 2060
AnnaBridge 189:f392fc9709a3 2061 /**
AnnaBridge 189:f392fc9709a3 2062 * @brief Helper macro to select the ADC common instance
AnnaBridge 189:f392fc9709a3 2063 * to which is belonging the selected ADC instance.
AnnaBridge 189:f392fc9709a3 2064 * @note ADC common register instance can be used for:
AnnaBridge 189:f392fc9709a3 2065 * - Set parameters common to several ADC instances
AnnaBridge 189:f392fc9709a3 2066 * - Multimode (for devices with several ADC instances)
AnnaBridge 189:f392fc9709a3 2067 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 189:f392fc9709a3 2068 * @param __ADCx__ ADC instance
AnnaBridge 189:f392fc9709a3 2069 * @retval ADC common register instance
AnnaBridge 189:f392fc9709a3 2070 */
AnnaBridge 189:f392fc9709a3 2071 #if defined(ADC1) && defined(ADC2) && defined(ADC3)
AnnaBridge 189:f392fc9709a3 2072 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 189:f392fc9709a3 2073 (ADC123_COMMON)
AnnaBridge 189:f392fc9709a3 2074 #elif defined(ADC1) && defined(ADC2)
AnnaBridge 189:f392fc9709a3 2075 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 189:f392fc9709a3 2076 (ADC12_COMMON)
AnnaBridge 189:f392fc9709a3 2077 #else
AnnaBridge 189:f392fc9709a3 2078 #define __LL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 189:f392fc9709a3 2079 (ADC1_COMMON)
AnnaBridge 189:f392fc9709a3 2080 #endif
AnnaBridge 189:f392fc9709a3 2081
AnnaBridge 189:f392fc9709a3 2082 /**
AnnaBridge 189:f392fc9709a3 2083 * @brief Helper macro to check if all ADC instances sharing the same
AnnaBridge 189:f392fc9709a3 2084 * ADC common instance are disabled.
AnnaBridge 189:f392fc9709a3 2085 * @note This check is required by functions with setting conditioned to
AnnaBridge 189:f392fc9709a3 2086 * ADC state:
AnnaBridge 189:f392fc9709a3 2087 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 189:f392fc9709a3 2088 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 189:f392fc9709a3 2089 * @note On devices with only 1 ADC common instance, parameter of this macro
AnnaBridge 189:f392fc9709a3 2090 * is useless and can be ignored (parameter kept for compatibility
AnnaBridge 189:f392fc9709a3 2091 * with devices featuring several ADC common instances).
AnnaBridge 189:f392fc9709a3 2092 * @param __ADCXY_COMMON__ ADC common instance
AnnaBridge 189:f392fc9709a3 2093 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 2094 * @retval Value "0" if all ADC instances sharing the same ADC common instance
AnnaBridge 189:f392fc9709a3 2095 * are disabled.
AnnaBridge 189:f392fc9709a3 2096 * Value "1" if at least one ADC instance sharing the same ADC common instance
AnnaBridge 189:f392fc9709a3 2097 * is enabled.
AnnaBridge 189:f392fc9709a3 2098 */
AnnaBridge 189:f392fc9709a3 2099 #if defined(ADC1) && defined(ADC2) && defined(ADC3)
AnnaBridge 189:f392fc9709a3 2100 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 189:f392fc9709a3 2101 (LL_ADC_IsEnabled(ADC1) | \
AnnaBridge 189:f392fc9709a3 2102 LL_ADC_IsEnabled(ADC2) | \
AnnaBridge 189:f392fc9709a3 2103 LL_ADC_IsEnabled(ADC3) )
AnnaBridge 189:f392fc9709a3 2104 #elif defined(ADC1) && defined(ADC2)
AnnaBridge 189:f392fc9709a3 2105 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 189:f392fc9709a3 2106 (LL_ADC_IsEnabled(ADC1) | \
AnnaBridge 189:f392fc9709a3 2107 LL_ADC_IsEnabled(ADC2) )
AnnaBridge 189:f392fc9709a3 2108 #else
AnnaBridge 189:f392fc9709a3 2109 #define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 189:f392fc9709a3 2110 (LL_ADC_IsEnabled(ADC1))
AnnaBridge 189:f392fc9709a3 2111 #endif
AnnaBridge 189:f392fc9709a3 2112
AnnaBridge 189:f392fc9709a3 2113 /**
AnnaBridge 189:f392fc9709a3 2114 * @brief Helper macro to define the ADC conversion data full-scale digital
AnnaBridge 189:f392fc9709a3 2115 * value corresponding to the selected ADC resolution.
AnnaBridge 189:f392fc9709a3 2116 * @note ADC conversion data full-scale corresponds to voltage range
AnnaBridge 189:f392fc9709a3 2117 * determined by analog voltage references Vref+ and Vref-
AnnaBridge 189:f392fc9709a3 2118 * (refer to reference manual).
AnnaBridge 189:f392fc9709a3 2119 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2120 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2121 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2122 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2123 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2124 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 189:f392fc9709a3 2125 */
AnnaBridge 189:f392fc9709a3 2126 #define __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 189:f392fc9709a3 2127 (0xFFFU >> ((__ADC_RESOLUTION__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U)))
AnnaBridge 189:f392fc9709a3 2128
AnnaBridge 189:f392fc9709a3 2129 /**
AnnaBridge 189:f392fc9709a3 2130 * @brief Helper macro to convert the ADC conversion data from
AnnaBridge 189:f392fc9709a3 2131 * a resolution to another resolution.
AnnaBridge 189:f392fc9709a3 2132 * @param __DATA__ ADC conversion data to be converted
AnnaBridge 189:f392fc9709a3 2133 * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted
AnnaBridge 189:f392fc9709a3 2134 * This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2135 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2136 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2137 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2138 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2139 * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion
AnnaBridge 189:f392fc9709a3 2140 * This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2141 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2142 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2143 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2144 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2145 * @retval ADC conversion data to the requested resolution
AnnaBridge 189:f392fc9709a3 2146 */
AnnaBridge 189:f392fc9709a3 2147 #define __LL_ADC_CONVERT_DATA_RESOLUTION(__DATA__,\
AnnaBridge 189:f392fc9709a3 2148 __ADC_RESOLUTION_CURRENT__,\
AnnaBridge 189:f392fc9709a3 2149 __ADC_RESOLUTION_TARGET__) \
AnnaBridge 189:f392fc9709a3 2150 (((__DATA__) \
AnnaBridge 189:f392fc9709a3 2151 << ((__ADC_RESOLUTION_CURRENT__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U))) \
AnnaBridge 189:f392fc9709a3 2152 >> ((__ADC_RESOLUTION_TARGET__) >> (ADC_CFGR_RES_BITOFFSET_POS - 1U)) \
AnnaBridge 189:f392fc9709a3 2153 )
AnnaBridge 189:f392fc9709a3 2154
AnnaBridge 189:f392fc9709a3 2155 /**
AnnaBridge 189:f392fc9709a3 2156 * @brief Helper macro to calculate the voltage (unit: mVolt)
AnnaBridge 189:f392fc9709a3 2157 * corresponding to a ADC conversion data (unit: digital value).
AnnaBridge 189:f392fc9709a3 2158 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 189:f392fc9709a3 2159 * user board environment or can be calculated using ADC measurement
AnnaBridge 189:f392fc9709a3 2160 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 189:f392fc9709a3 2161 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 189:f392fc9709a3 2162 * @param __ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 189:f392fc9709a3 2163 * (unit: digital value).
AnnaBridge 189:f392fc9709a3 2164 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2165 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2166 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2167 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2168 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2169 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 189:f392fc9709a3 2170 */
AnnaBridge 189:f392fc9709a3 2171 #define __LL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 189:f392fc9709a3 2172 __ADC_DATA__,\
AnnaBridge 189:f392fc9709a3 2173 __ADC_RESOLUTION__) \
AnnaBridge 189:f392fc9709a3 2174 ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) \
AnnaBridge 189:f392fc9709a3 2175 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 189:f392fc9709a3 2176 )
AnnaBridge 189:f392fc9709a3 2177
AnnaBridge 189:f392fc9709a3 2178 /* Legacy define */
AnnaBridge 189:f392fc9709a3 2179 #define __LL_ADC_CALC_DATA_VOLTAGE() __LL_ADC_CALC_DATA_TO_VOLTAGE()
AnnaBridge 189:f392fc9709a3 2180
AnnaBridge 189:f392fc9709a3 2181 /**
AnnaBridge 189:f392fc9709a3 2182 * @brief Helper macro to calculate analog reference voltage (Vref+)
AnnaBridge 189:f392fc9709a3 2183 * (unit: mVolt) from ADC conversion data of internal voltage
AnnaBridge 189:f392fc9709a3 2184 * reference VrefInt.
AnnaBridge 189:f392fc9709a3 2185 * @note Computation is using VrefInt calibration value
AnnaBridge 189:f392fc9709a3 2186 * stored in system memory for each device during production.
AnnaBridge 189:f392fc9709a3 2187 * @note This voltage depends on user board environment: voltage level
AnnaBridge 189:f392fc9709a3 2188 * connected to pin Vref+.
AnnaBridge 189:f392fc9709a3 2189 * On devices with small package, the pin Vref+ is not present
AnnaBridge 189:f392fc9709a3 2190 * and internally bonded to pin Vdda.
AnnaBridge 189:f392fc9709a3 2191 * @note On this STM32 serie, calibration data of internal voltage reference
AnnaBridge 189:f392fc9709a3 2192 * VrefInt corresponds to a resolution of 12 bits,
AnnaBridge 189:f392fc9709a3 2193 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 189:f392fc9709a3 2194 * internal voltage reference VrefInt.
AnnaBridge 189:f392fc9709a3 2195 * Otherwise, this macro performs the processing to scale
AnnaBridge 189:f392fc9709a3 2196 * ADC conversion data to 12 bits.
AnnaBridge 189:f392fc9709a3 2197 * @param __VREFINT_ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 189:f392fc9709a3 2198 * of internal voltage reference VrefInt (unit: digital value).
AnnaBridge 189:f392fc9709a3 2199 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2200 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2201 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2202 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2203 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2204 * @retval Analog reference voltage (unit: mV)
AnnaBridge 189:f392fc9709a3 2205 */
AnnaBridge 189:f392fc9709a3 2206 #define __LL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
AnnaBridge 189:f392fc9709a3 2207 __ADC_RESOLUTION__) \
AnnaBridge 189:f392fc9709a3 2208 (((uint32_t)(*VREFINT_CAL_ADDR) * VREFINT_CAL_VREF) \
AnnaBridge 189:f392fc9709a3 2209 / __LL_ADC_CONVERT_DATA_RESOLUTION((__VREFINT_ADC_DATA__), \
AnnaBridge 189:f392fc9709a3 2210 (__ADC_RESOLUTION__), \
AnnaBridge 189:f392fc9709a3 2211 LL_ADC_RESOLUTION_12B) \
AnnaBridge 189:f392fc9709a3 2212 )
AnnaBridge 189:f392fc9709a3 2213
AnnaBridge 189:f392fc9709a3 2214 /**
AnnaBridge 189:f392fc9709a3 2215 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 189:f392fc9709a3 2216 * from ADC conversion data of internal temperature sensor.
AnnaBridge 189:f392fc9709a3 2217 * @note Computation is using temperature sensor calibration values
AnnaBridge 189:f392fc9709a3 2218 * stored in system memory for each device during production.
AnnaBridge 189:f392fc9709a3 2219 * @note Calculation formula:
AnnaBridge 189:f392fc9709a3 2220 * Temperature = ((TS_ADC_DATA - TS_CAL1)
AnnaBridge 189:f392fc9709a3 2221 * * (TS_CAL2_TEMP - TS_CAL1_TEMP))
AnnaBridge 189:f392fc9709a3 2222 * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP
AnnaBridge 189:f392fc9709a3 2223 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 189:f392fc9709a3 2224 * Avg_Slope = (TS_CAL2 - TS_CAL1)
AnnaBridge 189:f392fc9709a3 2225 * / (TS_CAL2_TEMP - TS_CAL1_TEMP)
AnnaBridge 189:f392fc9709a3 2226 * TS_CAL1 = equivalent TS_ADC_DATA at temperature
AnnaBridge 189:f392fc9709a3 2227 * TEMP_DEGC_CAL1 (calibrated in factory)
AnnaBridge 189:f392fc9709a3 2228 * TS_CAL2 = equivalent TS_ADC_DATA at temperature
AnnaBridge 189:f392fc9709a3 2229 * TEMP_DEGC_CAL2 (calibrated in factory)
AnnaBridge 189:f392fc9709a3 2230 * Caution: Calculation relevancy under reserve that calibration
AnnaBridge 189:f392fc9709a3 2231 * parameters are correct (address and data).
AnnaBridge 189:f392fc9709a3 2232 * To calculate temperature using temperature sensor
AnnaBridge 189:f392fc9709a3 2233 * datasheet typical values (generic values less, therefore
AnnaBridge 189:f392fc9709a3 2234 * less accurate than calibrated values),
AnnaBridge 189:f392fc9709a3 2235 * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS().
AnnaBridge 189:f392fc9709a3 2236 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 189:f392fc9709a3 2237 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 189:f392fc9709a3 2238 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 189:f392fc9709a3 2239 * user board environment or can be calculated using ADC measurement
AnnaBridge 189:f392fc9709a3 2240 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 189:f392fc9709a3 2241 * @note On this STM32 serie, calibration data of temperature sensor
AnnaBridge 189:f392fc9709a3 2242 * corresponds to a resolution of 12 bits,
AnnaBridge 189:f392fc9709a3 2243 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 189:f392fc9709a3 2244 * temperature sensor.
AnnaBridge 189:f392fc9709a3 2245 * Otherwise, this macro performs the processing to scale
AnnaBridge 189:f392fc9709a3 2246 * ADC conversion data to 12 bits.
AnnaBridge 189:f392fc9709a3 2247 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 189:f392fc9709a3 2248 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal
AnnaBridge 189:f392fc9709a3 2249 * temperature sensor (unit: digital value).
AnnaBridge 189:f392fc9709a3 2250 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature
AnnaBridge 189:f392fc9709a3 2251 * sensor voltage has been measured.
AnnaBridge 189:f392fc9709a3 2252 * This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2253 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2254 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2255 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2256 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2257 * @retval Temperature (unit: degree Celsius)
AnnaBridge 189:f392fc9709a3 2258 */
AnnaBridge 189:f392fc9709a3 2259 #define __LL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 189:f392fc9709a3 2260 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 189:f392fc9709a3 2261 __ADC_RESOLUTION__) \
AnnaBridge 189:f392fc9709a3 2262 (((( ((int32_t)((__LL_ADC_CONVERT_DATA_RESOLUTION((__TEMPSENSOR_ADC_DATA__), \
AnnaBridge 189:f392fc9709a3 2263 (__ADC_RESOLUTION__), \
AnnaBridge 189:f392fc9709a3 2264 LL_ADC_RESOLUTION_12B) \
AnnaBridge 189:f392fc9709a3 2265 * (__VREFANALOG_VOLTAGE__)) \
AnnaBridge 189:f392fc9709a3 2266 / TEMPSENSOR_CAL_VREFANALOG) \
AnnaBridge 189:f392fc9709a3 2267 - (int32_t) *TEMPSENSOR_CAL1_ADDR) \
AnnaBridge 189:f392fc9709a3 2268 ) * (int32_t)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP) \
AnnaBridge 189:f392fc9709a3 2269 ) / (int32_t)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) \
AnnaBridge 189:f392fc9709a3 2270 ) + TEMPSENSOR_CAL1_TEMP \
AnnaBridge 189:f392fc9709a3 2271 )
AnnaBridge 189:f392fc9709a3 2272
AnnaBridge 189:f392fc9709a3 2273 /**
AnnaBridge 189:f392fc9709a3 2274 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 189:f392fc9709a3 2275 * from ADC conversion data of internal temperature sensor.
AnnaBridge 189:f392fc9709a3 2276 * @note Computation is using temperature sensor typical values
AnnaBridge 189:f392fc9709a3 2277 * (refer to device datasheet).
AnnaBridge 189:f392fc9709a3 2278 * @note Calculation formula:
AnnaBridge 189:f392fc9709a3 2279 * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV)
AnnaBridge 189:f392fc9709a3 2280 * / Avg_Slope + CALx_TEMP
AnnaBridge 189:f392fc9709a3 2281 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 189:f392fc9709a3 2282 * (unit: digital value)
AnnaBridge 189:f392fc9709a3 2283 * Avg_Slope = temperature sensor slope
AnnaBridge 189:f392fc9709a3 2284 * (unit: uV/Degree Celsius)
AnnaBridge 189:f392fc9709a3 2285 * TS_TYP_CALx_VOLT = temperature sensor digital value at
AnnaBridge 189:f392fc9709a3 2286 * temperature CALx_TEMP (unit: mV)
AnnaBridge 189:f392fc9709a3 2287 * Caution: Calculation relevancy under reserve the temperature sensor
AnnaBridge 189:f392fc9709a3 2288 * of the current device has characteristics in line with
AnnaBridge 189:f392fc9709a3 2289 * datasheet typical values.
AnnaBridge 189:f392fc9709a3 2290 * If temperature sensor calibration values are available on
AnnaBridge 189:f392fc9709a3 2291 * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()),
AnnaBridge 189:f392fc9709a3 2292 * temperature calculation will be more accurate using
AnnaBridge 189:f392fc9709a3 2293 * helper macro @ref __LL_ADC_CALC_TEMPERATURE().
AnnaBridge 189:f392fc9709a3 2294 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 189:f392fc9709a3 2295 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 189:f392fc9709a3 2296 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 189:f392fc9709a3 2297 * user board environment or can be calculated using ADC measurement
AnnaBridge 189:f392fc9709a3 2298 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 189:f392fc9709a3 2299 * @note ADC measurement data must correspond to a resolution of 12bits
AnnaBridge 189:f392fc9709a3 2300 * (full scale digital value 4095). If not the case, the data must be
AnnaBridge 189:f392fc9709a3 2301 * preliminarily rescaled to an equivalent resolution of 12 bits.
AnnaBridge 189:f392fc9709a3 2302 * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data: Temperature sensor slope typical value (unit: uV/DegCelsius).
AnnaBridge 189:f392fc9709a3 2303 * On STM32L4, refer to device datasheet parameter "Avg_Slope".
AnnaBridge 189:f392fc9709a3 2304 * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data: Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit: mV).
AnnaBridge 189:f392fc9709a3 2305 * On STM32L4, refer to device datasheet parameter "V30" (corresponding to TS_CAL1).
AnnaBridge 189:f392fc9709a3 2306 * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data: Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit: mV)
AnnaBridge 189:f392fc9709a3 2307 * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit: mV)
AnnaBridge 189:f392fc9709a3 2308 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit: digital value).
AnnaBridge 189:f392fc9709a3 2309 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured.
AnnaBridge 189:f392fc9709a3 2310 * This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2311 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2312 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2313 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2314 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2315 * @retval Temperature (unit: degree Celsius)
AnnaBridge 189:f392fc9709a3 2316 */
AnnaBridge 189:f392fc9709a3 2317 #define __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\
AnnaBridge 189:f392fc9709a3 2318 __TEMPSENSOR_TYP_CALX_V__,\
AnnaBridge 189:f392fc9709a3 2319 __TEMPSENSOR_CALX_TEMP__,\
AnnaBridge 189:f392fc9709a3 2320 __VREFANALOG_VOLTAGE__,\
AnnaBridge 189:f392fc9709a3 2321 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 189:f392fc9709a3 2322 __ADC_RESOLUTION__) \
AnnaBridge 189:f392fc9709a3 2323 ((( ( \
AnnaBridge 189:f392fc9709a3 2324 (int32_t)((((__TEMPSENSOR_ADC_DATA__) * (__VREFANALOG_VOLTAGE__)) \
AnnaBridge 189:f392fc9709a3 2325 / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__)) \
AnnaBridge 189:f392fc9709a3 2326 * 1000) \
AnnaBridge 189:f392fc9709a3 2327 - \
AnnaBridge 189:f392fc9709a3 2328 (int32_t)(((__TEMPSENSOR_TYP_CALX_V__)) \
AnnaBridge 189:f392fc9709a3 2329 * 1000) \
AnnaBridge 189:f392fc9709a3 2330 ) \
AnnaBridge 189:f392fc9709a3 2331 ) / (__TEMPSENSOR_TYP_AVGSLOPE__) \
AnnaBridge 189:f392fc9709a3 2332 ) + (__TEMPSENSOR_CALX_TEMP__) \
AnnaBridge 189:f392fc9709a3 2333 )
AnnaBridge 189:f392fc9709a3 2334
AnnaBridge 189:f392fc9709a3 2335 /**
AnnaBridge 189:f392fc9709a3 2336 * @}
AnnaBridge 189:f392fc9709a3 2337 */
AnnaBridge 189:f392fc9709a3 2338
AnnaBridge 189:f392fc9709a3 2339 /**
AnnaBridge 189:f392fc9709a3 2340 * @}
AnnaBridge 189:f392fc9709a3 2341 */
AnnaBridge 189:f392fc9709a3 2342
AnnaBridge 189:f392fc9709a3 2343
AnnaBridge 189:f392fc9709a3 2344 /* Exported functions --------------------------------------------------------*/
AnnaBridge 189:f392fc9709a3 2345 /** @defgroup ADC_LL_Exported_Functions ADC Exported Functions
AnnaBridge 189:f392fc9709a3 2346 * @{
AnnaBridge 189:f392fc9709a3 2347 */
AnnaBridge 189:f392fc9709a3 2348
AnnaBridge 189:f392fc9709a3 2349 /** @defgroup ADC_LL_EF_DMA_Management ADC DMA management
AnnaBridge 189:f392fc9709a3 2350 * @{
AnnaBridge 189:f392fc9709a3 2351 */
AnnaBridge 189:f392fc9709a3 2352 /* Note: LL ADC functions to set DMA transfer are located into sections of */
AnnaBridge 189:f392fc9709a3 2353 /* configuration of ADC instance, groups and multimode (if available): */
AnnaBridge 189:f392fc9709a3 2354 /* @ref LL_ADC_REG_SetDMATransfer(), ... */
AnnaBridge 189:f392fc9709a3 2355
AnnaBridge 189:f392fc9709a3 2356 /**
AnnaBridge 189:f392fc9709a3 2357 * @brief Function to help to configure DMA transfer from ADC: retrieve the
AnnaBridge 189:f392fc9709a3 2358 * ADC register address from ADC instance and a list of ADC registers
AnnaBridge 189:f392fc9709a3 2359 * intended to be used (most commonly) with DMA transfer.
AnnaBridge 189:f392fc9709a3 2360 * @note These ADC registers are data registers:
AnnaBridge 189:f392fc9709a3 2361 * when ADC conversion data is available in ADC data registers,
AnnaBridge 189:f392fc9709a3 2362 * ADC generates a DMA transfer request.
AnnaBridge 189:f392fc9709a3 2363 * @note This macro is intended to be used with LL DMA driver, refer to
AnnaBridge 189:f392fc9709a3 2364 * function "LL_DMA_ConfigAddresses()".
AnnaBridge 189:f392fc9709a3 2365 * Example:
AnnaBridge 189:f392fc9709a3 2366 * LL_DMA_ConfigAddresses(DMA1,
AnnaBridge 189:f392fc9709a3 2367 * LL_DMA_CHANNEL_1,
AnnaBridge 189:f392fc9709a3 2368 * LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA),
AnnaBridge 189:f392fc9709a3 2369 * (uint32_t)&< array or variable >,
AnnaBridge 189:f392fc9709a3 2370 * LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
AnnaBridge 189:f392fc9709a3 2371 * @note For devices with several ADC: in multimode, some devices
AnnaBridge 189:f392fc9709a3 2372 * use a different data register outside of ADC instance scope
AnnaBridge 189:f392fc9709a3 2373 * (common data register). This macro manages this register difference,
AnnaBridge 189:f392fc9709a3 2374 * only ADC instance has to be set as parameter.
AnnaBridge 189:f392fc9709a3 2375 * @rmtoll DR RDATA LL_ADC_DMA_GetRegAddr\n
AnnaBridge 189:f392fc9709a3 2376 * CDR RDATA_MST LL_ADC_DMA_GetRegAddr\n
AnnaBridge 189:f392fc9709a3 2377 * CDR RDATA_SLV LL_ADC_DMA_GetRegAddr
AnnaBridge 189:f392fc9709a3 2378 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2379 * @param Register This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2380 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA
AnnaBridge 189:f392fc9709a3 2381 * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA_MULTI (1)
AnnaBridge 189:f392fc9709a3 2382 *
AnnaBridge 189:f392fc9709a3 2383 * (1) Available on devices with several ADC instances.
AnnaBridge 189:f392fc9709a3 2384 * @retval ADC register address
AnnaBridge 189:f392fc9709a3 2385 */
AnnaBridge 189:f392fc9709a3 2386 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 2387 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
AnnaBridge 189:f392fc9709a3 2388 {
AnnaBridge 189:f392fc9709a3 2389 register uint32_t data_reg_addr = 0U;
AnnaBridge 189:f392fc9709a3 2390
AnnaBridge 189:f392fc9709a3 2391 if (Register == LL_ADC_DMA_REG_REGULAR_DATA)
AnnaBridge 189:f392fc9709a3 2392 {
AnnaBridge 189:f392fc9709a3 2393 /* Retrieve address of register DR */
AnnaBridge 189:f392fc9709a3 2394 data_reg_addr = (uint32_t)&(ADCx->DR);
AnnaBridge 189:f392fc9709a3 2395 }
AnnaBridge 189:f392fc9709a3 2396 else /* (Register == LL_ADC_DMA_REG_REGULAR_DATA_MULTI) */
AnnaBridge 189:f392fc9709a3 2397 {
AnnaBridge 189:f392fc9709a3 2398 /* Retrieve address of register CDR */
AnnaBridge 189:f392fc9709a3 2399 data_reg_addr = (uint32_t)&((__LL_ADC_COMMON_INSTANCE(ADCx))->CDR);
AnnaBridge 189:f392fc9709a3 2400 }
AnnaBridge 189:f392fc9709a3 2401
AnnaBridge 189:f392fc9709a3 2402 return data_reg_addr;
AnnaBridge 189:f392fc9709a3 2403 }
AnnaBridge 189:f392fc9709a3 2404 #else
AnnaBridge 189:f392fc9709a3 2405 __STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register)
AnnaBridge 189:f392fc9709a3 2406 {
AnnaBridge 189:f392fc9709a3 2407 /* Retrieve address of register DR */
AnnaBridge 189:f392fc9709a3 2408 return (uint32_t)&(ADCx->DR);
AnnaBridge 189:f392fc9709a3 2409 }
AnnaBridge 189:f392fc9709a3 2410 #endif
AnnaBridge 189:f392fc9709a3 2411
AnnaBridge 189:f392fc9709a3 2412 /**
AnnaBridge 189:f392fc9709a3 2413 * @}
AnnaBridge 189:f392fc9709a3 2414 */
AnnaBridge 189:f392fc9709a3 2415
AnnaBridge 189:f392fc9709a3 2416 /** @defgroup ADC_LL_EF_Configuration_ADC_Common Configuration of ADC hierarchical scope: common to several ADC instances
AnnaBridge 189:f392fc9709a3 2417 * @{
AnnaBridge 189:f392fc9709a3 2418 */
AnnaBridge 189:f392fc9709a3 2419
AnnaBridge 189:f392fc9709a3 2420 /**
AnnaBridge 189:f392fc9709a3 2421 * @brief Set parameter common to several ADC: Clock source and prescaler.
AnnaBridge 189:f392fc9709a3 2422 * @note On this STM32 serie, if ADC group injected is used, some
AnnaBridge 189:f392fc9709a3 2423 * clock ratio constraints between ADC clock and AHB clock
AnnaBridge 189:f392fc9709a3 2424 * must be respected.
AnnaBridge 189:f392fc9709a3 2425 * Refer to reference manual.
AnnaBridge 189:f392fc9709a3 2426 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2427 * ADC state:
AnnaBridge 189:f392fc9709a3 2428 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 189:f392fc9709a3 2429 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 189:f392fc9709a3 2430 * ADC instance or by using helper macro helper macro
AnnaBridge 189:f392fc9709a3 2431 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 189:f392fc9709a3 2432 * @rmtoll CCR CKMODE LL_ADC_SetCommonClock\n
AnnaBridge 189:f392fc9709a3 2433 * CCR PRESC LL_ADC_SetCommonClock
AnnaBridge 189:f392fc9709a3 2434 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 2435 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 2436 * @param CommonClock This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2437 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV1
AnnaBridge 189:f392fc9709a3 2438 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2
AnnaBridge 189:f392fc9709a3 2439 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4
AnnaBridge 189:f392fc9709a3 2440 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV1
AnnaBridge 189:f392fc9709a3 2441 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV2
AnnaBridge 189:f392fc9709a3 2442 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV4
AnnaBridge 189:f392fc9709a3 2443 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV6
AnnaBridge 189:f392fc9709a3 2444 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV8
AnnaBridge 189:f392fc9709a3 2445 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV10
AnnaBridge 189:f392fc9709a3 2446 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV12
AnnaBridge 189:f392fc9709a3 2447 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV16
AnnaBridge 189:f392fc9709a3 2448 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV32
AnnaBridge 189:f392fc9709a3 2449 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV64
AnnaBridge 189:f392fc9709a3 2450 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV128
AnnaBridge 189:f392fc9709a3 2451 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV256
AnnaBridge 189:f392fc9709a3 2452 * @retval None
AnnaBridge 189:f392fc9709a3 2453 */
AnnaBridge 189:f392fc9709a3 2454 __STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock)
AnnaBridge 189:f392fc9709a3 2455 {
AnnaBridge 189:f392fc9709a3 2456 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_CKMODE | ADC_CCR_PRESC, CommonClock);
AnnaBridge 189:f392fc9709a3 2457 }
AnnaBridge 189:f392fc9709a3 2458
AnnaBridge 189:f392fc9709a3 2459 /**
AnnaBridge 189:f392fc9709a3 2460 * @brief Get parameter common to several ADC: Clock source and prescaler.
AnnaBridge 189:f392fc9709a3 2461 * @rmtoll CCR CKMODE LL_ADC_GetCommonClock\n
AnnaBridge 189:f392fc9709a3 2462 * CCR PRESC LL_ADC_GetCommonClock
AnnaBridge 189:f392fc9709a3 2463 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 2464 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 2465 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 2466 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV1
AnnaBridge 189:f392fc9709a3 2467 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2
AnnaBridge 189:f392fc9709a3 2468 * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4
AnnaBridge 189:f392fc9709a3 2469 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV1
AnnaBridge 189:f392fc9709a3 2470 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV2
AnnaBridge 189:f392fc9709a3 2471 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV4
AnnaBridge 189:f392fc9709a3 2472 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV6
AnnaBridge 189:f392fc9709a3 2473 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV8
AnnaBridge 189:f392fc9709a3 2474 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV10
AnnaBridge 189:f392fc9709a3 2475 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV12
AnnaBridge 189:f392fc9709a3 2476 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV16
AnnaBridge 189:f392fc9709a3 2477 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV32
AnnaBridge 189:f392fc9709a3 2478 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV64
AnnaBridge 189:f392fc9709a3 2479 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV128
AnnaBridge 189:f392fc9709a3 2480 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV256
AnnaBridge 189:f392fc9709a3 2481 */
AnnaBridge 189:f392fc9709a3 2482 __STATIC_INLINE uint32_t LL_ADC_GetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 2483 {
AnnaBridge 189:f392fc9709a3 2484 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_CKMODE | ADC_CCR_PRESC));
AnnaBridge 189:f392fc9709a3 2485 }
AnnaBridge 189:f392fc9709a3 2486
AnnaBridge 189:f392fc9709a3 2487 /**
AnnaBridge 189:f392fc9709a3 2488 * @brief Set parameter common to several ADC: measurement path to internal
AnnaBridge 189:f392fc9709a3 2489 * channels (VrefInt, temperature sensor, ...).
AnnaBridge 189:f392fc9709a3 2490 * @note One or several values can be selected.
AnnaBridge 189:f392fc9709a3 2491 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
AnnaBridge 189:f392fc9709a3 2492 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
AnnaBridge 189:f392fc9709a3 2493 * @note Stabilization time of measurement path to internal channel:
AnnaBridge 189:f392fc9709a3 2494 * After enabling internal paths, before starting ADC conversion,
AnnaBridge 189:f392fc9709a3 2495 * a delay is required for internal voltage reference and
AnnaBridge 189:f392fc9709a3 2496 * temperature sensor stabilization time.
AnnaBridge 189:f392fc9709a3 2497 * Refer to device datasheet.
AnnaBridge 189:f392fc9709a3 2498 * Refer to literal @ref LL_ADC_DELAY_VREFINT_STAB_US.
AnnaBridge 189:f392fc9709a3 2499 * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US.
AnnaBridge 189:f392fc9709a3 2500 * @note ADC internal channel sampling time constraint:
AnnaBridge 189:f392fc9709a3 2501 * For ADC conversion of internal channels,
AnnaBridge 189:f392fc9709a3 2502 * a sampling time minimum value is required.
AnnaBridge 189:f392fc9709a3 2503 * Refer to device datasheet.
AnnaBridge 189:f392fc9709a3 2504 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2505 * ADC state:
AnnaBridge 189:f392fc9709a3 2506 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 189:f392fc9709a3 2507 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 189:f392fc9709a3 2508 * ADC instance or by using helper macro helper macro
AnnaBridge 189:f392fc9709a3 2509 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 189:f392fc9709a3 2510 * @rmtoll CCR VREFEN LL_ADC_SetCommonPathInternalCh\n
AnnaBridge 189:f392fc9709a3 2511 * CCR TSEN LL_ADC_SetCommonPathInternalCh\n
AnnaBridge 189:f392fc9709a3 2512 * CCR VBATEN LL_ADC_SetCommonPathInternalCh
AnnaBridge 189:f392fc9709a3 2513 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 2514 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 2515 * @param PathInternal This parameter can be a combination of the following values:
AnnaBridge 189:f392fc9709a3 2516 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
AnnaBridge 189:f392fc9709a3 2517 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
AnnaBridge 189:f392fc9709a3 2518 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
AnnaBridge 189:f392fc9709a3 2519 * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
AnnaBridge 189:f392fc9709a3 2520 * @retval None
AnnaBridge 189:f392fc9709a3 2521 */
AnnaBridge 189:f392fc9709a3 2522 __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
AnnaBridge 189:f392fc9709a3 2523 {
AnnaBridge 189:f392fc9709a3 2524 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal);
AnnaBridge 189:f392fc9709a3 2525 }
AnnaBridge 189:f392fc9709a3 2526
AnnaBridge 189:f392fc9709a3 2527 /**
AnnaBridge 189:f392fc9709a3 2528 * @brief Get parameter common to several ADC: measurement path to internal
AnnaBridge 189:f392fc9709a3 2529 * channels (VrefInt, temperature sensor, ...).
AnnaBridge 189:f392fc9709a3 2530 * @note One or several values can be selected.
AnnaBridge 189:f392fc9709a3 2531 * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
AnnaBridge 189:f392fc9709a3 2532 * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
AnnaBridge 189:f392fc9709a3 2533 * @rmtoll CCR VREFEN LL_ADC_GetCommonPathInternalCh\n
AnnaBridge 189:f392fc9709a3 2534 * CCR TSEN LL_ADC_GetCommonPathInternalCh\n
AnnaBridge 189:f392fc9709a3 2535 * CCR VBATEN LL_ADC_GetCommonPathInternalCh
AnnaBridge 189:f392fc9709a3 2536 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 2537 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 2538 * @retval Returned value can be a combination of the following values:
AnnaBridge 189:f392fc9709a3 2539 * @arg @ref LL_ADC_PATH_INTERNAL_NONE
AnnaBridge 189:f392fc9709a3 2540 * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
AnnaBridge 189:f392fc9709a3 2541 * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
AnnaBridge 189:f392fc9709a3 2542 * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
AnnaBridge 189:f392fc9709a3 2543 */
AnnaBridge 189:f392fc9709a3 2544 __STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 2545 {
AnnaBridge 189:f392fc9709a3 2546 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN));
AnnaBridge 189:f392fc9709a3 2547 }
AnnaBridge 189:f392fc9709a3 2548
AnnaBridge 189:f392fc9709a3 2549 /**
AnnaBridge 189:f392fc9709a3 2550 * @}
AnnaBridge 189:f392fc9709a3 2551 */
AnnaBridge 189:f392fc9709a3 2552
AnnaBridge 189:f392fc9709a3 2553 /** @defgroup ADC_LL_EF_Configuration_ADC_Instance Configuration of ADC hierarchical scope: ADC instance
AnnaBridge 189:f392fc9709a3 2554 * @{
AnnaBridge 189:f392fc9709a3 2555 */
AnnaBridge 189:f392fc9709a3 2556
AnnaBridge 189:f392fc9709a3 2557 /**
AnnaBridge 189:f392fc9709a3 2558 * @brief Set ADC calibration factor in the mode single-ended
AnnaBridge 189:f392fc9709a3 2559 * or differential (for devices with differential mode available).
AnnaBridge 189:f392fc9709a3 2560 * @note This function is intended to set calibration parameters
AnnaBridge 189:f392fc9709a3 2561 * without having to perform a new calibration using
AnnaBridge 189:f392fc9709a3 2562 * @ref LL_ADC_StartCalibration().
AnnaBridge 189:f392fc9709a3 2563 * @note For devices with differential mode available:
AnnaBridge 189:f392fc9709a3 2564 * Calibration of offset is specific to each of
AnnaBridge 189:f392fc9709a3 2565 * single-ended and differential modes
AnnaBridge 189:f392fc9709a3 2566 * (calibration factor must be specified for each of these
AnnaBridge 189:f392fc9709a3 2567 * differential modes, if used afterwards and if the application
AnnaBridge 189:f392fc9709a3 2568 * requires their calibration).
AnnaBridge 189:f392fc9709a3 2569 * @note In case of setting calibration factors of both modes single ended
AnnaBridge 189:f392fc9709a3 2570 * and differential (parameter LL_ADC_BOTH_SINGLE_DIFF_ENDED):
AnnaBridge 189:f392fc9709a3 2571 * both calibration factors must be concatenated.
AnnaBridge 189:f392fc9709a3 2572 * To perform this processing, use helper macro
AnnaBridge 189:f392fc9709a3 2573 * @ref __LL_ADC_CALIB_FACTOR_SINGLE_DIFF().
AnnaBridge 189:f392fc9709a3 2574 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2575 * ADC state:
AnnaBridge 189:f392fc9709a3 2576 * ADC must be enabled, without calibration on going, without conversion
AnnaBridge 189:f392fc9709a3 2577 * on going on group regular.
AnnaBridge 189:f392fc9709a3 2578 * @rmtoll CALFACT CALFACT_S LL_ADC_SetCalibrationFactor\n
AnnaBridge 189:f392fc9709a3 2579 * CALFACT CALFACT_D LL_ADC_SetCalibrationFactor
AnnaBridge 189:f392fc9709a3 2580 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2581 * @param SingleDiff This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2582 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 189:f392fc9709a3 2583 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 189:f392fc9709a3 2584 * @arg @ref LL_ADC_BOTH_SINGLE_DIFF_ENDED
AnnaBridge 189:f392fc9709a3 2585 * @param CalibrationFactor Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 189:f392fc9709a3 2586 * @retval None
AnnaBridge 189:f392fc9709a3 2587 */
AnnaBridge 189:f392fc9709a3 2588 __STATIC_INLINE void LL_ADC_SetCalibrationFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff, uint32_t CalibrationFactor)
AnnaBridge 189:f392fc9709a3 2589 {
AnnaBridge 189:f392fc9709a3 2590 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 2591 MODIFY_REG(ADCx->CALFACT,
AnnaBridge 189:f392fc9709a3 2592 SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK,
AnnaBridge 189:f392fc9709a3 2593 CalibrationFactor << (((SingleDiff & ADC_SINGLEDIFF_CALIB_F_BIT_D_MASK) >> ADC_SINGLEDIFF_CALIB_F_BIT_D_SHIFT4) & ~(SingleDiff & ADC_CALFACT_CALFACT_S)));
AnnaBridge 189:f392fc9709a3 2594 #else
AnnaBridge 189:f392fc9709a3 2595 MODIFY_REG(ADCx->CALFACT,
AnnaBridge 189:f392fc9709a3 2596 SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK,
AnnaBridge 189:f392fc9709a3 2597 CalibrationFactor << POSITION_VAL(SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK));
AnnaBridge 189:f392fc9709a3 2598 #endif
AnnaBridge 189:f392fc9709a3 2599 }
AnnaBridge 189:f392fc9709a3 2600
AnnaBridge 189:f392fc9709a3 2601 /**
AnnaBridge 189:f392fc9709a3 2602 * @brief Get ADC calibration factor in the mode single-ended
AnnaBridge 189:f392fc9709a3 2603 * or differential (for devices with differential mode available).
AnnaBridge 189:f392fc9709a3 2604 * @note Calibration factors are set by hardware after performing
AnnaBridge 189:f392fc9709a3 2605 * a calibration run using function @ref LL_ADC_StartCalibration().
AnnaBridge 189:f392fc9709a3 2606 * @note For devices with differential mode available:
AnnaBridge 189:f392fc9709a3 2607 * Calibration of offset is specific to each of
AnnaBridge 189:f392fc9709a3 2608 * single-ended and differential modes
AnnaBridge 189:f392fc9709a3 2609 * @rmtoll CALFACT CALFACT_S LL_ADC_GetCalibrationFactor\n
AnnaBridge 189:f392fc9709a3 2610 * CALFACT CALFACT_D LL_ADC_GetCalibrationFactor
AnnaBridge 189:f392fc9709a3 2611 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2612 * @param SingleDiff This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2613 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 189:f392fc9709a3 2614 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 189:f392fc9709a3 2615 * @retval Value between Min_Data=0x00 and Max_Data=0x7F
AnnaBridge 189:f392fc9709a3 2616 */
AnnaBridge 189:f392fc9709a3 2617 __STATIC_INLINE uint32_t LL_ADC_GetCalibrationFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff)
AnnaBridge 189:f392fc9709a3 2618 {
AnnaBridge 189:f392fc9709a3 2619 /* Retrieve bits with position in register depending on parameter */
AnnaBridge 189:f392fc9709a3 2620 /* "SingleDiff". */
AnnaBridge 189:f392fc9709a3 2621 /* Parameter used with mask "ADC_SINGLEDIFF_CALIB_FACTOR_MASK" because */
AnnaBridge 189:f392fc9709a3 2622 /* containing other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 2623 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 2624 return (uint32_t)(READ_BIT(ADCx->CALFACT, (SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK)) >> ((SingleDiff & ADC_SINGLEDIFF_CALIB_F_BIT_D_MASK) >> ADC_SINGLEDIFF_CALIB_F_BIT_D_SHIFT4));
AnnaBridge 189:f392fc9709a3 2625 #else
AnnaBridge 189:f392fc9709a3 2626 return (uint32_t)(READ_BIT(ADCx->CALFACT, (SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK)) >> POSITION_VAL(SingleDiff & ADC_SINGLEDIFF_CALIB_FACTOR_MASK));
AnnaBridge 189:f392fc9709a3 2627 #endif
AnnaBridge 189:f392fc9709a3 2628 }
AnnaBridge 189:f392fc9709a3 2629
AnnaBridge 189:f392fc9709a3 2630 /**
AnnaBridge 189:f392fc9709a3 2631 * @brief Set ADC resolution.
AnnaBridge 189:f392fc9709a3 2632 * Refer to reference manual for alignments formats
AnnaBridge 189:f392fc9709a3 2633 * dependencies to ADC resolutions.
AnnaBridge 189:f392fc9709a3 2634 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2635 * ADC state:
AnnaBridge 189:f392fc9709a3 2636 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 2637 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 2638 * @rmtoll CFGR RES LL_ADC_SetResolution
AnnaBridge 189:f392fc9709a3 2639 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2640 * @param Resolution This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2641 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2642 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2643 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2644 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2645 * @retval None
AnnaBridge 189:f392fc9709a3 2646 */
AnnaBridge 189:f392fc9709a3 2647 __STATIC_INLINE void LL_ADC_SetResolution(ADC_TypeDef *ADCx, uint32_t Resolution)
AnnaBridge 189:f392fc9709a3 2648 {
AnnaBridge 189:f392fc9709a3 2649 MODIFY_REG(ADCx->CFGR, ADC_CFGR_RES, Resolution);
AnnaBridge 189:f392fc9709a3 2650 }
AnnaBridge 189:f392fc9709a3 2651
AnnaBridge 189:f392fc9709a3 2652 /**
AnnaBridge 189:f392fc9709a3 2653 * @brief Get ADC resolution.
AnnaBridge 189:f392fc9709a3 2654 * Refer to reference manual for alignments formats
AnnaBridge 189:f392fc9709a3 2655 * dependencies to ADC resolutions.
AnnaBridge 189:f392fc9709a3 2656 * @rmtoll CFGR RES LL_ADC_GetResolution
AnnaBridge 189:f392fc9709a3 2657 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2658 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 2659 * @arg @ref LL_ADC_RESOLUTION_12B
AnnaBridge 189:f392fc9709a3 2660 * @arg @ref LL_ADC_RESOLUTION_10B
AnnaBridge 189:f392fc9709a3 2661 * @arg @ref LL_ADC_RESOLUTION_8B
AnnaBridge 189:f392fc9709a3 2662 * @arg @ref LL_ADC_RESOLUTION_6B
AnnaBridge 189:f392fc9709a3 2663 */
AnnaBridge 189:f392fc9709a3 2664 __STATIC_INLINE uint32_t LL_ADC_GetResolution(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 2665 {
AnnaBridge 189:f392fc9709a3 2666 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_RES));
AnnaBridge 189:f392fc9709a3 2667 }
AnnaBridge 189:f392fc9709a3 2668
AnnaBridge 189:f392fc9709a3 2669 /**
AnnaBridge 189:f392fc9709a3 2670 * @brief Set ADC conversion data alignment.
AnnaBridge 189:f392fc9709a3 2671 * @note Refer to reference manual for alignments formats
AnnaBridge 189:f392fc9709a3 2672 * dependencies to ADC resolutions.
AnnaBridge 189:f392fc9709a3 2673 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2674 * ADC state:
AnnaBridge 189:f392fc9709a3 2675 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 2676 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 2677 * @rmtoll CFGR ALIGN LL_ADC_SetDataAlignment
AnnaBridge 189:f392fc9709a3 2678 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2679 * @param DataAlignment This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2680 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
AnnaBridge 189:f392fc9709a3 2681 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
AnnaBridge 189:f392fc9709a3 2682 * @retval None
AnnaBridge 189:f392fc9709a3 2683 */
AnnaBridge 189:f392fc9709a3 2684 __STATIC_INLINE void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment)
AnnaBridge 189:f392fc9709a3 2685 {
AnnaBridge 189:f392fc9709a3 2686 MODIFY_REG(ADCx->CFGR, ADC_CFGR_ALIGN, DataAlignment);
AnnaBridge 189:f392fc9709a3 2687 }
AnnaBridge 189:f392fc9709a3 2688
AnnaBridge 189:f392fc9709a3 2689 /**
AnnaBridge 189:f392fc9709a3 2690 * @brief Get ADC conversion data alignment.
AnnaBridge 189:f392fc9709a3 2691 * @note Refer to reference manual for alignments formats
AnnaBridge 189:f392fc9709a3 2692 * dependencies to ADC resolutions.
AnnaBridge 189:f392fc9709a3 2693 * @rmtoll CFGR ALIGN LL_ADC_GetDataAlignment
AnnaBridge 189:f392fc9709a3 2694 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2695 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 2696 * @arg @ref LL_ADC_DATA_ALIGN_RIGHT
AnnaBridge 189:f392fc9709a3 2697 * @arg @ref LL_ADC_DATA_ALIGN_LEFT
AnnaBridge 189:f392fc9709a3 2698 */
AnnaBridge 189:f392fc9709a3 2699 __STATIC_INLINE uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 2700 {
AnnaBridge 189:f392fc9709a3 2701 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_ALIGN));
AnnaBridge 189:f392fc9709a3 2702 }
AnnaBridge 189:f392fc9709a3 2703
AnnaBridge 189:f392fc9709a3 2704 /**
AnnaBridge 189:f392fc9709a3 2705 * @brief Set ADC low power mode.
AnnaBridge 189:f392fc9709a3 2706 * @note Description of ADC low power modes:
AnnaBridge 189:f392fc9709a3 2707 * - ADC low power mode "auto wait": Dynamic low power mode,
AnnaBridge 189:f392fc9709a3 2708 * ADC conversions occurrences are limited to the minimum necessary
AnnaBridge 189:f392fc9709a3 2709 * in order to reduce power consumption.
AnnaBridge 189:f392fc9709a3 2710 * New ADC conversion starts only when the previous
AnnaBridge 189:f392fc9709a3 2711 * unitary conversion data (for ADC group regular)
AnnaBridge 189:f392fc9709a3 2712 * or previous sequence conversions data (for ADC group injected)
AnnaBridge 189:f392fc9709a3 2713 * has been retrieved by user software.
AnnaBridge 189:f392fc9709a3 2714 * In the meantime, ADC remains idle: does not performs any
AnnaBridge 189:f392fc9709a3 2715 * other conversion.
AnnaBridge 189:f392fc9709a3 2716 * This mode allows to automatically adapt the ADC conversions
AnnaBridge 189:f392fc9709a3 2717 * triggers to the speed of the software that reads the data.
AnnaBridge 189:f392fc9709a3 2718 * Moreover, this avoids risk of overrun for low frequency
AnnaBridge 189:f392fc9709a3 2719 * applications.
AnnaBridge 189:f392fc9709a3 2720 * How to use this low power mode:
AnnaBridge 189:f392fc9709a3 2721 * - Do not use with interruption or DMA since these modes
AnnaBridge 189:f392fc9709a3 2722 * have to clear immediately the EOC flag to free the
AnnaBridge 189:f392fc9709a3 2723 * IRQ vector sequencer.
AnnaBridge 189:f392fc9709a3 2724 * - Do use with polling: 1. Start conversion,
AnnaBridge 189:f392fc9709a3 2725 * 2. Later on, when conversion data is needed: poll for end of
AnnaBridge 189:f392fc9709a3 2726 * conversion to ensure that conversion is completed and
AnnaBridge 189:f392fc9709a3 2727 * retrieve ADC conversion data. This will trig another
AnnaBridge 189:f392fc9709a3 2728 * ADC conversion start.
AnnaBridge 189:f392fc9709a3 2729 * - ADC low power mode "auto power-off" (feature available on
AnnaBridge 189:f392fc9709a3 2730 * this device if parameter LL_ADC_LP_MODE_AUTOOFF is available):
AnnaBridge 189:f392fc9709a3 2731 * the ADC automatically powers-off after a conversion and
AnnaBridge 189:f392fc9709a3 2732 * automatically wakes up when a new conversion is triggered
AnnaBridge 189:f392fc9709a3 2733 * (with startup time between trigger and start of sampling).
AnnaBridge 189:f392fc9709a3 2734 * This feature can be combined with low power mode "auto wait".
AnnaBridge 189:f392fc9709a3 2735 * @note With ADC low power mode "auto wait", the ADC conversion data read
AnnaBridge 189:f392fc9709a3 2736 * is corresponding to previous ADC conversion start, independently
AnnaBridge 189:f392fc9709a3 2737 * of delay during which ADC was idle.
AnnaBridge 189:f392fc9709a3 2738 * Therefore, the ADC conversion data may be outdated: does not
AnnaBridge 189:f392fc9709a3 2739 * correspond to the current voltage level on the selected
AnnaBridge 189:f392fc9709a3 2740 * ADC channel.
AnnaBridge 189:f392fc9709a3 2741 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2742 * ADC state:
AnnaBridge 189:f392fc9709a3 2743 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 2744 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 2745 * @rmtoll CFGR AUTDLY LL_ADC_SetLowPowerMode
AnnaBridge 189:f392fc9709a3 2746 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2747 * @param LowPowerMode This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2748 * @arg @ref LL_ADC_LP_MODE_NONE
AnnaBridge 189:f392fc9709a3 2749 * @arg @ref LL_ADC_LP_AUTOWAIT
AnnaBridge 189:f392fc9709a3 2750 * @retval None
AnnaBridge 189:f392fc9709a3 2751 */
AnnaBridge 189:f392fc9709a3 2752 __STATIC_INLINE void LL_ADC_SetLowPowerMode(ADC_TypeDef *ADCx, uint32_t LowPowerMode)
AnnaBridge 189:f392fc9709a3 2753 {
AnnaBridge 189:f392fc9709a3 2754 MODIFY_REG(ADCx->CFGR, ADC_CFGR_AUTDLY, LowPowerMode);
AnnaBridge 189:f392fc9709a3 2755 }
AnnaBridge 189:f392fc9709a3 2756
AnnaBridge 189:f392fc9709a3 2757 /**
AnnaBridge 189:f392fc9709a3 2758 * @brief Get ADC low power mode:
AnnaBridge 189:f392fc9709a3 2759 * @note Description of ADC low power modes:
AnnaBridge 189:f392fc9709a3 2760 * - ADC low power mode "auto wait": Dynamic low power mode,
AnnaBridge 189:f392fc9709a3 2761 * ADC conversions occurrences are limited to the minimum necessary
AnnaBridge 189:f392fc9709a3 2762 * in order to reduce power consumption.
AnnaBridge 189:f392fc9709a3 2763 * New ADC conversion starts only when the previous
AnnaBridge 189:f392fc9709a3 2764 * unitary conversion data (for ADC group regular)
AnnaBridge 189:f392fc9709a3 2765 * or previous sequence conversions data (for ADC group injected)
AnnaBridge 189:f392fc9709a3 2766 * has been retrieved by user software.
AnnaBridge 189:f392fc9709a3 2767 * In the meantime, ADC remains idle: does not performs any
AnnaBridge 189:f392fc9709a3 2768 * other conversion.
AnnaBridge 189:f392fc9709a3 2769 * This mode allows to automatically adapt the ADC conversions
AnnaBridge 189:f392fc9709a3 2770 * triggers to the speed of the software that reads the data.
AnnaBridge 189:f392fc9709a3 2771 * Moreover, this avoids risk of overrun for low frequency
AnnaBridge 189:f392fc9709a3 2772 * applications.
AnnaBridge 189:f392fc9709a3 2773 * How to use this low power mode:
AnnaBridge 189:f392fc9709a3 2774 * - Do not use with interruption or DMA since these modes
AnnaBridge 189:f392fc9709a3 2775 * have to clear immediately the EOC flag to free the
AnnaBridge 189:f392fc9709a3 2776 * IRQ vector sequencer.
AnnaBridge 189:f392fc9709a3 2777 * - Do use with polling: 1. Start conversion,
AnnaBridge 189:f392fc9709a3 2778 * 2. Later on, when conversion data is needed: poll for end of
AnnaBridge 189:f392fc9709a3 2779 * conversion to ensure that conversion is completed and
AnnaBridge 189:f392fc9709a3 2780 * retrieve ADC conversion data. This will trig another
AnnaBridge 189:f392fc9709a3 2781 * ADC conversion start.
AnnaBridge 189:f392fc9709a3 2782 * - ADC low power mode "auto power-off" (feature available on
AnnaBridge 189:f392fc9709a3 2783 * this device if parameter LL_ADC_LP_MODE_AUTOOFF is available):
AnnaBridge 189:f392fc9709a3 2784 * the ADC automatically powers-off after a conversion and
AnnaBridge 189:f392fc9709a3 2785 * automatically wakes up when a new conversion is triggered
AnnaBridge 189:f392fc9709a3 2786 * (with startup time between trigger and start of sampling).
AnnaBridge 189:f392fc9709a3 2787 * This feature can be combined with low power mode "auto wait".
AnnaBridge 189:f392fc9709a3 2788 * @note With ADC low power mode "auto wait", the ADC conversion data read
AnnaBridge 189:f392fc9709a3 2789 * is corresponding to previous ADC conversion start, independently
AnnaBridge 189:f392fc9709a3 2790 * of delay during which ADC was idle.
AnnaBridge 189:f392fc9709a3 2791 * Therefore, the ADC conversion data may be outdated: does not
AnnaBridge 189:f392fc9709a3 2792 * correspond to the current voltage level on the selected
AnnaBridge 189:f392fc9709a3 2793 * ADC channel.
AnnaBridge 189:f392fc9709a3 2794 * @rmtoll CFGR AUTDLY LL_ADC_GetLowPowerMode
AnnaBridge 189:f392fc9709a3 2795 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2796 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 2797 * @arg @ref LL_ADC_LP_MODE_NONE
AnnaBridge 189:f392fc9709a3 2798 * @arg @ref LL_ADC_LP_AUTOWAIT
AnnaBridge 189:f392fc9709a3 2799 */
AnnaBridge 189:f392fc9709a3 2800 __STATIC_INLINE uint32_t LL_ADC_GetLowPowerMode(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 2801 {
AnnaBridge 189:f392fc9709a3 2802 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_AUTDLY));
AnnaBridge 189:f392fc9709a3 2803 }
AnnaBridge 189:f392fc9709a3 2804
AnnaBridge 189:f392fc9709a3 2805 /**
AnnaBridge 189:f392fc9709a3 2806 * @brief Set ADC selected offset number 1, 2, 3 or 4.
AnnaBridge 189:f392fc9709a3 2807 * @note This function set the 2 items of offset configuration:
AnnaBridge 189:f392fc9709a3 2808 * - ADC channel to which the offset programmed will be applied
AnnaBridge 189:f392fc9709a3 2809 * (independently of channel mapped on ADC group regular
AnnaBridge 189:f392fc9709a3 2810 * or group injected)
AnnaBridge 189:f392fc9709a3 2811 * - Offset level (offset to be subtracted from the raw
AnnaBridge 189:f392fc9709a3 2812 * converted data).
AnnaBridge 189:f392fc9709a3 2813 * @note Caution: Offset format is dependent to ADC resolution:
AnnaBridge 189:f392fc9709a3 2814 * offset has to be left-aligned on bit 11, the LSB (right bits)
AnnaBridge 189:f392fc9709a3 2815 * are set to 0.
AnnaBridge 189:f392fc9709a3 2816 * @note This function enables the offset, by default. It can be forced
AnnaBridge 189:f392fc9709a3 2817 * to disable state using function LL_ADC_SetOffsetState().
AnnaBridge 189:f392fc9709a3 2818 * @note If a channel is mapped on several offsets numbers, only the offset
AnnaBridge 189:f392fc9709a3 2819 * with the lowest value is considered for the subtraction.
AnnaBridge 189:f392fc9709a3 2820 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 2821 * ADC state:
AnnaBridge 189:f392fc9709a3 2822 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 2823 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 2824 * @note On STM32L4, some fast channels are available: fast analog inputs
AnnaBridge 189:f392fc9709a3 2825 * coming from GPIO pads (ADC_IN1..5).
AnnaBridge 189:f392fc9709a3 2826 * @rmtoll OFR1 OFFSET1_CH LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2827 * OFR1 OFFSET1 LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2828 * OFR1 OFFSET1_EN LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2829 * OFR2 OFFSET2_CH LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2830 * OFR2 OFFSET2 LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2831 * OFR2 OFFSET2_EN LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2832 * OFR3 OFFSET3_CH LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2833 * OFR3 OFFSET3 LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2834 * OFR3 OFFSET3_EN LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2835 * OFR4 OFFSET4_CH LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2836 * OFR4 OFFSET4 LL_ADC_SetOffset\n
AnnaBridge 189:f392fc9709a3 2837 * OFR4 OFFSET4_EN LL_ADC_SetOffset
AnnaBridge 189:f392fc9709a3 2838 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2839 * @param Offsety This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2840 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 189:f392fc9709a3 2841 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 189:f392fc9709a3 2842 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 189:f392fc9709a3 2843 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 189:f392fc9709a3 2844 * @param Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2845 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 2846 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 2847 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 2848 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 2849 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 2850 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 2851 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 2852 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 2853 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 2854 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 2855 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 2856 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 2857 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 2858 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 2859 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 2860 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 2861 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 2862 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 2863 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 2864 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 2865 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 2866 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 2867 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 2868 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 2869 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 2870 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 2871 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 2872 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 2873 *
AnnaBridge 189:f392fc9709a3 2874 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 2875 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 2876 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 2877 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 2878 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 2879 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 2880 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 2881 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 2882 * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 2883 * @retval None
AnnaBridge 189:f392fc9709a3 2884 */
AnnaBridge 189:f392fc9709a3 2885 __STATIC_INLINE void LL_ADC_SetOffset(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t Channel, uint32_t OffsetLevel)
AnnaBridge 189:f392fc9709a3 2886 {
AnnaBridge 189:f392fc9709a3 2887 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 189:f392fc9709a3 2888
AnnaBridge 189:f392fc9709a3 2889 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 2890 ADC_OFR1_OFFSET1_EN | ADC_OFR1_OFFSET1_CH | ADC_OFR1_OFFSET1,
AnnaBridge 189:f392fc9709a3 2891 ADC_OFR1_OFFSET1_EN | (Channel & ADC_CHANNEL_ID_NUMBER_MASK) | OffsetLevel);
AnnaBridge 189:f392fc9709a3 2892 }
AnnaBridge 189:f392fc9709a3 2893
AnnaBridge 189:f392fc9709a3 2894 /**
AnnaBridge 189:f392fc9709a3 2895 * @brief Get for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 189:f392fc9709a3 2896 * Channel to which the offset programmed will be applied
AnnaBridge 189:f392fc9709a3 2897 * (independently of channel mapped on ADC group regular
AnnaBridge 189:f392fc9709a3 2898 * or group injected)
AnnaBridge 189:f392fc9709a3 2899 * @note Usage of the returned channel number:
AnnaBridge 189:f392fc9709a3 2900 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 189:f392fc9709a3 2901 * the returned channel number is only partly formatted on definition
AnnaBridge 189:f392fc9709a3 2902 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 189:f392fc9709a3 2903 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 189:f392fc9709a3 2904 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 2905 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 189:f392fc9709a3 2906 * as parameter for another function.
AnnaBridge 189:f392fc9709a3 2907 * - To get the channel number in decimal format:
AnnaBridge 189:f392fc9709a3 2908 * process the returned value with the helper macro
AnnaBridge 189:f392fc9709a3 2909 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 2910 * @note On STM32L4, some fast channels are available: fast analog inputs
AnnaBridge 189:f392fc9709a3 2911 * coming from GPIO pads (ADC_IN1..5).
AnnaBridge 189:f392fc9709a3 2912 * @rmtoll OFR1 OFFSET1_CH LL_ADC_GetOffsetChannel\n
AnnaBridge 189:f392fc9709a3 2913 * OFR2 OFFSET2_CH LL_ADC_GetOffsetChannel\n
AnnaBridge 189:f392fc9709a3 2914 * OFR3 OFFSET3_CH LL_ADC_GetOffsetChannel\n
AnnaBridge 189:f392fc9709a3 2915 * OFR4 OFFSET4_CH LL_ADC_GetOffsetChannel
AnnaBridge 189:f392fc9709a3 2916 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2917 * @param Offsety This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2918 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 189:f392fc9709a3 2919 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 189:f392fc9709a3 2920 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 189:f392fc9709a3 2921 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 189:f392fc9709a3 2922 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 2923 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 2924 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 2925 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 2926 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 2927 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 2928 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 2929 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 2930 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 2931 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 2932 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 2933 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 2934 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 2935 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 2936 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 2937 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 2938 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 2939 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 2940 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 2941 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 2942 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 2943 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 2944 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 2945 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 2946 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 2947 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 2948 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 2949 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 2950 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 2951 *
AnnaBridge 189:f392fc9709a3 2952 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 2953 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 2954 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 2955 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 2956 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 2957 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 2958 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 2959 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 189:f392fc9709a3 2960 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 189:f392fc9709a3 2961 * comparison with internal channel parameter to be done
AnnaBridge 189:f392fc9709a3 2962 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 189:f392fc9709a3 2963 */
AnnaBridge 189:f392fc9709a3 2964 __STATIC_INLINE uint32_t LL_ADC_GetOffsetChannel(ADC_TypeDef *ADCx, uint32_t Offsety)
AnnaBridge 189:f392fc9709a3 2965 {
AnnaBridge 189:f392fc9709a3 2966 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 189:f392fc9709a3 2967
AnnaBridge 189:f392fc9709a3 2968 return (uint32_t) READ_BIT(*preg, ADC_OFR1_OFFSET1_CH);
AnnaBridge 189:f392fc9709a3 2969 }
AnnaBridge 189:f392fc9709a3 2970
AnnaBridge 189:f392fc9709a3 2971 /**
AnnaBridge 189:f392fc9709a3 2972 * @brief Get for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 189:f392fc9709a3 2973 * Offset level (offset to be subtracted from the raw
AnnaBridge 189:f392fc9709a3 2974 * converted data).
AnnaBridge 189:f392fc9709a3 2975 * @note Caution: Offset format is dependent to ADC resolution:
AnnaBridge 189:f392fc9709a3 2976 * offset has to be left-aligned on bit 11, the LSB (right bits)
AnnaBridge 189:f392fc9709a3 2977 * are set to 0.
AnnaBridge 189:f392fc9709a3 2978 * @rmtoll OFR1 OFFSET1 LL_ADC_GetOffsetLevel\n
AnnaBridge 189:f392fc9709a3 2979 * OFR2 OFFSET2 LL_ADC_GetOffsetLevel\n
AnnaBridge 189:f392fc9709a3 2980 * OFR3 OFFSET3 LL_ADC_GetOffsetLevel\n
AnnaBridge 189:f392fc9709a3 2981 * OFR4 OFFSET4 LL_ADC_GetOffsetLevel
AnnaBridge 189:f392fc9709a3 2982 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 2983 * @param Offsety This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 2984 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 189:f392fc9709a3 2985 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 189:f392fc9709a3 2986 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 189:f392fc9709a3 2987 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 189:f392fc9709a3 2988 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 2989 */
AnnaBridge 189:f392fc9709a3 2990 __STATIC_INLINE uint32_t LL_ADC_GetOffsetLevel(ADC_TypeDef *ADCx, uint32_t Offsety)
AnnaBridge 189:f392fc9709a3 2991 {
AnnaBridge 189:f392fc9709a3 2992 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 189:f392fc9709a3 2993
AnnaBridge 189:f392fc9709a3 2994 return (uint32_t) READ_BIT(*preg, ADC_OFR1_OFFSET1);
AnnaBridge 189:f392fc9709a3 2995 }
AnnaBridge 189:f392fc9709a3 2996
AnnaBridge 189:f392fc9709a3 2997 /**
AnnaBridge 189:f392fc9709a3 2998 * @brief Set for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 189:f392fc9709a3 2999 * force offset state disable or enable
AnnaBridge 189:f392fc9709a3 3000 * without modifying offset channel or offset value.
AnnaBridge 189:f392fc9709a3 3001 * @note This function should be needed only in case of offset to be
AnnaBridge 189:f392fc9709a3 3002 * enabled-disabled dynamically, and should not be needed in other cases:
AnnaBridge 189:f392fc9709a3 3003 * function LL_ADC_SetOffset() automatically enables the offset.
AnnaBridge 189:f392fc9709a3 3004 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3005 * ADC state:
AnnaBridge 189:f392fc9709a3 3006 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3007 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3008 * @rmtoll OFR1 OFFSET1_EN LL_ADC_SetOffsetState\n
AnnaBridge 189:f392fc9709a3 3009 * OFR2 OFFSET2_EN LL_ADC_SetOffsetState\n
AnnaBridge 189:f392fc9709a3 3010 * OFR3 OFFSET3_EN LL_ADC_SetOffsetState\n
AnnaBridge 189:f392fc9709a3 3011 * OFR4 OFFSET4_EN LL_ADC_SetOffsetState
AnnaBridge 189:f392fc9709a3 3012 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3013 * @param Offsety This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3014 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 189:f392fc9709a3 3015 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 189:f392fc9709a3 3016 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 189:f392fc9709a3 3017 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 189:f392fc9709a3 3018 * @param OffsetState This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3019 * @arg @ref LL_ADC_OFFSET_DISABLE
AnnaBridge 189:f392fc9709a3 3020 * @arg @ref LL_ADC_OFFSET_ENABLE
AnnaBridge 189:f392fc9709a3 3021 * @retval None
AnnaBridge 189:f392fc9709a3 3022 */
AnnaBridge 189:f392fc9709a3 3023 __STATIC_INLINE void LL_ADC_SetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetState)
AnnaBridge 189:f392fc9709a3 3024 {
AnnaBridge 189:f392fc9709a3 3025 register uint32_t *preg = (uint32_t *)((uint32_t)
AnnaBridge 189:f392fc9709a3 3026 ((uint32_t)(&ADCx->OFR1) + (Offsety*4U)));
AnnaBridge 189:f392fc9709a3 3027
AnnaBridge 189:f392fc9709a3 3028 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 3029 ADC_OFR1_OFFSET1_EN,
AnnaBridge 189:f392fc9709a3 3030 OffsetState);
AnnaBridge 189:f392fc9709a3 3031 }
AnnaBridge 189:f392fc9709a3 3032
AnnaBridge 189:f392fc9709a3 3033 /**
AnnaBridge 189:f392fc9709a3 3034 * @brief Get for the ADC selected offset number 1, 2, 3 or 4:
AnnaBridge 189:f392fc9709a3 3035 * offset state disabled or enabled.
AnnaBridge 189:f392fc9709a3 3036 * @rmtoll OFR1 OFFSET1_EN LL_ADC_GetOffsetState\n
AnnaBridge 189:f392fc9709a3 3037 * OFR2 OFFSET2_EN LL_ADC_GetOffsetState\n
AnnaBridge 189:f392fc9709a3 3038 * OFR3 OFFSET3_EN LL_ADC_GetOffsetState\n
AnnaBridge 189:f392fc9709a3 3039 * OFR4 OFFSET4_EN LL_ADC_GetOffsetState
AnnaBridge 189:f392fc9709a3 3040 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3041 * @param Offsety This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3042 * @arg @ref LL_ADC_OFFSET_1
AnnaBridge 189:f392fc9709a3 3043 * @arg @ref LL_ADC_OFFSET_2
AnnaBridge 189:f392fc9709a3 3044 * @arg @ref LL_ADC_OFFSET_3
AnnaBridge 189:f392fc9709a3 3045 * @arg @ref LL_ADC_OFFSET_4
AnnaBridge 189:f392fc9709a3 3046 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3047 * @arg @ref LL_ADC_OFFSET_DISABLE
AnnaBridge 189:f392fc9709a3 3048 * @arg @ref LL_ADC_OFFSET_ENABLE
AnnaBridge 189:f392fc9709a3 3049 */
AnnaBridge 189:f392fc9709a3 3050 __STATIC_INLINE uint32_t LL_ADC_GetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety)
AnnaBridge 189:f392fc9709a3 3051 {
AnnaBridge 189:f392fc9709a3 3052 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety);
AnnaBridge 189:f392fc9709a3 3053
AnnaBridge 189:f392fc9709a3 3054 return (uint32_t) READ_BIT(*preg, ADC_OFR1_OFFSET1_EN);
AnnaBridge 189:f392fc9709a3 3055 }
AnnaBridge 189:f392fc9709a3 3056
AnnaBridge 189:f392fc9709a3 3057 #if defined(ADC_SMPR1_SMPPLUS)
AnnaBridge 189:f392fc9709a3 3058 /**
AnnaBridge 189:f392fc9709a3 3059 * @brief Set ADC sampling time common configuration impacting
AnnaBridge 189:f392fc9709a3 3060 * settings of sampling time channel wise.
AnnaBridge 189:f392fc9709a3 3061 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3062 * ADC state:
AnnaBridge 189:f392fc9709a3 3063 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3064 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3065 * @rmtoll SMPR1 SMPPLUS LL_ADC_SetSamplingTimeCommonConfig
AnnaBridge 189:f392fc9709a3 3066 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3067 * @param SamplingTimeCommonConfig This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3068 * @arg @ref LL_ADC_SAMPLINGTIME_COMMON_DEFAULT
AnnaBridge 189:f392fc9709a3 3069 * @arg @ref LL_ADC_SAMPLINGTIME_COMMON_3C5_REPL_2C5
AnnaBridge 189:f392fc9709a3 3070 * @retval None
AnnaBridge 189:f392fc9709a3 3071 */
AnnaBridge 189:f392fc9709a3 3072 __STATIC_INLINE void LL_ADC_SetSamplingTimeCommonConfig(ADC_TypeDef *ADCx, uint32_t SamplingTimeCommonConfig)
AnnaBridge 189:f392fc9709a3 3073 {
AnnaBridge 189:f392fc9709a3 3074 MODIFY_REG(ADCx->SMPR1, ADC_SMPR1_SMPPLUS, SamplingTimeCommonConfig);
AnnaBridge 189:f392fc9709a3 3075 }
AnnaBridge 189:f392fc9709a3 3076
AnnaBridge 189:f392fc9709a3 3077 /**
AnnaBridge 189:f392fc9709a3 3078 * @brief Get ADC sampling time common configuration impacting
AnnaBridge 189:f392fc9709a3 3079 * settings of sampling time channel wise.
AnnaBridge 189:f392fc9709a3 3080 * @rmtoll SMPR1 SMPPLUS LL_ADC_GetSamplingTimeCommonConfig
AnnaBridge 189:f392fc9709a3 3081 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3082 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3083 * @arg @ref LL_ADC_SAMPLINGTIME_COMMON_DEFAULT
AnnaBridge 189:f392fc9709a3 3084 * @arg @ref LL_ADC_SAMPLINGTIME_COMMON_3C5_REPL_2C5
AnnaBridge 189:f392fc9709a3 3085 */
AnnaBridge 189:f392fc9709a3 3086 __STATIC_INLINE uint32_t LL_ADC_GetSamplingTimeCommonConfig(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3087 {
AnnaBridge 189:f392fc9709a3 3088 return (uint32_t)(READ_BIT(ADCx->SMPR1, ADC_SMPR1_SMPPLUS));
AnnaBridge 189:f392fc9709a3 3089 }
AnnaBridge 189:f392fc9709a3 3090 #endif /* ADC_SMPR1_SMPPLUS */
AnnaBridge 189:f392fc9709a3 3091
AnnaBridge 189:f392fc9709a3 3092 /**
AnnaBridge 189:f392fc9709a3 3093 * @}
AnnaBridge 189:f392fc9709a3 3094 */
AnnaBridge 189:f392fc9709a3 3095
AnnaBridge 189:f392fc9709a3 3096 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Regular Configuration of ADC hierarchical scope: group regular
AnnaBridge 189:f392fc9709a3 3097 * @{
AnnaBridge 189:f392fc9709a3 3098 */
AnnaBridge 189:f392fc9709a3 3099
AnnaBridge 189:f392fc9709a3 3100 /**
AnnaBridge 189:f392fc9709a3 3101 * @brief Set ADC group regular conversion trigger source:
AnnaBridge 189:f392fc9709a3 3102 * internal (SW start) or from external IP (timer event,
AnnaBridge 189:f392fc9709a3 3103 * external interrupt line).
AnnaBridge 189:f392fc9709a3 3104 * @note On this STM32 serie, setting trigger source to external trigger
AnnaBridge 189:f392fc9709a3 3105 * also set trigger polarity to rising edge
AnnaBridge 189:f392fc9709a3 3106 * (default setting for compatibility with some ADC on other
AnnaBridge 189:f392fc9709a3 3107 * STM32 families having this setting set by HW default value).
AnnaBridge 189:f392fc9709a3 3108 * In case of need to modify trigger edge, use
AnnaBridge 189:f392fc9709a3 3109 * function @ref LL_ADC_REG_SetTriggerEdge().
AnnaBridge 189:f392fc9709a3 3110 * @note Availability of parameters of trigger sources from timer
AnnaBridge 189:f392fc9709a3 3111 * depends on timers availability on the selected device.
AnnaBridge 189:f392fc9709a3 3112 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3113 * ADC state:
AnnaBridge 189:f392fc9709a3 3114 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3115 * on group regular.
AnnaBridge 189:f392fc9709a3 3116 * @rmtoll CFGR EXTSEL LL_ADC_REG_SetTriggerSource\n
AnnaBridge 189:f392fc9709a3 3117 * CFGR EXTEN LL_ADC_REG_SetTriggerSource
AnnaBridge 189:f392fc9709a3 3118 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3119 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3120 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
AnnaBridge 189:f392fc9709a3 3121 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO
AnnaBridge 189:f392fc9709a3 3122 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO2
AnnaBridge 189:f392fc9709a3 3123 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1
AnnaBridge 189:f392fc9709a3 3124 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2
AnnaBridge 189:f392fc9709a3 3125 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3
AnnaBridge 189:f392fc9709a3 3126 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO
AnnaBridge 189:f392fc9709a3 3127 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2
AnnaBridge 189:f392fc9709a3 3128 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO
AnnaBridge 189:f392fc9709a3 3129 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4
AnnaBridge 189:f392fc9709a3 3130 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_TRGO
AnnaBridge 189:f392fc9709a3 3131 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4
AnnaBridge 189:f392fc9709a3 3132 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO
AnnaBridge 189:f392fc9709a3 3133 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO
AnnaBridge 189:f392fc9709a3 3134 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2
AnnaBridge 189:f392fc9709a3 3135 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM15_TRGO
AnnaBridge 189:f392fc9709a3 3136 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11
AnnaBridge 189:f392fc9709a3 3137 * @retval None
AnnaBridge 189:f392fc9709a3 3138 */
AnnaBridge 189:f392fc9709a3 3139 __STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 189:f392fc9709a3 3140 {
AnnaBridge 189:f392fc9709a3 3141 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL, TriggerSource);
AnnaBridge 189:f392fc9709a3 3142 }
AnnaBridge 189:f392fc9709a3 3143
AnnaBridge 189:f392fc9709a3 3144 /**
AnnaBridge 189:f392fc9709a3 3145 * @brief Get ADC group regular conversion trigger source:
AnnaBridge 189:f392fc9709a3 3146 * internal (SW start) or from external IP (timer event,
AnnaBridge 189:f392fc9709a3 3147 * external interrupt line).
AnnaBridge 189:f392fc9709a3 3148 * @note To determine whether group regular trigger source is
AnnaBridge 189:f392fc9709a3 3149 * internal (SW start) or external, without detail
AnnaBridge 189:f392fc9709a3 3150 * of which peripheral is selected as external trigger,
AnnaBridge 189:f392fc9709a3 3151 * (equivalent to
AnnaBridge 189:f392fc9709a3 3152 * "if(LL_ADC_REG_GetTriggerSource(ADC1) == LL_ADC_REG_TRIG_SOFTWARE)")
AnnaBridge 189:f392fc9709a3 3153 * use function @ref LL_ADC_REG_IsTriggerSourceSWStart.
AnnaBridge 189:f392fc9709a3 3154 * @note Availability of parameters of trigger sources from timer
AnnaBridge 189:f392fc9709a3 3155 * depends on timers availability on the selected device.
AnnaBridge 189:f392fc9709a3 3156 * @rmtoll CFGR EXTSEL LL_ADC_REG_GetTriggerSource\n
AnnaBridge 189:f392fc9709a3 3157 * CFGR EXTEN LL_ADC_REG_GetTriggerSource
AnnaBridge 189:f392fc9709a3 3158 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3159 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3160 * @arg @ref LL_ADC_REG_TRIG_SOFTWARE
AnnaBridge 189:f392fc9709a3 3161 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO
AnnaBridge 189:f392fc9709a3 3162 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO2
AnnaBridge 189:f392fc9709a3 3163 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1
AnnaBridge 189:f392fc9709a3 3164 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2
AnnaBridge 189:f392fc9709a3 3165 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3
AnnaBridge 189:f392fc9709a3 3166 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO
AnnaBridge 189:f392fc9709a3 3167 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2
AnnaBridge 189:f392fc9709a3 3168 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO
AnnaBridge 189:f392fc9709a3 3169 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4
AnnaBridge 189:f392fc9709a3 3170 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_TRGO
AnnaBridge 189:f392fc9709a3 3171 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4
AnnaBridge 189:f392fc9709a3 3172 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO
AnnaBridge 189:f392fc9709a3 3173 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO
AnnaBridge 189:f392fc9709a3 3174 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2
AnnaBridge 189:f392fc9709a3 3175 * @arg @ref LL_ADC_REG_TRIG_EXT_TIM15_TRGO
AnnaBridge 189:f392fc9709a3 3176 * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11
AnnaBridge 189:f392fc9709a3 3177 */
AnnaBridge 189:f392fc9709a3 3178 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3179 {
AnnaBridge 189:f392fc9709a3 3180 register uint32_t TriggerSource = READ_BIT(ADCx->CFGR, ADC_CFGR_EXTSEL | ADC_CFGR_EXTEN);
AnnaBridge 189:f392fc9709a3 3181
AnnaBridge 189:f392fc9709a3 3182 /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */
AnnaBridge 189:f392fc9709a3 3183 /* corresponding to ADC_CFGR_EXTEN {0; 1; 2; 3}. */
AnnaBridge 189:f392fc9709a3 3184 register uint32_t ShiftExten = ((TriggerSource & ADC_CFGR_EXTEN) >> (ADC_REG_TRIG_EXTEN_BITOFFSET_POS - 2U));
AnnaBridge 189:f392fc9709a3 3185
AnnaBridge 189:f392fc9709a3 3186 /* Set bitfield corresponding to ADC_CFGR_EXTEN and ADC_CFGR_EXTSEL */
AnnaBridge 189:f392fc9709a3 3187 /* to match with triggers literals definition. */
AnnaBridge 189:f392fc9709a3 3188 return ((TriggerSource
AnnaBridge 189:f392fc9709a3 3189 & (ADC_REG_TRIG_SOURCE_MASK >> ShiftExten) & ADC_CFGR_EXTSEL)
AnnaBridge 189:f392fc9709a3 3190 | ((ADC_REG_TRIG_EDGE_MASK >> ShiftExten) & ADC_CFGR_EXTEN)
AnnaBridge 189:f392fc9709a3 3191 );
AnnaBridge 189:f392fc9709a3 3192 }
AnnaBridge 189:f392fc9709a3 3193
AnnaBridge 189:f392fc9709a3 3194 /**
AnnaBridge 189:f392fc9709a3 3195 * @brief Get ADC group regular conversion trigger source internal (SW start)
AnnaBridge 189:f392fc9709a3 3196 or external.
AnnaBridge 189:f392fc9709a3 3197 * @note In case of group regular trigger source set to external trigger,
AnnaBridge 189:f392fc9709a3 3198 * to determine which peripheral is selected as external trigger,
AnnaBridge 189:f392fc9709a3 3199 * use function @ref LL_ADC_REG_GetTriggerSource().
AnnaBridge 189:f392fc9709a3 3200 * @rmtoll CFGR EXTEN LL_ADC_REG_IsTriggerSourceSWStart
AnnaBridge 189:f392fc9709a3 3201 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3202 * @retval Value "0" if trigger source external trigger
AnnaBridge 189:f392fc9709a3 3203 * Value "1" if trigger source SW start.
AnnaBridge 189:f392fc9709a3 3204 */
AnnaBridge 189:f392fc9709a3 3205 __STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3206 {
AnnaBridge 189:f392fc9709a3 3207 return (READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN));
AnnaBridge 189:f392fc9709a3 3208 }
AnnaBridge 189:f392fc9709a3 3209
AnnaBridge 189:f392fc9709a3 3210 /**
AnnaBridge 189:f392fc9709a3 3211 * @brief Set ADC group regular conversion trigger polarity.
AnnaBridge 189:f392fc9709a3 3212 * @note Applicable only for trigger source set to external trigger.
AnnaBridge 189:f392fc9709a3 3213 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3214 * ADC state:
AnnaBridge 189:f392fc9709a3 3215 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3216 * on group regular.
AnnaBridge 189:f392fc9709a3 3217 * @rmtoll CFGR EXTEN LL_ADC_REG_SetTriggerEdge
AnnaBridge 189:f392fc9709a3 3218 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3219 * @param ExternalTriggerEdge This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3220 * @arg @ref LL_ADC_REG_TRIG_EXT_RISING
AnnaBridge 189:f392fc9709a3 3221 * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING
AnnaBridge 189:f392fc9709a3 3222 * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING
AnnaBridge 189:f392fc9709a3 3223 * @retval None
AnnaBridge 189:f392fc9709a3 3224 */
AnnaBridge 189:f392fc9709a3 3225 __STATIC_INLINE void LL_ADC_REG_SetTriggerEdge(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
AnnaBridge 189:f392fc9709a3 3226 {
AnnaBridge 189:f392fc9709a3 3227 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN, ExternalTriggerEdge);
AnnaBridge 189:f392fc9709a3 3228 }
AnnaBridge 189:f392fc9709a3 3229
AnnaBridge 189:f392fc9709a3 3230 /**
AnnaBridge 189:f392fc9709a3 3231 * @brief Get ADC group regular conversion trigger polarity.
AnnaBridge 189:f392fc9709a3 3232 * @note Applicable only for trigger source set to external trigger.
AnnaBridge 189:f392fc9709a3 3233 * @rmtoll CFGR EXTEN LL_ADC_REG_GetTriggerEdge
AnnaBridge 189:f392fc9709a3 3234 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3235 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3236 * @arg @ref LL_ADC_REG_TRIG_EXT_RISING
AnnaBridge 189:f392fc9709a3 3237 * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING
AnnaBridge 189:f392fc9709a3 3238 * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING
AnnaBridge 189:f392fc9709a3 3239 */
AnnaBridge 189:f392fc9709a3 3240 __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerEdge(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3241 {
AnnaBridge 189:f392fc9709a3 3242 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN));
AnnaBridge 189:f392fc9709a3 3243 }
AnnaBridge 189:f392fc9709a3 3244
AnnaBridge 189:f392fc9709a3 3245 /**
AnnaBridge 189:f392fc9709a3 3246 * @brief Set ADC group regular sequencer length and scan direction.
AnnaBridge 189:f392fc9709a3 3247 * @note Description of ADC group regular sequencer features:
AnnaBridge 189:f392fc9709a3 3248 * - For devices with sequencer fully configurable
AnnaBridge 189:f392fc9709a3 3249 * (function "LL_ADC_REG_SetSequencerRanks()" available):
AnnaBridge 189:f392fc9709a3 3250 * sequencer length and each rank affectation to a channel
AnnaBridge 189:f392fc9709a3 3251 * are configurable.
AnnaBridge 189:f392fc9709a3 3252 * This function performs configuration of:
AnnaBridge 189:f392fc9709a3 3253 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 189:f392fc9709a3 3254 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 189:f392fc9709a3 3255 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 189:f392fc9709a3 3256 * Sequencer ranks are selected using
AnnaBridge 189:f392fc9709a3 3257 * function "LL_ADC_REG_SetSequencerRanks()".
AnnaBridge 189:f392fc9709a3 3258 * - For devices with sequencer not fully configurable
AnnaBridge 189:f392fc9709a3 3259 * (function "LL_ADC_REG_SetSequencerChannels()" available):
AnnaBridge 189:f392fc9709a3 3260 * sequencer length and each rank affectation to a channel
AnnaBridge 189:f392fc9709a3 3261 * are defined by channel number.
AnnaBridge 189:f392fc9709a3 3262 * This function performs configuration of:
AnnaBridge 189:f392fc9709a3 3263 * - Sequence length: Number of ranks in the scan sequence is
AnnaBridge 189:f392fc9709a3 3264 * defined by number of channels set in the sequence,
AnnaBridge 189:f392fc9709a3 3265 * rank of each channel is fixed by channel HW number.
AnnaBridge 189:f392fc9709a3 3266 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
AnnaBridge 189:f392fc9709a3 3267 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 189:f392fc9709a3 3268 * scan direction is forward (from lowest channel number to
AnnaBridge 189:f392fc9709a3 3269 * highest channel number).
AnnaBridge 189:f392fc9709a3 3270 * Sequencer ranks are selected using
AnnaBridge 189:f392fc9709a3 3271 * function "LL_ADC_REG_SetSequencerChannels()".
AnnaBridge 189:f392fc9709a3 3272 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 189:f392fc9709a3 3273 * ADC conversion on only 1 channel.
AnnaBridge 189:f392fc9709a3 3274 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3275 * ADC state:
AnnaBridge 189:f392fc9709a3 3276 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3277 * on group regular.
AnnaBridge 189:f392fc9709a3 3278 * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength
AnnaBridge 189:f392fc9709a3 3279 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3280 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3281 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
AnnaBridge 189:f392fc9709a3 3282 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 189:f392fc9709a3 3283 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 189:f392fc9709a3 3284 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 189:f392fc9709a3 3285 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
AnnaBridge 189:f392fc9709a3 3286 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
AnnaBridge 189:f392fc9709a3 3287 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
AnnaBridge 189:f392fc9709a3 3288 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
AnnaBridge 189:f392fc9709a3 3289 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
AnnaBridge 189:f392fc9709a3 3290 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
AnnaBridge 189:f392fc9709a3 3291 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
AnnaBridge 189:f392fc9709a3 3292 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
AnnaBridge 189:f392fc9709a3 3293 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
AnnaBridge 189:f392fc9709a3 3294 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
AnnaBridge 189:f392fc9709a3 3295 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
AnnaBridge 189:f392fc9709a3 3296 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
AnnaBridge 189:f392fc9709a3 3297 * @retval None
AnnaBridge 189:f392fc9709a3 3298 */
AnnaBridge 189:f392fc9709a3 3299 __STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
AnnaBridge 189:f392fc9709a3 3300 {
AnnaBridge 189:f392fc9709a3 3301 MODIFY_REG(ADCx->SQR1, ADC_SQR1_L, SequencerNbRanks);
AnnaBridge 189:f392fc9709a3 3302 }
AnnaBridge 189:f392fc9709a3 3303
AnnaBridge 189:f392fc9709a3 3304 /**
AnnaBridge 189:f392fc9709a3 3305 * @brief Get ADC group regular sequencer length and scan direction.
AnnaBridge 189:f392fc9709a3 3306 * @note Description of ADC group regular sequencer features:
AnnaBridge 189:f392fc9709a3 3307 * - For devices with sequencer fully configurable
AnnaBridge 189:f392fc9709a3 3308 * (function "LL_ADC_REG_SetSequencerRanks()" available):
AnnaBridge 189:f392fc9709a3 3309 * sequencer length and each rank affectation to a channel
AnnaBridge 189:f392fc9709a3 3310 * are configurable.
AnnaBridge 189:f392fc9709a3 3311 * This function retrieves:
AnnaBridge 189:f392fc9709a3 3312 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 189:f392fc9709a3 3313 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 189:f392fc9709a3 3314 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 189:f392fc9709a3 3315 * Sequencer ranks are selected using
AnnaBridge 189:f392fc9709a3 3316 * function "LL_ADC_REG_SetSequencerRanks()".
AnnaBridge 189:f392fc9709a3 3317 * - For devices with sequencer not fully configurable
AnnaBridge 189:f392fc9709a3 3318 * (function "LL_ADC_REG_SetSequencerChannels()" available):
AnnaBridge 189:f392fc9709a3 3319 * sequencer length and each rank affectation to a channel
AnnaBridge 189:f392fc9709a3 3320 * are defined by channel number.
AnnaBridge 189:f392fc9709a3 3321 * This function retrieves:
AnnaBridge 189:f392fc9709a3 3322 * - Sequence length: Number of ranks in the scan sequence is
AnnaBridge 189:f392fc9709a3 3323 * defined by number of channels set in the sequence,
AnnaBridge 189:f392fc9709a3 3324 * rank of each channel is fixed by channel HW number.
AnnaBridge 189:f392fc9709a3 3325 * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...).
AnnaBridge 189:f392fc9709a3 3326 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 189:f392fc9709a3 3327 * scan direction is forward (from lowest channel number to
AnnaBridge 189:f392fc9709a3 3328 * highest channel number).
AnnaBridge 189:f392fc9709a3 3329 * Sequencer ranks are selected using
AnnaBridge 189:f392fc9709a3 3330 * function "LL_ADC_REG_SetSequencerChannels()".
AnnaBridge 189:f392fc9709a3 3331 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 189:f392fc9709a3 3332 * ADC conversion on only 1 channel.
AnnaBridge 189:f392fc9709a3 3333 * @rmtoll SQR1 L LL_ADC_REG_GetSequencerLength
AnnaBridge 189:f392fc9709a3 3334 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3335 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3336 * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE
AnnaBridge 189:f392fc9709a3 3337 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 189:f392fc9709a3 3338 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 189:f392fc9709a3 3339 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 189:f392fc9709a3 3340 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS
AnnaBridge 189:f392fc9709a3 3341 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS
AnnaBridge 189:f392fc9709a3 3342 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS
AnnaBridge 189:f392fc9709a3 3343 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS
AnnaBridge 189:f392fc9709a3 3344 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS
AnnaBridge 189:f392fc9709a3 3345 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS
AnnaBridge 189:f392fc9709a3 3346 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS
AnnaBridge 189:f392fc9709a3 3347 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS
AnnaBridge 189:f392fc9709a3 3348 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS
AnnaBridge 189:f392fc9709a3 3349 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS
AnnaBridge 189:f392fc9709a3 3350 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS
AnnaBridge 189:f392fc9709a3 3351 * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS
AnnaBridge 189:f392fc9709a3 3352 */
AnnaBridge 189:f392fc9709a3 3353 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3354 {
AnnaBridge 189:f392fc9709a3 3355 return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L));
AnnaBridge 189:f392fc9709a3 3356 }
AnnaBridge 189:f392fc9709a3 3357
AnnaBridge 189:f392fc9709a3 3358 /**
AnnaBridge 189:f392fc9709a3 3359 * @brief Set ADC group regular sequencer discontinuous mode:
AnnaBridge 189:f392fc9709a3 3360 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 189:f392fc9709a3 3361 * number of ranks.
AnnaBridge 189:f392fc9709a3 3362 * @note It is not possible to enable both ADC group regular
AnnaBridge 189:f392fc9709a3 3363 * continuous mode and sequencer discontinuous mode.
AnnaBridge 189:f392fc9709a3 3364 * @note It is not possible to enable both ADC auto-injected mode
AnnaBridge 189:f392fc9709a3 3365 * and ADC group regular sequencer discontinuous mode.
AnnaBridge 189:f392fc9709a3 3366 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3367 * ADC state:
AnnaBridge 189:f392fc9709a3 3368 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3369 * on group regular.
AnnaBridge 189:f392fc9709a3 3370 * @rmtoll CFGR DISCEN LL_ADC_REG_SetSequencerDiscont\n
AnnaBridge 189:f392fc9709a3 3371 * CFGR DISCNUM LL_ADC_REG_SetSequencerDiscont
AnnaBridge 189:f392fc9709a3 3372 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3373 * @param SeqDiscont This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3374 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
AnnaBridge 189:f392fc9709a3 3375 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
AnnaBridge 189:f392fc9709a3 3376 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
AnnaBridge 189:f392fc9709a3 3377 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
AnnaBridge 189:f392fc9709a3 3378 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
AnnaBridge 189:f392fc9709a3 3379 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
AnnaBridge 189:f392fc9709a3 3380 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
AnnaBridge 189:f392fc9709a3 3381 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
AnnaBridge 189:f392fc9709a3 3382 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
AnnaBridge 189:f392fc9709a3 3383 * @retval None
AnnaBridge 189:f392fc9709a3 3384 */
AnnaBridge 189:f392fc9709a3 3385 __STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
AnnaBridge 189:f392fc9709a3 3386 {
AnnaBridge 189:f392fc9709a3 3387 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM, SeqDiscont);
AnnaBridge 189:f392fc9709a3 3388 }
AnnaBridge 189:f392fc9709a3 3389
AnnaBridge 189:f392fc9709a3 3390 /**
AnnaBridge 189:f392fc9709a3 3391 * @brief Get ADC group regular sequencer discontinuous mode:
AnnaBridge 189:f392fc9709a3 3392 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 189:f392fc9709a3 3393 * number of ranks.
AnnaBridge 189:f392fc9709a3 3394 * @rmtoll CFGR DISCEN LL_ADC_REG_GetSequencerDiscont\n
AnnaBridge 189:f392fc9709a3 3395 * CFGR DISCNUM LL_ADC_REG_GetSequencerDiscont
AnnaBridge 189:f392fc9709a3 3396 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3397 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3398 * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE
AnnaBridge 189:f392fc9709a3 3399 * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK
AnnaBridge 189:f392fc9709a3 3400 * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS
AnnaBridge 189:f392fc9709a3 3401 * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS
AnnaBridge 189:f392fc9709a3 3402 * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS
AnnaBridge 189:f392fc9709a3 3403 * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS
AnnaBridge 189:f392fc9709a3 3404 * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS
AnnaBridge 189:f392fc9709a3 3405 * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS
AnnaBridge 189:f392fc9709a3 3406 * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS
AnnaBridge 189:f392fc9709a3 3407 */
AnnaBridge 189:f392fc9709a3 3408 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3409 {
AnnaBridge 189:f392fc9709a3 3410 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM));
AnnaBridge 189:f392fc9709a3 3411 }
AnnaBridge 189:f392fc9709a3 3412
AnnaBridge 189:f392fc9709a3 3413 /**
AnnaBridge 189:f392fc9709a3 3414 * @brief Set ADC group regular sequence: channel on the selected
AnnaBridge 189:f392fc9709a3 3415 * scan sequence rank.
AnnaBridge 189:f392fc9709a3 3416 * @note This function performs configuration of:
AnnaBridge 189:f392fc9709a3 3417 * - Channels ordering into each rank of scan sequence:
AnnaBridge 189:f392fc9709a3 3418 * whatever channel can be placed into whatever rank.
AnnaBridge 189:f392fc9709a3 3419 * @note On this STM32 serie, ADC group regular sequencer is
AnnaBridge 189:f392fc9709a3 3420 * fully configurable: sequencer length and each rank
AnnaBridge 189:f392fc9709a3 3421 * affectation to a channel are configurable.
AnnaBridge 189:f392fc9709a3 3422 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
AnnaBridge 189:f392fc9709a3 3423 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 189:f392fc9709a3 3424 * Refer to device datasheet for channels availability.
AnnaBridge 189:f392fc9709a3 3425 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 189:f392fc9709a3 3426 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 189:f392fc9709a3 3427 * enabled separately.
AnnaBridge 189:f392fc9709a3 3428 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 189:f392fc9709a3 3429 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3430 * ADC state:
AnnaBridge 189:f392fc9709a3 3431 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3432 * on group regular.
AnnaBridge 189:f392fc9709a3 3433 * @rmtoll SQR1 SQ1 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3434 * SQR1 SQ2 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3435 * SQR1 SQ3 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3436 * SQR1 SQ4 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3437 * SQR2 SQ5 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3438 * SQR2 SQ6 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3439 * SQR2 SQ7 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3440 * SQR2 SQ8 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3441 * SQR2 SQ9 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3442 * SQR3 SQ10 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3443 * SQR3 SQ11 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3444 * SQR3 SQ12 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3445 * SQR3 SQ13 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3446 * SQR3 SQ14 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3447 * SQR4 SQ15 LL_ADC_REG_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3448 * SQR4 SQ16 LL_ADC_REG_SetSequencerRanks
AnnaBridge 189:f392fc9709a3 3449 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3450 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3451 * @arg @ref LL_ADC_REG_RANK_1
AnnaBridge 189:f392fc9709a3 3452 * @arg @ref LL_ADC_REG_RANK_2
AnnaBridge 189:f392fc9709a3 3453 * @arg @ref LL_ADC_REG_RANK_3
AnnaBridge 189:f392fc9709a3 3454 * @arg @ref LL_ADC_REG_RANK_4
AnnaBridge 189:f392fc9709a3 3455 * @arg @ref LL_ADC_REG_RANK_5
AnnaBridge 189:f392fc9709a3 3456 * @arg @ref LL_ADC_REG_RANK_6
AnnaBridge 189:f392fc9709a3 3457 * @arg @ref LL_ADC_REG_RANK_7
AnnaBridge 189:f392fc9709a3 3458 * @arg @ref LL_ADC_REG_RANK_8
AnnaBridge 189:f392fc9709a3 3459 * @arg @ref LL_ADC_REG_RANK_9
AnnaBridge 189:f392fc9709a3 3460 * @arg @ref LL_ADC_REG_RANK_10
AnnaBridge 189:f392fc9709a3 3461 * @arg @ref LL_ADC_REG_RANK_11
AnnaBridge 189:f392fc9709a3 3462 * @arg @ref LL_ADC_REG_RANK_12
AnnaBridge 189:f392fc9709a3 3463 * @arg @ref LL_ADC_REG_RANK_13
AnnaBridge 189:f392fc9709a3 3464 * @arg @ref LL_ADC_REG_RANK_14
AnnaBridge 189:f392fc9709a3 3465 * @arg @ref LL_ADC_REG_RANK_15
AnnaBridge 189:f392fc9709a3 3466 * @arg @ref LL_ADC_REG_RANK_16
AnnaBridge 189:f392fc9709a3 3467 * @param Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3468 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 3469 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 3470 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 3471 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 3472 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 3473 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 3474 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 3475 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 3476 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 3477 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 3478 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 3479 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 3480 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 3481 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 3482 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 3483 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 3484 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 3485 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 3486 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 3487 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 3488 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 3489 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 3490 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 3491 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 3492 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 3493 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 3494 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 3495 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 3496 *
AnnaBridge 189:f392fc9709a3 3497 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 3498 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 3499 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 3500 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 3501 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 3502 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 3503 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 3504 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 3505 * @retval None
AnnaBridge 189:f392fc9709a3 3506 */
AnnaBridge 189:f392fc9709a3 3507 __STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
AnnaBridge 189:f392fc9709a3 3508 {
AnnaBridge 189:f392fc9709a3 3509 /* Set bits with content of parameter "Channel" with bits position */
AnnaBridge 189:f392fc9709a3 3510 /* in register and register position depending on parameter "Rank". */
AnnaBridge 189:f392fc9709a3 3511 /* Parameters "Rank" and "Channel" are used with masks because containing */
AnnaBridge 189:f392fc9709a3 3512 /* other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 3513 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 3514 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC_REG_SQRX_REGOFFSET_MASK) >> ADC_SQRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 3515 #else
AnnaBridge 189:f392fc9709a3 3516 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 3517 #endif
AnnaBridge 189:f392fc9709a3 3518
AnnaBridge 189:f392fc9709a3 3519 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 3520 ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 << (Rank & ADC_REG_RANK_ID_SQRX_MASK),
AnnaBridge 189:f392fc9709a3 3521 ((Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_REG_RANK_ID_SQRX_MASK));
AnnaBridge 189:f392fc9709a3 3522 }
AnnaBridge 189:f392fc9709a3 3523
AnnaBridge 189:f392fc9709a3 3524 /**
AnnaBridge 189:f392fc9709a3 3525 * @brief Get ADC group regular sequence: channel on the selected
AnnaBridge 189:f392fc9709a3 3526 * scan sequence rank.
AnnaBridge 189:f392fc9709a3 3527 * @note On this STM32 serie, ADC group regular sequencer is
AnnaBridge 189:f392fc9709a3 3528 * fully configurable: sequencer length and each rank
AnnaBridge 189:f392fc9709a3 3529 * affectation to a channel are configurable.
AnnaBridge 189:f392fc9709a3 3530 * Refer to description of function @ref LL_ADC_REG_SetSequencerLength().
AnnaBridge 189:f392fc9709a3 3531 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 189:f392fc9709a3 3532 * Refer to device datasheet for channels availability.
AnnaBridge 189:f392fc9709a3 3533 * @note Usage of the returned channel number:
AnnaBridge 189:f392fc9709a3 3534 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 189:f392fc9709a3 3535 * the returned channel number is only partly formatted on definition
AnnaBridge 189:f392fc9709a3 3536 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 189:f392fc9709a3 3537 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 189:f392fc9709a3 3538 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 3539 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 189:f392fc9709a3 3540 * as parameter for another function.
AnnaBridge 189:f392fc9709a3 3541 * - To get the channel number in decimal format:
AnnaBridge 189:f392fc9709a3 3542 * process the returned value with the helper macro
AnnaBridge 189:f392fc9709a3 3543 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 3544 * @rmtoll SQR1 SQ1 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3545 * SQR1 SQ2 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3546 * SQR1 SQ3 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3547 * SQR1 SQ4 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3548 * SQR2 SQ5 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3549 * SQR2 SQ6 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3550 * SQR2 SQ7 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3551 * SQR2 SQ8 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3552 * SQR2 SQ9 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3553 * SQR3 SQ10 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3554 * SQR3 SQ11 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3555 * SQR3 SQ12 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3556 * SQR3 SQ13 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3557 * SQR3 SQ14 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3558 * SQR4 SQ15 LL_ADC_REG_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 3559 * SQR4 SQ16 LL_ADC_REG_GetSequencerRanks
AnnaBridge 189:f392fc9709a3 3560 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3561 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3562 * @arg @ref LL_ADC_REG_RANK_1
AnnaBridge 189:f392fc9709a3 3563 * @arg @ref LL_ADC_REG_RANK_2
AnnaBridge 189:f392fc9709a3 3564 * @arg @ref LL_ADC_REG_RANK_3
AnnaBridge 189:f392fc9709a3 3565 * @arg @ref LL_ADC_REG_RANK_4
AnnaBridge 189:f392fc9709a3 3566 * @arg @ref LL_ADC_REG_RANK_5
AnnaBridge 189:f392fc9709a3 3567 * @arg @ref LL_ADC_REG_RANK_6
AnnaBridge 189:f392fc9709a3 3568 * @arg @ref LL_ADC_REG_RANK_7
AnnaBridge 189:f392fc9709a3 3569 * @arg @ref LL_ADC_REG_RANK_8
AnnaBridge 189:f392fc9709a3 3570 * @arg @ref LL_ADC_REG_RANK_9
AnnaBridge 189:f392fc9709a3 3571 * @arg @ref LL_ADC_REG_RANK_10
AnnaBridge 189:f392fc9709a3 3572 * @arg @ref LL_ADC_REG_RANK_11
AnnaBridge 189:f392fc9709a3 3573 * @arg @ref LL_ADC_REG_RANK_12
AnnaBridge 189:f392fc9709a3 3574 * @arg @ref LL_ADC_REG_RANK_13
AnnaBridge 189:f392fc9709a3 3575 * @arg @ref LL_ADC_REG_RANK_14
AnnaBridge 189:f392fc9709a3 3576 * @arg @ref LL_ADC_REG_RANK_15
AnnaBridge 189:f392fc9709a3 3577 * @arg @ref LL_ADC_REG_RANK_16
AnnaBridge 189:f392fc9709a3 3578 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3579 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 3580 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 3581 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 3582 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 3583 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 3584 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 3585 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 3586 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 3587 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 3588 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 3589 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 3590 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 3591 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 3592 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 3593 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 3594 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 3595 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 3596 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 3597 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 3598 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 3599 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 3600 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 3601 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 3602 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 3603 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 3604 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 3605 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 3606 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 3607 *
AnnaBridge 189:f392fc9709a3 3608 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 3609 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 3610 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 3611 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 3612 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 3613 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 3614 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 3615 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 189:f392fc9709a3 3616 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 189:f392fc9709a3 3617 * comparison with internal channel parameter to be done
AnnaBridge 189:f392fc9709a3 3618 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 189:f392fc9709a3 3619 */
AnnaBridge 189:f392fc9709a3 3620 __STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 3621 {
AnnaBridge 189:f392fc9709a3 3622 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 3623 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC_REG_SQRX_REGOFFSET_MASK) >> ADC_SQRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 3624 #else
AnnaBridge 189:f392fc9709a3 3625 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 3626 #endif
AnnaBridge 189:f392fc9709a3 3627
AnnaBridge 189:f392fc9709a3 3628 return (uint32_t) ((READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 3629 ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 << (Rank & ADC_REG_RANK_ID_SQRX_MASK))
AnnaBridge 189:f392fc9709a3 3630 >> (Rank & ADC_REG_RANK_ID_SQRX_MASK)) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS
AnnaBridge 189:f392fc9709a3 3631 );
AnnaBridge 189:f392fc9709a3 3632 }
AnnaBridge 189:f392fc9709a3 3633
AnnaBridge 189:f392fc9709a3 3634 /**
AnnaBridge 189:f392fc9709a3 3635 * @brief Set ADC continuous conversion mode on ADC group regular.
AnnaBridge 189:f392fc9709a3 3636 * @note Description of ADC continuous conversion mode:
AnnaBridge 189:f392fc9709a3 3637 * - single mode: one conversion per trigger
AnnaBridge 189:f392fc9709a3 3638 * - continuous mode: after the first trigger, following
AnnaBridge 189:f392fc9709a3 3639 * conversions launched successively automatically.
AnnaBridge 189:f392fc9709a3 3640 * @note It is not possible to enable both ADC group regular
AnnaBridge 189:f392fc9709a3 3641 * continuous mode and sequencer discontinuous mode.
AnnaBridge 189:f392fc9709a3 3642 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3643 * ADC state:
AnnaBridge 189:f392fc9709a3 3644 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3645 * on group regular.
AnnaBridge 189:f392fc9709a3 3646 * @rmtoll CFGR CONT LL_ADC_REG_SetContinuousMode
AnnaBridge 189:f392fc9709a3 3647 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3648 * @param Continuous This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3649 * @arg @ref LL_ADC_REG_CONV_SINGLE
AnnaBridge 189:f392fc9709a3 3650 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
AnnaBridge 189:f392fc9709a3 3651 * @retval None
AnnaBridge 189:f392fc9709a3 3652 */
AnnaBridge 189:f392fc9709a3 3653 __STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Continuous)
AnnaBridge 189:f392fc9709a3 3654 {
AnnaBridge 189:f392fc9709a3 3655 MODIFY_REG(ADCx->CFGR, ADC_CFGR_CONT, Continuous);
AnnaBridge 189:f392fc9709a3 3656 }
AnnaBridge 189:f392fc9709a3 3657
AnnaBridge 189:f392fc9709a3 3658 /**
AnnaBridge 189:f392fc9709a3 3659 * @brief Get ADC continuous conversion mode on ADC group regular.
AnnaBridge 189:f392fc9709a3 3660 * @note Description of ADC continuous conversion mode:
AnnaBridge 189:f392fc9709a3 3661 * - single mode: one conversion per trigger
AnnaBridge 189:f392fc9709a3 3662 * - continuous mode: after the first trigger, following
AnnaBridge 189:f392fc9709a3 3663 * conversions launched successively automatically.
AnnaBridge 189:f392fc9709a3 3664 * @rmtoll CFGR CONT LL_ADC_REG_GetContinuousMode
AnnaBridge 189:f392fc9709a3 3665 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3666 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3667 * @arg @ref LL_ADC_REG_CONV_SINGLE
AnnaBridge 189:f392fc9709a3 3668 * @arg @ref LL_ADC_REG_CONV_CONTINUOUS
AnnaBridge 189:f392fc9709a3 3669 */
AnnaBridge 189:f392fc9709a3 3670 __STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3671 {
AnnaBridge 189:f392fc9709a3 3672 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_CONT));
AnnaBridge 189:f392fc9709a3 3673 }
AnnaBridge 189:f392fc9709a3 3674
AnnaBridge 189:f392fc9709a3 3675 /**
AnnaBridge 189:f392fc9709a3 3676 * @brief Set ADC group regular conversion data transfer: no transfer or
AnnaBridge 189:f392fc9709a3 3677 * transfer by DMA, and DMA requests mode.
AnnaBridge 189:f392fc9709a3 3678 * @note If transfer by DMA selected, specifies the DMA requests
AnnaBridge 189:f392fc9709a3 3679 * mode:
AnnaBridge 189:f392fc9709a3 3680 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 189:f392fc9709a3 3681 * when number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 3682 * ADC conversions) is reached.
AnnaBridge 189:f392fc9709a3 3683 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 189:f392fc9709a3 3684 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 189:f392fc9709a3 3685 * whatever number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 3686 * ADC conversions).
AnnaBridge 189:f392fc9709a3 3687 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 189:f392fc9709a3 3688 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 189:f392fc9709a3 3689 * mode non-circular:
AnnaBridge 189:f392fc9709a3 3690 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 189:f392fc9709a3 3691 * ADC conversions data ADC will raise an overrun error
AnnaBridge 189:f392fc9709a3 3692 * (overrun flag and interruption if enabled).
AnnaBridge 189:f392fc9709a3 3693 * @note For devices with several ADC instances: ADC multimode DMA
AnnaBridge 189:f392fc9709a3 3694 * settings are available using function @ref LL_ADC_SetMultiDMATransfer().
AnnaBridge 189:f392fc9709a3 3695 * @note To configure DMA source address (peripheral address),
AnnaBridge 189:f392fc9709a3 3696 * use function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 189:f392fc9709a3 3697 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3698 * ADC state:
AnnaBridge 189:f392fc9709a3 3699 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3700 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3701 * @rmtoll CFGR DMAEN LL_ADC_REG_SetDMATransfer\n
AnnaBridge 189:f392fc9709a3 3702 * CFGR DMACFG LL_ADC_REG_SetDMATransfer
AnnaBridge 189:f392fc9709a3 3703 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3704 * @param DMATransfer This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3705 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
AnnaBridge 189:f392fc9709a3 3706 * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED
AnnaBridge 189:f392fc9709a3 3707 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
AnnaBridge 189:f392fc9709a3 3708 * @retval None
AnnaBridge 189:f392fc9709a3 3709 */
AnnaBridge 189:f392fc9709a3 3710 __STATIC_INLINE void LL_ADC_REG_SetDMATransfer(ADC_TypeDef *ADCx, uint32_t DMATransfer)
AnnaBridge 189:f392fc9709a3 3711 {
AnnaBridge 189:f392fc9709a3 3712 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DMAEN | ADC_CFGR_DMACFG, DMATransfer);
AnnaBridge 189:f392fc9709a3 3713 }
AnnaBridge 189:f392fc9709a3 3714
AnnaBridge 189:f392fc9709a3 3715 /**
AnnaBridge 189:f392fc9709a3 3716 * @brief Get ADC group regular conversion data transfer: no transfer or
AnnaBridge 189:f392fc9709a3 3717 * transfer by DMA, and DMA requests mode.
AnnaBridge 189:f392fc9709a3 3718 * @note If transfer by DMA selected, specifies the DMA requests
AnnaBridge 189:f392fc9709a3 3719 * mode:
AnnaBridge 189:f392fc9709a3 3720 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 189:f392fc9709a3 3721 * when number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 3722 * ADC conversions) is reached.
AnnaBridge 189:f392fc9709a3 3723 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 189:f392fc9709a3 3724 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 189:f392fc9709a3 3725 * whatever number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 3726 * ADC conversions).
AnnaBridge 189:f392fc9709a3 3727 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 189:f392fc9709a3 3728 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 189:f392fc9709a3 3729 * mode non-circular:
AnnaBridge 189:f392fc9709a3 3730 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 189:f392fc9709a3 3731 * ADC conversions data ADC will raise an overrun error
AnnaBridge 189:f392fc9709a3 3732 * (overrun flag and interruption if enabled).
AnnaBridge 189:f392fc9709a3 3733 * @note For devices with several ADC instances: ADC multimode DMA
AnnaBridge 189:f392fc9709a3 3734 * settings are available using function @ref LL_ADC_GetMultiDMATransfer().
AnnaBridge 189:f392fc9709a3 3735 * @note To configure DMA source address (peripheral address),
AnnaBridge 189:f392fc9709a3 3736 * use function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 189:f392fc9709a3 3737 * @rmtoll CFGR DMAEN LL_ADC_REG_GetDMATransfer\n
AnnaBridge 189:f392fc9709a3 3738 * CFGR DMACFG LL_ADC_REG_GetDMATransfer
AnnaBridge 189:f392fc9709a3 3739 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3740 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3741 * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE
AnnaBridge 189:f392fc9709a3 3742 * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED
AnnaBridge 189:f392fc9709a3 3743 * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED
AnnaBridge 189:f392fc9709a3 3744 */
AnnaBridge 189:f392fc9709a3 3745 __STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransfer(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3746 {
AnnaBridge 189:f392fc9709a3 3747 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DMAEN | ADC_CFGR_DMACFG));
AnnaBridge 189:f392fc9709a3 3748 }
AnnaBridge 189:f392fc9709a3 3749
AnnaBridge 189:f392fc9709a3 3750 #if defined(ADC_CFGR_DFSDMCFG) &&defined(DFSDM1_Channel0)
AnnaBridge 189:f392fc9709a3 3751 /**
AnnaBridge 189:f392fc9709a3 3752 * @brief Set ADC group regular conversion data transfer to DFSDM.
AnnaBridge 189:f392fc9709a3 3753 * @note DFSDM transfer cannot be used if DMA transfer is enabled.
AnnaBridge 189:f392fc9709a3 3754 * @note To configure DFSDM source address (peripheral address),
AnnaBridge 189:f392fc9709a3 3755 * use the same function as for DMA transfer:
AnnaBridge 189:f392fc9709a3 3756 * function @ref LL_ADC_DMA_GetRegAddr().
AnnaBridge 189:f392fc9709a3 3757 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3758 * ADC state:
AnnaBridge 189:f392fc9709a3 3759 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3760 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3761 * @rmtoll CFGR DFSDMCFG LL_ADC_REG_GetDFSDMTransfer
AnnaBridge 189:f392fc9709a3 3762 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3763 * @param DFSDMTransfer This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3764 * @arg @ref LL_ADC_REG_DFSDM_TRANSFER_NONE
AnnaBridge 189:f392fc9709a3 3765 * @arg @ref LL_ADC_REG_DFSDM_TRANSFER_ENABLE
AnnaBridge 189:f392fc9709a3 3766 * @retval None
AnnaBridge 189:f392fc9709a3 3767 */
AnnaBridge 189:f392fc9709a3 3768 __STATIC_INLINE void LL_ADC_REG_SetDFSDMTransfer(ADC_TypeDef *ADCx, uint32_t DFSDMTransfer)
AnnaBridge 189:f392fc9709a3 3769 {
AnnaBridge 189:f392fc9709a3 3770 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DFSDMCFG, DFSDMTransfer);
AnnaBridge 189:f392fc9709a3 3771 }
AnnaBridge 189:f392fc9709a3 3772
AnnaBridge 189:f392fc9709a3 3773 /**
AnnaBridge 189:f392fc9709a3 3774 * @brief Get ADC group regular conversion data transfer to DFSDM.
AnnaBridge 189:f392fc9709a3 3775 * @rmtoll CFGR DFSDMCFG LL_ADC_REG_GetDFSDMTransfer
AnnaBridge 189:f392fc9709a3 3776 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3777 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3778 * @arg @ref LL_ADC_REG_DFSDM_TRANSFER_NONE
AnnaBridge 189:f392fc9709a3 3779 * @arg @ref LL_ADC_REG_DFSDM_TRANSFER_ENABLE
AnnaBridge 189:f392fc9709a3 3780 */
AnnaBridge 189:f392fc9709a3 3781 __STATIC_INLINE uint32_t LL_ADC_REG_GetDFSDMTransfer(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3782 {
AnnaBridge 189:f392fc9709a3 3783 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DFSDMCFG));
AnnaBridge 189:f392fc9709a3 3784 }
AnnaBridge 189:f392fc9709a3 3785 #endif
AnnaBridge 189:f392fc9709a3 3786
AnnaBridge 189:f392fc9709a3 3787 /**
AnnaBridge 189:f392fc9709a3 3788 * @brief Set ADC group regular behavior in case of overrun:
AnnaBridge 189:f392fc9709a3 3789 * data preserved or overwritten.
AnnaBridge 189:f392fc9709a3 3790 * @note Compatibility with devices without feature overrun:
AnnaBridge 189:f392fc9709a3 3791 * other devices without this feature have a behavior
AnnaBridge 189:f392fc9709a3 3792 * equivalent to data overwritten.
AnnaBridge 189:f392fc9709a3 3793 * The default setting of overrun is data preserved.
AnnaBridge 189:f392fc9709a3 3794 * Therefore, for compatibility with all devices, parameter
AnnaBridge 189:f392fc9709a3 3795 * overrun should be set to data overwritten.
AnnaBridge 189:f392fc9709a3 3796 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3797 * ADC state:
AnnaBridge 189:f392fc9709a3 3798 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 3799 * on group regular.
AnnaBridge 189:f392fc9709a3 3800 * @rmtoll CFGR OVRMOD LL_ADC_REG_SetOverrun
AnnaBridge 189:f392fc9709a3 3801 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3802 * @param Overrun This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3803 * @arg @ref LL_ADC_REG_OVR_DATA_PRESERVED
AnnaBridge 189:f392fc9709a3 3804 * @arg @ref LL_ADC_REG_OVR_DATA_OVERWRITTEN
AnnaBridge 189:f392fc9709a3 3805 * @retval None
AnnaBridge 189:f392fc9709a3 3806 */
AnnaBridge 189:f392fc9709a3 3807 __STATIC_INLINE void LL_ADC_REG_SetOverrun(ADC_TypeDef *ADCx, uint32_t Overrun)
AnnaBridge 189:f392fc9709a3 3808 {
AnnaBridge 189:f392fc9709a3 3809 MODIFY_REG(ADCx->CFGR, ADC_CFGR_OVRMOD, Overrun);
AnnaBridge 189:f392fc9709a3 3810 }
AnnaBridge 189:f392fc9709a3 3811
AnnaBridge 189:f392fc9709a3 3812 /**
AnnaBridge 189:f392fc9709a3 3813 * @brief Get ADC group regular behavior in case of overrun:
AnnaBridge 189:f392fc9709a3 3814 * data preserved or overwritten.
AnnaBridge 189:f392fc9709a3 3815 * @rmtoll CFGR OVRMOD LL_ADC_REG_GetOverrun
AnnaBridge 189:f392fc9709a3 3816 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3817 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3818 * @arg @ref LL_ADC_REG_OVR_DATA_PRESERVED
AnnaBridge 189:f392fc9709a3 3819 * @arg @ref LL_ADC_REG_OVR_DATA_OVERWRITTEN
AnnaBridge 189:f392fc9709a3 3820 */
AnnaBridge 189:f392fc9709a3 3821 __STATIC_INLINE uint32_t LL_ADC_REG_GetOverrun(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3822 {
AnnaBridge 189:f392fc9709a3 3823 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_OVRMOD));
AnnaBridge 189:f392fc9709a3 3824 }
AnnaBridge 189:f392fc9709a3 3825
AnnaBridge 189:f392fc9709a3 3826 /**
AnnaBridge 189:f392fc9709a3 3827 * @}
AnnaBridge 189:f392fc9709a3 3828 */
AnnaBridge 189:f392fc9709a3 3829
AnnaBridge 189:f392fc9709a3 3830 /** @defgroup ADC_LL_EF_Configuration_ADC_Group_Injected Configuration of ADC hierarchical scope: group injected
AnnaBridge 189:f392fc9709a3 3831 * @{
AnnaBridge 189:f392fc9709a3 3832 */
AnnaBridge 189:f392fc9709a3 3833
AnnaBridge 189:f392fc9709a3 3834 /**
AnnaBridge 189:f392fc9709a3 3835 * @brief Set ADC group injected conversion trigger source:
AnnaBridge 189:f392fc9709a3 3836 * internal (SW start) or from external IP (timer event,
AnnaBridge 189:f392fc9709a3 3837 * external interrupt line).
AnnaBridge 189:f392fc9709a3 3838 * @note On this STM32 serie, setting trigger source to external trigger
AnnaBridge 189:f392fc9709a3 3839 * also set trigger polarity to rising edge
AnnaBridge 189:f392fc9709a3 3840 * (default setting for compatibility with some ADC on other
AnnaBridge 189:f392fc9709a3 3841 * STM32 families having this setting set by HW default value).
AnnaBridge 189:f392fc9709a3 3842 * In case of need to modify trigger edge, use
AnnaBridge 189:f392fc9709a3 3843 * function @ref LL_ADC_INJ_SetTriggerEdge().
AnnaBridge 189:f392fc9709a3 3844 * @note Availability of parameters of trigger sources from timer
AnnaBridge 189:f392fc9709a3 3845 * depends on timers availability on the selected device.
AnnaBridge 189:f392fc9709a3 3846 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3847 * ADC state:
AnnaBridge 189:f392fc9709a3 3848 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 189:f392fc9709a3 3849 * on going on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3850 * @rmtoll JSQR JEXTSEL LL_ADC_INJ_SetTriggerSource\n
AnnaBridge 189:f392fc9709a3 3851 * JSQR JEXTEN LL_ADC_INJ_SetTriggerSource
AnnaBridge 189:f392fc9709a3 3852 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3853 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3854 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 189:f392fc9709a3 3855 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
AnnaBridge 189:f392fc9709a3 3856 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2
AnnaBridge 189:f392fc9709a3 3857 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
AnnaBridge 189:f392fc9709a3 3858 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
AnnaBridge 189:f392fc9709a3 3859 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
AnnaBridge 189:f392fc9709a3 3860 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_TRGO
AnnaBridge 189:f392fc9709a3 3861 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1
AnnaBridge 189:f392fc9709a3 3862 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3
AnnaBridge 189:f392fc9709a3 3863 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
AnnaBridge 189:f392fc9709a3 3864 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
AnnaBridge 189:f392fc9709a3 3865 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO
AnnaBridge 189:f392fc9709a3 3866 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4
AnnaBridge 189:f392fc9709a3 3867 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO
AnnaBridge 189:f392fc9709a3 3868 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2
AnnaBridge 189:f392fc9709a3 3869 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM15_TRGO
AnnaBridge 189:f392fc9709a3 3870 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
AnnaBridge 189:f392fc9709a3 3871 * @retval None
AnnaBridge 189:f392fc9709a3 3872 */
AnnaBridge 189:f392fc9709a3 3873 __STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 189:f392fc9709a3 3874 {
AnnaBridge 189:f392fc9709a3 3875 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN, TriggerSource);
AnnaBridge 189:f392fc9709a3 3876 }
AnnaBridge 189:f392fc9709a3 3877
AnnaBridge 189:f392fc9709a3 3878 /**
AnnaBridge 189:f392fc9709a3 3879 * @brief Get ADC group injected conversion trigger source:
AnnaBridge 189:f392fc9709a3 3880 * internal (SW start) or from external IP (timer event,
AnnaBridge 189:f392fc9709a3 3881 * external interrupt line).
AnnaBridge 189:f392fc9709a3 3882 * @note To determine whether group injected trigger source is
AnnaBridge 189:f392fc9709a3 3883 * internal (SW start) or external, without detail
AnnaBridge 189:f392fc9709a3 3884 * of which peripheral is selected as external trigger,
AnnaBridge 189:f392fc9709a3 3885 * (equivalent to
AnnaBridge 189:f392fc9709a3 3886 * "if(LL_ADC_INJ_GetTriggerSource(ADC1) == LL_ADC_INJ_TRIG_SOFTWARE)")
AnnaBridge 189:f392fc9709a3 3887 * use function @ref LL_ADC_INJ_IsTriggerSourceSWStart.
AnnaBridge 189:f392fc9709a3 3888 * @note Availability of parameters of trigger sources from timer
AnnaBridge 189:f392fc9709a3 3889 * depends on timers availability on the selected device.
AnnaBridge 189:f392fc9709a3 3890 * @rmtoll JSQR JEXTSEL LL_ADC_INJ_GetTriggerSource\n
AnnaBridge 189:f392fc9709a3 3891 * JSQR JEXTEN LL_ADC_INJ_GetTriggerSource
AnnaBridge 189:f392fc9709a3 3892 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3893 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3894 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 189:f392fc9709a3 3895 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
AnnaBridge 189:f392fc9709a3 3896 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2
AnnaBridge 189:f392fc9709a3 3897 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
AnnaBridge 189:f392fc9709a3 3898 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
AnnaBridge 189:f392fc9709a3 3899 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
AnnaBridge 189:f392fc9709a3 3900 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_TRGO
AnnaBridge 189:f392fc9709a3 3901 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1
AnnaBridge 189:f392fc9709a3 3902 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3
AnnaBridge 189:f392fc9709a3 3903 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
AnnaBridge 189:f392fc9709a3 3904 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
AnnaBridge 189:f392fc9709a3 3905 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO
AnnaBridge 189:f392fc9709a3 3906 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4
AnnaBridge 189:f392fc9709a3 3907 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO
AnnaBridge 189:f392fc9709a3 3908 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2
AnnaBridge 189:f392fc9709a3 3909 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM15_TRGO
AnnaBridge 189:f392fc9709a3 3910 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
AnnaBridge 189:f392fc9709a3 3911 */
AnnaBridge 189:f392fc9709a3 3912 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3913 {
AnnaBridge 189:f392fc9709a3 3914 register uint32_t TriggerSource = READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN);
AnnaBridge 189:f392fc9709a3 3915
AnnaBridge 189:f392fc9709a3 3916 /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */
AnnaBridge 189:f392fc9709a3 3917 /* corresponding to ADC_JSQR_JEXTEN {0; 1; 2; 3}. */
AnnaBridge 189:f392fc9709a3 3918 register uint32_t ShiftJexten = ((TriggerSource & ADC_JSQR_JEXTEN) >> (ADC_INJ_TRIG_EXTEN_BITOFFSET_POS - 2U));
AnnaBridge 189:f392fc9709a3 3919
AnnaBridge 189:f392fc9709a3 3920 /* Set bitfield corresponding to ADC_JSQR_JEXTEN and ADC_JSQR_JEXTSEL */
AnnaBridge 189:f392fc9709a3 3921 /* to match with triggers literals definition. */
AnnaBridge 189:f392fc9709a3 3922 return ((TriggerSource
AnnaBridge 189:f392fc9709a3 3923 & (ADC_INJ_TRIG_SOURCE_MASK >> ShiftJexten) & ADC_JSQR_JEXTSEL)
AnnaBridge 189:f392fc9709a3 3924 | ((ADC_INJ_TRIG_EDGE_MASK >> ShiftJexten) & ADC_JSQR_JEXTEN)
AnnaBridge 189:f392fc9709a3 3925 );
AnnaBridge 189:f392fc9709a3 3926 }
AnnaBridge 189:f392fc9709a3 3927
AnnaBridge 189:f392fc9709a3 3928 /**
AnnaBridge 189:f392fc9709a3 3929 * @brief Get ADC group injected conversion trigger source internal (SW start)
AnnaBridge 189:f392fc9709a3 3930 or external
AnnaBridge 189:f392fc9709a3 3931 * @note In case of group injected trigger source set to external trigger,
AnnaBridge 189:f392fc9709a3 3932 * to determine which peripheral is selected as external trigger,
AnnaBridge 189:f392fc9709a3 3933 * use function @ref LL_ADC_INJ_GetTriggerSource.
AnnaBridge 189:f392fc9709a3 3934 * @rmtoll JSQR JEXTEN LL_ADC_INJ_IsTriggerSourceSWStart
AnnaBridge 189:f392fc9709a3 3935 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3936 * @retval Value "0" if trigger source external trigger
AnnaBridge 189:f392fc9709a3 3937 * Value "1" if trigger source SW start.
AnnaBridge 189:f392fc9709a3 3938 */
AnnaBridge 189:f392fc9709a3 3939 __STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3940 {
AnnaBridge 189:f392fc9709a3 3941 return (READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN) == (LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN));
AnnaBridge 189:f392fc9709a3 3942 }
AnnaBridge 189:f392fc9709a3 3943
AnnaBridge 189:f392fc9709a3 3944 /**
AnnaBridge 189:f392fc9709a3 3945 * @brief Set ADC group injected conversion trigger polarity.
AnnaBridge 189:f392fc9709a3 3946 * Applicable only for trigger source set to external trigger.
AnnaBridge 189:f392fc9709a3 3947 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3948 * ADC state:
AnnaBridge 189:f392fc9709a3 3949 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 189:f392fc9709a3 3950 * on going on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3951 * @rmtoll JSQR JEXTEN LL_ADC_INJ_SetTriggerEdge
AnnaBridge 189:f392fc9709a3 3952 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3953 * @param ExternalTriggerEdge This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3954 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
AnnaBridge 189:f392fc9709a3 3955 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
AnnaBridge 189:f392fc9709a3 3956 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
AnnaBridge 189:f392fc9709a3 3957 * @retval None
AnnaBridge 189:f392fc9709a3 3958 */
AnnaBridge 189:f392fc9709a3 3959 __STATIC_INLINE void LL_ADC_INJ_SetTriggerEdge(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
AnnaBridge 189:f392fc9709a3 3960 {
AnnaBridge 189:f392fc9709a3 3961 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTEN, ExternalTriggerEdge);
AnnaBridge 189:f392fc9709a3 3962 }
AnnaBridge 189:f392fc9709a3 3963
AnnaBridge 189:f392fc9709a3 3964 /**
AnnaBridge 189:f392fc9709a3 3965 * @brief Get ADC group injected conversion trigger polarity.
AnnaBridge 189:f392fc9709a3 3966 * Applicable only for trigger source set to external trigger.
AnnaBridge 189:f392fc9709a3 3967 * @rmtoll JSQR JEXTEN LL_ADC_INJ_GetTriggerEdge
AnnaBridge 189:f392fc9709a3 3968 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3969 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 3970 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
AnnaBridge 189:f392fc9709a3 3971 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
AnnaBridge 189:f392fc9709a3 3972 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
AnnaBridge 189:f392fc9709a3 3973 */
AnnaBridge 189:f392fc9709a3 3974 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerEdge(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 3975 {
AnnaBridge 189:f392fc9709a3 3976 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN));
AnnaBridge 189:f392fc9709a3 3977 }
AnnaBridge 189:f392fc9709a3 3978
AnnaBridge 189:f392fc9709a3 3979 /**
AnnaBridge 189:f392fc9709a3 3980 * @brief Set ADC group injected sequencer length and scan direction.
AnnaBridge 189:f392fc9709a3 3981 * @note This function performs configuration of:
AnnaBridge 189:f392fc9709a3 3982 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 189:f392fc9709a3 3983 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 189:f392fc9709a3 3984 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 189:f392fc9709a3 3985 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 189:f392fc9709a3 3986 * ADC conversion on only 1 channel.
AnnaBridge 189:f392fc9709a3 3987 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 3988 * ADC state:
AnnaBridge 189:f392fc9709a3 3989 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 189:f392fc9709a3 3990 * on going on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 3991 * @rmtoll JSQR JL LL_ADC_INJ_SetSequencerLength
AnnaBridge 189:f392fc9709a3 3992 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 3993 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 3994 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 189:f392fc9709a3 3995 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 189:f392fc9709a3 3996 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 189:f392fc9709a3 3997 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 189:f392fc9709a3 3998 * @retval None
AnnaBridge 189:f392fc9709a3 3999 */
AnnaBridge 189:f392fc9709a3 4000 __STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks)
AnnaBridge 189:f392fc9709a3 4001 {
AnnaBridge 189:f392fc9709a3 4002 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks);
AnnaBridge 189:f392fc9709a3 4003 }
AnnaBridge 189:f392fc9709a3 4004
AnnaBridge 189:f392fc9709a3 4005 /**
AnnaBridge 189:f392fc9709a3 4006 * @brief Get ADC group injected sequencer length and scan direction.
AnnaBridge 189:f392fc9709a3 4007 * @note This function retrieves:
AnnaBridge 189:f392fc9709a3 4008 * - Sequence length: Number of ranks in the scan sequence.
AnnaBridge 189:f392fc9709a3 4009 * - Sequence direction: Unless specified in parameters, sequencer
AnnaBridge 189:f392fc9709a3 4010 * scan direction is forward (from rank 1 to rank n).
AnnaBridge 189:f392fc9709a3 4011 * @note Sequencer disabled is equivalent to sequencer of 1 rank:
AnnaBridge 189:f392fc9709a3 4012 * ADC conversion on only 1 channel.
AnnaBridge 189:f392fc9709a3 4013 * @rmtoll JSQR JL LL_ADC_INJ_GetSequencerLength
AnnaBridge 189:f392fc9709a3 4014 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4015 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 4016 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 189:f392fc9709a3 4017 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 189:f392fc9709a3 4018 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 189:f392fc9709a3 4019 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 189:f392fc9709a3 4020 */
AnnaBridge 189:f392fc9709a3 4021 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 4022 {
AnnaBridge 189:f392fc9709a3 4023 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL));
AnnaBridge 189:f392fc9709a3 4024 }
AnnaBridge 189:f392fc9709a3 4025
AnnaBridge 189:f392fc9709a3 4026 /**
AnnaBridge 189:f392fc9709a3 4027 * @brief Set ADC group injected sequencer discontinuous mode:
AnnaBridge 189:f392fc9709a3 4028 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 189:f392fc9709a3 4029 * number of ranks.
AnnaBridge 189:f392fc9709a3 4030 * @note It is not possible to enable both ADC group injected
AnnaBridge 189:f392fc9709a3 4031 * auto-injected mode and sequencer discontinuous mode.
AnnaBridge 189:f392fc9709a3 4032 * @rmtoll CFGR JDISCEN LL_ADC_INJ_SetSequencerDiscont
AnnaBridge 189:f392fc9709a3 4033 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4034 * @param SeqDiscont This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4035 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
AnnaBridge 189:f392fc9709a3 4036 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
AnnaBridge 189:f392fc9709a3 4037 * @retval None
AnnaBridge 189:f392fc9709a3 4038 */
AnnaBridge 189:f392fc9709a3 4039 __STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont)
AnnaBridge 189:f392fc9709a3 4040 {
AnnaBridge 189:f392fc9709a3 4041 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JDISCEN, SeqDiscont);
AnnaBridge 189:f392fc9709a3 4042 }
AnnaBridge 189:f392fc9709a3 4043
AnnaBridge 189:f392fc9709a3 4044 /**
AnnaBridge 189:f392fc9709a3 4045 * @brief Get ADC group injected sequencer discontinuous mode:
AnnaBridge 189:f392fc9709a3 4046 * sequence subdivided and scan conversions interrupted every selected
AnnaBridge 189:f392fc9709a3 4047 * number of ranks.
AnnaBridge 189:f392fc9709a3 4048 * @rmtoll CFGR JDISCEN LL_ADC_INJ_GetSequencerDiscont
AnnaBridge 189:f392fc9709a3 4049 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4050 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 4051 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE
AnnaBridge 189:f392fc9709a3 4052 * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK
AnnaBridge 189:f392fc9709a3 4053 */
AnnaBridge 189:f392fc9709a3 4054 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 4055 {
AnnaBridge 189:f392fc9709a3 4056 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JDISCEN));
AnnaBridge 189:f392fc9709a3 4057 }
AnnaBridge 189:f392fc9709a3 4058
AnnaBridge 189:f392fc9709a3 4059 /**
AnnaBridge 189:f392fc9709a3 4060 * @brief Set ADC group injected sequence: channel on the selected
AnnaBridge 189:f392fc9709a3 4061 * sequence rank.
AnnaBridge 189:f392fc9709a3 4062 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 189:f392fc9709a3 4063 * Refer to device datasheet for channels availability.
AnnaBridge 189:f392fc9709a3 4064 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 189:f392fc9709a3 4065 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 189:f392fc9709a3 4066 * enabled separately.
AnnaBridge 189:f392fc9709a3 4067 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 189:f392fc9709a3 4068 * @note On STM32L4, some fast channels are available: fast analog inputs
AnnaBridge 189:f392fc9709a3 4069 * coming from GPIO pads (ADC_IN1..5).
AnnaBridge 189:f392fc9709a3 4070 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4071 * ADC state:
AnnaBridge 189:f392fc9709a3 4072 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 189:f392fc9709a3 4073 * on going on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4074 * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 4075 * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 4076 * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 4077 * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks
AnnaBridge 189:f392fc9709a3 4078 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4079 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4080 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 4081 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 4082 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 4083 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 4084 * @param Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4085 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4086 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4087 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4088 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4089 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4090 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4091 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4092 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4093 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4094 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4095 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4096 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4097 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4098 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4099 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4100 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4101 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4102 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4103 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4104 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4105 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4106 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4107 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4108 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4109 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4110 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4111 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4112 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4113 *
AnnaBridge 189:f392fc9709a3 4114 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4115 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4116 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4117 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4118 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4119 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4120 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4121 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4122 * @retval None
AnnaBridge 189:f392fc9709a3 4123 */
AnnaBridge 189:f392fc9709a3 4124 __STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
AnnaBridge 189:f392fc9709a3 4125 {
AnnaBridge 189:f392fc9709a3 4126 /* Set bits with content of parameter "Channel" with bits position */
AnnaBridge 189:f392fc9709a3 4127 /* in register depending on parameter "Rank". */
AnnaBridge 189:f392fc9709a3 4128 /* Parameters "Rank" and "Channel" are used with masks because containing */
AnnaBridge 189:f392fc9709a3 4129 /* other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 4130 MODIFY_REG(ADCx->JSQR,
AnnaBridge 189:f392fc9709a3 4131 (ADC_CHANNEL_ID_NUMBER_MASK >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_INJ_RANK_ID_JSQR_MASK),
AnnaBridge 189:f392fc9709a3 4132 ((Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_INJ_RANK_ID_JSQR_MASK));
AnnaBridge 189:f392fc9709a3 4133 }
AnnaBridge 189:f392fc9709a3 4134
AnnaBridge 189:f392fc9709a3 4135 /**
AnnaBridge 189:f392fc9709a3 4136 * @brief Get ADC group injected sequence: channel on the selected
AnnaBridge 189:f392fc9709a3 4137 * sequence rank.
AnnaBridge 189:f392fc9709a3 4138 * @note Depending on devices and packages, some channels may not be available.
AnnaBridge 189:f392fc9709a3 4139 * Refer to device datasheet for channels availability.
AnnaBridge 189:f392fc9709a3 4140 * @note Usage of the returned channel number:
AnnaBridge 189:f392fc9709a3 4141 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 189:f392fc9709a3 4142 * the returned channel number is only partly formatted on definition
AnnaBridge 189:f392fc9709a3 4143 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 189:f392fc9709a3 4144 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 189:f392fc9709a3 4145 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 4146 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 189:f392fc9709a3 4147 * as parameter for another function.
AnnaBridge 189:f392fc9709a3 4148 * - To get the channel number in decimal format:
AnnaBridge 189:f392fc9709a3 4149 * process the returned value with the helper macro
AnnaBridge 189:f392fc9709a3 4150 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 4151 * @rmtoll JSQR JSQ1 LL_ADC_INJ_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 4152 * JSQR JSQ2 LL_ADC_INJ_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 4153 * JSQR JSQ3 LL_ADC_INJ_GetSequencerRanks\n
AnnaBridge 189:f392fc9709a3 4154 * JSQR JSQ4 LL_ADC_INJ_GetSequencerRanks
AnnaBridge 189:f392fc9709a3 4155 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4156 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4157 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 4158 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 4159 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 4160 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 4161 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 4162 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4163 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4164 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4165 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4166 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4167 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4168 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4169 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4170 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4171 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4172 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4173 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4174 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4175 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4176 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4177 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4178 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4179 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4180 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4181 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4182 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4183 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4184 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4185 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4186 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4187 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4188 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4189 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4190 *
AnnaBridge 189:f392fc9709a3 4191 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4192 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4193 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4194 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4195 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4196 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4197 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4198 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 189:f392fc9709a3 4199 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 189:f392fc9709a3 4200 * comparison with internal channel parameter to be done
AnnaBridge 189:f392fc9709a3 4201 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 189:f392fc9709a3 4202 */
AnnaBridge 189:f392fc9709a3 4203 __STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 4204 {
AnnaBridge 189:f392fc9709a3 4205 return (uint32_t)((READ_BIT(ADCx->JSQR,
AnnaBridge 189:f392fc9709a3 4206 (ADC_CHANNEL_ID_NUMBER_MASK >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_INJ_RANK_ID_JSQR_MASK))
AnnaBridge 189:f392fc9709a3 4207 >> (Rank & ADC_INJ_RANK_ID_JSQR_MASK)) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS
AnnaBridge 189:f392fc9709a3 4208 );
AnnaBridge 189:f392fc9709a3 4209 }
AnnaBridge 189:f392fc9709a3 4210
AnnaBridge 189:f392fc9709a3 4211 /**
AnnaBridge 189:f392fc9709a3 4212 * @brief Set ADC group injected conversion trigger:
AnnaBridge 189:f392fc9709a3 4213 * independent or from ADC group regular.
AnnaBridge 189:f392fc9709a3 4214 * @note This mode can be used to extend number of data registers
AnnaBridge 189:f392fc9709a3 4215 * updated after one ADC conversion trigger and with data
AnnaBridge 189:f392fc9709a3 4216 * permanently kept (not erased by successive conversions of scan of
AnnaBridge 189:f392fc9709a3 4217 * ADC sequencer ranks), up to 5 data registers:
AnnaBridge 189:f392fc9709a3 4218 * 1 data register on ADC group regular, 4 data registers
AnnaBridge 189:f392fc9709a3 4219 * on ADC group injected.
AnnaBridge 189:f392fc9709a3 4220 * @note If ADC group injected injected trigger source is set to an
AnnaBridge 189:f392fc9709a3 4221 * external trigger, this feature must be must be set to
AnnaBridge 189:f392fc9709a3 4222 * independent trigger.
AnnaBridge 189:f392fc9709a3 4223 * ADC group injected automatic trigger is compliant only with
AnnaBridge 189:f392fc9709a3 4224 * group injected trigger source set to SW start, without any
AnnaBridge 189:f392fc9709a3 4225 * further action on ADC group injected conversion start or stop:
AnnaBridge 189:f392fc9709a3 4226 * in this case, ADC group injected is controlled only
AnnaBridge 189:f392fc9709a3 4227 * from ADC group regular.
AnnaBridge 189:f392fc9709a3 4228 * @note It is not possible to enable both ADC group injected
AnnaBridge 189:f392fc9709a3 4229 * auto-injected mode and sequencer discontinuous mode.
AnnaBridge 189:f392fc9709a3 4230 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4231 * ADC state:
AnnaBridge 189:f392fc9709a3 4232 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 4233 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4234 * @rmtoll CFGR JAUTO LL_ADC_INJ_SetTrigAuto
AnnaBridge 189:f392fc9709a3 4235 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4236 * @param TrigAuto This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4237 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
AnnaBridge 189:f392fc9709a3 4238 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
AnnaBridge 189:f392fc9709a3 4239 * @retval None
AnnaBridge 189:f392fc9709a3 4240 */
AnnaBridge 189:f392fc9709a3 4241 __STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto)
AnnaBridge 189:f392fc9709a3 4242 {
AnnaBridge 189:f392fc9709a3 4243 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JAUTO, TrigAuto);
AnnaBridge 189:f392fc9709a3 4244 }
AnnaBridge 189:f392fc9709a3 4245
AnnaBridge 189:f392fc9709a3 4246 /**
AnnaBridge 189:f392fc9709a3 4247 * @brief Get ADC group injected conversion trigger:
AnnaBridge 189:f392fc9709a3 4248 * independent or from ADC group regular.
AnnaBridge 189:f392fc9709a3 4249 * @rmtoll CFGR JAUTO LL_ADC_INJ_GetTrigAuto
AnnaBridge 189:f392fc9709a3 4250 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4251 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 4252 * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT
AnnaBridge 189:f392fc9709a3 4253 * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR
AnnaBridge 189:f392fc9709a3 4254 */
AnnaBridge 189:f392fc9709a3 4255 __STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 4256 {
AnnaBridge 189:f392fc9709a3 4257 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JAUTO));
AnnaBridge 189:f392fc9709a3 4258 }
AnnaBridge 189:f392fc9709a3 4259
AnnaBridge 189:f392fc9709a3 4260 /**
AnnaBridge 189:f392fc9709a3 4261 * @brief Set ADC group injected contexts queue mode.
AnnaBridge 189:f392fc9709a3 4262 * @note A context is a setting of group injected sequencer:
AnnaBridge 189:f392fc9709a3 4263 * - group injected trigger
AnnaBridge 189:f392fc9709a3 4264 * - sequencer length
AnnaBridge 189:f392fc9709a3 4265 * - sequencer ranks
AnnaBridge 189:f392fc9709a3 4266 * If contexts queue is disabled:
AnnaBridge 189:f392fc9709a3 4267 * - only 1 sequence can be configured
AnnaBridge 189:f392fc9709a3 4268 * and is active perpetually.
AnnaBridge 189:f392fc9709a3 4269 * If contexts queue is enabled:
AnnaBridge 189:f392fc9709a3 4270 * - up to 2 contexts can be queued
AnnaBridge 189:f392fc9709a3 4271 * and are checked in and out as a FIFO stack (first-in, first-out).
AnnaBridge 189:f392fc9709a3 4272 * - If a new context is set when queues is full, error is triggered
AnnaBridge 189:f392fc9709a3 4273 * by interruption "Injected Queue Overflow".
AnnaBridge 189:f392fc9709a3 4274 * - Two behaviors are possible when all contexts have been processed:
AnnaBridge 189:f392fc9709a3 4275 * the contexts queue can maintain the last context active perpetually
AnnaBridge 189:f392fc9709a3 4276 * or can be empty and injected group triggers are disabled.
AnnaBridge 189:f392fc9709a3 4277 * - Triggers can be only external (not internal SW start)
AnnaBridge 189:f392fc9709a3 4278 * - Caution: The sequence must be fully configured in one time
AnnaBridge 189:f392fc9709a3 4279 * (one write of register JSQR makes a check-in of a new context
AnnaBridge 189:f392fc9709a3 4280 * into the queue).
AnnaBridge 189:f392fc9709a3 4281 * Therefore functions to set separately injected trigger and
AnnaBridge 189:f392fc9709a3 4282 * sequencer channels cannot be used, register JSQR must be set
AnnaBridge 189:f392fc9709a3 4283 * using function @ref LL_ADC_INJ_ConfigQueueContext().
AnnaBridge 189:f392fc9709a3 4284 * @note This parameter can be modified only when no conversion is on going
AnnaBridge 189:f392fc9709a3 4285 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4286 * @note A modification of the context mode (bit JQDIS) causes the contexts
AnnaBridge 189:f392fc9709a3 4287 * queue to be flushed and the register JSQR is cleared.
AnnaBridge 189:f392fc9709a3 4288 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4289 * ADC state:
AnnaBridge 189:f392fc9709a3 4290 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 4291 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4292 * @rmtoll CFGR JQM LL_ADC_INJ_SetQueueMode\n
AnnaBridge 189:f392fc9709a3 4293 * CFGR JQDIS LL_ADC_INJ_SetQueueMode
AnnaBridge 189:f392fc9709a3 4294 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4295 * @param QueueMode This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4296 * @arg @ref LL_ADC_INJ_QUEUE_DISABLE
AnnaBridge 189:f392fc9709a3 4297 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE
AnnaBridge 189:f392fc9709a3 4298 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY
AnnaBridge 189:f392fc9709a3 4299 * @retval None
AnnaBridge 189:f392fc9709a3 4300 */
AnnaBridge 189:f392fc9709a3 4301 __STATIC_INLINE void LL_ADC_INJ_SetQueueMode(ADC_TypeDef *ADCx, uint32_t QueueMode)
AnnaBridge 189:f392fc9709a3 4302 {
AnnaBridge 189:f392fc9709a3 4303 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JQM | ADC_CFGR_JQDIS, QueueMode);
AnnaBridge 189:f392fc9709a3 4304 }
AnnaBridge 189:f392fc9709a3 4305
AnnaBridge 189:f392fc9709a3 4306 /**
AnnaBridge 189:f392fc9709a3 4307 * @brief Get ADC group injected context queue mode.
AnnaBridge 189:f392fc9709a3 4308 * @rmtoll CFGR JQM LL_ADC_INJ_GetQueueMode\n
AnnaBridge 189:f392fc9709a3 4309 * CFGR JQDIS LL_ADC_INJ_GetQueueMode
AnnaBridge 189:f392fc9709a3 4310 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4311 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 4312 * @arg @ref LL_ADC_INJ_QUEUE_DISABLE
AnnaBridge 189:f392fc9709a3 4313 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE
AnnaBridge 189:f392fc9709a3 4314 * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY
AnnaBridge 189:f392fc9709a3 4315 */
AnnaBridge 189:f392fc9709a3 4316 __STATIC_INLINE uint32_t LL_ADC_INJ_GetQueueMode(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 4317 {
AnnaBridge 189:f392fc9709a3 4318 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JQM | ADC_CFGR_JQDIS));
AnnaBridge 189:f392fc9709a3 4319 }
AnnaBridge 189:f392fc9709a3 4320
AnnaBridge 189:f392fc9709a3 4321 /**
AnnaBridge 189:f392fc9709a3 4322 * @brief Set one context on ADC group injected that will be checked in
AnnaBridge 189:f392fc9709a3 4323 * contexts queue.
AnnaBridge 189:f392fc9709a3 4324 * @note A context is a setting of group injected sequencer:
AnnaBridge 189:f392fc9709a3 4325 * - group injected trigger
AnnaBridge 189:f392fc9709a3 4326 * - sequencer length
AnnaBridge 189:f392fc9709a3 4327 * - sequencer ranks
AnnaBridge 189:f392fc9709a3 4328 * This function is intended to be used when contexts queue is enabled,
AnnaBridge 189:f392fc9709a3 4329 * because the sequence must be fully configured in one time
AnnaBridge 189:f392fc9709a3 4330 * (functions to set separately injected trigger and sequencer channels
AnnaBridge 189:f392fc9709a3 4331 * cannot be used):
AnnaBridge 189:f392fc9709a3 4332 * Refer to function @ref LL_ADC_INJ_SetQueueMode().
AnnaBridge 189:f392fc9709a3 4333 * @note In the contexts queue, only the active context can be read.
AnnaBridge 189:f392fc9709a3 4334 * The parameters of this function can be read using functions:
AnnaBridge 189:f392fc9709a3 4335 * @arg @ref LL_ADC_INJ_GetTriggerSource()
AnnaBridge 189:f392fc9709a3 4336 * @arg @ref LL_ADC_INJ_GetTriggerEdge()
AnnaBridge 189:f392fc9709a3 4337 * @arg @ref LL_ADC_INJ_GetSequencerRanks()
AnnaBridge 189:f392fc9709a3 4338 * @note On this STM32 serie, to measure internal channels (VrefInt,
AnnaBridge 189:f392fc9709a3 4339 * TempSensor, ...), measurement paths to internal channels must be
AnnaBridge 189:f392fc9709a3 4340 * enabled separately.
AnnaBridge 189:f392fc9709a3 4341 * This can be done using function @ref LL_ADC_SetCommonPathInternalCh().
AnnaBridge 189:f392fc9709a3 4342 * @note On STM32L4, some fast channels are available: fast analog inputs
AnnaBridge 189:f392fc9709a3 4343 * coming from GPIO pads (ADC_IN1..5).
AnnaBridge 189:f392fc9709a3 4344 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4345 * ADC state:
AnnaBridge 189:f392fc9709a3 4346 * ADC must not be disabled. Can be enabled with or without conversion
AnnaBridge 189:f392fc9709a3 4347 * on going on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4348 * @rmtoll JSQR JEXTSEL LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 189:f392fc9709a3 4349 * JSQR JEXTEN LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 189:f392fc9709a3 4350 * JSQR JL LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 189:f392fc9709a3 4351 * JSQR JSQ1 LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 189:f392fc9709a3 4352 * JSQR JSQ2 LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 189:f392fc9709a3 4353 * JSQR JSQ3 LL_ADC_INJ_ConfigQueueContext\n
AnnaBridge 189:f392fc9709a3 4354 * JSQR JSQ4 LL_ADC_INJ_ConfigQueueContext
AnnaBridge 189:f392fc9709a3 4355 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4356 * @param TriggerSource This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4357 * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE
AnnaBridge 189:f392fc9709a3 4358 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO
AnnaBridge 189:f392fc9709a3 4359 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2
AnnaBridge 189:f392fc9709a3 4360 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4
AnnaBridge 189:f392fc9709a3 4361 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO
AnnaBridge 189:f392fc9709a3 4362 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1
AnnaBridge 189:f392fc9709a3 4363 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_TRGO
AnnaBridge 189:f392fc9709a3 4364 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1
AnnaBridge 189:f392fc9709a3 4365 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3
AnnaBridge 189:f392fc9709a3 4366 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4
AnnaBridge 189:f392fc9709a3 4367 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO
AnnaBridge 189:f392fc9709a3 4368 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO
AnnaBridge 189:f392fc9709a3 4369 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4
AnnaBridge 189:f392fc9709a3 4370 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO
AnnaBridge 189:f392fc9709a3 4371 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2
AnnaBridge 189:f392fc9709a3 4372 * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM15_TRGO
AnnaBridge 189:f392fc9709a3 4373 * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15
AnnaBridge 189:f392fc9709a3 4374 * @param ExternalTriggerEdge This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4375 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING
AnnaBridge 189:f392fc9709a3 4376 * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING
AnnaBridge 189:f392fc9709a3 4377 * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING
AnnaBridge 189:f392fc9709a3 4378 *
AnnaBridge 189:f392fc9709a3 4379 * Note: This parameter is discarded in case of SW start:
AnnaBridge 189:f392fc9709a3 4380 * parameter "TriggerSource" set to "LL_ADC_INJ_TRIG_SOFTWARE".
AnnaBridge 189:f392fc9709a3 4381 * @param SequencerNbRanks This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4382 * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE
AnnaBridge 189:f392fc9709a3 4383 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS
AnnaBridge 189:f392fc9709a3 4384 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS
AnnaBridge 189:f392fc9709a3 4385 * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS
AnnaBridge 189:f392fc9709a3 4386 * @param Rank1_Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4387 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4388 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4389 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4390 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4391 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4392 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4393 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4394 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4395 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4396 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4397 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4398 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4399 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4400 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4401 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4402 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4403 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4404 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4405 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4406 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4407 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4408 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4409 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4410 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4411 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4412 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4413 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4414 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4415 *
AnnaBridge 189:f392fc9709a3 4416 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4417 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4418 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4419 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4420 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4421 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4422 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4423 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4424 * @param Rank2_Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4425 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4426 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4427 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4428 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4429 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4430 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4431 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4432 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4433 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4434 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4435 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4436 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4437 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4438 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4439 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4440 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4441 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4442 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4443 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4444 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4445 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4446 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4447 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4448 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4449 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4450 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4451 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4452 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4453 *
AnnaBridge 189:f392fc9709a3 4454 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4455 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4456 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4457 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4458 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4459 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4460 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4461 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4462 * @param Rank3_Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4463 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4464 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4465 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4466 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4467 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4468 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4469 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4470 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4471 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4472 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4473 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4474 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4475 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4476 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4477 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4478 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4479 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4480 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4481 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4482 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4483 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4484 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4485 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4486 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4487 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4488 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4489 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4490 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4491 *
AnnaBridge 189:f392fc9709a3 4492 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4493 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4494 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4495 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4496 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4497 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4498 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4499 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4500 * @param Rank4_Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4501 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4502 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4503 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4504 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4505 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4506 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4507 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4508 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4509 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4510 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4511 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4512 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4513 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4514 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4515 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4516 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4517 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4518 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4519 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4520 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4521 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4522 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4523 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4524 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4525 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4526 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4527 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4528 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4529 *
AnnaBridge 189:f392fc9709a3 4530 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4531 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4532 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4533 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4534 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4535 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4536 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4537 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4538 * @retval None
AnnaBridge 189:f392fc9709a3 4539 */
AnnaBridge 189:f392fc9709a3 4540 __STATIC_INLINE void LL_ADC_INJ_ConfigQueueContext(ADC_TypeDef *ADCx,
AnnaBridge 189:f392fc9709a3 4541 uint32_t TriggerSource,
AnnaBridge 189:f392fc9709a3 4542 uint32_t ExternalTriggerEdge,
AnnaBridge 189:f392fc9709a3 4543 uint32_t SequencerNbRanks,
AnnaBridge 189:f392fc9709a3 4544 uint32_t Rank1_Channel,
AnnaBridge 189:f392fc9709a3 4545 uint32_t Rank2_Channel,
AnnaBridge 189:f392fc9709a3 4546 uint32_t Rank3_Channel,
AnnaBridge 189:f392fc9709a3 4547 uint32_t Rank4_Channel)
AnnaBridge 189:f392fc9709a3 4548 {
AnnaBridge 189:f392fc9709a3 4549 /* Set bits with content of parameter "Rankx_Channel" with bits position */
AnnaBridge 189:f392fc9709a3 4550 /* in register depending on literal "LL_ADC_INJ_RANK_x". */
AnnaBridge 189:f392fc9709a3 4551 /* Parameters "Rankx_Channel" and "LL_ADC_INJ_RANK_x" are used with masks */
AnnaBridge 189:f392fc9709a3 4552 /* because containing other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 4553 /* If parameter "TriggerSource" is set to SW start, then parameter */
AnnaBridge 189:f392fc9709a3 4554 /* "ExternalTriggerEdge" is discarded. */
AnnaBridge 189:f392fc9709a3 4555 MODIFY_REG(ADCx->JSQR ,
AnnaBridge 189:f392fc9709a3 4556 ADC_JSQR_JEXTSEL |
AnnaBridge 189:f392fc9709a3 4557 ADC_JSQR_JEXTEN |
AnnaBridge 189:f392fc9709a3 4558 ADC_JSQR_JSQ4 |
AnnaBridge 189:f392fc9709a3 4559 ADC_JSQR_JSQ3 |
AnnaBridge 189:f392fc9709a3 4560 ADC_JSQR_JSQ2 |
AnnaBridge 189:f392fc9709a3 4561 ADC_JSQR_JSQ1 |
AnnaBridge 189:f392fc9709a3 4562 ADC_JSQR_JL ,
AnnaBridge 189:f392fc9709a3 4563 TriggerSource |
AnnaBridge 189:f392fc9709a3 4564 (ExternalTriggerEdge * ((TriggerSource != LL_ADC_INJ_TRIG_SOFTWARE))) |
AnnaBridge 189:f392fc9709a3 4565 (((Rank4_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (LL_ADC_INJ_RANK_4 & ADC_INJ_RANK_ID_JSQR_MASK)) |
AnnaBridge 189:f392fc9709a3 4566 (((Rank3_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (LL_ADC_INJ_RANK_3 & ADC_INJ_RANK_ID_JSQR_MASK)) |
AnnaBridge 189:f392fc9709a3 4567 (((Rank2_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (LL_ADC_INJ_RANK_2 & ADC_INJ_RANK_ID_JSQR_MASK)) |
AnnaBridge 189:f392fc9709a3 4568 (((Rank1_Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (LL_ADC_INJ_RANK_1 & ADC_INJ_RANK_ID_JSQR_MASK)) |
AnnaBridge 189:f392fc9709a3 4569 SequencerNbRanks
AnnaBridge 189:f392fc9709a3 4570 );
AnnaBridge 189:f392fc9709a3 4571 }
AnnaBridge 189:f392fc9709a3 4572
AnnaBridge 189:f392fc9709a3 4573 /**
AnnaBridge 189:f392fc9709a3 4574 * @}
AnnaBridge 189:f392fc9709a3 4575 */
AnnaBridge 189:f392fc9709a3 4576
AnnaBridge 189:f392fc9709a3 4577 /** @defgroup ADC_LL_EF_Configuration_Channels Configuration of ADC hierarchical scope: channels
AnnaBridge 189:f392fc9709a3 4578 * @{
AnnaBridge 189:f392fc9709a3 4579 */
AnnaBridge 189:f392fc9709a3 4580
AnnaBridge 189:f392fc9709a3 4581 /**
AnnaBridge 189:f392fc9709a3 4582 * @brief Set sampling time of the selected ADC channel
AnnaBridge 189:f392fc9709a3 4583 * Unit: ADC clock cycles.
AnnaBridge 189:f392fc9709a3 4584 * @note On this device, sampling time is on channel scope: independently
AnnaBridge 189:f392fc9709a3 4585 * of channel mapped on ADC group regular or injected.
AnnaBridge 189:f392fc9709a3 4586 * @note In case of internal channel (VrefInt, TempSensor, ...) to be
AnnaBridge 189:f392fc9709a3 4587 * converted:
AnnaBridge 189:f392fc9709a3 4588 * sampling time constraints must be respected (sampling time can be
AnnaBridge 189:f392fc9709a3 4589 * adjusted in function of ADC clock frequency and sampling time
AnnaBridge 189:f392fc9709a3 4590 * setting).
AnnaBridge 189:f392fc9709a3 4591 * Refer to device datasheet for timings values (parameters TS_vrefint,
AnnaBridge 189:f392fc9709a3 4592 * TS_temp, ...).
AnnaBridge 189:f392fc9709a3 4593 * @note Conversion time is the addition of sampling time and processing time.
AnnaBridge 189:f392fc9709a3 4594 * On this STM32 serie, ADC processing time is:
AnnaBridge 189:f392fc9709a3 4595 * - 12.5 ADC clock cycles at ADC resolution 12 bits
AnnaBridge 189:f392fc9709a3 4596 * - 10.5 ADC clock cycles at ADC resolution 10 bits
AnnaBridge 189:f392fc9709a3 4597 * - 8.5 ADC clock cycles at ADC resolution 8 bits
AnnaBridge 189:f392fc9709a3 4598 * - 6.5 ADC clock cycles at ADC resolution 6 bits
AnnaBridge 189:f392fc9709a3 4599 * @note In case of ADC conversion of internal channel (VrefInt,
AnnaBridge 189:f392fc9709a3 4600 * temperature sensor, ...), a sampling time minimum value
AnnaBridge 189:f392fc9709a3 4601 * is required.
AnnaBridge 189:f392fc9709a3 4602 * Refer to device datasheet.
AnnaBridge 189:f392fc9709a3 4603 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4604 * ADC state:
AnnaBridge 189:f392fc9709a3 4605 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 4606 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4607 * @rmtoll SMPR1 SMP0 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4608 * SMPR1 SMP1 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4609 * SMPR1 SMP2 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4610 * SMPR1 SMP3 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4611 * SMPR1 SMP4 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4612 * SMPR1 SMP5 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4613 * SMPR1 SMP6 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4614 * SMPR1 SMP7 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4615 * SMPR1 SMP8 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4616 * SMPR1 SMP9 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4617 * SMPR2 SMP10 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4618 * SMPR2 SMP11 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4619 * SMPR2 SMP12 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4620 * SMPR2 SMP13 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4621 * SMPR2 SMP14 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4622 * SMPR2 SMP15 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4623 * SMPR2 SMP16 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4624 * SMPR2 SMP17 LL_ADC_SetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4625 * SMPR2 SMP18 LL_ADC_SetChannelSamplingTime
AnnaBridge 189:f392fc9709a3 4626 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4627 * @param Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4628 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4629 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4630 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4631 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4632 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4633 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4634 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4635 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4636 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4637 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4638 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4639 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4640 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4641 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4642 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4643 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4644 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4645 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4646 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4647 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4648 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4649 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4650 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4651 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4652 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4653 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4654 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4655 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4656 *
AnnaBridge 189:f392fc9709a3 4657 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4658 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4659 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4660 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4661 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4662 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4663 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4664 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4665 * @param SamplingTime This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4666 * @arg @ref LL_ADC_SAMPLINGTIME_2CYCLES_5 (1)
AnnaBridge 189:f392fc9709a3 4667 * @arg @ref LL_ADC_SAMPLINGTIME_6CYCLES_5
AnnaBridge 189:f392fc9709a3 4668 * @arg @ref LL_ADC_SAMPLINGTIME_12CYCLES_5
AnnaBridge 189:f392fc9709a3 4669 * @arg @ref LL_ADC_SAMPLINGTIME_24CYCLES_5
AnnaBridge 189:f392fc9709a3 4670 * @arg @ref LL_ADC_SAMPLINGTIME_47CYCLES_5
AnnaBridge 189:f392fc9709a3 4671 * @arg @ref LL_ADC_SAMPLINGTIME_92CYCLES_5
AnnaBridge 189:f392fc9709a3 4672 * @arg @ref LL_ADC_SAMPLINGTIME_247CYCLES_5
AnnaBridge 189:f392fc9709a3 4673 * @arg @ref LL_ADC_SAMPLINGTIME_640CYCLES_5
AnnaBridge 189:f392fc9709a3 4674 *
AnnaBridge 189:f392fc9709a3 4675 * (1) On some devices, ADC sampling time 2.5 ADC clock cycles
AnnaBridge 189:f392fc9709a3 4676 * can be replaced by 3.5 ADC clock cycles.
AnnaBridge 189:f392fc9709a3 4677 * Refer to function @ref LL_ADC_SetSamplingTimeCommonConfig().
AnnaBridge 189:f392fc9709a3 4678 * @retval None
AnnaBridge 189:f392fc9709a3 4679 */
AnnaBridge 189:f392fc9709a3 4680 __STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
AnnaBridge 189:f392fc9709a3 4681 {
AnnaBridge 189:f392fc9709a3 4682 /* Set bits with content of parameter "SamplingTime" with bits position */
AnnaBridge 189:f392fc9709a3 4683 /* in register and register position depending on parameter "Channel". */
AnnaBridge 189:f392fc9709a3 4684 /* Parameter "Channel" is used with masks because containing */
AnnaBridge 189:f392fc9709a3 4685 /* other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 4686 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 4687 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, ((Channel & ADC_CHANNEL_SMPRX_REGOFFSET_MASK) >> ADC_SMPRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 4688
AnnaBridge 189:f392fc9709a3 4689 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 4690 ADC_SMPR1_SMP0 << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS),
AnnaBridge 189:f392fc9709a3 4691 SamplingTime << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS));
AnnaBridge 189:f392fc9709a3 4692 #else
AnnaBridge 189:f392fc9709a3 4693 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 4694
AnnaBridge 189:f392fc9709a3 4695 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 4696 ADC_SMPR1_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK),
AnnaBridge 189:f392fc9709a3 4697 SamplingTime << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 4698 #endif
AnnaBridge 189:f392fc9709a3 4699 }
AnnaBridge 189:f392fc9709a3 4700
AnnaBridge 189:f392fc9709a3 4701 /**
AnnaBridge 189:f392fc9709a3 4702 * @brief Get sampling time of the selected ADC channel
AnnaBridge 189:f392fc9709a3 4703 * Unit: ADC clock cycles.
AnnaBridge 189:f392fc9709a3 4704 * @note On this device, sampling time is on channel scope: independently
AnnaBridge 189:f392fc9709a3 4705 * of channel mapped on ADC group regular or injected.
AnnaBridge 189:f392fc9709a3 4706 * @note Conversion time is the addition of sampling time and processing time.
AnnaBridge 189:f392fc9709a3 4707 * On this STM32 serie, ADC processing time is:
AnnaBridge 189:f392fc9709a3 4708 * - 12.5 ADC clock cycles at ADC resolution 12 bits
AnnaBridge 189:f392fc9709a3 4709 * - 10.5 ADC clock cycles at ADC resolution 10 bits
AnnaBridge 189:f392fc9709a3 4710 * - 8.5 ADC clock cycles at ADC resolution 8 bits
AnnaBridge 189:f392fc9709a3 4711 * - 6.5 ADC clock cycles at ADC resolution 6 bits
AnnaBridge 189:f392fc9709a3 4712 * @rmtoll SMPR1 SMP0 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4713 * SMPR1 SMP1 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4714 * SMPR1 SMP2 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4715 * SMPR1 SMP3 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4716 * SMPR1 SMP4 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4717 * SMPR1 SMP5 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4718 * SMPR1 SMP6 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4719 * SMPR1 SMP7 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4720 * SMPR1 SMP8 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4721 * SMPR1 SMP9 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4722 * SMPR2 SMP10 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4723 * SMPR2 SMP11 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4724 * SMPR2 SMP12 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4725 * SMPR2 SMP13 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4726 * SMPR2 SMP14 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4727 * SMPR2 SMP15 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4728 * SMPR2 SMP16 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4729 * SMPR2 SMP17 LL_ADC_GetChannelSamplingTime\n
AnnaBridge 189:f392fc9709a3 4730 * SMPR2 SMP18 LL_ADC_GetChannelSamplingTime
AnnaBridge 189:f392fc9709a3 4731 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4732 * @param Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4733 * @arg @ref LL_ADC_CHANNEL_0
AnnaBridge 189:f392fc9709a3 4734 * @arg @ref LL_ADC_CHANNEL_1 (7)
AnnaBridge 189:f392fc9709a3 4735 * @arg @ref LL_ADC_CHANNEL_2 (7)
AnnaBridge 189:f392fc9709a3 4736 * @arg @ref LL_ADC_CHANNEL_3 (7)
AnnaBridge 189:f392fc9709a3 4737 * @arg @ref LL_ADC_CHANNEL_4 (7)
AnnaBridge 189:f392fc9709a3 4738 * @arg @ref LL_ADC_CHANNEL_5 (7)
AnnaBridge 189:f392fc9709a3 4739 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4740 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4741 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4742 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4743 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4744 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4745 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4746 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4747 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4748 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4749 * @arg @ref LL_ADC_CHANNEL_16
AnnaBridge 189:f392fc9709a3 4750 * @arg @ref LL_ADC_CHANNEL_17
AnnaBridge 189:f392fc9709a3 4751 * @arg @ref LL_ADC_CHANNEL_18
AnnaBridge 189:f392fc9709a3 4752 * @arg @ref LL_ADC_CHANNEL_VREFINT (1)
AnnaBridge 189:f392fc9709a3 4753 * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 189:f392fc9709a3 4754 * @arg @ref LL_ADC_CHANNEL_VBAT (4)
AnnaBridge 189:f392fc9709a3 4755 * @arg @ref LL_ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 189:f392fc9709a3 4756 * @arg @ref LL_ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 189:f392fc9709a3 4757 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4758 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 189:f392fc9709a3 4759 * @arg @ref LL_ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4760 * @arg @ref LL_ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 189:f392fc9709a3 4761 *
AnnaBridge 189:f392fc9709a3 4762 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 4763 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 4764 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 4765 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 189:f392fc9709a3 4766 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 4767 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 189:f392fc9709a3 4768 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 189:f392fc9709a3 4769 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 189:f392fc9709a3 4770 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 4771 * @arg @ref LL_ADC_SAMPLINGTIME_2CYCLES_5 (1)
AnnaBridge 189:f392fc9709a3 4772 * @arg @ref LL_ADC_SAMPLINGTIME_6CYCLES_5
AnnaBridge 189:f392fc9709a3 4773 * @arg @ref LL_ADC_SAMPLINGTIME_12CYCLES_5
AnnaBridge 189:f392fc9709a3 4774 * @arg @ref LL_ADC_SAMPLINGTIME_24CYCLES_5
AnnaBridge 189:f392fc9709a3 4775 * @arg @ref LL_ADC_SAMPLINGTIME_47CYCLES_5
AnnaBridge 189:f392fc9709a3 4776 * @arg @ref LL_ADC_SAMPLINGTIME_92CYCLES_5
AnnaBridge 189:f392fc9709a3 4777 * @arg @ref LL_ADC_SAMPLINGTIME_247CYCLES_5
AnnaBridge 189:f392fc9709a3 4778 * @arg @ref LL_ADC_SAMPLINGTIME_640CYCLES_5
AnnaBridge 189:f392fc9709a3 4779 *
AnnaBridge 189:f392fc9709a3 4780 * (1) On some devices, ADC sampling time 2.5 ADC clock cycles
AnnaBridge 189:f392fc9709a3 4781 * can be replaced by 3.5 ADC clock cycles.
AnnaBridge 189:f392fc9709a3 4782 * Refer to function @ref LL_ADC_SetSamplingTimeCommonConfig().
AnnaBridge 189:f392fc9709a3 4783 */
AnnaBridge 189:f392fc9709a3 4784 __STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel)
AnnaBridge 189:f392fc9709a3 4785 {
AnnaBridge 189:f392fc9709a3 4786 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 4787 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, ((Channel & ADC_CHANNEL_SMPRX_REGOFFSET_MASK) >> ADC_SMPRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 4788
AnnaBridge 189:f392fc9709a3 4789 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 4790 ADC_SMPR1_SMP0 << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS))
AnnaBridge 189:f392fc9709a3 4791 >> ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS)
AnnaBridge 189:f392fc9709a3 4792 );
AnnaBridge 189:f392fc9709a3 4793 #else
AnnaBridge 189:f392fc9709a3 4794 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 4795
AnnaBridge 189:f392fc9709a3 4796 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 4797 ADC_SMPR1_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK))
AnnaBridge 189:f392fc9709a3 4798 >> __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)
AnnaBridge 189:f392fc9709a3 4799 );
AnnaBridge 189:f392fc9709a3 4800 #endif
AnnaBridge 189:f392fc9709a3 4801 }
AnnaBridge 189:f392fc9709a3 4802
AnnaBridge 189:f392fc9709a3 4803 /**
AnnaBridge 189:f392fc9709a3 4804 * @brief Set mode single-ended or differential input of the selected
AnnaBridge 189:f392fc9709a3 4805 * ADC channel.
AnnaBridge 189:f392fc9709a3 4806 * @note Channel ending is on channel scope: independently of channel mapped
AnnaBridge 189:f392fc9709a3 4807 * on ADC group regular or injected.
AnnaBridge 189:f392fc9709a3 4808 * In differential mode: Differential measurement is carried out
AnnaBridge 189:f392fc9709a3 4809 * between the selected channel 'i' (positive input) and
AnnaBridge 189:f392fc9709a3 4810 * channel 'i+1' (negative input). Only channel 'i' has to be
AnnaBridge 189:f392fc9709a3 4811 * configured, channel 'i+1' is configured automatically.
AnnaBridge 189:f392fc9709a3 4812 * @note Refer to Reference Manual to ensure the selected channel is
AnnaBridge 189:f392fc9709a3 4813 * available in differential mode.
AnnaBridge 189:f392fc9709a3 4814 * For example, internal channels (VrefInt, TempSensor, ...) are
AnnaBridge 189:f392fc9709a3 4815 * not available in differential mode.
AnnaBridge 189:f392fc9709a3 4816 * @note When configuring a channel 'i' in differential mode,
AnnaBridge 189:f392fc9709a3 4817 * the channel 'i+1' is not usable separately.
AnnaBridge 189:f392fc9709a3 4818 * @note On STM32L4, channels 16, 17, 18 of ADC1, ADC2, ADC3 (if available)
AnnaBridge 189:f392fc9709a3 4819 * are internally fixed to single-ended inputs configuration.
AnnaBridge 189:f392fc9709a3 4820 * @note For ADC channels configured in differential mode, both inputs
AnnaBridge 189:f392fc9709a3 4821 * should be biased at (Vref+)/2 +/-200mV.
AnnaBridge 189:f392fc9709a3 4822 * (Vref+ is the analog voltage reference)
AnnaBridge 189:f392fc9709a3 4823 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4824 * ADC state:
AnnaBridge 189:f392fc9709a3 4825 * ADC must be ADC disabled.
AnnaBridge 189:f392fc9709a3 4826 * @note One or several values can be selected.
AnnaBridge 189:f392fc9709a3 4827 * Example: (LL_ADC_CHANNEL_4 | LL_ADC_CHANNEL_12 | ...)
AnnaBridge 189:f392fc9709a3 4828 * @rmtoll DIFSEL DIFSEL LL_ADC_SetChannelSingleDiff
AnnaBridge 189:f392fc9709a3 4829 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4830 * @param Channel This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4831 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 189:f392fc9709a3 4832 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 189:f392fc9709a3 4833 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 189:f392fc9709a3 4834 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 189:f392fc9709a3 4835 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 189:f392fc9709a3 4836 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4837 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4838 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4839 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4840 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4841 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4842 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4843 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4844 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4845 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4846 * @param SingleDiff This parameter can be a combination of the following values:
AnnaBridge 189:f392fc9709a3 4847 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 189:f392fc9709a3 4848 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 189:f392fc9709a3 4849 * @retval None
AnnaBridge 189:f392fc9709a3 4850 */
AnnaBridge 189:f392fc9709a3 4851 __STATIC_INLINE void LL_ADC_SetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SingleDiff)
AnnaBridge 189:f392fc9709a3 4852 {
AnnaBridge 189:f392fc9709a3 4853 /* Bits of channels in single or differential mode are set only for */
AnnaBridge 189:f392fc9709a3 4854 /* differential mode (for single mode, mask of bits allowed to be set is */
AnnaBridge 189:f392fc9709a3 4855 /* shifted out of range of bits of channels in single or differential mode. */
AnnaBridge 189:f392fc9709a3 4856 MODIFY_REG(ADCx->DIFSEL,
AnnaBridge 189:f392fc9709a3 4857 Channel & ADC_SINGLEDIFF_CHANNEL_MASK,
AnnaBridge 189:f392fc9709a3 4858 (Channel & ADC_SINGLEDIFF_CHANNEL_MASK) & (ADC_DIFSEL_DIFSEL << (SingleDiff & ADC_SINGLEDIFF_CHANNEL_SHIFT_MASK)));
AnnaBridge 189:f392fc9709a3 4859 }
AnnaBridge 189:f392fc9709a3 4860
AnnaBridge 189:f392fc9709a3 4861 /**
AnnaBridge 189:f392fc9709a3 4862 * @brief Get mode single-ended or differential input of the selected
AnnaBridge 189:f392fc9709a3 4863 * ADC channel.
AnnaBridge 189:f392fc9709a3 4864 * @note When configuring a channel 'i' in differential mode,
AnnaBridge 189:f392fc9709a3 4865 * the channel 'i+1' is not usable separately.
AnnaBridge 189:f392fc9709a3 4866 * Therefore, to ensure a channel is configured in single-ended mode,
AnnaBridge 189:f392fc9709a3 4867 * the configuration of channel itself and the channel 'i-1' must be
AnnaBridge 189:f392fc9709a3 4868 * read back (to ensure that the selected channel channel has not been
AnnaBridge 189:f392fc9709a3 4869 * configured in differential mode by the previous channel).
AnnaBridge 189:f392fc9709a3 4870 * @note Refer to Reference Manual to ensure the selected channel is
AnnaBridge 189:f392fc9709a3 4871 * available in differential mode.
AnnaBridge 189:f392fc9709a3 4872 * For example, internal channels (VrefInt, TempSensor, ...) are
AnnaBridge 189:f392fc9709a3 4873 * not available in differential mode.
AnnaBridge 189:f392fc9709a3 4874 * @note When configuring a channel 'i' in differential mode,
AnnaBridge 189:f392fc9709a3 4875 * the channel 'i+1' is not usable separately.
AnnaBridge 189:f392fc9709a3 4876 * @note On STM32L4, channels 16, 17, 18 of ADC1, ADC2, ADC3 (if available)
AnnaBridge 189:f392fc9709a3 4877 * are internally fixed to single-ended inputs configuration.
AnnaBridge 189:f392fc9709a3 4878 * @note One or several values can be selected. In this case, the value
AnnaBridge 189:f392fc9709a3 4879 * returned is null if all channels are in single ended-mode.
AnnaBridge 189:f392fc9709a3 4880 * Example: (LL_ADC_CHANNEL_4 | LL_ADC_CHANNEL_12 | ...)
AnnaBridge 189:f392fc9709a3 4881 * @rmtoll DIFSEL DIFSEL LL_ADC_GetChannelSingleDiff
AnnaBridge 189:f392fc9709a3 4882 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4883 * @param Channel This parameter can be a combination of the following values:
AnnaBridge 189:f392fc9709a3 4884 * @arg @ref LL_ADC_CHANNEL_1
AnnaBridge 189:f392fc9709a3 4885 * @arg @ref LL_ADC_CHANNEL_2
AnnaBridge 189:f392fc9709a3 4886 * @arg @ref LL_ADC_CHANNEL_3
AnnaBridge 189:f392fc9709a3 4887 * @arg @ref LL_ADC_CHANNEL_4
AnnaBridge 189:f392fc9709a3 4888 * @arg @ref LL_ADC_CHANNEL_5
AnnaBridge 189:f392fc9709a3 4889 * @arg @ref LL_ADC_CHANNEL_6
AnnaBridge 189:f392fc9709a3 4890 * @arg @ref LL_ADC_CHANNEL_7
AnnaBridge 189:f392fc9709a3 4891 * @arg @ref LL_ADC_CHANNEL_8
AnnaBridge 189:f392fc9709a3 4892 * @arg @ref LL_ADC_CHANNEL_9
AnnaBridge 189:f392fc9709a3 4893 * @arg @ref LL_ADC_CHANNEL_10
AnnaBridge 189:f392fc9709a3 4894 * @arg @ref LL_ADC_CHANNEL_11
AnnaBridge 189:f392fc9709a3 4895 * @arg @ref LL_ADC_CHANNEL_12
AnnaBridge 189:f392fc9709a3 4896 * @arg @ref LL_ADC_CHANNEL_13
AnnaBridge 189:f392fc9709a3 4897 * @arg @ref LL_ADC_CHANNEL_14
AnnaBridge 189:f392fc9709a3 4898 * @arg @ref LL_ADC_CHANNEL_15
AnnaBridge 189:f392fc9709a3 4899 * @retval 0: channel in single-ended mode, else: channel in differential mode
AnnaBridge 189:f392fc9709a3 4900 */
AnnaBridge 189:f392fc9709a3 4901 __STATIC_INLINE uint32_t LL_ADC_GetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel)
AnnaBridge 189:f392fc9709a3 4902 {
AnnaBridge 189:f392fc9709a3 4903 return (uint32_t)(READ_BIT(ADCx->DIFSEL, (Channel & ADC_SINGLEDIFF_CHANNEL_MASK)));
AnnaBridge 189:f392fc9709a3 4904 }
AnnaBridge 189:f392fc9709a3 4905
AnnaBridge 189:f392fc9709a3 4906 /**
AnnaBridge 189:f392fc9709a3 4907 * @}
AnnaBridge 189:f392fc9709a3 4908 */
AnnaBridge 189:f392fc9709a3 4909
AnnaBridge 189:f392fc9709a3 4910 /** @defgroup ADC_LL_EF_Configuration_ADC_AnalogWatchdog Configuration of ADC transversal scope: analog watchdog
AnnaBridge 189:f392fc9709a3 4911 * @{
AnnaBridge 189:f392fc9709a3 4912 */
AnnaBridge 189:f392fc9709a3 4913
AnnaBridge 189:f392fc9709a3 4914 /**
AnnaBridge 189:f392fc9709a3 4915 * @brief Set ADC analog watchdog monitored channels:
AnnaBridge 189:f392fc9709a3 4916 * a single channel, multiple channels or all channels,
AnnaBridge 189:f392fc9709a3 4917 * on ADC groups regular and-or injected.
AnnaBridge 189:f392fc9709a3 4918 * @note Once monitored channels are selected, analog watchdog
AnnaBridge 189:f392fc9709a3 4919 * is enabled.
AnnaBridge 189:f392fc9709a3 4920 * @note In case of need to define a single channel to monitor
AnnaBridge 189:f392fc9709a3 4921 * with analog watchdog from sequencer channel definition,
AnnaBridge 189:f392fc9709a3 4922 * use helper macro @ref __LL_ADC_ANALOGWD_CHANNEL_GROUP().
AnnaBridge 189:f392fc9709a3 4923 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 189:f392fc9709a3 4924 * instance:
AnnaBridge 189:f392fc9709a3 4925 * - AWD standard (instance AWD1):
AnnaBridge 189:f392fc9709a3 4926 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 189:f392fc9709a3 4927 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 189:f392fc9709a3 4928 * - resolution: resolution is not limited (corresponds to
AnnaBridge 189:f392fc9709a3 4929 * ADC resolution configured).
AnnaBridge 189:f392fc9709a3 4930 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 189:f392fc9709a3 4931 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 189:f392fc9709a3 4932 * channel wise, from from 1 to all channels.
AnnaBridge 189:f392fc9709a3 4933 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 189:f392fc9709a3 4934 * be selected. For example:
AnnaBridge 189:f392fc9709a3 4935 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 189:f392fc9709a3 4936 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 189:f392fc9709a3 4937 * groups regular and injected).
AnnaBridge 189:f392fc9709a3 4938 * Channels selected are monitored on groups regular and injected:
AnnaBridge 189:f392fc9709a3 4939 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 189:f392fc9709a3 4940 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 189:f392fc9709a3 4941 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 189:f392fc9709a3 4942 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 189:f392fc9709a3 4943 * the 2 LSB are ignored.
AnnaBridge 189:f392fc9709a3 4944 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 4945 * ADC state:
AnnaBridge 189:f392fc9709a3 4946 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 4947 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 4948 * @rmtoll CFGR AWD1CH LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 4949 * CFGR AWD1SGL LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 4950 * CFGR AWD1EN LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 4951 * CFGR JAWD1EN LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 4952 * AWD2CR AWD2CH LL_ADC_SetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 4953 * AWD3CR AWD3CH LL_ADC_SetAnalogWDMonitChannels
AnnaBridge 189:f392fc9709a3 4954 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 4955 * @param AWDy This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4956 * @arg @ref LL_ADC_AWD1
AnnaBridge 189:f392fc9709a3 4957 * @arg @ref LL_ADC_AWD2
AnnaBridge 189:f392fc9709a3 4958 * @arg @ref LL_ADC_AWD3
AnnaBridge 189:f392fc9709a3 4959 * @param AWDChannelGroup This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 4960 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 189:f392fc9709a3 4961 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG (0)
AnnaBridge 189:f392fc9709a3 4962 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ (0)
AnnaBridge 189:f392fc9709a3 4963 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 189:f392fc9709a3 4964 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG (0)
AnnaBridge 189:f392fc9709a3 4965 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ (0)
AnnaBridge 189:f392fc9709a3 4966 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 189:f392fc9709a3 4967 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG (0)
AnnaBridge 189:f392fc9709a3 4968 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ (0)
AnnaBridge 189:f392fc9709a3 4969 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 189:f392fc9709a3 4970 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG (0)
AnnaBridge 189:f392fc9709a3 4971 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ (0)
AnnaBridge 189:f392fc9709a3 4972 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 189:f392fc9709a3 4973 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG (0)
AnnaBridge 189:f392fc9709a3 4974 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ (0)
AnnaBridge 189:f392fc9709a3 4975 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 189:f392fc9709a3 4976 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG (0)
AnnaBridge 189:f392fc9709a3 4977 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ (0)
AnnaBridge 189:f392fc9709a3 4978 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 189:f392fc9709a3 4979 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG (0)
AnnaBridge 189:f392fc9709a3 4980 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ (0)
AnnaBridge 189:f392fc9709a3 4981 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 189:f392fc9709a3 4982 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG (0)
AnnaBridge 189:f392fc9709a3 4983 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ (0)
AnnaBridge 189:f392fc9709a3 4984 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 189:f392fc9709a3 4985 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG (0)
AnnaBridge 189:f392fc9709a3 4986 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ (0)
AnnaBridge 189:f392fc9709a3 4987 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 189:f392fc9709a3 4988 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG (0)
AnnaBridge 189:f392fc9709a3 4989 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ (0)
AnnaBridge 189:f392fc9709a3 4990 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 189:f392fc9709a3 4991 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG (0)
AnnaBridge 189:f392fc9709a3 4992 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ (0)
AnnaBridge 189:f392fc9709a3 4993 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 189:f392fc9709a3 4994 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG (0)
AnnaBridge 189:f392fc9709a3 4995 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ (0)
AnnaBridge 189:f392fc9709a3 4996 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 189:f392fc9709a3 4997 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG (0)
AnnaBridge 189:f392fc9709a3 4998 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ (0)
AnnaBridge 189:f392fc9709a3 4999 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 189:f392fc9709a3 5000 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG (0)
AnnaBridge 189:f392fc9709a3 5001 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ (0)
AnnaBridge 189:f392fc9709a3 5002 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 189:f392fc9709a3 5003 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG (0)
AnnaBridge 189:f392fc9709a3 5004 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ (0)
AnnaBridge 189:f392fc9709a3 5005 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 189:f392fc9709a3 5006 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG (0)
AnnaBridge 189:f392fc9709a3 5007 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ (0)
AnnaBridge 189:f392fc9709a3 5008 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 189:f392fc9709a3 5009 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG (0)
AnnaBridge 189:f392fc9709a3 5010 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ (0)
AnnaBridge 189:f392fc9709a3 5011 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 189:f392fc9709a3 5012 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG (0)
AnnaBridge 189:f392fc9709a3 5013 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ (0)
AnnaBridge 189:f392fc9709a3 5014 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 189:f392fc9709a3 5015 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG (0)
AnnaBridge 189:f392fc9709a3 5016 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ (0)
AnnaBridge 189:f392fc9709a3 5017 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 189:f392fc9709a3 5018 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG (0)
AnnaBridge 189:f392fc9709a3 5019 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ (0)
AnnaBridge 189:f392fc9709a3 5020 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
AnnaBridge 189:f392fc9709a3 5021 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (0)(1)
AnnaBridge 189:f392fc9709a3 5022 * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (0)(1)
AnnaBridge 189:f392fc9709a3 5023 * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1)
AnnaBridge 189:f392fc9709a3 5024 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (0)(4)
AnnaBridge 189:f392fc9709a3 5025 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (0)(4)
AnnaBridge 189:f392fc9709a3 5026 * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (4)
AnnaBridge 189:f392fc9709a3 5027 * @arg @ref LL_ADC_AWD_CH_VBAT_REG (0)(4)
AnnaBridge 189:f392fc9709a3 5028 * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (0)(4)
AnnaBridge 189:f392fc9709a3 5029 * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (4)
AnnaBridge 189:f392fc9709a3 5030 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_REG (0)(2)(5)
AnnaBridge 189:f392fc9709a3 5031 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_INJ (0)(2)(5)
AnnaBridge 189:f392fc9709a3 5032 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_REG_INJ (2)(5)
AnnaBridge 189:f392fc9709a3 5033 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_REG (0)(2)(5)
AnnaBridge 189:f392fc9709a3 5034 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_INJ (0)(2)(5)
AnnaBridge 189:f392fc9709a3 5035 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_REG_INJ (2)(5)
AnnaBridge 189:f392fc9709a3 5036 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC2_REG (0)(2)(6)
AnnaBridge 189:f392fc9709a3 5037 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC2_INJ (0)(2)(6)
AnnaBridge 189:f392fc9709a3 5038 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC2_REG_INJ (2)(6)
AnnaBridge 189:f392fc9709a3 5039 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC2_REG (0)(2)(6)
AnnaBridge 189:f392fc9709a3 5040 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC2_INJ (0)(2)(6)
AnnaBridge 189:f392fc9709a3 5041 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC2_REG_INJ (2)(6)
AnnaBridge 189:f392fc9709a3 5042 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC3_REG (0)(3)(6)
AnnaBridge 189:f392fc9709a3 5043 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC3_INJ (0)(3)(6)
AnnaBridge 189:f392fc9709a3 5044 * @arg @ref LL_ADC_AWD_CH_DAC1CH1_ADC3_REG_INJ (3)(6)
AnnaBridge 189:f392fc9709a3 5045 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC3_REG (0)(3)(6)
AnnaBridge 189:f392fc9709a3 5046 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC3_INJ (0)(3)(6)
AnnaBridge 189:f392fc9709a3 5047 * @arg @ref LL_ADC_AWD_CH_DAC1CH2_ADC3_REG_INJ (3)(6)
AnnaBridge 189:f392fc9709a3 5048 *
AnnaBridge 189:f392fc9709a3 5049 * (0) On STM32L4, parameter available only on analog watchdog number: AWD1.\n
AnnaBridge 189:f392fc9709a3 5050 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 189:f392fc9709a3 5051 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 189:f392fc9709a3 5052 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 189:f392fc9709a3 5053 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.
AnnaBridge 189:f392fc9709a3 5054 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 189:f392fc9709a3 5055 * (6) On STM32L4, parameter available on devices with several ADC instances.
AnnaBridge 189:f392fc9709a3 5056 * @retval None
AnnaBridge 189:f392fc9709a3 5057 */
AnnaBridge 189:f392fc9709a3 5058 __STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
AnnaBridge 189:f392fc9709a3 5059 {
AnnaBridge 189:f392fc9709a3 5060 /* Set bits with content of parameter "AWDChannelGroup" with bits position */
AnnaBridge 189:f392fc9709a3 5061 /* in register and register position depending on parameter "AWDy". */
AnnaBridge 189:f392fc9709a3 5062 /* Parameters "AWDChannelGroup" and "AWDy" are used with masks because */
AnnaBridge 189:f392fc9709a3 5063 /* containing other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 5064 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 5065 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC_AWD_CRX_REGOFFSET_MASK) >> ADC_AWD_CRX_REGOFFSET_POS)
AnnaBridge 189:f392fc9709a3 5066 + ((AWDy & ADC_AWD_CR12_REGOFFSETGAP_MASK) * ADC_AWD_CR12_REGOFFSETGAP_VAL));
AnnaBridge 189:f392fc9709a3 5067
AnnaBridge 189:f392fc9709a3 5068 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 5069 (AWDy & ADC_AWD_CR_ALL_CHANNEL_MASK),
AnnaBridge 189:f392fc9709a3 5070 AWDChannelGroup & AWDy);
AnnaBridge 189:f392fc9709a3 5071 #else
AnnaBridge 189:f392fc9709a3 5072 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, __ADC_MASK_SHIFT(AWDy, ADC_AWD_CRX_REGOFFSET_MASK)
AnnaBridge 189:f392fc9709a3 5073 + ((AWDy & ADC_AWD_CR12_REGOFFSETGAP_MASK) * ADC_AWD_CR12_REGOFFSETGAP_VAL));
AnnaBridge 189:f392fc9709a3 5074
AnnaBridge 189:f392fc9709a3 5075 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 5076 (AWDy & ADC_AWD_CR_ALL_CHANNEL_MASK),
AnnaBridge 189:f392fc9709a3 5077 AWDChannelGroup & AWDy);
AnnaBridge 189:f392fc9709a3 5078 #endif
AnnaBridge 189:f392fc9709a3 5079 }
AnnaBridge 189:f392fc9709a3 5080
AnnaBridge 189:f392fc9709a3 5081 /**
AnnaBridge 189:f392fc9709a3 5082 * @brief Get ADC analog watchdog monitored channel.
AnnaBridge 189:f392fc9709a3 5083 * @note Usage of the returned channel number:
AnnaBridge 189:f392fc9709a3 5084 * - To reinject this channel into another function LL_ADC_xxx:
AnnaBridge 189:f392fc9709a3 5085 * the returned channel number is only partly formatted on definition
AnnaBridge 189:f392fc9709a3 5086 * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared
AnnaBridge 189:f392fc9709a3 5087 * with parts of literals LL_ADC_CHANNEL_x or using
AnnaBridge 189:f392fc9709a3 5088 * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 5089 * Then the selected literal LL_ADC_CHANNEL_x can be used
AnnaBridge 189:f392fc9709a3 5090 * as parameter for another function.
AnnaBridge 189:f392fc9709a3 5091 * - To get the channel number in decimal format:
AnnaBridge 189:f392fc9709a3 5092 * process the returned value with the helper macro
AnnaBridge 189:f392fc9709a3 5093 * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB().
AnnaBridge 189:f392fc9709a3 5094 * Applicable only when the analog watchdog is set to monitor
AnnaBridge 189:f392fc9709a3 5095 * one channel.
AnnaBridge 189:f392fc9709a3 5096 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 189:f392fc9709a3 5097 * instance:
AnnaBridge 189:f392fc9709a3 5098 * - AWD standard (instance AWD1):
AnnaBridge 189:f392fc9709a3 5099 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 189:f392fc9709a3 5100 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 189:f392fc9709a3 5101 * - resolution: resolution is not limited (corresponds to
AnnaBridge 189:f392fc9709a3 5102 * ADC resolution configured).
AnnaBridge 189:f392fc9709a3 5103 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 189:f392fc9709a3 5104 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 189:f392fc9709a3 5105 * channel wise, from from 1 to all channels.
AnnaBridge 189:f392fc9709a3 5106 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 189:f392fc9709a3 5107 * be selected. For example:
AnnaBridge 189:f392fc9709a3 5108 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 189:f392fc9709a3 5109 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 189:f392fc9709a3 5110 * groups regular and injected).
AnnaBridge 189:f392fc9709a3 5111 * Channels selected are monitored on groups regular and injected:
AnnaBridge 189:f392fc9709a3 5112 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 189:f392fc9709a3 5113 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 189:f392fc9709a3 5114 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 189:f392fc9709a3 5115 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 189:f392fc9709a3 5116 * the 2 LSB are ignored.
AnnaBridge 189:f392fc9709a3 5117 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5118 * ADC state:
AnnaBridge 189:f392fc9709a3 5119 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 5120 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 5121 * @rmtoll CFGR AWD1CH LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 5122 * CFGR AWD1SGL LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 5123 * CFGR AWD1EN LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 5124 * CFGR JAWD1EN LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 5125 * AWD2CR AWD2CH LL_ADC_GetAnalogWDMonitChannels\n
AnnaBridge 189:f392fc9709a3 5126 * AWD3CR AWD3CH LL_ADC_GetAnalogWDMonitChannels
AnnaBridge 189:f392fc9709a3 5127 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5128 * @param AWDy This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5129 * @arg @ref LL_ADC_AWD1
AnnaBridge 189:f392fc9709a3 5130 * @arg @ref LL_ADC_AWD2 (1)
AnnaBridge 189:f392fc9709a3 5131 * @arg @ref LL_ADC_AWD3 (1)
AnnaBridge 189:f392fc9709a3 5132 *
AnnaBridge 189:f392fc9709a3 5133 * (1) On this AWD number, monitored channel can be retrieved
AnnaBridge 189:f392fc9709a3 5134 * if only 1 channel is programmed (or none or all channels).
AnnaBridge 189:f392fc9709a3 5135 * This function cannot retrieve monitored channel if
AnnaBridge 189:f392fc9709a3 5136 * multiple channels are programmed simultaneously
AnnaBridge 189:f392fc9709a3 5137 * by bitfield.
AnnaBridge 189:f392fc9709a3 5138 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 5139 * @arg @ref LL_ADC_AWD_DISABLE
AnnaBridge 189:f392fc9709a3 5140 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG (0)
AnnaBridge 189:f392fc9709a3 5141 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ (0)
AnnaBridge 189:f392fc9709a3 5142 * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ
AnnaBridge 189:f392fc9709a3 5143 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG (0)
AnnaBridge 189:f392fc9709a3 5144 * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ (0)
AnnaBridge 189:f392fc9709a3 5145 * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ
AnnaBridge 189:f392fc9709a3 5146 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG (0)
AnnaBridge 189:f392fc9709a3 5147 * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ (0)
AnnaBridge 189:f392fc9709a3 5148 * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ
AnnaBridge 189:f392fc9709a3 5149 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG (0)
AnnaBridge 189:f392fc9709a3 5150 * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ (0)
AnnaBridge 189:f392fc9709a3 5151 * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ
AnnaBridge 189:f392fc9709a3 5152 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG (0)
AnnaBridge 189:f392fc9709a3 5153 * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ (0)
AnnaBridge 189:f392fc9709a3 5154 * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ
AnnaBridge 189:f392fc9709a3 5155 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG (0)
AnnaBridge 189:f392fc9709a3 5156 * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ (0)
AnnaBridge 189:f392fc9709a3 5157 * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ
AnnaBridge 189:f392fc9709a3 5158 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG (0)
AnnaBridge 189:f392fc9709a3 5159 * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ (0)
AnnaBridge 189:f392fc9709a3 5160 * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ
AnnaBridge 189:f392fc9709a3 5161 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG (0)
AnnaBridge 189:f392fc9709a3 5162 * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ (0)
AnnaBridge 189:f392fc9709a3 5163 * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ
AnnaBridge 189:f392fc9709a3 5164 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG (0)
AnnaBridge 189:f392fc9709a3 5165 * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ (0)
AnnaBridge 189:f392fc9709a3 5166 * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ
AnnaBridge 189:f392fc9709a3 5167 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG (0)
AnnaBridge 189:f392fc9709a3 5168 * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ (0)
AnnaBridge 189:f392fc9709a3 5169 * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ
AnnaBridge 189:f392fc9709a3 5170 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG (0)
AnnaBridge 189:f392fc9709a3 5171 * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ (0)
AnnaBridge 189:f392fc9709a3 5172 * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ
AnnaBridge 189:f392fc9709a3 5173 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG (0)
AnnaBridge 189:f392fc9709a3 5174 * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ (0)
AnnaBridge 189:f392fc9709a3 5175 * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ
AnnaBridge 189:f392fc9709a3 5176 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG (0)
AnnaBridge 189:f392fc9709a3 5177 * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ (0)
AnnaBridge 189:f392fc9709a3 5178 * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ
AnnaBridge 189:f392fc9709a3 5179 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG (0)
AnnaBridge 189:f392fc9709a3 5180 * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ (0)
AnnaBridge 189:f392fc9709a3 5181 * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ
AnnaBridge 189:f392fc9709a3 5182 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG (0)
AnnaBridge 189:f392fc9709a3 5183 * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ (0)
AnnaBridge 189:f392fc9709a3 5184 * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ
AnnaBridge 189:f392fc9709a3 5185 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG (0)
AnnaBridge 189:f392fc9709a3 5186 * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ (0)
AnnaBridge 189:f392fc9709a3 5187 * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ
AnnaBridge 189:f392fc9709a3 5188 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG (0)
AnnaBridge 189:f392fc9709a3 5189 * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ (0)
AnnaBridge 189:f392fc9709a3 5190 * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ
AnnaBridge 189:f392fc9709a3 5191 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG (0)
AnnaBridge 189:f392fc9709a3 5192 * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ (0)
AnnaBridge 189:f392fc9709a3 5193 * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ
AnnaBridge 189:f392fc9709a3 5194 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG (0)
AnnaBridge 189:f392fc9709a3 5195 * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ (0)
AnnaBridge 189:f392fc9709a3 5196 * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ
AnnaBridge 189:f392fc9709a3 5197 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG (0)
AnnaBridge 189:f392fc9709a3 5198 * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ (0)
AnnaBridge 189:f392fc9709a3 5199 * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ
AnnaBridge 189:f392fc9709a3 5200 *
AnnaBridge 189:f392fc9709a3 5201 * (0) On STM32L4, parameter available only on analog watchdog number: AWD1.
AnnaBridge 189:f392fc9709a3 5202 */
AnnaBridge 189:f392fc9709a3 5203 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDy)
AnnaBridge 189:f392fc9709a3 5204 {
AnnaBridge 189:f392fc9709a3 5205 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC_AWD_CRX_REGOFFSET_MASK) >> ADC_AWD_CRX_REGOFFSET_POS)
AnnaBridge 189:f392fc9709a3 5206 + ((AWDy & ADC_AWD_CR12_REGOFFSETGAP_MASK) * ADC_AWD_CR12_REGOFFSETGAP_VAL));
AnnaBridge 189:f392fc9709a3 5207
AnnaBridge 189:f392fc9709a3 5208 register uint32_t AnalogWDMonitChannels = (READ_BIT(*preg, AWDy) & AWDy & ADC_AWD_CR_ALL_CHANNEL_MASK);
AnnaBridge 189:f392fc9709a3 5209
AnnaBridge 189:f392fc9709a3 5210 /* If "AnalogWDMonitChannels" == 0, then the selected AWD is disabled */
AnnaBridge 189:f392fc9709a3 5211 /* (parameter value LL_ADC_AWD_DISABLE). */
AnnaBridge 189:f392fc9709a3 5212 /* Else, the selected AWD is enabled and is monitoring a group of channels */
AnnaBridge 189:f392fc9709a3 5213 /* or a single channel. */
AnnaBridge 189:f392fc9709a3 5214 if(AnalogWDMonitChannels != 0)
AnnaBridge 189:f392fc9709a3 5215 {
AnnaBridge 189:f392fc9709a3 5216 if(AWDy == LL_ADC_AWD1)
AnnaBridge 189:f392fc9709a3 5217 {
AnnaBridge 189:f392fc9709a3 5218 if((AnalogWDMonitChannels & ADC_CFGR_AWD1SGL) == 0)
AnnaBridge 189:f392fc9709a3 5219 {
AnnaBridge 189:f392fc9709a3 5220 /* AWD monitoring a group of channels */
AnnaBridge 189:f392fc9709a3 5221 AnalogWDMonitChannels = (( AnalogWDMonitChannels
AnnaBridge 189:f392fc9709a3 5222 | (ADC_AWD_CR23_CHANNEL_MASK)
AnnaBridge 189:f392fc9709a3 5223 )
AnnaBridge 189:f392fc9709a3 5224 & (~(ADC_CFGR_AWD1CH))
AnnaBridge 189:f392fc9709a3 5225 );
AnnaBridge 189:f392fc9709a3 5226 }
AnnaBridge 189:f392fc9709a3 5227 else
AnnaBridge 189:f392fc9709a3 5228 {
AnnaBridge 189:f392fc9709a3 5229 /* AWD monitoring a single channel */
AnnaBridge 189:f392fc9709a3 5230 AnalogWDMonitChannels = (AnalogWDMonitChannels
AnnaBridge 189:f392fc9709a3 5231 | (ADC_AWD2CR_AWD2CH_0 << (AnalogWDMonitChannels >> ADC_CFGR_AWD1CH_Pos))
AnnaBridge 189:f392fc9709a3 5232 );
AnnaBridge 189:f392fc9709a3 5233 }
AnnaBridge 189:f392fc9709a3 5234 }
AnnaBridge 189:f392fc9709a3 5235 else
AnnaBridge 189:f392fc9709a3 5236 {
AnnaBridge 189:f392fc9709a3 5237 if((AnalogWDMonitChannels & ADC_AWD_CR23_CHANNEL_MASK) == ADC_AWD_CR23_CHANNEL_MASK)
AnnaBridge 189:f392fc9709a3 5238 {
AnnaBridge 189:f392fc9709a3 5239 /* AWD monitoring a group of channels */
AnnaBridge 189:f392fc9709a3 5240 AnalogWDMonitChannels = ( ADC_AWD_CR23_CHANNEL_MASK
AnnaBridge 189:f392fc9709a3 5241 | ((ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN))
AnnaBridge 189:f392fc9709a3 5242 );
AnnaBridge 189:f392fc9709a3 5243 }
AnnaBridge 189:f392fc9709a3 5244 else
AnnaBridge 189:f392fc9709a3 5245 {
AnnaBridge 189:f392fc9709a3 5246 /* AWD monitoring a single channel */
AnnaBridge 189:f392fc9709a3 5247 /* AWD monitoring a group of channels */
AnnaBridge 189:f392fc9709a3 5248 AnalogWDMonitChannels = ( AnalogWDMonitChannels
AnnaBridge 189:f392fc9709a3 5249 | (ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
AnnaBridge 189:f392fc9709a3 5250 | (__LL_ADC_CHANNEL_TO_DECIMAL_NB(AnalogWDMonitChannels) << ADC_CFGR_AWD1CH_Pos)
AnnaBridge 189:f392fc9709a3 5251 );
AnnaBridge 189:f392fc9709a3 5252 }
AnnaBridge 189:f392fc9709a3 5253 }
AnnaBridge 189:f392fc9709a3 5254 }
AnnaBridge 189:f392fc9709a3 5255
AnnaBridge 189:f392fc9709a3 5256 return AnalogWDMonitChannels;
AnnaBridge 189:f392fc9709a3 5257
AnnaBridge 189:f392fc9709a3 5258 }
AnnaBridge 189:f392fc9709a3 5259
AnnaBridge 189:f392fc9709a3 5260 /**
AnnaBridge 189:f392fc9709a3 5261 * @brief Set ADC analog watchdog thresholds value of both thresholds
AnnaBridge 189:f392fc9709a3 5262 * high and low.
AnnaBridge 189:f392fc9709a3 5263 * @note If value of only one threshold high or low must be set,
AnnaBridge 189:f392fc9709a3 5264 * use function @ref LL_ADC_SetAnalogWDThresholds().
AnnaBridge 189:f392fc9709a3 5265 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 189:f392fc9709a3 5266 * analog watchdog thresholds data require a specific shift.
AnnaBridge 189:f392fc9709a3 5267 * Use helper macro @ref __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION().
AnnaBridge 189:f392fc9709a3 5268 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 189:f392fc9709a3 5269 * instance:
AnnaBridge 189:f392fc9709a3 5270 * - AWD standard (instance AWD1):
AnnaBridge 189:f392fc9709a3 5271 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 189:f392fc9709a3 5272 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 189:f392fc9709a3 5273 * - resolution: resolution is not limited (corresponds to
AnnaBridge 189:f392fc9709a3 5274 * ADC resolution configured).
AnnaBridge 189:f392fc9709a3 5275 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 189:f392fc9709a3 5276 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 189:f392fc9709a3 5277 * channel wise, from from 1 to all channels.
AnnaBridge 189:f392fc9709a3 5278 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 189:f392fc9709a3 5279 * be selected. For example:
AnnaBridge 189:f392fc9709a3 5280 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 189:f392fc9709a3 5281 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 189:f392fc9709a3 5282 * groups regular and injected).
AnnaBridge 189:f392fc9709a3 5283 * Channels selected are monitored on groups regular and injected:
AnnaBridge 189:f392fc9709a3 5284 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 189:f392fc9709a3 5285 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 189:f392fc9709a3 5286 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 189:f392fc9709a3 5287 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 189:f392fc9709a3 5288 * the 2 LSB are ignored.
AnnaBridge 189:f392fc9709a3 5289 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5290 * ADC state:
AnnaBridge 189:f392fc9709a3 5291 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 5292 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 5293 * @rmtoll TR1 HT1 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5294 * TR2 HT2 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5295 * TR3 HT3 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5296 * TR1 LT1 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5297 * TR2 LT2 LL_ADC_ConfigAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5298 * TR3 LT3 LL_ADC_ConfigAnalogWDThresholds
AnnaBridge 189:f392fc9709a3 5299 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5300 * @param AWDy This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5301 * @arg @ref LL_ADC_AWD1
AnnaBridge 189:f392fc9709a3 5302 * @arg @ref LL_ADC_AWD2
AnnaBridge 189:f392fc9709a3 5303 * @arg @ref LL_ADC_AWD3
AnnaBridge 189:f392fc9709a3 5304 * @param AWDThresholdHighValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 5305 * @param AWDThresholdLowValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 5306 * @retval None
AnnaBridge 189:f392fc9709a3 5307 */
AnnaBridge 189:f392fc9709a3 5308 __STATIC_INLINE void LL_ADC_ConfigAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue, uint32_t AWDThresholdLowValue)
AnnaBridge 189:f392fc9709a3 5309 {
AnnaBridge 189:f392fc9709a3 5310 /* Set bits with content of parameter "AWDThresholdxxxValue" with bits */
AnnaBridge 189:f392fc9709a3 5311 /* position in register and register position depending on parameter */
AnnaBridge 189:f392fc9709a3 5312 /* "AWDy". */
AnnaBridge 189:f392fc9709a3 5313 /* Parameters "AWDy" and "AWDThresholdxxxValue" are used with masks because */
AnnaBridge 189:f392fc9709a3 5314 /* containing other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 5315 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 5316 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, ((AWDy & ADC_AWD_TRX_REGOFFSET_MASK) >> ADC_AWD_TRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 5317 #else
AnnaBridge 189:f392fc9709a3 5318 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, __ADC_MASK_SHIFT(AWDy, ADC_AWD_TRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 5319 #endif
AnnaBridge 189:f392fc9709a3 5320
AnnaBridge 189:f392fc9709a3 5321 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 5322 ADC_TR1_HT1 | ADC_TR1_LT1,
AnnaBridge 189:f392fc9709a3 5323 (AWDThresholdHighValue << ADC_TR1_HT1_BITOFFSET_POS) | AWDThresholdLowValue);
AnnaBridge 189:f392fc9709a3 5324 }
AnnaBridge 189:f392fc9709a3 5325
AnnaBridge 189:f392fc9709a3 5326 /**
AnnaBridge 189:f392fc9709a3 5327 * @brief Set ADC analog watchdog threshold value of threshold
AnnaBridge 189:f392fc9709a3 5328 * high or low.
AnnaBridge 189:f392fc9709a3 5329 * @note If values of both thresholds high or low must be set,
AnnaBridge 189:f392fc9709a3 5330 * use function @ref LL_ADC_ConfigAnalogWDThresholds().
AnnaBridge 189:f392fc9709a3 5331 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 189:f392fc9709a3 5332 * analog watchdog thresholds data require a specific shift.
AnnaBridge 189:f392fc9709a3 5333 * Use helper macro @ref __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION().
AnnaBridge 189:f392fc9709a3 5334 * @note On this STM32 serie, there are 2 kinds of analog watchdog
AnnaBridge 189:f392fc9709a3 5335 * instance:
AnnaBridge 189:f392fc9709a3 5336 * - AWD standard (instance AWD1):
AnnaBridge 189:f392fc9709a3 5337 * - channels monitored: can monitor 1 channel or all channels.
AnnaBridge 189:f392fc9709a3 5338 * - groups monitored: ADC groups regular and-or injected.
AnnaBridge 189:f392fc9709a3 5339 * - resolution: resolution is not limited (corresponds to
AnnaBridge 189:f392fc9709a3 5340 * ADC resolution configured).
AnnaBridge 189:f392fc9709a3 5341 * - AWD flexible (instances AWD2, AWD3):
AnnaBridge 189:f392fc9709a3 5342 * - channels monitored: flexible on channels monitored, selection is
AnnaBridge 189:f392fc9709a3 5343 * channel wise, from from 1 to all channels.
AnnaBridge 189:f392fc9709a3 5344 * Specificity of this analog watchdog: Multiple channels can
AnnaBridge 189:f392fc9709a3 5345 * be selected. For example:
AnnaBridge 189:f392fc9709a3 5346 * (LL_ADC_AWD_CHANNEL4_REG_INJ | LL_ADC_AWD_CHANNEL5_REG_INJ | ...)
AnnaBridge 189:f392fc9709a3 5347 * - groups monitored: not selection possible (monitoring on both
AnnaBridge 189:f392fc9709a3 5348 * groups regular and injected).
AnnaBridge 189:f392fc9709a3 5349 * Channels selected are monitored on groups regular and injected:
AnnaBridge 189:f392fc9709a3 5350 * LL_ADC_AWD_CHANNELxx_REG_INJ (do not use parameters
AnnaBridge 189:f392fc9709a3 5351 * LL_ADC_AWD_CHANNELxx_REG and LL_ADC_AWD_CHANNELxx_INJ)
AnnaBridge 189:f392fc9709a3 5352 * - resolution: resolution is limited to 8 bits: if ADC resolution is
AnnaBridge 189:f392fc9709a3 5353 * 12 bits the 4 LSB are ignored, if ADC resolution is 10 bits
AnnaBridge 189:f392fc9709a3 5354 * the 2 LSB are ignored.
AnnaBridge 189:f392fc9709a3 5355 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5356 * ADC state:
AnnaBridge 189:f392fc9709a3 5357 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 5358 * on either ADC groups regular or injected.
AnnaBridge 189:f392fc9709a3 5359 * @rmtoll TR1 HT1 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5360 * TR2 HT2 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5361 * TR3 HT3 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5362 * TR1 LT1 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5363 * TR2 LT2 LL_ADC_SetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5364 * TR3 LT3 LL_ADC_SetAnalogWDThresholds
AnnaBridge 189:f392fc9709a3 5365 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5366 * @param AWDy This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5367 * @arg @ref LL_ADC_AWD1
AnnaBridge 189:f392fc9709a3 5368 * @arg @ref LL_ADC_AWD2
AnnaBridge 189:f392fc9709a3 5369 * @arg @ref LL_ADC_AWD3
AnnaBridge 189:f392fc9709a3 5370 * @param AWDThresholdsHighLow This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5371 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 189:f392fc9709a3 5372 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 189:f392fc9709a3 5373 * @param AWDThresholdValue Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 5374 * @retval None
AnnaBridge 189:f392fc9709a3 5375 */
AnnaBridge 189:f392fc9709a3 5376 __STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue)
AnnaBridge 189:f392fc9709a3 5377 {
AnnaBridge 189:f392fc9709a3 5378 /* Set bits with content of parameter "AWDThresholdValue" with bits */
AnnaBridge 189:f392fc9709a3 5379 /* position in register and register position depending on parameters */
AnnaBridge 189:f392fc9709a3 5380 /* "AWDThresholdsHighLow" and "AWDy". */
AnnaBridge 189:f392fc9709a3 5381 /* Parameters "AWDy" and "AWDThresholdValue" are used with masks because */
AnnaBridge 189:f392fc9709a3 5382 /* containing other bits reserved for other purpose. */
AnnaBridge 189:f392fc9709a3 5383 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 5384 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, ((AWDy & ADC_AWD_TRX_REGOFFSET_MASK) >> ADC_AWD_TRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 5385
AnnaBridge 189:f392fc9709a3 5386 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 5387 AWDThresholdsHighLow,
AnnaBridge 189:f392fc9709a3 5388 AWDThresholdValue << ((AWDThresholdsHighLow & ADC_AWD_TRX_BIT_HIGH_MASK) >> ADC_AWD_TRX_BIT_HIGH_SHIFT4));
AnnaBridge 189:f392fc9709a3 5389 #else
AnnaBridge 189:f392fc9709a3 5390 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, __ADC_MASK_SHIFT(AWDy, ADC_AWD_TRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 5391
AnnaBridge 189:f392fc9709a3 5392 MODIFY_REG(*preg,
AnnaBridge 189:f392fc9709a3 5393 AWDThresholdsHighLow,
AnnaBridge 189:f392fc9709a3 5394 AWDThresholdValue << POSITION_VAL(AWDThresholdsHighLow));
AnnaBridge 189:f392fc9709a3 5395 #endif
AnnaBridge 189:f392fc9709a3 5396 }
AnnaBridge 189:f392fc9709a3 5397
AnnaBridge 189:f392fc9709a3 5398 /**
AnnaBridge 189:f392fc9709a3 5399 * @brief Get ADC analog watchdog threshold value of threshold high,
AnnaBridge 189:f392fc9709a3 5400 * threshold low or raw data with ADC thresholds high and low
AnnaBridge 189:f392fc9709a3 5401 * concatenated.
AnnaBridge 189:f392fc9709a3 5402 * @note If raw data with ADC thresholds high and low is retrieved,
AnnaBridge 189:f392fc9709a3 5403 * the data of each threshold high or low can be isolated
AnnaBridge 189:f392fc9709a3 5404 * using helper macro:
AnnaBridge 189:f392fc9709a3 5405 * @ref __LL_ADC_ANALOGWD_THRESHOLDS_HIGH_LOW().
AnnaBridge 189:f392fc9709a3 5406 * @note In case of ADC resolution different of 12 bits,
AnnaBridge 189:f392fc9709a3 5407 * analog watchdog thresholds data require a specific shift.
AnnaBridge 189:f392fc9709a3 5408 * Use helper macro @ref __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION().
AnnaBridge 189:f392fc9709a3 5409 * @rmtoll TR1 HT1 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5410 * TR2 HT2 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5411 * TR3 HT3 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5412 * TR1 LT1 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5413 * TR2 LT2 LL_ADC_GetAnalogWDThresholds\n
AnnaBridge 189:f392fc9709a3 5414 * TR3 LT3 LL_ADC_GetAnalogWDThresholds
AnnaBridge 189:f392fc9709a3 5415 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5416 * @param AWDy This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5417 * @arg @ref LL_ADC_AWD1
AnnaBridge 189:f392fc9709a3 5418 * @arg @ref LL_ADC_AWD2
AnnaBridge 189:f392fc9709a3 5419 * @arg @ref LL_ADC_AWD3
AnnaBridge 189:f392fc9709a3 5420 * @param AWDThresholdsHighLow This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5421 * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH
AnnaBridge 189:f392fc9709a3 5422 * @arg @ref LL_ADC_AWD_THRESHOLD_LOW
AnnaBridge 189:f392fc9709a3 5423 * @arg @ref LL_ADC_AWD_THRESHOLDS_HIGH_LOW
AnnaBridge 189:f392fc9709a3 5424 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 5425 */
AnnaBridge 189:f392fc9709a3 5426 __STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow)
AnnaBridge 189:f392fc9709a3 5427 {
AnnaBridge 189:f392fc9709a3 5428 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 5429 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, ((AWDy & ADC_AWD_TRX_REGOFFSET_MASK) >> ADC_AWD_TRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 5430
AnnaBridge 189:f392fc9709a3 5431 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 5432 (AWDThresholdsHighLow | ADC_TR1_LT1))
AnnaBridge 189:f392fc9709a3 5433 >> (((AWDThresholdsHighLow & ADC_AWD_TRX_BIT_HIGH_MASK) >> ADC_AWD_TRX_BIT_HIGH_SHIFT4) & ~(AWDThresholdsHighLow & ADC_TR1_LT1))
AnnaBridge 189:f392fc9709a3 5434 );
AnnaBridge 189:f392fc9709a3 5435 #else
AnnaBridge 189:f392fc9709a3 5436 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, __ADC_MASK_SHIFT(AWDy, ADC_AWD_TRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 5437
AnnaBridge 189:f392fc9709a3 5438 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 5439 (AWDThresholdsHighLow | ADC_TR1_LT1))
AnnaBridge 189:f392fc9709a3 5440 >> POSITION_VAL(AWDThresholdsHighLow)
AnnaBridge 189:f392fc9709a3 5441 );
AnnaBridge 189:f392fc9709a3 5442 #endif
AnnaBridge 189:f392fc9709a3 5443 }
AnnaBridge 189:f392fc9709a3 5444
AnnaBridge 189:f392fc9709a3 5445 /**
AnnaBridge 189:f392fc9709a3 5446 * @}
AnnaBridge 189:f392fc9709a3 5447 */
AnnaBridge 189:f392fc9709a3 5448
AnnaBridge 189:f392fc9709a3 5449 /** @defgroup ADC_LL_EF_Configuration_ADC_oversampling Configuration of ADC transversal scope: oversampling
AnnaBridge 189:f392fc9709a3 5450 * @{
AnnaBridge 189:f392fc9709a3 5451 */
AnnaBridge 189:f392fc9709a3 5452
AnnaBridge 189:f392fc9709a3 5453 /**
AnnaBridge 189:f392fc9709a3 5454 * @brief Set ADC oversampling scope: ADC groups regular and-or injected
AnnaBridge 189:f392fc9709a3 5455 * (availability of ADC group injected depends on STM32 families).
AnnaBridge 189:f392fc9709a3 5456 * @note If both groups regular and injected are selected,
AnnaBridge 189:f392fc9709a3 5457 * specify behavior of ADC group injected interrupting
AnnaBridge 189:f392fc9709a3 5458 * group regular: when ADC group injected is triggered,
AnnaBridge 189:f392fc9709a3 5459 * the oversampling on ADC group regular is either
AnnaBridge 189:f392fc9709a3 5460 * temporary stopped and continued, or resumed from start
AnnaBridge 189:f392fc9709a3 5461 * (oversampler buffer reset).
AnnaBridge 189:f392fc9709a3 5462 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5463 * ADC state:
AnnaBridge 189:f392fc9709a3 5464 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 5465 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 5466 * @rmtoll CFGR2 ROVSE LL_ADC_SetOverSamplingScope\n
AnnaBridge 189:f392fc9709a3 5467 * CFGR2 JOVSE LL_ADC_SetOverSamplingScope\n
AnnaBridge 189:f392fc9709a3 5468 * CFGR2 ROVSM LL_ADC_SetOverSamplingScope
AnnaBridge 189:f392fc9709a3 5469 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5470 * @param OvsScope This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5471 * @arg @ref LL_ADC_OVS_DISABLE
AnnaBridge 189:f392fc9709a3 5472 * @arg @ref LL_ADC_OVS_GRP_REGULAR_CONTINUED
AnnaBridge 189:f392fc9709a3 5473 * @arg @ref LL_ADC_OVS_GRP_REGULAR_RESUMED
AnnaBridge 189:f392fc9709a3 5474 * @arg @ref LL_ADC_OVS_GRP_INJECTED
AnnaBridge 189:f392fc9709a3 5475 * @arg @ref LL_ADC_OVS_GRP_INJ_REG_RESUMED
AnnaBridge 189:f392fc9709a3 5476 * @retval None
AnnaBridge 189:f392fc9709a3 5477 */
AnnaBridge 189:f392fc9709a3 5478 __STATIC_INLINE void LL_ADC_SetOverSamplingScope(ADC_TypeDef *ADCx, uint32_t OvsScope)
AnnaBridge 189:f392fc9709a3 5479 {
AnnaBridge 189:f392fc9709a3 5480 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_ROVSE | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSM, OvsScope);
AnnaBridge 189:f392fc9709a3 5481 }
AnnaBridge 189:f392fc9709a3 5482
AnnaBridge 189:f392fc9709a3 5483 /**
AnnaBridge 189:f392fc9709a3 5484 * @brief Get ADC oversampling scope: ADC groups regular and-or injected
AnnaBridge 189:f392fc9709a3 5485 * (availability of ADC group injected depends on STM32 families).
AnnaBridge 189:f392fc9709a3 5486 * @note If both groups regular and injected are selected,
AnnaBridge 189:f392fc9709a3 5487 * specify behavior of ADC group injected interrupting
AnnaBridge 189:f392fc9709a3 5488 * group regular: when ADC group injected is triggered,
AnnaBridge 189:f392fc9709a3 5489 * the oversampling on ADC group regular is either
AnnaBridge 189:f392fc9709a3 5490 * temporary stopped and continued, or resumed from start
AnnaBridge 189:f392fc9709a3 5491 * (oversampler buffer reset).
AnnaBridge 189:f392fc9709a3 5492 * @rmtoll CFGR2 ROVSE LL_ADC_GetOverSamplingScope\n
AnnaBridge 189:f392fc9709a3 5493 * CFGR2 JOVSE LL_ADC_GetOverSamplingScope\n
AnnaBridge 189:f392fc9709a3 5494 * CFGR2 ROVSM LL_ADC_GetOverSamplingScope
AnnaBridge 189:f392fc9709a3 5495 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5496 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 5497 * @arg @ref LL_ADC_OVS_DISABLE
AnnaBridge 189:f392fc9709a3 5498 * @arg @ref LL_ADC_OVS_GRP_REGULAR_CONTINUED
AnnaBridge 189:f392fc9709a3 5499 * @arg @ref LL_ADC_OVS_GRP_REGULAR_RESUMED
AnnaBridge 189:f392fc9709a3 5500 * @arg @ref LL_ADC_OVS_GRP_INJECTED
AnnaBridge 189:f392fc9709a3 5501 * @arg @ref LL_ADC_OVS_GRP_INJ_REG_RESUMED
AnnaBridge 189:f392fc9709a3 5502 */
AnnaBridge 189:f392fc9709a3 5503 __STATIC_INLINE uint32_t LL_ADC_GetOverSamplingScope(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5504 {
AnnaBridge 189:f392fc9709a3 5505 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_ROVSE | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSM));
AnnaBridge 189:f392fc9709a3 5506 }
AnnaBridge 189:f392fc9709a3 5507
AnnaBridge 189:f392fc9709a3 5508 /**
AnnaBridge 189:f392fc9709a3 5509 * @brief Set ADC oversampling discontinuous mode (triggered mode)
AnnaBridge 189:f392fc9709a3 5510 * on the selected ADC group.
AnnaBridge 189:f392fc9709a3 5511 * @note Number of oversampled conversions are done either in:
AnnaBridge 189:f392fc9709a3 5512 * - continuous mode (all conversions of oversampling ratio
AnnaBridge 189:f392fc9709a3 5513 * are done from 1 trigger)
AnnaBridge 189:f392fc9709a3 5514 * - discontinuous mode (each conversion of oversampling ratio
AnnaBridge 189:f392fc9709a3 5515 * needs a trigger)
AnnaBridge 189:f392fc9709a3 5516 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5517 * ADC state:
AnnaBridge 189:f392fc9709a3 5518 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 5519 * on group regular.
AnnaBridge 189:f392fc9709a3 5520 * @note On this STM32 serie, oversampling discontinuous mode
AnnaBridge 189:f392fc9709a3 5521 * (triggered mode) can be used only when oversampling is
AnnaBridge 189:f392fc9709a3 5522 * set on group regular only and in resumed mode.
AnnaBridge 189:f392fc9709a3 5523 * @rmtoll CFGR2 TROVS LL_ADC_SetOverSamplingDiscont
AnnaBridge 189:f392fc9709a3 5524 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5525 * @param OverSamplingDiscont This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5526 * @arg @ref LL_ADC_OVS_REG_CONT
AnnaBridge 189:f392fc9709a3 5527 * @arg @ref LL_ADC_OVS_REG_DISCONT
AnnaBridge 189:f392fc9709a3 5528 * @retval None
AnnaBridge 189:f392fc9709a3 5529 */
AnnaBridge 189:f392fc9709a3 5530 __STATIC_INLINE void LL_ADC_SetOverSamplingDiscont(ADC_TypeDef *ADCx, uint32_t OverSamplingDiscont)
AnnaBridge 189:f392fc9709a3 5531 {
AnnaBridge 189:f392fc9709a3 5532 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_TROVS, OverSamplingDiscont);
AnnaBridge 189:f392fc9709a3 5533 }
AnnaBridge 189:f392fc9709a3 5534
AnnaBridge 189:f392fc9709a3 5535 /**
AnnaBridge 189:f392fc9709a3 5536 * @brief Get ADC oversampling discontinuous mode (triggered mode)
AnnaBridge 189:f392fc9709a3 5537 * on the selected ADC group.
AnnaBridge 189:f392fc9709a3 5538 * @note Number of oversampled conversions are done either in:
AnnaBridge 189:f392fc9709a3 5539 * - continuous mode (all conversions of oversampling ratio
AnnaBridge 189:f392fc9709a3 5540 * are done from 1 trigger)
AnnaBridge 189:f392fc9709a3 5541 * - discontinuous mode (each conversion of oversampling ratio
AnnaBridge 189:f392fc9709a3 5542 * needs a trigger)
AnnaBridge 189:f392fc9709a3 5543 * @rmtoll CFGR2 TROVS LL_ADC_GetOverSamplingDiscont
AnnaBridge 189:f392fc9709a3 5544 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5545 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 5546 * @arg @ref LL_ADC_OVS_REG_CONT
AnnaBridge 189:f392fc9709a3 5547 * @arg @ref LL_ADC_OVS_REG_DISCONT
AnnaBridge 189:f392fc9709a3 5548 */
AnnaBridge 189:f392fc9709a3 5549 __STATIC_INLINE uint32_t LL_ADC_GetOverSamplingDiscont(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5550 {
AnnaBridge 189:f392fc9709a3 5551 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_TROVS));
AnnaBridge 189:f392fc9709a3 5552 }
AnnaBridge 189:f392fc9709a3 5553
AnnaBridge 189:f392fc9709a3 5554 /**
AnnaBridge 189:f392fc9709a3 5555 * @brief Set ADC oversampling
AnnaBridge 189:f392fc9709a3 5556 * (impacting both ADC groups regular and injected)
AnnaBridge 189:f392fc9709a3 5557 * @note This function set the 2 items of oversampling configuration:
AnnaBridge 189:f392fc9709a3 5558 * - ratio
AnnaBridge 189:f392fc9709a3 5559 * - shift
AnnaBridge 189:f392fc9709a3 5560 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5561 * ADC state:
AnnaBridge 189:f392fc9709a3 5562 * ADC must be disabled or enabled without conversion on going
AnnaBridge 189:f392fc9709a3 5563 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 5564 * @rmtoll CFGR2 OVSS LL_ADC_ConfigOverSamplingRatioShift\n
AnnaBridge 189:f392fc9709a3 5565 * CFGR2 OVSR LL_ADC_ConfigOverSamplingRatioShift
AnnaBridge 189:f392fc9709a3 5566 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5567 * @param Ratio This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5568 * @arg @ref LL_ADC_OVS_RATIO_2
AnnaBridge 189:f392fc9709a3 5569 * @arg @ref LL_ADC_OVS_RATIO_4
AnnaBridge 189:f392fc9709a3 5570 * @arg @ref LL_ADC_OVS_RATIO_8
AnnaBridge 189:f392fc9709a3 5571 * @arg @ref LL_ADC_OVS_RATIO_16
AnnaBridge 189:f392fc9709a3 5572 * @arg @ref LL_ADC_OVS_RATIO_32
AnnaBridge 189:f392fc9709a3 5573 * @arg @ref LL_ADC_OVS_RATIO_64
AnnaBridge 189:f392fc9709a3 5574 * @arg @ref LL_ADC_OVS_RATIO_128
AnnaBridge 189:f392fc9709a3 5575 * @arg @ref LL_ADC_OVS_RATIO_256
AnnaBridge 189:f392fc9709a3 5576 * @param Shift This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5577 * @arg @ref LL_ADC_OVS_SHIFT_NONE
AnnaBridge 189:f392fc9709a3 5578 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_1
AnnaBridge 189:f392fc9709a3 5579 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_2
AnnaBridge 189:f392fc9709a3 5580 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_3
AnnaBridge 189:f392fc9709a3 5581 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_4
AnnaBridge 189:f392fc9709a3 5582 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_5
AnnaBridge 189:f392fc9709a3 5583 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_6
AnnaBridge 189:f392fc9709a3 5584 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_7
AnnaBridge 189:f392fc9709a3 5585 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_8
AnnaBridge 189:f392fc9709a3 5586 * @retval None
AnnaBridge 189:f392fc9709a3 5587 */
AnnaBridge 189:f392fc9709a3 5588 __STATIC_INLINE void LL_ADC_ConfigOverSamplingRatioShift(ADC_TypeDef *ADCx, uint32_t Ratio, uint32_t Shift)
AnnaBridge 189:f392fc9709a3 5589 {
AnnaBridge 189:f392fc9709a3 5590 MODIFY_REG(ADCx->CFGR2, (ADC_CFGR2_OVSS | ADC_CFGR2_OVSR), (Shift | Ratio));
AnnaBridge 189:f392fc9709a3 5591 }
AnnaBridge 189:f392fc9709a3 5592
AnnaBridge 189:f392fc9709a3 5593 /**
AnnaBridge 189:f392fc9709a3 5594 * @brief Get ADC oversampling ratio
AnnaBridge 189:f392fc9709a3 5595 * (impacting both ADC groups regular and injected)
AnnaBridge 189:f392fc9709a3 5596 * @rmtoll CFGR2 OVSR LL_ADC_GetOverSamplingRatio
AnnaBridge 189:f392fc9709a3 5597 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5598 * @retval Ratio This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5599 * @arg @ref LL_ADC_OVS_RATIO_2
AnnaBridge 189:f392fc9709a3 5600 * @arg @ref LL_ADC_OVS_RATIO_4
AnnaBridge 189:f392fc9709a3 5601 * @arg @ref LL_ADC_OVS_RATIO_8
AnnaBridge 189:f392fc9709a3 5602 * @arg @ref LL_ADC_OVS_RATIO_16
AnnaBridge 189:f392fc9709a3 5603 * @arg @ref LL_ADC_OVS_RATIO_32
AnnaBridge 189:f392fc9709a3 5604 * @arg @ref LL_ADC_OVS_RATIO_64
AnnaBridge 189:f392fc9709a3 5605 * @arg @ref LL_ADC_OVS_RATIO_128
AnnaBridge 189:f392fc9709a3 5606 * @arg @ref LL_ADC_OVS_RATIO_256
AnnaBridge 189:f392fc9709a3 5607 */
AnnaBridge 189:f392fc9709a3 5608 __STATIC_INLINE uint32_t LL_ADC_GetOverSamplingRatio(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5609 {
AnnaBridge 189:f392fc9709a3 5610 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_OVSR));
AnnaBridge 189:f392fc9709a3 5611 }
AnnaBridge 189:f392fc9709a3 5612
AnnaBridge 189:f392fc9709a3 5613 /**
AnnaBridge 189:f392fc9709a3 5614 * @brief Get ADC oversampling shift
AnnaBridge 189:f392fc9709a3 5615 * (impacting both ADC groups regular and injected)
AnnaBridge 189:f392fc9709a3 5616 * @rmtoll CFGR2 OVSS LL_ADC_GetOverSamplingShift
AnnaBridge 189:f392fc9709a3 5617 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5618 * @retval Shift This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5619 * @arg @ref LL_ADC_OVS_SHIFT_NONE
AnnaBridge 189:f392fc9709a3 5620 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_1
AnnaBridge 189:f392fc9709a3 5621 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_2
AnnaBridge 189:f392fc9709a3 5622 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_3
AnnaBridge 189:f392fc9709a3 5623 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_4
AnnaBridge 189:f392fc9709a3 5624 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_5
AnnaBridge 189:f392fc9709a3 5625 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_6
AnnaBridge 189:f392fc9709a3 5626 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_7
AnnaBridge 189:f392fc9709a3 5627 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_8
AnnaBridge 189:f392fc9709a3 5628 */
AnnaBridge 189:f392fc9709a3 5629 __STATIC_INLINE uint32_t LL_ADC_GetOverSamplingShift(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5630 {
AnnaBridge 189:f392fc9709a3 5631 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_OVSS));
AnnaBridge 189:f392fc9709a3 5632 }
AnnaBridge 189:f392fc9709a3 5633
AnnaBridge 189:f392fc9709a3 5634 /**
AnnaBridge 189:f392fc9709a3 5635 * @}
AnnaBridge 189:f392fc9709a3 5636 */
AnnaBridge 189:f392fc9709a3 5637
AnnaBridge 189:f392fc9709a3 5638 /** @defgroup ADC_LL_EF_Configuration_ADC_Multimode Configuration of ADC hierarchical scope: multimode
AnnaBridge 189:f392fc9709a3 5639 * @{
AnnaBridge 189:f392fc9709a3 5640 */
AnnaBridge 189:f392fc9709a3 5641
AnnaBridge 189:f392fc9709a3 5642 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 5643 /**
AnnaBridge 189:f392fc9709a3 5644 * @brief Set ADC multimode configuration to operate in independent mode
AnnaBridge 189:f392fc9709a3 5645 * or multimode (for devices with several ADC instances).
AnnaBridge 189:f392fc9709a3 5646 * @note If multimode configuration: the selected ADC instance is
AnnaBridge 189:f392fc9709a3 5647 * either master or slave depending on hardware.
AnnaBridge 189:f392fc9709a3 5648 * Refer to reference manual.
AnnaBridge 189:f392fc9709a3 5649 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5650 * ADC state:
AnnaBridge 189:f392fc9709a3 5651 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 189:f392fc9709a3 5652 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 189:f392fc9709a3 5653 * ADC instance or by using helper macro
AnnaBridge 189:f392fc9709a3 5654 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 189:f392fc9709a3 5655 * @rmtoll CCR DUAL LL_ADC_SetMultimode
AnnaBridge 189:f392fc9709a3 5656 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 5657 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 5658 * @param Multimode This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5659 * @arg @ref LL_ADC_MULTI_INDEPENDENT
AnnaBridge 189:f392fc9709a3 5660 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT
AnnaBridge 189:f392fc9709a3 5661 * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL
AnnaBridge 189:f392fc9709a3 5662 * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT
AnnaBridge 189:f392fc9709a3 5663 * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN
AnnaBridge 189:f392fc9709a3 5664 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM
AnnaBridge 189:f392fc9709a3 5665 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT
AnnaBridge 189:f392fc9709a3 5666 * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM
AnnaBridge 189:f392fc9709a3 5667 * @retval None
AnnaBridge 189:f392fc9709a3 5668 */
AnnaBridge 189:f392fc9709a3 5669 __STATIC_INLINE void LL_ADC_SetMultimode(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t Multimode)
AnnaBridge 189:f392fc9709a3 5670 {
AnnaBridge 189:f392fc9709a3 5671 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DUAL, Multimode);
AnnaBridge 189:f392fc9709a3 5672 }
AnnaBridge 189:f392fc9709a3 5673
AnnaBridge 189:f392fc9709a3 5674 /**
AnnaBridge 189:f392fc9709a3 5675 * @brief Get ADC multimode configuration to operate in independent mode
AnnaBridge 189:f392fc9709a3 5676 * or multimode (for devices with several ADC instances).
AnnaBridge 189:f392fc9709a3 5677 * @note If multimode configuration: the selected ADC instance is
AnnaBridge 189:f392fc9709a3 5678 * either master or slave depending on hardware.
AnnaBridge 189:f392fc9709a3 5679 * Refer to reference manual.
AnnaBridge 189:f392fc9709a3 5680 * @rmtoll CCR DUAL LL_ADC_GetMultimode
AnnaBridge 189:f392fc9709a3 5681 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 5682 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 5683 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 5684 * @arg @ref LL_ADC_MULTI_INDEPENDENT
AnnaBridge 189:f392fc9709a3 5685 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT
AnnaBridge 189:f392fc9709a3 5686 * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL
AnnaBridge 189:f392fc9709a3 5687 * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT
AnnaBridge 189:f392fc9709a3 5688 * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN
AnnaBridge 189:f392fc9709a3 5689 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM
AnnaBridge 189:f392fc9709a3 5690 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT
AnnaBridge 189:f392fc9709a3 5691 * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM
AnnaBridge 189:f392fc9709a3 5692 */
AnnaBridge 189:f392fc9709a3 5693 __STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 5694 {
AnnaBridge 189:f392fc9709a3 5695 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DUAL));
AnnaBridge 189:f392fc9709a3 5696 }
AnnaBridge 189:f392fc9709a3 5697
AnnaBridge 189:f392fc9709a3 5698 /**
AnnaBridge 189:f392fc9709a3 5699 * @brief Set ADC multimode conversion data transfer: no transfer
AnnaBridge 189:f392fc9709a3 5700 * or transfer by DMA.
AnnaBridge 189:f392fc9709a3 5701 * @note If ADC multimode transfer by DMA is not selected:
AnnaBridge 189:f392fc9709a3 5702 * each ADC uses its own DMA channel, with its individual
AnnaBridge 189:f392fc9709a3 5703 * DMA transfer settings.
AnnaBridge 189:f392fc9709a3 5704 * If ADC multimode transfer by DMA is selected:
AnnaBridge 189:f392fc9709a3 5705 * One DMA channel is used for both ADC (DMA of ADC master)
AnnaBridge 189:f392fc9709a3 5706 * Specifies the DMA requests mode:
AnnaBridge 189:f392fc9709a3 5707 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 189:f392fc9709a3 5708 * when number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 5709 * ADC conversions) is reached.
AnnaBridge 189:f392fc9709a3 5710 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 189:f392fc9709a3 5711 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 189:f392fc9709a3 5712 * whatever number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 5713 * ADC conversions).
AnnaBridge 189:f392fc9709a3 5714 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 189:f392fc9709a3 5715 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 189:f392fc9709a3 5716 * mode non-circular:
AnnaBridge 189:f392fc9709a3 5717 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 189:f392fc9709a3 5718 * ADC conversions data ADC will raise an overrun error
AnnaBridge 189:f392fc9709a3 5719 * (overrun flag and interruption if enabled).
AnnaBridge 189:f392fc9709a3 5720 * @note How to retrieve multimode conversion data:
AnnaBridge 189:f392fc9709a3 5721 * Whatever multimode transfer by DMA setting: using function
AnnaBridge 189:f392fc9709a3 5722 * @ref LL_ADC_REG_ReadMultiConversionData32().
AnnaBridge 189:f392fc9709a3 5723 * If ADC multimode transfer by DMA is selected: conversion data
AnnaBridge 189:f392fc9709a3 5724 * is a raw data with ADC master and slave concatenated.
AnnaBridge 189:f392fc9709a3 5725 * A macro is available to get the conversion data of
AnnaBridge 189:f392fc9709a3 5726 * ADC master or ADC slave: see helper macro
AnnaBridge 189:f392fc9709a3 5727 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
AnnaBridge 189:f392fc9709a3 5728 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5729 * ADC state:
AnnaBridge 189:f392fc9709a3 5730 * All ADC instances of the ADC common group must be disabled
AnnaBridge 189:f392fc9709a3 5731 * or enabled without conversion on going on group regular.
AnnaBridge 189:f392fc9709a3 5732 * @rmtoll CCR MDMA LL_ADC_SetMultiDMATransfer\n
AnnaBridge 189:f392fc9709a3 5733 * CCR DMACFG LL_ADC_SetMultiDMATransfer
AnnaBridge 189:f392fc9709a3 5734 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 5735 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 5736 * @param MultiDMATransfer This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5737 * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC
AnnaBridge 189:f392fc9709a3 5738 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B
AnnaBridge 189:f392fc9709a3 5739 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES8_6B
AnnaBridge 189:f392fc9709a3 5740 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES12_10B
AnnaBridge 189:f392fc9709a3 5741 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES8_6B
AnnaBridge 189:f392fc9709a3 5742 * @retval None
AnnaBridge 189:f392fc9709a3 5743 */
AnnaBridge 189:f392fc9709a3 5744 __STATIC_INLINE void LL_ADC_SetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiDMATransfer)
AnnaBridge 189:f392fc9709a3 5745 {
AnnaBridge 189:f392fc9709a3 5746 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_MDMA | ADC_CCR_DMACFG, MultiDMATransfer);
AnnaBridge 189:f392fc9709a3 5747 }
AnnaBridge 189:f392fc9709a3 5748
AnnaBridge 189:f392fc9709a3 5749 /**
AnnaBridge 189:f392fc9709a3 5750 * @brief Get ADC multimode conversion data transfer: no transfer
AnnaBridge 189:f392fc9709a3 5751 * or transfer by DMA.
AnnaBridge 189:f392fc9709a3 5752 * @note If ADC multimode transfer by DMA is not selected:
AnnaBridge 189:f392fc9709a3 5753 * each ADC uses its own DMA channel, with its individual
AnnaBridge 189:f392fc9709a3 5754 * DMA transfer settings.
AnnaBridge 189:f392fc9709a3 5755 * If ADC multimode transfer by DMA is selected:
AnnaBridge 189:f392fc9709a3 5756 * One DMA channel is used for both ADC (DMA of ADC master)
AnnaBridge 189:f392fc9709a3 5757 * Specifies the DMA requests mode:
AnnaBridge 189:f392fc9709a3 5758 * - Limited mode (One shot mode): DMA transfer requests are stopped
AnnaBridge 189:f392fc9709a3 5759 * when number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 5760 * ADC conversions) is reached.
AnnaBridge 189:f392fc9709a3 5761 * This ADC mode is intended to be used with DMA mode non-circular.
AnnaBridge 189:f392fc9709a3 5762 * - Unlimited mode: DMA transfer requests are unlimited,
AnnaBridge 189:f392fc9709a3 5763 * whatever number of DMA data transfers (number of
AnnaBridge 189:f392fc9709a3 5764 * ADC conversions).
AnnaBridge 189:f392fc9709a3 5765 * This ADC mode is intended to be used with DMA mode circular.
AnnaBridge 189:f392fc9709a3 5766 * @note If ADC DMA requests mode is set to unlimited and DMA is set to
AnnaBridge 189:f392fc9709a3 5767 * mode non-circular:
AnnaBridge 189:f392fc9709a3 5768 * when DMA transfers size will be reached, DMA will stop transfers of
AnnaBridge 189:f392fc9709a3 5769 * ADC conversions data ADC will raise an overrun error
AnnaBridge 189:f392fc9709a3 5770 * (overrun flag and interruption if enabled).
AnnaBridge 189:f392fc9709a3 5771 * @note How to retrieve multimode conversion data:
AnnaBridge 189:f392fc9709a3 5772 * Whatever multimode transfer by DMA setting: using function
AnnaBridge 189:f392fc9709a3 5773 * @ref LL_ADC_REG_ReadMultiConversionData32().
AnnaBridge 189:f392fc9709a3 5774 * If ADC multimode transfer by DMA is selected: conversion data
AnnaBridge 189:f392fc9709a3 5775 * is a raw data with ADC master and slave concatenated.
AnnaBridge 189:f392fc9709a3 5776 * A macro is available to get the conversion data of
AnnaBridge 189:f392fc9709a3 5777 * ADC master or ADC slave: see helper macro
AnnaBridge 189:f392fc9709a3 5778 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
AnnaBridge 189:f392fc9709a3 5779 * @rmtoll CCR MDMA LL_ADC_GetMultiDMATransfer\n
AnnaBridge 189:f392fc9709a3 5780 * CCR DMACFG LL_ADC_GetMultiDMATransfer
AnnaBridge 189:f392fc9709a3 5781 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 5782 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 5783 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 5784 * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC
AnnaBridge 189:f392fc9709a3 5785 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B
AnnaBridge 189:f392fc9709a3 5786 * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_RES8_6B
AnnaBridge 189:f392fc9709a3 5787 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES12_10B
AnnaBridge 189:f392fc9709a3 5788 * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_RES8_6B
AnnaBridge 189:f392fc9709a3 5789 */
AnnaBridge 189:f392fc9709a3 5790 __STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 5791 {
AnnaBridge 189:f392fc9709a3 5792 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_MDMA | ADC_CCR_DMACFG));
AnnaBridge 189:f392fc9709a3 5793 }
AnnaBridge 189:f392fc9709a3 5794
AnnaBridge 189:f392fc9709a3 5795 /**
AnnaBridge 189:f392fc9709a3 5796 * @brief Set ADC multimode delay between 2 sampling phases.
AnnaBridge 189:f392fc9709a3 5797 * @note The sampling delay range depends on ADC resolution:
AnnaBridge 189:f392fc9709a3 5798 * - ADC resolution 12 bits can have maximum delay of 12 cycles.
AnnaBridge 189:f392fc9709a3 5799 * - ADC resolution 10 bits can have maximum delay of 10 cycles.
AnnaBridge 189:f392fc9709a3 5800 * - ADC resolution 8 bits can have maximum delay of 8 cycles.
AnnaBridge 189:f392fc9709a3 5801 * - ADC resolution 6 bits can have maximum delay of 6 cycles.
AnnaBridge 189:f392fc9709a3 5802 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5803 * ADC state:
AnnaBridge 189:f392fc9709a3 5804 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 189:f392fc9709a3 5805 * This check can be done with function @ref LL_ADC_IsEnabled() for each
AnnaBridge 189:f392fc9709a3 5806 * ADC instance or by using helper macro helper macro
AnnaBridge 189:f392fc9709a3 5807 * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 189:f392fc9709a3 5808 * @rmtoll CCR DELAY LL_ADC_SetMultiTwoSamplingDelay
AnnaBridge 189:f392fc9709a3 5809 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 5810 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 5811 * @param MultiTwoSamplingDelay This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 5812 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE
AnnaBridge 189:f392fc9709a3 5813 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES
AnnaBridge 189:f392fc9709a3 5814 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES
AnnaBridge 189:f392fc9709a3 5815 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES
AnnaBridge 189:f392fc9709a3 5816 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES
AnnaBridge 189:f392fc9709a3 5817 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES (1)
AnnaBridge 189:f392fc9709a3 5818 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES (1)
AnnaBridge 189:f392fc9709a3 5819 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES (2)
AnnaBridge 189:f392fc9709a3 5820 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES (2)
AnnaBridge 189:f392fc9709a3 5821 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES (2)
AnnaBridge 189:f392fc9709a3 5822 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES (3)
AnnaBridge 189:f392fc9709a3 5823 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES (3)
AnnaBridge 189:f392fc9709a3 5824 *
AnnaBridge 189:f392fc9709a3 5825 * (1) Parameter available only if ADC resolution is 12, 10 or 8 bits.\n
AnnaBridge 189:f392fc9709a3 5826 * (2) Parameter available only if ADC resolution is 12 or 10 bits.\n
AnnaBridge 189:f392fc9709a3 5827 * (3) Parameter available only if ADC resolution is 12 bits.
AnnaBridge 189:f392fc9709a3 5828 * @retval None
AnnaBridge 189:f392fc9709a3 5829 */
AnnaBridge 189:f392fc9709a3 5830 __STATIC_INLINE void LL_ADC_SetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiTwoSamplingDelay)
AnnaBridge 189:f392fc9709a3 5831 {
AnnaBridge 189:f392fc9709a3 5832 MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DELAY, MultiTwoSamplingDelay);
AnnaBridge 189:f392fc9709a3 5833 }
AnnaBridge 189:f392fc9709a3 5834
AnnaBridge 189:f392fc9709a3 5835 /**
AnnaBridge 189:f392fc9709a3 5836 * @brief Get ADC multimode delay between 2 sampling phases.
AnnaBridge 189:f392fc9709a3 5837 * @rmtoll CCR DELAY LL_ADC_GetMultiTwoSamplingDelay
AnnaBridge 189:f392fc9709a3 5838 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 5839 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 5840 * @retval Returned value can be one of the following values:
AnnaBridge 189:f392fc9709a3 5841 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_1CYCLE
AnnaBridge 189:f392fc9709a3 5842 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_2CYCLES
AnnaBridge 189:f392fc9709a3 5843 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_3CYCLES
AnnaBridge 189:f392fc9709a3 5844 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_4CYCLES
AnnaBridge 189:f392fc9709a3 5845 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES
AnnaBridge 189:f392fc9709a3 5846 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES (1)
AnnaBridge 189:f392fc9709a3 5847 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES (1)
AnnaBridge 189:f392fc9709a3 5848 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES (2)
AnnaBridge 189:f392fc9709a3 5849 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES (2)
AnnaBridge 189:f392fc9709a3 5850 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES (2)
AnnaBridge 189:f392fc9709a3 5851 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES (3)
AnnaBridge 189:f392fc9709a3 5852 * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES (3)
AnnaBridge 189:f392fc9709a3 5853 *
AnnaBridge 189:f392fc9709a3 5854 * (1) Parameter available only if ADC resolution is 12, 10 or 8 bits.\n
AnnaBridge 189:f392fc9709a3 5855 * (2) Parameter available only if ADC resolution is 12 or 10 bits.\n
AnnaBridge 189:f392fc9709a3 5856 * (3) Parameter available only if ADC resolution is 12 bits.
AnnaBridge 189:f392fc9709a3 5857 */
AnnaBridge 189:f392fc9709a3 5858 __STATIC_INLINE uint32_t LL_ADC_GetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 5859 {
AnnaBridge 189:f392fc9709a3 5860 return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DELAY));
AnnaBridge 189:f392fc9709a3 5861 }
AnnaBridge 189:f392fc9709a3 5862 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 189:f392fc9709a3 5863
AnnaBridge 189:f392fc9709a3 5864 /**
AnnaBridge 189:f392fc9709a3 5865 * @}
AnnaBridge 189:f392fc9709a3 5866 */
AnnaBridge 189:f392fc9709a3 5867 /** @defgroup ADC_LL_EF_Configuration_Leg_Functions Configuration of ADC alternate functions name
AnnaBridge 189:f392fc9709a3 5868 * @{
AnnaBridge 189:f392fc9709a3 5869 */
AnnaBridge 189:f392fc9709a3 5870 /* Old functions name kept for legacy purpose, to be replaced by the */
AnnaBridge 189:f392fc9709a3 5871 /* current functions name. */
AnnaBridge 189:f392fc9709a3 5872 __STATIC_INLINE void LL_ADC_REG_SetTrigSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 189:f392fc9709a3 5873 {
AnnaBridge 189:f392fc9709a3 5874 LL_ADC_REG_SetTriggerSource(ADCx, TriggerSource);
AnnaBridge 189:f392fc9709a3 5875 }
AnnaBridge 189:f392fc9709a3 5876 __STATIC_INLINE void LL_ADC_INJ_SetTrigSource(ADC_TypeDef *ADCx, uint32_t TriggerSource)
AnnaBridge 189:f392fc9709a3 5877 {
AnnaBridge 189:f392fc9709a3 5878 LL_ADC_INJ_SetTriggerSource(ADCx, TriggerSource);
AnnaBridge 189:f392fc9709a3 5879 }
AnnaBridge 189:f392fc9709a3 5880
AnnaBridge 189:f392fc9709a3 5881 /**
AnnaBridge 189:f392fc9709a3 5882 * @}
AnnaBridge 189:f392fc9709a3 5883 */
AnnaBridge 189:f392fc9709a3 5884
AnnaBridge 189:f392fc9709a3 5885 /** @defgroup ADC_LL_EF_Operation_ADC_Instance Operation on ADC hierarchical scope: ADC instance
AnnaBridge 189:f392fc9709a3 5886 * @{
AnnaBridge 189:f392fc9709a3 5887 */
AnnaBridge 189:f392fc9709a3 5888
AnnaBridge 189:f392fc9709a3 5889 /**
AnnaBridge 189:f392fc9709a3 5890 * @brief Put ADC instance in deep power down state.
AnnaBridge 189:f392fc9709a3 5891 * @note In case of ADC calibration necessary: When ADC is in deep-power-down
AnnaBridge 189:f392fc9709a3 5892 * state, the internal analog calibration is lost. After exiting from
AnnaBridge 189:f392fc9709a3 5893 * deep power down, calibration must be relaunched or calibration factor
AnnaBridge 189:f392fc9709a3 5894 * (preliminarily saved) must be set back into calibration register.
AnnaBridge 189:f392fc9709a3 5895 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5896 * ADC state:
AnnaBridge 189:f392fc9709a3 5897 * ADC must be ADC disabled.
AnnaBridge 189:f392fc9709a3 5898 * @rmtoll CR DEEPPWD LL_ADC_EnableDeepPowerDown
AnnaBridge 189:f392fc9709a3 5899 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5900 * @retval None
AnnaBridge 189:f392fc9709a3 5901 */
AnnaBridge 189:f392fc9709a3 5902 __STATIC_INLINE void LL_ADC_EnableDeepPowerDown(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5903 {
AnnaBridge 189:f392fc9709a3 5904 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 5905 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 5906 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 5907 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 5908 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 5909 ADC_CR_DEEPPWD);
AnnaBridge 189:f392fc9709a3 5910 }
AnnaBridge 189:f392fc9709a3 5911
AnnaBridge 189:f392fc9709a3 5912 /**
AnnaBridge 189:f392fc9709a3 5913 * @brief Disable ADC deep power down mode.
AnnaBridge 189:f392fc9709a3 5914 * @note In case of ADC calibration necessary: When ADC is in deep-power-down
AnnaBridge 189:f392fc9709a3 5915 * state, the internal analog calibration is lost. After exiting from
AnnaBridge 189:f392fc9709a3 5916 * deep power down, calibration must be relaunched or calibration factor
AnnaBridge 189:f392fc9709a3 5917 * (preliminarily saved) must be set back into calibration register.
AnnaBridge 189:f392fc9709a3 5918 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5919 * ADC state:
AnnaBridge 189:f392fc9709a3 5920 * ADC must be ADC disabled.
AnnaBridge 189:f392fc9709a3 5921 * @rmtoll CR DEEPPWD LL_ADC_DisableDeepPowerDown
AnnaBridge 189:f392fc9709a3 5922 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5923 * @retval None
AnnaBridge 189:f392fc9709a3 5924 */
AnnaBridge 189:f392fc9709a3 5925 __STATIC_INLINE void LL_ADC_DisableDeepPowerDown(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5926 {
AnnaBridge 189:f392fc9709a3 5927 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 5928 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 5929 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 5930 CLEAR_BIT(ADCx->CR, (ADC_CR_DEEPPWD | ADC_CR_BITS_PROPERTY_RS));
AnnaBridge 189:f392fc9709a3 5931 }
AnnaBridge 189:f392fc9709a3 5932
AnnaBridge 189:f392fc9709a3 5933 /**
AnnaBridge 189:f392fc9709a3 5934 * @brief Get the selected ADC instance deep power down state.
AnnaBridge 189:f392fc9709a3 5935 * @rmtoll CR DEEPPWD LL_ADC_IsDeepPowerDownEnabled
AnnaBridge 189:f392fc9709a3 5936 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5937 * @retval 0: deep power down is disabled, 1: deep power down is enabled.
AnnaBridge 189:f392fc9709a3 5938 */
AnnaBridge 189:f392fc9709a3 5939 __STATIC_INLINE uint32_t LL_ADC_IsDeepPowerDownEnabled(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5940 {
AnnaBridge 189:f392fc9709a3 5941 return (READ_BIT(ADCx->CR, ADC_CR_DEEPPWD) == (ADC_CR_DEEPPWD));
AnnaBridge 189:f392fc9709a3 5942 }
AnnaBridge 189:f392fc9709a3 5943
AnnaBridge 189:f392fc9709a3 5944 /**
AnnaBridge 189:f392fc9709a3 5945 * @brief Enable ADC instance internal voltage regulator.
AnnaBridge 189:f392fc9709a3 5946 * @note On this STM32 serie, after ADC internal voltage regulator enable,
AnnaBridge 189:f392fc9709a3 5947 * a delay for ADC internal voltage regulator stabilization
AnnaBridge 189:f392fc9709a3 5948 * is required before performing a ADC calibration or ADC enable.
AnnaBridge 189:f392fc9709a3 5949 * Refer to device datasheet, parameter tADCVREG_STUP.
AnnaBridge 189:f392fc9709a3 5950 * Refer to literal @ref LL_ADC_DELAY_INTERNAL_REGUL_STAB_US.
AnnaBridge 189:f392fc9709a3 5951 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5952 * ADC state:
AnnaBridge 189:f392fc9709a3 5953 * ADC must be ADC disabled.
AnnaBridge 189:f392fc9709a3 5954 * @rmtoll CR ADVREGEN LL_ADC_EnableInternalRegulator
AnnaBridge 189:f392fc9709a3 5955 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5956 * @retval None
AnnaBridge 189:f392fc9709a3 5957 */
AnnaBridge 189:f392fc9709a3 5958 __STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5959 {
AnnaBridge 189:f392fc9709a3 5960 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 5961 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 5962 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 5963 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 5964 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 5965 ADC_CR_ADVREGEN);
AnnaBridge 189:f392fc9709a3 5966 }
AnnaBridge 189:f392fc9709a3 5967
AnnaBridge 189:f392fc9709a3 5968 /**
AnnaBridge 189:f392fc9709a3 5969 * @brief Disable ADC internal voltage regulator.
AnnaBridge 189:f392fc9709a3 5970 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 5971 * ADC state:
AnnaBridge 189:f392fc9709a3 5972 * ADC must be ADC disabled.
AnnaBridge 189:f392fc9709a3 5973 * @rmtoll CR ADVREGEN LL_ADC_DisableInternalRegulator
AnnaBridge 189:f392fc9709a3 5974 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5975 * @retval None
AnnaBridge 189:f392fc9709a3 5976 */
AnnaBridge 189:f392fc9709a3 5977 __STATIC_INLINE void LL_ADC_DisableInternalRegulator(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5978 {
AnnaBridge 189:f392fc9709a3 5979 CLEAR_BIT(ADCx->CR, (ADC_CR_ADVREGEN | ADC_CR_BITS_PROPERTY_RS));
AnnaBridge 189:f392fc9709a3 5980 }
AnnaBridge 189:f392fc9709a3 5981
AnnaBridge 189:f392fc9709a3 5982 /**
AnnaBridge 189:f392fc9709a3 5983 * @brief Get the selected ADC instance internal voltage regulator state.
AnnaBridge 189:f392fc9709a3 5984 * @rmtoll CR ADVREGEN LL_ADC_IsInternalRegulatorEnabled
AnnaBridge 189:f392fc9709a3 5985 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 5986 * @retval 0: internal regulator is disabled, 1: internal regulator is enabled.
AnnaBridge 189:f392fc9709a3 5987 */
AnnaBridge 189:f392fc9709a3 5988 __STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 5989 {
AnnaBridge 189:f392fc9709a3 5990 return (READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN));
AnnaBridge 189:f392fc9709a3 5991 }
AnnaBridge 189:f392fc9709a3 5992
AnnaBridge 189:f392fc9709a3 5993 /**
AnnaBridge 189:f392fc9709a3 5994 * @brief Enable the selected ADC instance.
AnnaBridge 189:f392fc9709a3 5995 * @note On this STM32 serie, after ADC enable, a delay for
AnnaBridge 189:f392fc9709a3 5996 * ADC internal analog stabilization is required before performing a
AnnaBridge 189:f392fc9709a3 5997 * ADC conversion start.
AnnaBridge 189:f392fc9709a3 5998 * Refer to device datasheet, parameter tSTAB.
AnnaBridge 189:f392fc9709a3 5999 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 189:f392fc9709a3 6000 * is enabled and when conversion clock is active.
AnnaBridge 189:f392fc9709a3 6001 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 189:f392fc9709a3 6002 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6003 * ADC state:
AnnaBridge 189:f392fc9709a3 6004 * ADC must be ADC disabled and ADC internal voltage regulator enabled.
AnnaBridge 189:f392fc9709a3 6005 * @rmtoll CR ADEN LL_ADC_Enable
AnnaBridge 189:f392fc9709a3 6006 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6007 * @retval None
AnnaBridge 189:f392fc9709a3 6008 */
AnnaBridge 189:f392fc9709a3 6009 __STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6010 {
AnnaBridge 189:f392fc9709a3 6011 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6012 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6013 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6014 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6015 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6016 ADC_CR_ADEN);
AnnaBridge 189:f392fc9709a3 6017 }
AnnaBridge 189:f392fc9709a3 6018
AnnaBridge 189:f392fc9709a3 6019 /**
AnnaBridge 189:f392fc9709a3 6020 * @brief Disable the selected ADC instance.
AnnaBridge 189:f392fc9709a3 6021 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6022 * ADC state:
AnnaBridge 189:f392fc9709a3 6023 * ADC must be not disabled. Must be enabled without conversion on going
AnnaBridge 189:f392fc9709a3 6024 * on either groups regular or injected.
AnnaBridge 189:f392fc9709a3 6025 * @rmtoll CR ADDIS LL_ADC_Disable
AnnaBridge 189:f392fc9709a3 6026 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6027 * @retval None
AnnaBridge 189:f392fc9709a3 6028 */
AnnaBridge 189:f392fc9709a3 6029 __STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6030 {
AnnaBridge 189:f392fc9709a3 6031 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6032 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6033 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6034 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6035 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6036 ADC_CR_ADDIS);
AnnaBridge 189:f392fc9709a3 6037 }
AnnaBridge 189:f392fc9709a3 6038
AnnaBridge 189:f392fc9709a3 6039 /**
AnnaBridge 189:f392fc9709a3 6040 * @brief Get the selected ADC instance enable state.
AnnaBridge 189:f392fc9709a3 6041 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 189:f392fc9709a3 6042 * is enabled and when conversion clock is active.
AnnaBridge 189:f392fc9709a3 6043 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 189:f392fc9709a3 6044 * @rmtoll CR ADEN LL_ADC_IsEnabled
AnnaBridge 189:f392fc9709a3 6045 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6046 * @retval 0: ADC is disabled, 1: ADC is enabled.
AnnaBridge 189:f392fc9709a3 6047 */
AnnaBridge 189:f392fc9709a3 6048 __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6049 {
AnnaBridge 189:f392fc9709a3 6050 return (READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN));
AnnaBridge 189:f392fc9709a3 6051 }
AnnaBridge 189:f392fc9709a3 6052
AnnaBridge 189:f392fc9709a3 6053 /**
AnnaBridge 189:f392fc9709a3 6054 * @brief Get the selected ADC instance disable state.
AnnaBridge 189:f392fc9709a3 6055 * @rmtoll CR ADDIS LL_ADC_IsDisableOngoing
AnnaBridge 189:f392fc9709a3 6056 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6057 * @retval 0: no ADC disable command on going.
AnnaBridge 189:f392fc9709a3 6058 */
AnnaBridge 189:f392fc9709a3 6059 __STATIC_INLINE uint32_t LL_ADC_IsDisableOngoing(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6060 {
AnnaBridge 189:f392fc9709a3 6061 return (READ_BIT(ADCx->CR, ADC_CR_ADDIS) == (ADC_CR_ADDIS));
AnnaBridge 189:f392fc9709a3 6062 }
AnnaBridge 189:f392fc9709a3 6063
AnnaBridge 189:f392fc9709a3 6064 /**
AnnaBridge 189:f392fc9709a3 6065 * @brief Start ADC calibration in the mode single-ended
AnnaBridge 189:f392fc9709a3 6066 * or differential (for devices with differential mode available).
AnnaBridge 189:f392fc9709a3 6067 * @note On this STM32 serie, a minimum number of ADC clock cycles
AnnaBridge 189:f392fc9709a3 6068 * are required between ADC end of calibration and ADC enable.
AnnaBridge 189:f392fc9709a3 6069 * Refer to literal @ref LL_ADC_DELAY_CALIB_ENABLE_ADC_CYCLES.
AnnaBridge 189:f392fc9709a3 6070 * @note For devices with differential mode available:
AnnaBridge 189:f392fc9709a3 6071 * Calibration of offset is specific to each of
AnnaBridge 189:f392fc9709a3 6072 * single-ended and differential modes
AnnaBridge 189:f392fc9709a3 6073 * (calibration run must be performed for each of these
AnnaBridge 189:f392fc9709a3 6074 * differential modes, if used afterwards and if the application
AnnaBridge 189:f392fc9709a3 6075 * requires their calibration).
AnnaBridge 189:f392fc9709a3 6076 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6077 * ADC state:
AnnaBridge 189:f392fc9709a3 6078 * ADC must be ADC disabled.
AnnaBridge 189:f392fc9709a3 6079 * @rmtoll CR ADCAL LL_ADC_StartCalibration\n
AnnaBridge 189:f392fc9709a3 6080 * CR ADCALDIF LL_ADC_StartCalibration
AnnaBridge 189:f392fc9709a3 6081 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6082 * @param SingleDiff This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6083 * @arg @ref LL_ADC_SINGLE_ENDED
AnnaBridge 189:f392fc9709a3 6084 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED
AnnaBridge 189:f392fc9709a3 6085 * @retval None
AnnaBridge 189:f392fc9709a3 6086 */
AnnaBridge 189:f392fc9709a3 6087 __STATIC_INLINE void LL_ADC_StartCalibration(ADC_TypeDef *ADCx, uint32_t SingleDiff)
AnnaBridge 189:f392fc9709a3 6088 {
AnnaBridge 189:f392fc9709a3 6089 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6090 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6091 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6092 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6093 ADC_CR_ADCALDIF | ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6094 ADC_CR_ADCAL | (SingleDiff & ADC_SINGLEDIFF_CALIB_START_MASK));
AnnaBridge 189:f392fc9709a3 6095 }
AnnaBridge 189:f392fc9709a3 6096
AnnaBridge 189:f392fc9709a3 6097 /**
AnnaBridge 189:f392fc9709a3 6098 * @brief Get ADC calibration state.
AnnaBridge 189:f392fc9709a3 6099 * @rmtoll CR ADCAL LL_ADC_IsCalibrationOnGoing
AnnaBridge 189:f392fc9709a3 6100 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6101 * @retval 0: calibration complete, 1: calibration in progress.
AnnaBridge 189:f392fc9709a3 6102 */
AnnaBridge 189:f392fc9709a3 6103 __STATIC_INLINE uint32_t LL_ADC_IsCalibrationOnGoing(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6104 {
AnnaBridge 189:f392fc9709a3 6105 return (READ_BIT(ADCx->CR, ADC_CR_ADCAL) == (ADC_CR_ADCAL));
AnnaBridge 189:f392fc9709a3 6106 }
AnnaBridge 189:f392fc9709a3 6107
AnnaBridge 189:f392fc9709a3 6108 /**
AnnaBridge 189:f392fc9709a3 6109 * @}
AnnaBridge 189:f392fc9709a3 6110 */
AnnaBridge 189:f392fc9709a3 6111
AnnaBridge 189:f392fc9709a3 6112 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Regular Operation on ADC hierarchical scope: group regular
AnnaBridge 189:f392fc9709a3 6113 * @{
AnnaBridge 189:f392fc9709a3 6114 */
AnnaBridge 189:f392fc9709a3 6115
AnnaBridge 189:f392fc9709a3 6116 /**
AnnaBridge 189:f392fc9709a3 6117 * @brief Start ADC group regular conversion.
AnnaBridge 189:f392fc9709a3 6118 * @note On this STM32 serie, this function is relevant for both
AnnaBridge 189:f392fc9709a3 6119 * internal trigger (SW start) and external trigger:
AnnaBridge 189:f392fc9709a3 6120 * - If ADC trigger has been set to software start, ADC conversion
AnnaBridge 189:f392fc9709a3 6121 * starts immediately.
AnnaBridge 189:f392fc9709a3 6122 * - If ADC trigger has been set to external trigger, ADC conversion
AnnaBridge 189:f392fc9709a3 6123 * will start at next trigger event (on the selected trigger edge)
AnnaBridge 189:f392fc9709a3 6124 * following the ADC start conversion command.
AnnaBridge 189:f392fc9709a3 6125 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6126 * ADC state:
AnnaBridge 189:f392fc9709a3 6127 * ADC must be enabled without conversion on going on group regular,
AnnaBridge 189:f392fc9709a3 6128 * without conversion stop command on going on group regular,
AnnaBridge 189:f392fc9709a3 6129 * without ADC disable command on going.
AnnaBridge 189:f392fc9709a3 6130 * @rmtoll CR ADSTART LL_ADC_REG_StartConversion
AnnaBridge 189:f392fc9709a3 6131 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6132 * @retval None
AnnaBridge 189:f392fc9709a3 6133 */
AnnaBridge 189:f392fc9709a3 6134 __STATIC_INLINE void LL_ADC_REG_StartConversion(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6135 {
AnnaBridge 189:f392fc9709a3 6136 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6137 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6138 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6139 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6140 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6141 ADC_CR_ADSTART);
AnnaBridge 189:f392fc9709a3 6142 }
AnnaBridge 189:f392fc9709a3 6143
AnnaBridge 189:f392fc9709a3 6144 /**
AnnaBridge 189:f392fc9709a3 6145 * @brief Stop ADC group regular conversion.
AnnaBridge 189:f392fc9709a3 6146 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6147 * ADC state:
AnnaBridge 189:f392fc9709a3 6148 * ADC must be enabled with conversion on going on group regular,
AnnaBridge 189:f392fc9709a3 6149 * without ADC disable command on going.
AnnaBridge 189:f392fc9709a3 6150 * @rmtoll CR ADSTP LL_ADC_REG_StopConversion
AnnaBridge 189:f392fc9709a3 6151 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6152 * @retval None
AnnaBridge 189:f392fc9709a3 6153 */
AnnaBridge 189:f392fc9709a3 6154 __STATIC_INLINE void LL_ADC_REG_StopConversion(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6155 {
AnnaBridge 189:f392fc9709a3 6156 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6157 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6158 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6159 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6160 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6161 ADC_CR_ADSTP);
AnnaBridge 189:f392fc9709a3 6162 }
AnnaBridge 189:f392fc9709a3 6163
AnnaBridge 189:f392fc9709a3 6164 /**
AnnaBridge 189:f392fc9709a3 6165 * @brief Get ADC group regular conversion state.
AnnaBridge 189:f392fc9709a3 6166 * @rmtoll CR ADSTART LL_ADC_REG_IsConversionOngoing
AnnaBridge 189:f392fc9709a3 6167 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6168 * @retval 0: no conversion is on going on ADC group regular.
AnnaBridge 189:f392fc9709a3 6169 */
AnnaBridge 189:f392fc9709a3 6170 __STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6171 {
AnnaBridge 189:f392fc9709a3 6172 return (READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART));
AnnaBridge 189:f392fc9709a3 6173 }
AnnaBridge 189:f392fc9709a3 6174
AnnaBridge 189:f392fc9709a3 6175 /**
AnnaBridge 189:f392fc9709a3 6176 * @brief Get ADC group regular command of conversion stop state
AnnaBridge 189:f392fc9709a3 6177 * @rmtoll CR ADSTP LL_ADC_REG_IsStopConversionOngoing
AnnaBridge 189:f392fc9709a3 6178 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6179 * @retval 0: no command of conversion stop is on going on ADC group regular.
AnnaBridge 189:f392fc9709a3 6180 */
AnnaBridge 189:f392fc9709a3 6181 __STATIC_INLINE uint32_t LL_ADC_REG_IsStopConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6182 {
AnnaBridge 189:f392fc9709a3 6183 return (READ_BIT(ADCx->CR, ADC_CR_ADSTP) == (ADC_CR_ADSTP));
AnnaBridge 189:f392fc9709a3 6184 }
AnnaBridge 189:f392fc9709a3 6185
AnnaBridge 189:f392fc9709a3 6186 /**
AnnaBridge 189:f392fc9709a3 6187 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6188 * all ADC configurations: all ADC resolutions and
AnnaBridge 189:f392fc9709a3 6189 * all oversampling increased data width (for devices
AnnaBridge 189:f392fc9709a3 6190 * with feature oversampling).
AnnaBridge 189:f392fc9709a3 6191 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData32
AnnaBridge 189:f392fc9709a3 6192 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6193 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 189:f392fc9709a3 6194 */
AnnaBridge 189:f392fc9709a3 6195 __STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6196 {
AnnaBridge 189:f392fc9709a3 6197 return (uint32_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 189:f392fc9709a3 6198 }
AnnaBridge 189:f392fc9709a3 6199
AnnaBridge 189:f392fc9709a3 6200 /**
AnnaBridge 189:f392fc9709a3 6201 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6202 * ADC resolution 12 bits.
AnnaBridge 189:f392fc9709a3 6203 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6204 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6205 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6206 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData12
AnnaBridge 189:f392fc9709a3 6207 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6208 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 6209 */
AnnaBridge 189:f392fc9709a3 6210 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6211 {
AnnaBridge 189:f392fc9709a3 6212 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 189:f392fc9709a3 6213 }
AnnaBridge 189:f392fc9709a3 6214
AnnaBridge 189:f392fc9709a3 6215 /**
AnnaBridge 189:f392fc9709a3 6216 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6217 * ADC resolution 10 bits.
AnnaBridge 189:f392fc9709a3 6218 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6219 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6220 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6221 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData10
AnnaBridge 189:f392fc9709a3 6222 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6223 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
AnnaBridge 189:f392fc9709a3 6224 */
AnnaBridge 189:f392fc9709a3 6225 __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6226 {
AnnaBridge 189:f392fc9709a3 6227 return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 189:f392fc9709a3 6228 }
AnnaBridge 189:f392fc9709a3 6229
AnnaBridge 189:f392fc9709a3 6230 /**
AnnaBridge 189:f392fc9709a3 6231 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6232 * ADC resolution 8 bits.
AnnaBridge 189:f392fc9709a3 6233 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6234 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6235 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6236 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData8
AnnaBridge 189:f392fc9709a3 6237 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6238 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
AnnaBridge 189:f392fc9709a3 6239 */
AnnaBridge 189:f392fc9709a3 6240 __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6241 {
AnnaBridge 189:f392fc9709a3 6242 return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 189:f392fc9709a3 6243 }
AnnaBridge 189:f392fc9709a3 6244
AnnaBridge 189:f392fc9709a3 6245 /**
AnnaBridge 189:f392fc9709a3 6246 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6247 * ADC resolution 6 bits.
AnnaBridge 189:f392fc9709a3 6248 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6249 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6250 * may be needed: @ref LL_ADC_REG_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6251 * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData6
AnnaBridge 189:f392fc9709a3 6252 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6253 * @retval Value between Min_Data=0x00 and Max_Data=0x3F
AnnaBridge 189:f392fc9709a3 6254 */
AnnaBridge 189:f392fc9709a3 6255 __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData6(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6256 {
AnnaBridge 189:f392fc9709a3 6257 return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA));
AnnaBridge 189:f392fc9709a3 6258 }
AnnaBridge 189:f392fc9709a3 6259
AnnaBridge 189:f392fc9709a3 6260 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 6261 /**
AnnaBridge 189:f392fc9709a3 6262 * @brief Get ADC multimode conversion data of ADC master, ADC slave
AnnaBridge 189:f392fc9709a3 6263 * or raw data with ADC master and slave concatenated.
AnnaBridge 189:f392fc9709a3 6264 * @note If raw data with ADC master and slave concatenated is retrieved,
AnnaBridge 189:f392fc9709a3 6265 * a macro is available to get the conversion data of
AnnaBridge 189:f392fc9709a3 6266 * ADC master or ADC slave: see helper macro
AnnaBridge 189:f392fc9709a3 6267 * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE().
AnnaBridge 189:f392fc9709a3 6268 * (however this macro is mainly intended for multimode
AnnaBridge 189:f392fc9709a3 6269 * transfer by DMA, because this function can do the same
AnnaBridge 189:f392fc9709a3 6270 * by getting multimode conversion data of ADC master or ADC slave
AnnaBridge 189:f392fc9709a3 6271 * separately).
AnnaBridge 189:f392fc9709a3 6272 * @rmtoll CDR RDATA_MST LL_ADC_REG_ReadMultiConversionData32\n
AnnaBridge 189:f392fc9709a3 6273 * CDR RDATA_SLV LL_ADC_REG_ReadMultiConversionData32
AnnaBridge 189:f392fc9709a3 6274 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6275 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6276 * @param ConversionData This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6277 * @arg @ref LL_ADC_MULTI_MASTER
AnnaBridge 189:f392fc9709a3 6278 * @arg @ref LL_ADC_MULTI_SLAVE
AnnaBridge 189:f392fc9709a3 6279 * @arg @ref LL_ADC_MULTI_MASTER_SLAVE
AnnaBridge 189:f392fc9709a3 6280 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 189:f392fc9709a3 6281 */
AnnaBridge 189:f392fc9709a3 6282 __STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t ConversionData)
AnnaBridge 189:f392fc9709a3 6283 {
AnnaBridge 189:f392fc9709a3 6284 return (uint32_t)(READ_BIT(ADCxy_COMMON->CDR,
AnnaBridge 189:f392fc9709a3 6285 ConversionData)
AnnaBridge 189:f392fc9709a3 6286 >> POSITION_VAL(ConversionData)
AnnaBridge 189:f392fc9709a3 6287 );
AnnaBridge 189:f392fc9709a3 6288 }
AnnaBridge 189:f392fc9709a3 6289 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 189:f392fc9709a3 6290
AnnaBridge 189:f392fc9709a3 6291 /**
AnnaBridge 189:f392fc9709a3 6292 * @}
AnnaBridge 189:f392fc9709a3 6293 */
AnnaBridge 189:f392fc9709a3 6294
AnnaBridge 189:f392fc9709a3 6295 /** @defgroup ADC_LL_EF_Operation_ADC_Group_Injected Operation on ADC hierarchical scope: group injected
AnnaBridge 189:f392fc9709a3 6296 * @{
AnnaBridge 189:f392fc9709a3 6297 */
AnnaBridge 189:f392fc9709a3 6298
AnnaBridge 189:f392fc9709a3 6299 /**
AnnaBridge 189:f392fc9709a3 6300 * @brief Start ADC group injected conversion.
AnnaBridge 189:f392fc9709a3 6301 * @note On this STM32 serie, this function is relevant for both
AnnaBridge 189:f392fc9709a3 6302 * internal trigger (SW start) and external trigger:
AnnaBridge 189:f392fc9709a3 6303 * - If ADC trigger has been set to software start, ADC conversion
AnnaBridge 189:f392fc9709a3 6304 * starts immediately.
AnnaBridge 189:f392fc9709a3 6305 * - If ADC trigger has been set to external trigger, ADC conversion
AnnaBridge 189:f392fc9709a3 6306 * will start at next trigger event (on the selected trigger edge)
AnnaBridge 189:f392fc9709a3 6307 * following the ADC start conversion command.
AnnaBridge 189:f392fc9709a3 6308 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6309 * ADC state:
AnnaBridge 189:f392fc9709a3 6310 * ADC must be enabled without conversion on going on group injected,
AnnaBridge 189:f392fc9709a3 6311 * without conversion stop command on going on group injected,
AnnaBridge 189:f392fc9709a3 6312 * without ADC disable command on going.
AnnaBridge 189:f392fc9709a3 6313 * @rmtoll CR JADSTART LL_ADC_INJ_StartConversion
AnnaBridge 189:f392fc9709a3 6314 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6315 * @retval None
AnnaBridge 189:f392fc9709a3 6316 */
AnnaBridge 189:f392fc9709a3 6317 __STATIC_INLINE void LL_ADC_INJ_StartConversion(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6318 {
AnnaBridge 189:f392fc9709a3 6319 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6320 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6321 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6322 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6323 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6324 ADC_CR_JADSTART);
AnnaBridge 189:f392fc9709a3 6325 }
AnnaBridge 189:f392fc9709a3 6326
AnnaBridge 189:f392fc9709a3 6327 /**
AnnaBridge 189:f392fc9709a3 6328 * @brief Stop ADC group injected conversion.
AnnaBridge 189:f392fc9709a3 6329 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 189:f392fc9709a3 6330 * ADC state:
AnnaBridge 189:f392fc9709a3 6331 * ADC must be enabled with conversion on going on group injected,
AnnaBridge 189:f392fc9709a3 6332 * without ADC disable command on going.
AnnaBridge 189:f392fc9709a3 6333 * @rmtoll CR JADSTP LL_ADC_INJ_StopConversion
AnnaBridge 189:f392fc9709a3 6334 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6335 * @retval None
AnnaBridge 189:f392fc9709a3 6336 */
AnnaBridge 189:f392fc9709a3 6337 __STATIC_INLINE void LL_ADC_INJ_StopConversion(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6338 {
AnnaBridge 189:f392fc9709a3 6339 /* Note: Write register with some additional bits forced to state reset */
AnnaBridge 189:f392fc9709a3 6340 /* instead of modifying only the selected bit for this function, */
AnnaBridge 189:f392fc9709a3 6341 /* to not interfere with bits with HW property "rs". */
AnnaBridge 189:f392fc9709a3 6342 MODIFY_REG(ADCx->CR,
AnnaBridge 189:f392fc9709a3 6343 ADC_CR_BITS_PROPERTY_RS,
AnnaBridge 189:f392fc9709a3 6344 ADC_CR_JADSTP);
AnnaBridge 189:f392fc9709a3 6345 }
AnnaBridge 189:f392fc9709a3 6346
AnnaBridge 189:f392fc9709a3 6347 /**
AnnaBridge 189:f392fc9709a3 6348 * @brief Get ADC group injected conversion state.
AnnaBridge 189:f392fc9709a3 6349 * @rmtoll CR JADSTART LL_ADC_INJ_IsConversionOngoing
AnnaBridge 189:f392fc9709a3 6350 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6351 * @retval 0: no conversion is on going on ADC group injected.
AnnaBridge 189:f392fc9709a3 6352 */
AnnaBridge 189:f392fc9709a3 6353 __STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6354 {
AnnaBridge 189:f392fc9709a3 6355 return (READ_BIT(ADCx->CR, ADC_CR_JADSTART) == (ADC_CR_JADSTART));
AnnaBridge 189:f392fc9709a3 6356 }
AnnaBridge 189:f392fc9709a3 6357
AnnaBridge 189:f392fc9709a3 6358 /**
AnnaBridge 189:f392fc9709a3 6359 * @brief Get ADC group injected command of conversion stop state
AnnaBridge 189:f392fc9709a3 6360 * @rmtoll CR JADSTP LL_ADC_INJ_IsStopConversionOngoing
AnnaBridge 189:f392fc9709a3 6361 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6362 * @retval 0: no command of conversion stop is on going on ADC group injected.
AnnaBridge 189:f392fc9709a3 6363 */
AnnaBridge 189:f392fc9709a3 6364 __STATIC_INLINE uint32_t LL_ADC_INJ_IsStopConversionOngoing(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6365 {
AnnaBridge 189:f392fc9709a3 6366 return (READ_BIT(ADCx->CR, ADC_CR_JADSTP) == (ADC_CR_JADSTP));
AnnaBridge 189:f392fc9709a3 6367 }
AnnaBridge 189:f392fc9709a3 6368
AnnaBridge 189:f392fc9709a3 6369 /**
AnnaBridge 189:f392fc9709a3 6370 * @brief Get ADC group regular conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6371 * all ADC configurations: all ADC resolutions and
AnnaBridge 189:f392fc9709a3 6372 * all oversampling increased data width (for devices
AnnaBridge 189:f392fc9709a3 6373 * with feature oversampling).
AnnaBridge 189:f392fc9709a3 6374 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 189:f392fc9709a3 6375 * JDR2 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 189:f392fc9709a3 6376 * JDR3 JDATA LL_ADC_INJ_ReadConversionData32\n
AnnaBridge 189:f392fc9709a3 6377 * JDR4 JDATA LL_ADC_INJ_ReadConversionData32
AnnaBridge 189:f392fc9709a3 6378 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6379 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6380 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 6381 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 6382 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 6383 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 6384 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF
AnnaBridge 189:f392fc9709a3 6385 */
AnnaBridge 189:f392fc9709a3 6386 __STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 6387 {
AnnaBridge 189:f392fc9709a3 6388 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 6389 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 6390 #else
AnnaBridge 189:f392fc9709a3 6391 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 6392 #endif
AnnaBridge 189:f392fc9709a3 6393
AnnaBridge 189:f392fc9709a3 6394 return (uint32_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 6395 ADC_JDR1_JDATA)
AnnaBridge 189:f392fc9709a3 6396 );
AnnaBridge 189:f392fc9709a3 6397 }
AnnaBridge 189:f392fc9709a3 6398
AnnaBridge 189:f392fc9709a3 6399 /**
AnnaBridge 189:f392fc9709a3 6400 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6401 * ADC resolution 12 bits.
AnnaBridge 189:f392fc9709a3 6402 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6403 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6404 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6405 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 189:f392fc9709a3 6406 * JDR2 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 189:f392fc9709a3 6407 * JDR3 JDATA LL_ADC_INJ_ReadConversionData12\n
AnnaBridge 189:f392fc9709a3 6408 * JDR4 JDATA LL_ADC_INJ_ReadConversionData12
AnnaBridge 189:f392fc9709a3 6409 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6410 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6411 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 6412 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 6413 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 6414 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 6415 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 189:f392fc9709a3 6416 */
AnnaBridge 189:f392fc9709a3 6417 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 6418 {
AnnaBridge 189:f392fc9709a3 6419 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 6420 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 6421 #else
AnnaBridge 189:f392fc9709a3 6422 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 6423 #endif
AnnaBridge 189:f392fc9709a3 6424
AnnaBridge 189:f392fc9709a3 6425 return (uint16_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 6426 ADC_JDR1_JDATA)
AnnaBridge 189:f392fc9709a3 6427 );
AnnaBridge 189:f392fc9709a3 6428 }
AnnaBridge 189:f392fc9709a3 6429
AnnaBridge 189:f392fc9709a3 6430 /**
AnnaBridge 189:f392fc9709a3 6431 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6432 * ADC resolution 10 bits.
AnnaBridge 189:f392fc9709a3 6433 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6434 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6435 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6436 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData10\n
AnnaBridge 189:f392fc9709a3 6437 * JDR2 JDATA LL_ADC_INJ_ReadConversionData10\n
AnnaBridge 189:f392fc9709a3 6438 * JDR3 JDATA LL_ADC_INJ_ReadConversionData10\n
AnnaBridge 189:f392fc9709a3 6439 * JDR4 JDATA LL_ADC_INJ_ReadConversionData10
AnnaBridge 189:f392fc9709a3 6440 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6441 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6442 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 6443 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 6444 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 6445 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 6446 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF
AnnaBridge 189:f392fc9709a3 6447 */
AnnaBridge 189:f392fc9709a3 6448 __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 6449 {
AnnaBridge 189:f392fc9709a3 6450 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 6451 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 6452 #else
AnnaBridge 189:f392fc9709a3 6453 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 6454 #endif
AnnaBridge 189:f392fc9709a3 6455
AnnaBridge 189:f392fc9709a3 6456 return (uint16_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 6457 ADC_JDR1_JDATA)
AnnaBridge 189:f392fc9709a3 6458 );
AnnaBridge 189:f392fc9709a3 6459 }
AnnaBridge 189:f392fc9709a3 6460
AnnaBridge 189:f392fc9709a3 6461 /**
AnnaBridge 189:f392fc9709a3 6462 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6463 * ADC resolution 8 bits.
AnnaBridge 189:f392fc9709a3 6464 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6465 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6466 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6467 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData8\n
AnnaBridge 189:f392fc9709a3 6468 * JDR2 JDATA LL_ADC_INJ_ReadConversionData8\n
AnnaBridge 189:f392fc9709a3 6469 * JDR3 JDATA LL_ADC_INJ_ReadConversionData8\n
AnnaBridge 189:f392fc9709a3 6470 * JDR4 JDATA LL_ADC_INJ_ReadConversionData8
AnnaBridge 189:f392fc9709a3 6471 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6472 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6473 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 6474 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 6475 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 6476 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 6477 * @retval Value between Min_Data=0x00 and Max_Data=0xFF
AnnaBridge 189:f392fc9709a3 6478 */
AnnaBridge 189:f392fc9709a3 6479 __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 6480 {
AnnaBridge 189:f392fc9709a3 6481 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 6482 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 6483 #else
AnnaBridge 189:f392fc9709a3 6484 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 6485 #endif
AnnaBridge 189:f392fc9709a3 6486
AnnaBridge 189:f392fc9709a3 6487 return (uint8_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 6488 ADC_JDR1_JDATA)
AnnaBridge 189:f392fc9709a3 6489 );
AnnaBridge 189:f392fc9709a3 6490 }
AnnaBridge 189:f392fc9709a3 6491
AnnaBridge 189:f392fc9709a3 6492 /**
AnnaBridge 189:f392fc9709a3 6493 * @brief Get ADC group injected conversion data, range fit for
AnnaBridge 189:f392fc9709a3 6494 * ADC resolution 6 bits.
AnnaBridge 189:f392fc9709a3 6495 * @note For devices with feature oversampling: Oversampling
AnnaBridge 189:f392fc9709a3 6496 * can increase data width, function for extended range
AnnaBridge 189:f392fc9709a3 6497 * may be needed: @ref LL_ADC_INJ_ReadConversionData32.
AnnaBridge 189:f392fc9709a3 6498 * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData6\n
AnnaBridge 189:f392fc9709a3 6499 * JDR2 JDATA LL_ADC_INJ_ReadConversionData6\n
AnnaBridge 189:f392fc9709a3 6500 * JDR3 JDATA LL_ADC_INJ_ReadConversionData6\n
AnnaBridge 189:f392fc9709a3 6501 * JDR4 JDATA LL_ADC_INJ_ReadConversionData6
AnnaBridge 189:f392fc9709a3 6502 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6503 * @param Rank This parameter can be one of the following values:
AnnaBridge 189:f392fc9709a3 6504 * @arg @ref LL_ADC_INJ_RANK_1
AnnaBridge 189:f392fc9709a3 6505 * @arg @ref LL_ADC_INJ_RANK_2
AnnaBridge 189:f392fc9709a3 6506 * @arg @ref LL_ADC_INJ_RANK_3
AnnaBridge 189:f392fc9709a3 6507 * @arg @ref LL_ADC_INJ_RANK_4
AnnaBridge 189:f392fc9709a3 6508 * @retval Value between Min_Data=0x00 and Max_Data=0x3F
AnnaBridge 189:f392fc9709a3 6509 */
AnnaBridge 189:f392fc9709a3 6510 __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData6(ADC_TypeDef *ADCx, uint32_t Rank)
AnnaBridge 189:f392fc9709a3 6511 {
AnnaBridge 189:f392fc9709a3 6512 #if defined(CORE_CM0PLUS)
AnnaBridge 189:f392fc9709a3 6513 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS));
AnnaBridge 189:f392fc9709a3 6514 #else
AnnaBridge 189:f392fc9709a3 6515 register uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK));
AnnaBridge 189:f392fc9709a3 6516 #endif
AnnaBridge 189:f392fc9709a3 6517
AnnaBridge 189:f392fc9709a3 6518 return (uint8_t)(READ_BIT(*preg,
AnnaBridge 189:f392fc9709a3 6519 ADC_JDR1_JDATA)
AnnaBridge 189:f392fc9709a3 6520 );
AnnaBridge 189:f392fc9709a3 6521 }
AnnaBridge 189:f392fc9709a3 6522
AnnaBridge 189:f392fc9709a3 6523 /**
AnnaBridge 189:f392fc9709a3 6524 * @}
AnnaBridge 189:f392fc9709a3 6525 */
AnnaBridge 189:f392fc9709a3 6526
AnnaBridge 189:f392fc9709a3 6527 /** @defgroup ADC_LL_EF_FLAG_Management ADC flag management
AnnaBridge 189:f392fc9709a3 6528 * @{
AnnaBridge 189:f392fc9709a3 6529 */
AnnaBridge 189:f392fc9709a3 6530
AnnaBridge 189:f392fc9709a3 6531 /**
AnnaBridge 189:f392fc9709a3 6532 * @brief Get flag ADC ready.
AnnaBridge 189:f392fc9709a3 6533 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 189:f392fc9709a3 6534 * is enabled and when conversion clock is active.
AnnaBridge 189:f392fc9709a3 6535 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 189:f392fc9709a3 6536 * @rmtoll ISR ADRDY LL_ADC_IsActiveFlag_ADRDY
AnnaBridge 189:f392fc9709a3 6537 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6538 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6539 */
AnnaBridge 189:f392fc9709a3 6540 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6541 {
AnnaBridge 189:f392fc9709a3 6542 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_ADRDY) == (LL_ADC_FLAG_ADRDY));
AnnaBridge 189:f392fc9709a3 6543 }
AnnaBridge 189:f392fc9709a3 6544
AnnaBridge 189:f392fc9709a3 6545 /**
AnnaBridge 189:f392fc9709a3 6546 * @brief Get flag ADC group regular end of unitary conversion.
AnnaBridge 189:f392fc9709a3 6547 * @rmtoll ISR EOC LL_ADC_IsActiveFlag_EOC
AnnaBridge 189:f392fc9709a3 6548 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6549 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6550 */
AnnaBridge 189:f392fc9709a3 6551 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6552 {
AnnaBridge 189:f392fc9709a3 6553 return (READ_BIT(ADCx->ISR, ADC_ISR_EOC) == (ADC_ISR_EOC));
AnnaBridge 189:f392fc9709a3 6554 }
AnnaBridge 189:f392fc9709a3 6555
AnnaBridge 189:f392fc9709a3 6556 /**
AnnaBridge 189:f392fc9709a3 6557 * @brief Get flag ADC group regular end of sequence conversions.
AnnaBridge 189:f392fc9709a3 6558 * @rmtoll ISR EOS LL_ADC_IsActiveFlag_EOS
AnnaBridge 189:f392fc9709a3 6559 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6560 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6561 */
AnnaBridge 189:f392fc9709a3 6562 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6563 {
AnnaBridge 189:f392fc9709a3 6564 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_EOS) == (LL_ADC_FLAG_EOS));
AnnaBridge 189:f392fc9709a3 6565 }
AnnaBridge 189:f392fc9709a3 6566
AnnaBridge 189:f392fc9709a3 6567 /**
AnnaBridge 189:f392fc9709a3 6568 * @brief Get flag ADC group regular overrun.
AnnaBridge 189:f392fc9709a3 6569 * @rmtoll ISR OVR LL_ADC_IsActiveFlag_OVR
AnnaBridge 189:f392fc9709a3 6570 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6571 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6572 */
AnnaBridge 189:f392fc9709a3 6573 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6574 {
AnnaBridge 189:f392fc9709a3 6575 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_OVR) == (LL_ADC_FLAG_OVR));
AnnaBridge 189:f392fc9709a3 6576 }
AnnaBridge 189:f392fc9709a3 6577
AnnaBridge 189:f392fc9709a3 6578 /**
AnnaBridge 189:f392fc9709a3 6579 * @brief Get flag ADC group regular end of sampling phase.
AnnaBridge 189:f392fc9709a3 6580 * @rmtoll ISR EOSMP LL_ADC_IsActiveFlag_EOSMP
AnnaBridge 189:f392fc9709a3 6581 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6582 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6583 */
AnnaBridge 189:f392fc9709a3 6584 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6585 {
AnnaBridge 189:f392fc9709a3 6586 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_EOSMP) == (LL_ADC_FLAG_EOSMP));
AnnaBridge 189:f392fc9709a3 6587 }
AnnaBridge 189:f392fc9709a3 6588
AnnaBridge 189:f392fc9709a3 6589 /**
AnnaBridge 189:f392fc9709a3 6590 * @brief Get flag ADC group injected end of unitary conversion.
AnnaBridge 189:f392fc9709a3 6591 * @rmtoll ISR JEOC LL_ADC_IsActiveFlag_JEOC
AnnaBridge 189:f392fc9709a3 6592 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6593 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6594 */
AnnaBridge 189:f392fc9709a3 6595 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6596 {
AnnaBridge 189:f392fc9709a3 6597 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_JEOC) == (LL_ADC_FLAG_JEOC));
AnnaBridge 189:f392fc9709a3 6598 }
AnnaBridge 189:f392fc9709a3 6599
AnnaBridge 189:f392fc9709a3 6600 /**
AnnaBridge 189:f392fc9709a3 6601 * @brief Get flag ADC group injected end of sequence conversions.
AnnaBridge 189:f392fc9709a3 6602 * @rmtoll ISR JEOS LL_ADC_IsActiveFlag_JEOS
AnnaBridge 189:f392fc9709a3 6603 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6604 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6605 */
AnnaBridge 189:f392fc9709a3 6606 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6607 {
AnnaBridge 189:f392fc9709a3 6608 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS));
AnnaBridge 189:f392fc9709a3 6609 }
AnnaBridge 189:f392fc9709a3 6610
AnnaBridge 189:f392fc9709a3 6611 /**
AnnaBridge 189:f392fc9709a3 6612 * @brief Get flag ADC group injected contexts queue overflow.
AnnaBridge 189:f392fc9709a3 6613 * @rmtoll ISR JQOVF LL_ADC_IsActiveFlag_JQOVF
AnnaBridge 189:f392fc9709a3 6614 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6615 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6616 */
AnnaBridge 189:f392fc9709a3 6617 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6618 {
AnnaBridge 189:f392fc9709a3 6619 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_JQOVF) == (LL_ADC_FLAG_JQOVF));
AnnaBridge 189:f392fc9709a3 6620 }
AnnaBridge 189:f392fc9709a3 6621
AnnaBridge 189:f392fc9709a3 6622 /**
AnnaBridge 189:f392fc9709a3 6623 * @brief Get flag ADC analog watchdog 1 flag
AnnaBridge 189:f392fc9709a3 6624 * @rmtoll ISR AWD1 LL_ADC_IsActiveFlag_AWD1
AnnaBridge 189:f392fc9709a3 6625 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6626 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6627 */
AnnaBridge 189:f392fc9709a3 6628 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6629 {
AnnaBridge 189:f392fc9709a3 6630 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1));
AnnaBridge 189:f392fc9709a3 6631 }
AnnaBridge 189:f392fc9709a3 6632
AnnaBridge 189:f392fc9709a3 6633 /**
AnnaBridge 189:f392fc9709a3 6634 * @brief Get flag ADC analog watchdog 2.
AnnaBridge 189:f392fc9709a3 6635 * @rmtoll ISR AWD2 LL_ADC_IsActiveFlag_AWD2
AnnaBridge 189:f392fc9709a3 6636 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6637 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6638 */
AnnaBridge 189:f392fc9709a3 6639 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6640 {
AnnaBridge 189:f392fc9709a3 6641 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD2) == (LL_ADC_FLAG_AWD2));
AnnaBridge 189:f392fc9709a3 6642 }
AnnaBridge 189:f392fc9709a3 6643
AnnaBridge 189:f392fc9709a3 6644 /**
AnnaBridge 189:f392fc9709a3 6645 * @brief Get flag ADC analog watchdog 3.
AnnaBridge 189:f392fc9709a3 6646 * @rmtoll ISR AWD3 LL_ADC_IsActiveFlag_AWD3
AnnaBridge 189:f392fc9709a3 6647 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6648 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6649 */
AnnaBridge 189:f392fc9709a3 6650 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6651 {
AnnaBridge 189:f392fc9709a3 6652 return (READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD3) == (LL_ADC_FLAG_AWD3));
AnnaBridge 189:f392fc9709a3 6653 }
AnnaBridge 189:f392fc9709a3 6654
AnnaBridge 189:f392fc9709a3 6655 /**
AnnaBridge 189:f392fc9709a3 6656 * @brief Clear flag ADC ready.
AnnaBridge 189:f392fc9709a3 6657 * @note On this STM32 serie, flag LL_ADC_FLAG_ADRDY is raised when the ADC
AnnaBridge 189:f392fc9709a3 6658 * is enabled and when conversion clock is active.
AnnaBridge 189:f392fc9709a3 6659 * (not only core clock: this ADC has a dual clock domain)
AnnaBridge 189:f392fc9709a3 6660 * @rmtoll ISR ADRDY LL_ADC_ClearFlag_ADRDY
AnnaBridge 189:f392fc9709a3 6661 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6662 * @retval None
AnnaBridge 189:f392fc9709a3 6663 */
AnnaBridge 189:f392fc9709a3 6664 __STATIC_INLINE void LL_ADC_ClearFlag_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6665 {
AnnaBridge 189:f392fc9709a3 6666 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_ADRDY);
AnnaBridge 189:f392fc9709a3 6667 }
AnnaBridge 189:f392fc9709a3 6668
AnnaBridge 189:f392fc9709a3 6669 /**
AnnaBridge 189:f392fc9709a3 6670 * @brief Clear flag ADC group regular end of unitary conversion.
AnnaBridge 189:f392fc9709a3 6671 * @rmtoll ISR EOC LL_ADC_ClearFlag_EOC
AnnaBridge 189:f392fc9709a3 6672 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6673 * @retval None
AnnaBridge 189:f392fc9709a3 6674 */
AnnaBridge 189:f392fc9709a3 6675 __STATIC_INLINE void LL_ADC_ClearFlag_EOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6676 {
AnnaBridge 189:f392fc9709a3 6677 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_EOC);
AnnaBridge 189:f392fc9709a3 6678 }
AnnaBridge 189:f392fc9709a3 6679
AnnaBridge 189:f392fc9709a3 6680 /**
AnnaBridge 189:f392fc9709a3 6681 * @brief Clear flag ADC group regular end of sequence conversions.
AnnaBridge 189:f392fc9709a3 6682 * @rmtoll ISR EOS LL_ADC_ClearFlag_EOS
AnnaBridge 189:f392fc9709a3 6683 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6684 * @retval None
AnnaBridge 189:f392fc9709a3 6685 */
AnnaBridge 189:f392fc9709a3 6686 __STATIC_INLINE void LL_ADC_ClearFlag_EOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6687 {
AnnaBridge 189:f392fc9709a3 6688 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_EOS);
AnnaBridge 189:f392fc9709a3 6689 }
AnnaBridge 189:f392fc9709a3 6690
AnnaBridge 189:f392fc9709a3 6691 /**
AnnaBridge 189:f392fc9709a3 6692 * @brief Clear flag ADC group regular overrun.
AnnaBridge 189:f392fc9709a3 6693 * @rmtoll ISR OVR LL_ADC_ClearFlag_OVR
AnnaBridge 189:f392fc9709a3 6694 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6695 * @retval None
AnnaBridge 189:f392fc9709a3 6696 */
AnnaBridge 189:f392fc9709a3 6697 __STATIC_INLINE void LL_ADC_ClearFlag_OVR(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6698 {
AnnaBridge 189:f392fc9709a3 6699 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_OVR);
AnnaBridge 189:f392fc9709a3 6700 }
AnnaBridge 189:f392fc9709a3 6701
AnnaBridge 189:f392fc9709a3 6702 /**
AnnaBridge 189:f392fc9709a3 6703 * @brief Clear flag ADC group regular end of sampling phase.
AnnaBridge 189:f392fc9709a3 6704 * @rmtoll ISR EOSMP LL_ADC_ClearFlag_EOSMP
AnnaBridge 189:f392fc9709a3 6705 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6706 * @retval None
AnnaBridge 189:f392fc9709a3 6707 */
AnnaBridge 189:f392fc9709a3 6708 __STATIC_INLINE void LL_ADC_ClearFlag_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6709 {
AnnaBridge 189:f392fc9709a3 6710 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_EOSMP);
AnnaBridge 189:f392fc9709a3 6711 }
AnnaBridge 189:f392fc9709a3 6712
AnnaBridge 189:f392fc9709a3 6713 /**
AnnaBridge 189:f392fc9709a3 6714 * @brief Clear flag ADC group injected end of unitary conversion.
AnnaBridge 189:f392fc9709a3 6715 * @rmtoll ISR JEOC LL_ADC_ClearFlag_JEOC
AnnaBridge 189:f392fc9709a3 6716 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6717 * @retval None
AnnaBridge 189:f392fc9709a3 6718 */
AnnaBridge 189:f392fc9709a3 6719 __STATIC_INLINE void LL_ADC_ClearFlag_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6720 {
AnnaBridge 189:f392fc9709a3 6721 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_JEOC);
AnnaBridge 189:f392fc9709a3 6722 }
AnnaBridge 189:f392fc9709a3 6723
AnnaBridge 189:f392fc9709a3 6724 /**
AnnaBridge 189:f392fc9709a3 6725 * @brief Clear flag ADC group injected end of sequence conversions.
AnnaBridge 189:f392fc9709a3 6726 * @rmtoll ISR JEOS LL_ADC_ClearFlag_JEOS
AnnaBridge 189:f392fc9709a3 6727 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6728 * @retval None
AnnaBridge 189:f392fc9709a3 6729 */
AnnaBridge 189:f392fc9709a3 6730 __STATIC_INLINE void LL_ADC_ClearFlag_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6731 {
AnnaBridge 189:f392fc9709a3 6732 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_JEOS);
AnnaBridge 189:f392fc9709a3 6733 }
AnnaBridge 189:f392fc9709a3 6734
AnnaBridge 189:f392fc9709a3 6735 /**
AnnaBridge 189:f392fc9709a3 6736 * @brief Clear flag ADC group injected contexts queue overflow.
AnnaBridge 189:f392fc9709a3 6737 * @rmtoll ISR JQOVF LL_ADC_ClearFlag_JQOVF
AnnaBridge 189:f392fc9709a3 6738 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6739 * @retval None
AnnaBridge 189:f392fc9709a3 6740 */
AnnaBridge 189:f392fc9709a3 6741 __STATIC_INLINE void LL_ADC_ClearFlag_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6742 {
AnnaBridge 189:f392fc9709a3 6743 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_JQOVF);
AnnaBridge 189:f392fc9709a3 6744 }
AnnaBridge 189:f392fc9709a3 6745
AnnaBridge 189:f392fc9709a3 6746 /**
AnnaBridge 189:f392fc9709a3 6747 * @brief Clear flag ADC analog watchdog 1.
AnnaBridge 189:f392fc9709a3 6748 * @rmtoll ISR AWD1 LL_ADC_ClearFlag_AWD1
AnnaBridge 189:f392fc9709a3 6749 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6750 * @retval None
AnnaBridge 189:f392fc9709a3 6751 */
AnnaBridge 189:f392fc9709a3 6752 __STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6753 {
AnnaBridge 189:f392fc9709a3 6754 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_AWD1);
AnnaBridge 189:f392fc9709a3 6755 }
AnnaBridge 189:f392fc9709a3 6756
AnnaBridge 189:f392fc9709a3 6757 /**
AnnaBridge 189:f392fc9709a3 6758 * @brief Clear flag ADC analog watchdog 2.
AnnaBridge 189:f392fc9709a3 6759 * @rmtoll ISR AWD2 LL_ADC_ClearFlag_AWD2
AnnaBridge 189:f392fc9709a3 6760 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6761 * @retval None
AnnaBridge 189:f392fc9709a3 6762 */
AnnaBridge 189:f392fc9709a3 6763 __STATIC_INLINE void LL_ADC_ClearFlag_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6764 {
AnnaBridge 189:f392fc9709a3 6765 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_AWD2);
AnnaBridge 189:f392fc9709a3 6766 }
AnnaBridge 189:f392fc9709a3 6767
AnnaBridge 189:f392fc9709a3 6768 /**
AnnaBridge 189:f392fc9709a3 6769 * @brief Clear flag ADC analog watchdog 3.
AnnaBridge 189:f392fc9709a3 6770 * @rmtoll ISR AWD3 LL_ADC_ClearFlag_AWD3
AnnaBridge 189:f392fc9709a3 6771 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 6772 * @retval None
AnnaBridge 189:f392fc9709a3 6773 */
AnnaBridge 189:f392fc9709a3 6774 __STATIC_INLINE void LL_ADC_ClearFlag_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 6775 {
AnnaBridge 189:f392fc9709a3 6776 WRITE_REG(ADCx->ISR, LL_ADC_FLAG_AWD3);
AnnaBridge 189:f392fc9709a3 6777 }
AnnaBridge 189:f392fc9709a3 6778
AnnaBridge 189:f392fc9709a3 6779 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 189:f392fc9709a3 6780 /**
AnnaBridge 189:f392fc9709a3 6781 * @brief Get flag multimode ADC ready of the ADC master.
AnnaBridge 189:f392fc9709a3 6782 * @rmtoll CSR ADRDY_MST LL_ADC_IsActiveFlag_MST_ADRDY
AnnaBridge 189:f392fc9709a3 6783 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6784 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6785 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6786 */
AnnaBridge 189:f392fc9709a3 6787 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_ADRDY(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6788 {
AnnaBridge 189:f392fc9709a3 6789 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_ADRDY_MST) == (LL_ADC_FLAG_ADRDY_MST));
AnnaBridge 189:f392fc9709a3 6790 }
AnnaBridge 189:f392fc9709a3 6791
AnnaBridge 189:f392fc9709a3 6792 /**
AnnaBridge 189:f392fc9709a3 6793 * @brief Get flag multimode ADC ready of the ADC slave.
AnnaBridge 189:f392fc9709a3 6794 * @rmtoll CSR ADRDY_SLV LL_ADC_IsActiveFlag_SLV_ADRDY
AnnaBridge 189:f392fc9709a3 6795 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6796 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6797 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6798 */
AnnaBridge 189:f392fc9709a3 6799 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_ADRDY(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6800 {
AnnaBridge 189:f392fc9709a3 6801 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_ADRDY_SLV) == (LL_ADC_FLAG_ADRDY_SLV));
AnnaBridge 189:f392fc9709a3 6802 }
AnnaBridge 189:f392fc9709a3 6803
AnnaBridge 189:f392fc9709a3 6804 /**
AnnaBridge 189:f392fc9709a3 6805 * @brief Get flag multimode ADC group regular end of unitary conversion of the ADC master.
AnnaBridge 189:f392fc9709a3 6806 * @rmtoll CSR EOC_MST LL_ADC_IsActiveFlag_MST_EOC
AnnaBridge 189:f392fc9709a3 6807 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6808 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6809 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6810 */
AnnaBridge 189:f392fc9709a3 6811 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6812 {
AnnaBridge 189:f392fc9709a3 6813 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOC_SLV) == (LL_ADC_FLAG_EOC_SLV));
AnnaBridge 189:f392fc9709a3 6814 }
AnnaBridge 189:f392fc9709a3 6815
AnnaBridge 189:f392fc9709a3 6816 /**
AnnaBridge 189:f392fc9709a3 6817 * @brief Get flag multimode ADC group regular end of unitary conversion of the ADC slave.
AnnaBridge 189:f392fc9709a3 6818 * @rmtoll CSR EOC_SLV LL_ADC_IsActiveFlag_SLV_EOC
AnnaBridge 189:f392fc9709a3 6819 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6820 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6821 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6822 */
AnnaBridge 189:f392fc9709a3 6823 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6824 {
AnnaBridge 189:f392fc9709a3 6825 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOC_SLV) == (LL_ADC_FLAG_EOC_SLV));
AnnaBridge 189:f392fc9709a3 6826 }
AnnaBridge 189:f392fc9709a3 6827
AnnaBridge 189:f392fc9709a3 6828 /**
AnnaBridge 189:f392fc9709a3 6829 * @brief Get flag multimode ADC group regular end of sequence conversions of the ADC master.
AnnaBridge 189:f392fc9709a3 6830 * @rmtoll CSR EOS_MST LL_ADC_IsActiveFlag_MST_EOS
AnnaBridge 189:f392fc9709a3 6831 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6832 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6833 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6834 */
AnnaBridge 189:f392fc9709a3 6835 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6836 {
AnnaBridge 189:f392fc9709a3 6837 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOS_MST) == (LL_ADC_FLAG_EOS_MST));
AnnaBridge 189:f392fc9709a3 6838 }
AnnaBridge 189:f392fc9709a3 6839
AnnaBridge 189:f392fc9709a3 6840 /**
AnnaBridge 189:f392fc9709a3 6841 * @brief Get flag multimode ADC group regular end of sequence conversions of the ADC slave.
AnnaBridge 189:f392fc9709a3 6842 * @rmtoll CSR EOS_SLV LL_ADC_IsActiveFlag_SLV_EOS
AnnaBridge 189:f392fc9709a3 6843 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6844 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6845 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6846 */
AnnaBridge 189:f392fc9709a3 6847 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6848 {
AnnaBridge 189:f392fc9709a3 6849 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOS_SLV) == (LL_ADC_FLAG_EOS_SLV));
AnnaBridge 189:f392fc9709a3 6850 }
AnnaBridge 189:f392fc9709a3 6851
AnnaBridge 189:f392fc9709a3 6852 /**
AnnaBridge 189:f392fc9709a3 6853 * @brief Get flag multimode ADC group regular overrun of the ADC master.
AnnaBridge 189:f392fc9709a3 6854 * @rmtoll CSR OVR_MST LL_ADC_IsActiveFlag_MST_OVR
AnnaBridge 189:f392fc9709a3 6855 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6856 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6857 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6858 */
AnnaBridge 189:f392fc9709a3 6859 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6860 {
AnnaBridge 189:f392fc9709a3 6861 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_MST) == (LL_ADC_FLAG_OVR_MST));
AnnaBridge 189:f392fc9709a3 6862 }
AnnaBridge 189:f392fc9709a3 6863
AnnaBridge 189:f392fc9709a3 6864 /**
AnnaBridge 189:f392fc9709a3 6865 * @brief Get flag multimode ADC group regular overrun of the ADC slave.
AnnaBridge 189:f392fc9709a3 6866 * @rmtoll CSR OVR_SLV LL_ADC_IsActiveFlag_SLV_OVR
AnnaBridge 189:f392fc9709a3 6867 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6868 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6869 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6870 */
AnnaBridge 189:f392fc9709a3 6871 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_OVR(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6872 {
AnnaBridge 189:f392fc9709a3 6873 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV) == (LL_ADC_FLAG_OVR_SLV));
AnnaBridge 189:f392fc9709a3 6874 }
AnnaBridge 189:f392fc9709a3 6875
AnnaBridge 189:f392fc9709a3 6876 /**
AnnaBridge 189:f392fc9709a3 6877 * @brief Get flag multimode ADC group regular end of sampling of the ADC master.
AnnaBridge 189:f392fc9709a3 6878 * @rmtoll CSR EOSMP_MST LL_ADC_IsActiveFlag_MST_EOSMP
AnnaBridge 189:f392fc9709a3 6879 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6880 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6881 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6882 */
AnnaBridge 189:f392fc9709a3 6883 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOSMP(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6884 {
AnnaBridge 189:f392fc9709a3 6885 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOSMP_MST) == (LL_ADC_FLAG_EOSMP_MST));
AnnaBridge 189:f392fc9709a3 6886 }
AnnaBridge 189:f392fc9709a3 6887
AnnaBridge 189:f392fc9709a3 6888 /**
AnnaBridge 189:f392fc9709a3 6889 * @brief Get flag multimode ADC group regular end of sampling of the ADC slave.
AnnaBridge 189:f392fc9709a3 6890 * @rmtoll CSR EOSMP_SLV LL_ADC_IsActiveFlag_SLV_EOSMP
AnnaBridge 189:f392fc9709a3 6891 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6892 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6893 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6894 */
AnnaBridge 189:f392fc9709a3 6895 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOSMP(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6896 {
AnnaBridge 189:f392fc9709a3 6897 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOSMP_SLV) == (LL_ADC_FLAG_EOSMP_SLV));
AnnaBridge 189:f392fc9709a3 6898 }
AnnaBridge 189:f392fc9709a3 6899
AnnaBridge 189:f392fc9709a3 6900 /**
AnnaBridge 189:f392fc9709a3 6901 * @brief Get flag multimode ADC group injected end of unitary conversion of the ADC master.
AnnaBridge 189:f392fc9709a3 6902 * @rmtoll CSR JEOC_MST LL_ADC_IsActiveFlag_MST_JEOC
AnnaBridge 189:f392fc9709a3 6903 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6904 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6905 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6906 */
AnnaBridge 189:f392fc9709a3 6907 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6908 {
AnnaBridge 189:f392fc9709a3 6909 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOC_MST) == (LL_ADC_FLAG_JEOC_MST));
AnnaBridge 189:f392fc9709a3 6910 }
AnnaBridge 189:f392fc9709a3 6911
AnnaBridge 189:f392fc9709a3 6912 /**
AnnaBridge 189:f392fc9709a3 6913 * @brief Get flag multimode ADC group injected end of unitary conversion of the ADC slave.
AnnaBridge 189:f392fc9709a3 6914 * @rmtoll CSR JEOC_SLV LL_ADC_IsActiveFlag_SLV_JEOC
AnnaBridge 189:f392fc9709a3 6915 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6916 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6917 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6918 */
AnnaBridge 189:f392fc9709a3 6919 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOC(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6920 {
AnnaBridge 189:f392fc9709a3 6921 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOC_SLV) == (LL_ADC_FLAG_JEOC_SLV));
AnnaBridge 189:f392fc9709a3 6922 }
AnnaBridge 189:f392fc9709a3 6923
AnnaBridge 189:f392fc9709a3 6924 /**
AnnaBridge 189:f392fc9709a3 6925 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC master.
AnnaBridge 189:f392fc9709a3 6926 * @rmtoll CSR JEOS_MST LL_ADC_IsActiveFlag_MST_JEOS
AnnaBridge 189:f392fc9709a3 6927 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6928 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6929 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6930 */
AnnaBridge 189:f392fc9709a3 6931 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6932 {
AnnaBridge 189:f392fc9709a3 6933 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOS_MST) == (LL_ADC_FLAG_JEOS_MST));
AnnaBridge 189:f392fc9709a3 6934 }
AnnaBridge 189:f392fc9709a3 6935
AnnaBridge 189:f392fc9709a3 6936 /**
AnnaBridge 189:f392fc9709a3 6937 * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave.
AnnaBridge 189:f392fc9709a3 6938 * @rmtoll CSR JEOS_SLV LL_ADC_IsActiveFlag_SLV_JEOS
AnnaBridge 189:f392fc9709a3 6939 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6940 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6941 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6942 */
AnnaBridge 189:f392fc9709a3 6943 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOS(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6944 {
AnnaBridge 189:f392fc9709a3 6945 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOS_SLV) == (LL_ADC_FLAG_JEOS_SLV));
AnnaBridge 189:f392fc9709a3 6946 }
AnnaBridge 189:f392fc9709a3 6947
AnnaBridge 189:f392fc9709a3 6948 /**
AnnaBridge 189:f392fc9709a3 6949 * @brief Get flag multimode ADC group injected context queue overflow of the ADC master.
AnnaBridge 189:f392fc9709a3 6950 * @rmtoll CSR JQOVF_MST LL_ADC_IsActiveFlag_MST_JQOVF
AnnaBridge 189:f392fc9709a3 6951 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6952 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6953 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6954 */
AnnaBridge 189:f392fc9709a3 6955 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JQOVF(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6956 {
AnnaBridge 189:f392fc9709a3 6957 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JQOVF_MST) == (LL_ADC_FLAG_JQOVF_MST));
AnnaBridge 189:f392fc9709a3 6958 }
AnnaBridge 189:f392fc9709a3 6959
AnnaBridge 189:f392fc9709a3 6960 /**
AnnaBridge 189:f392fc9709a3 6961 * @brief Get flag multimode ADC group injected context queue overflow of the ADC slave.
AnnaBridge 189:f392fc9709a3 6962 * @rmtoll CSR JQOVF_SLV LL_ADC_IsActiveFlag_SLV_JQOVF
AnnaBridge 189:f392fc9709a3 6963 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6964 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6965 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6966 */
AnnaBridge 189:f392fc9709a3 6967 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JQOVF(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6968 {
AnnaBridge 189:f392fc9709a3 6969 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JQOVF_SLV) == (LL_ADC_FLAG_JQOVF_SLV));
AnnaBridge 189:f392fc9709a3 6970 }
AnnaBridge 189:f392fc9709a3 6971
AnnaBridge 189:f392fc9709a3 6972 /**
AnnaBridge 189:f392fc9709a3 6973 * @brief Get flag multimode ADC analog watchdog 1 of the ADC master.
AnnaBridge 189:f392fc9709a3 6974 * @rmtoll CSR AWD1_MST LL_ADC_IsActiveFlag_MST_AWD1
AnnaBridge 189:f392fc9709a3 6975 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6976 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6977 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6978 */
AnnaBridge 189:f392fc9709a3 6979 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6980 {
AnnaBridge 189:f392fc9709a3 6981 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_MST) == (LL_ADC_FLAG_AWD1_MST));
AnnaBridge 189:f392fc9709a3 6982 }
AnnaBridge 189:f392fc9709a3 6983
AnnaBridge 189:f392fc9709a3 6984 /**
AnnaBridge 189:f392fc9709a3 6985 * @brief Get flag multimode analog watchdog 1 of the ADC slave.
AnnaBridge 189:f392fc9709a3 6986 * @rmtoll CSR AWD1_SLV LL_ADC_IsActiveFlag_SLV_AWD1
AnnaBridge 189:f392fc9709a3 6987 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 6988 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 6989 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 6990 */
AnnaBridge 189:f392fc9709a3 6991 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD1(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 6992 {
AnnaBridge 189:f392fc9709a3 6993 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV) == (LL_ADC_FLAG_AWD1_SLV));
AnnaBridge 189:f392fc9709a3 6994 }
AnnaBridge 189:f392fc9709a3 6995
AnnaBridge 189:f392fc9709a3 6996 /**
AnnaBridge 189:f392fc9709a3 6997 * @brief Get flag multimode ADC analog watchdog 2 of the ADC master.
AnnaBridge 189:f392fc9709a3 6998 * @rmtoll CSR AWD2_MST LL_ADC_IsActiveFlag_MST_AWD2
AnnaBridge 189:f392fc9709a3 6999 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 7000 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 7001 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7002 */
AnnaBridge 189:f392fc9709a3 7003 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD2(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 7004 {
AnnaBridge 189:f392fc9709a3 7005 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD2_MST) == (LL_ADC_FLAG_AWD2_MST));
AnnaBridge 189:f392fc9709a3 7006 }
AnnaBridge 189:f392fc9709a3 7007
AnnaBridge 189:f392fc9709a3 7008 /**
AnnaBridge 189:f392fc9709a3 7009 * @brief Get flag multimode ADC analog watchdog 2 of the ADC slave.
AnnaBridge 189:f392fc9709a3 7010 * @rmtoll CSR AWD2_SLV LL_ADC_IsActiveFlag_SLV_AWD2
AnnaBridge 189:f392fc9709a3 7011 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 7012 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 7013 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7014 */
AnnaBridge 189:f392fc9709a3 7015 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD2(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 7016 {
AnnaBridge 189:f392fc9709a3 7017 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD2_SLV) == (LL_ADC_FLAG_AWD2_SLV));
AnnaBridge 189:f392fc9709a3 7018 }
AnnaBridge 189:f392fc9709a3 7019
AnnaBridge 189:f392fc9709a3 7020 /**
AnnaBridge 189:f392fc9709a3 7021 * @brief Get flag multimode ADC analog watchdog 3 of the ADC master.
AnnaBridge 189:f392fc9709a3 7022 * @rmtoll CSR AWD3_MST LL_ADC_IsActiveFlag_MST_AWD3
AnnaBridge 189:f392fc9709a3 7023 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 7024 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 7025 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7026 */
AnnaBridge 189:f392fc9709a3 7027 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD3(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 7028 {
AnnaBridge 189:f392fc9709a3 7029 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD3_MST) == (LL_ADC_FLAG_AWD3_MST));
AnnaBridge 189:f392fc9709a3 7030 }
AnnaBridge 189:f392fc9709a3 7031
AnnaBridge 189:f392fc9709a3 7032 /**
AnnaBridge 189:f392fc9709a3 7033 * @brief Get flag multimode ADC analog watchdog 3 of the ADC slave.
AnnaBridge 189:f392fc9709a3 7034 * @rmtoll CSR AWD3_SLV LL_ADC_IsActiveFlag_SLV_AWD3
AnnaBridge 189:f392fc9709a3 7035 * @param ADCxy_COMMON ADC common instance
AnnaBridge 189:f392fc9709a3 7036 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 189:f392fc9709a3 7037 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7038 */
AnnaBridge 189:f392fc9709a3 7039 __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD3(ADC_Common_TypeDef *ADCxy_COMMON)
AnnaBridge 189:f392fc9709a3 7040 {
AnnaBridge 189:f392fc9709a3 7041 return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD3_SLV) == (LL_ADC_FLAG_AWD3_SLV));
AnnaBridge 189:f392fc9709a3 7042 }
AnnaBridge 189:f392fc9709a3 7043 #endif /* ADC_MULTIMODE_SUPPORT */
AnnaBridge 189:f392fc9709a3 7044
AnnaBridge 189:f392fc9709a3 7045 /**
AnnaBridge 189:f392fc9709a3 7046 * @}
AnnaBridge 189:f392fc9709a3 7047 */
AnnaBridge 189:f392fc9709a3 7048
AnnaBridge 189:f392fc9709a3 7049 /** @defgroup ADC_LL_EF_IT_Management ADC IT management
AnnaBridge 189:f392fc9709a3 7050 * @{
AnnaBridge 189:f392fc9709a3 7051 */
AnnaBridge 189:f392fc9709a3 7052
AnnaBridge 189:f392fc9709a3 7053 /**
AnnaBridge 189:f392fc9709a3 7054 * @brief Enable ADC ready.
AnnaBridge 189:f392fc9709a3 7055 * @rmtoll IER ADRDYIE LL_ADC_EnableIT_ADRDY
AnnaBridge 189:f392fc9709a3 7056 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7057 * @retval None
AnnaBridge 189:f392fc9709a3 7058 */
AnnaBridge 189:f392fc9709a3 7059 __STATIC_INLINE void LL_ADC_EnableIT_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7060 {
AnnaBridge 189:f392fc9709a3 7061 SET_BIT(ADCx->IER, LL_ADC_IT_ADRDY);
AnnaBridge 189:f392fc9709a3 7062 }
AnnaBridge 189:f392fc9709a3 7063
AnnaBridge 189:f392fc9709a3 7064 /**
AnnaBridge 189:f392fc9709a3 7065 * @brief Enable interruption ADC group regular end of unitary conversion.
AnnaBridge 189:f392fc9709a3 7066 * @rmtoll IER EOCIE LL_ADC_EnableIT_EOC
AnnaBridge 189:f392fc9709a3 7067 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7068 * @retval None
AnnaBridge 189:f392fc9709a3 7069 */
AnnaBridge 189:f392fc9709a3 7070 __STATIC_INLINE void LL_ADC_EnableIT_EOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7071 {
AnnaBridge 189:f392fc9709a3 7072 SET_BIT(ADCx->IER, LL_ADC_IT_EOC);
AnnaBridge 189:f392fc9709a3 7073 }
AnnaBridge 189:f392fc9709a3 7074
AnnaBridge 189:f392fc9709a3 7075 /**
AnnaBridge 189:f392fc9709a3 7076 * @brief Enable interruption ADC group regular end of sequence conversions.
AnnaBridge 189:f392fc9709a3 7077 * @rmtoll IER EOSIE LL_ADC_EnableIT_EOS
AnnaBridge 189:f392fc9709a3 7078 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7079 * @retval None
AnnaBridge 189:f392fc9709a3 7080 */
AnnaBridge 189:f392fc9709a3 7081 __STATIC_INLINE void LL_ADC_EnableIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7082 {
AnnaBridge 189:f392fc9709a3 7083 SET_BIT(ADCx->IER, LL_ADC_IT_EOS);
AnnaBridge 189:f392fc9709a3 7084 }
AnnaBridge 189:f392fc9709a3 7085
AnnaBridge 189:f392fc9709a3 7086 /**
AnnaBridge 189:f392fc9709a3 7087 * @brief Enable ADC group regular interruption overrun.
AnnaBridge 189:f392fc9709a3 7088 * @rmtoll IER OVRIE LL_ADC_EnableIT_OVR
AnnaBridge 189:f392fc9709a3 7089 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7090 * @retval None
AnnaBridge 189:f392fc9709a3 7091 */
AnnaBridge 189:f392fc9709a3 7092 __STATIC_INLINE void LL_ADC_EnableIT_OVR(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7093 {
AnnaBridge 189:f392fc9709a3 7094 SET_BIT(ADCx->IER, LL_ADC_IT_OVR);
AnnaBridge 189:f392fc9709a3 7095 }
AnnaBridge 189:f392fc9709a3 7096
AnnaBridge 189:f392fc9709a3 7097 /**
AnnaBridge 189:f392fc9709a3 7098 * @brief Enable interruption ADC group regular end of sampling.
AnnaBridge 189:f392fc9709a3 7099 * @rmtoll IER EOSMPIE LL_ADC_EnableIT_EOSMP
AnnaBridge 189:f392fc9709a3 7100 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7101 * @retval None
AnnaBridge 189:f392fc9709a3 7102 */
AnnaBridge 189:f392fc9709a3 7103 __STATIC_INLINE void LL_ADC_EnableIT_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7104 {
AnnaBridge 189:f392fc9709a3 7105 SET_BIT(ADCx->IER, LL_ADC_IT_EOSMP);
AnnaBridge 189:f392fc9709a3 7106 }
AnnaBridge 189:f392fc9709a3 7107
AnnaBridge 189:f392fc9709a3 7108 /**
AnnaBridge 189:f392fc9709a3 7109 * @brief Enable interruption ADC group injected end of unitary conversion.
AnnaBridge 189:f392fc9709a3 7110 * @rmtoll IER JEOCIE LL_ADC_EnableIT_JEOC
AnnaBridge 189:f392fc9709a3 7111 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7112 * @retval None
AnnaBridge 189:f392fc9709a3 7113 */
AnnaBridge 189:f392fc9709a3 7114 __STATIC_INLINE void LL_ADC_EnableIT_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7115 {
AnnaBridge 189:f392fc9709a3 7116 SET_BIT(ADCx->IER, LL_ADC_IT_JEOC);
AnnaBridge 189:f392fc9709a3 7117 }
AnnaBridge 189:f392fc9709a3 7118
AnnaBridge 189:f392fc9709a3 7119 /**
AnnaBridge 189:f392fc9709a3 7120 * @brief Enable interruption ADC group injected end of sequence conversions.
AnnaBridge 189:f392fc9709a3 7121 * @rmtoll IER JEOSIE LL_ADC_EnableIT_JEOS
AnnaBridge 189:f392fc9709a3 7122 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7123 * @retval None
AnnaBridge 189:f392fc9709a3 7124 */
AnnaBridge 189:f392fc9709a3 7125 __STATIC_INLINE void LL_ADC_EnableIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7126 {
AnnaBridge 189:f392fc9709a3 7127 SET_BIT(ADCx->IER, LL_ADC_IT_JEOS);
AnnaBridge 189:f392fc9709a3 7128 }
AnnaBridge 189:f392fc9709a3 7129
AnnaBridge 189:f392fc9709a3 7130 /**
AnnaBridge 189:f392fc9709a3 7131 * @brief Enable interruption ADC group injected context queue overflow.
AnnaBridge 189:f392fc9709a3 7132 * @rmtoll IER JQOVFIE LL_ADC_EnableIT_JQOVF
AnnaBridge 189:f392fc9709a3 7133 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7134 * @retval None
AnnaBridge 189:f392fc9709a3 7135 */
AnnaBridge 189:f392fc9709a3 7136 __STATIC_INLINE void LL_ADC_EnableIT_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7137 {
AnnaBridge 189:f392fc9709a3 7138 SET_BIT(ADCx->IER, LL_ADC_IT_JQOVF);
AnnaBridge 189:f392fc9709a3 7139 }
AnnaBridge 189:f392fc9709a3 7140
AnnaBridge 189:f392fc9709a3 7141 /**
AnnaBridge 189:f392fc9709a3 7142 * @brief Enable interruption ADC analog watchdog 1.
AnnaBridge 189:f392fc9709a3 7143 * @rmtoll IER AWD1IE LL_ADC_EnableIT_AWD1
AnnaBridge 189:f392fc9709a3 7144 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7145 * @retval None
AnnaBridge 189:f392fc9709a3 7146 */
AnnaBridge 189:f392fc9709a3 7147 __STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7148 {
AnnaBridge 189:f392fc9709a3 7149 SET_BIT(ADCx->IER, LL_ADC_IT_AWD1);
AnnaBridge 189:f392fc9709a3 7150 }
AnnaBridge 189:f392fc9709a3 7151
AnnaBridge 189:f392fc9709a3 7152 /**
AnnaBridge 189:f392fc9709a3 7153 * @brief Enable interruption ADC analog watchdog 2.
AnnaBridge 189:f392fc9709a3 7154 * @rmtoll IER AWD2IE LL_ADC_EnableIT_AWD2
AnnaBridge 189:f392fc9709a3 7155 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7156 * @retval None
AnnaBridge 189:f392fc9709a3 7157 */
AnnaBridge 189:f392fc9709a3 7158 __STATIC_INLINE void LL_ADC_EnableIT_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7159 {
AnnaBridge 189:f392fc9709a3 7160 SET_BIT(ADCx->IER, LL_ADC_IT_AWD2);
AnnaBridge 189:f392fc9709a3 7161 }
AnnaBridge 189:f392fc9709a3 7162
AnnaBridge 189:f392fc9709a3 7163 /**
AnnaBridge 189:f392fc9709a3 7164 * @brief Enable interruption ADC analog watchdog 3.
AnnaBridge 189:f392fc9709a3 7165 * @rmtoll IER AWD3IE LL_ADC_EnableIT_AWD3
AnnaBridge 189:f392fc9709a3 7166 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7167 * @retval None
AnnaBridge 189:f392fc9709a3 7168 */
AnnaBridge 189:f392fc9709a3 7169 __STATIC_INLINE void LL_ADC_EnableIT_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7170 {
AnnaBridge 189:f392fc9709a3 7171 SET_BIT(ADCx->IER, LL_ADC_IT_AWD3);
AnnaBridge 189:f392fc9709a3 7172 }
AnnaBridge 189:f392fc9709a3 7173
AnnaBridge 189:f392fc9709a3 7174 /**
AnnaBridge 189:f392fc9709a3 7175 * @brief Disable interruption ADC ready.
AnnaBridge 189:f392fc9709a3 7176 * @rmtoll IER ADRDYIE LL_ADC_DisableIT_ADRDY
AnnaBridge 189:f392fc9709a3 7177 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7178 * @retval None
AnnaBridge 189:f392fc9709a3 7179 */
AnnaBridge 189:f392fc9709a3 7180 __STATIC_INLINE void LL_ADC_DisableIT_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7181 {
AnnaBridge 189:f392fc9709a3 7182 CLEAR_BIT(ADCx->IER, LL_ADC_IT_ADRDY);
AnnaBridge 189:f392fc9709a3 7183 }
AnnaBridge 189:f392fc9709a3 7184
AnnaBridge 189:f392fc9709a3 7185 /**
AnnaBridge 189:f392fc9709a3 7186 * @brief Disable interruption ADC group regular end of unitary conversion.
AnnaBridge 189:f392fc9709a3 7187 * @rmtoll IER EOCIE LL_ADC_DisableIT_EOC
AnnaBridge 189:f392fc9709a3 7188 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7189 * @retval None
AnnaBridge 189:f392fc9709a3 7190 */
AnnaBridge 189:f392fc9709a3 7191 __STATIC_INLINE void LL_ADC_DisableIT_EOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7192 {
AnnaBridge 189:f392fc9709a3 7193 CLEAR_BIT(ADCx->IER, LL_ADC_IT_EOC);
AnnaBridge 189:f392fc9709a3 7194 }
AnnaBridge 189:f392fc9709a3 7195
AnnaBridge 189:f392fc9709a3 7196 /**
AnnaBridge 189:f392fc9709a3 7197 * @brief Disable interruption ADC group regular end of sequence conversions.
AnnaBridge 189:f392fc9709a3 7198 * @rmtoll IER EOSIE LL_ADC_DisableIT_EOS
AnnaBridge 189:f392fc9709a3 7199 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7200 * @retval None
AnnaBridge 189:f392fc9709a3 7201 */
AnnaBridge 189:f392fc9709a3 7202 __STATIC_INLINE void LL_ADC_DisableIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7203 {
AnnaBridge 189:f392fc9709a3 7204 CLEAR_BIT(ADCx->IER, LL_ADC_IT_EOS);
AnnaBridge 189:f392fc9709a3 7205 }
AnnaBridge 189:f392fc9709a3 7206
AnnaBridge 189:f392fc9709a3 7207 /**
AnnaBridge 189:f392fc9709a3 7208 * @brief Disable interruption ADC group regular overrun.
AnnaBridge 189:f392fc9709a3 7209 * @rmtoll IER OVRIE LL_ADC_DisableIT_OVR
AnnaBridge 189:f392fc9709a3 7210 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7211 * @retval None
AnnaBridge 189:f392fc9709a3 7212 */
AnnaBridge 189:f392fc9709a3 7213 __STATIC_INLINE void LL_ADC_DisableIT_OVR(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7214 {
AnnaBridge 189:f392fc9709a3 7215 CLEAR_BIT(ADCx->IER, LL_ADC_IT_OVR);
AnnaBridge 189:f392fc9709a3 7216 }
AnnaBridge 189:f392fc9709a3 7217
AnnaBridge 189:f392fc9709a3 7218 /**
AnnaBridge 189:f392fc9709a3 7219 * @brief Disable interruption ADC group regular end of sampling.
AnnaBridge 189:f392fc9709a3 7220 * @rmtoll IER EOSMPIE LL_ADC_DisableIT_EOSMP
AnnaBridge 189:f392fc9709a3 7221 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7222 * @retval None
AnnaBridge 189:f392fc9709a3 7223 */
AnnaBridge 189:f392fc9709a3 7224 __STATIC_INLINE void LL_ADC_DisableIT_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7225 {
AnnaBridge 189:f392fc9709a3 7226 CLEAR_BIT(ADCx->IER, LL_ADC_IT_EOSMP);
AnnaBridge 189:f392fc9709a3 7227 }
AnnaBridge 189:f392fc9709a3 7228
AnnaBridge 189:f392fc9709a3 7229 /**
AnnaBridge 189:f392fc9709a3 7230 * @brief Disable interruption ADC group regular end of unitary conversion.
AnnaBridge 189:f392fc9709a3 7231 * @rmtoll IER JEOCIE LL_ADC_DisableIT_JEOC
AnnaBridge 189:f392fc9709a3 7232 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7233 * @retval None
AnnaBridge 189:f392fc9709a3 7234 */
AnnaBridge 189:f392fc9709a3 7235 __STATIC_INLINE void LL_ADC_DisableIT_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7236 {
AnnaBridge 189:f392fc9709a3 7237 CLEAR_BIT(ADCx->IER, LL_ADC_IT_JEOC);
AnnaBridge 189:f392fc9709a3 7238 }
AnnaBridge 189:f392fc9709a3 7239
AnnaBridge 189:f392fc9709a3 7240 /**
AnnaBridge 189:f392fc9709a3 7241 * @brief Disable interruption ADC group injected end of sequence conversions.
AnnaBridge 189:f392fc9709a3 7242 * @rmtoll IER JEOSIE LL_ADC_DisableIT_JEOS
AnnaBridge 189:f392fc9709a3 7243 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7244 * @retval None
AnnaBridge 189:f392fc9709a3 7245 */
AnnaBridge 189:f392fc9709a3 7246 __STATIC_INLINE void LL_ADC_DisableIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7247 {
AnnaBridge 189:f392fc9709a3 7248 CLEAR_BIT(ADCx->IER, LL_ADC_IT_JEOS);
AnnaBridge 189:f392fc9709a3 7249 }
AnnaBridge 189:f392fc9709a3 7250
AnnaBridge 189:f392fc9709a3 7251 /**
AnnaBridge 189:f392fc9709a3 7252 * @brief Disable interruption ADC group injected context queue overflow.
AnnaBridge 189:f392fc9709a3 7253 * @rmtoll IER JQOVFIE LL_ADC_DisableIT_JQOVF
AnnaBridge 189:f392fc9709a3 7254 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7255 * @retval None
AnnaBridge 189:f392fc9709a3 7256 */
AnnaBridge 189:f392fc9709a3 7257 __STATIC_INLINE void LL_ADC_DisableIT_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7258 {
AnnaBridge 189:f392fc9709a3 7259 CLEAR_BIT(ADCx->IER, LL_ADC_IT_JQOVF);
AnnaBridge 189:f392fc9709a3 7260 }
AnnaBridge 189:f392fc9709a3 7261
AnnaBridge 189:f392fc9709a3 7262 /**
AnnaBridge 189:f392fc9709a3 7263 * @brief Disable interruption ADC analog watchdog 1.
AnnaBridge 189:f392fc9709a3 7264 * @rmtoll IER AWD1IE LL_ADC_DisableIT_AWD1
AnnaBridge 189:f392fc9709a3 7265 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7266 * @retval None
AnnaBridge 189:f392fc9709a3 7267 */
AnnaBridge 189:f392fc9709a3 7268 __STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7269 {
AnnaBridge 189:f392fc9709a3 7270 CLEAR_BIT(ADCx->IER, LL_ADC_IT_AWD1);
AnnaBridge 189:f392fc9709a3 7271 }
AnnaBridge 189:f392fc9709a3 7272
AnnaBridge 189:f392fc9709a3 7273 /**
AnnaBridge 189:f392fc9709a3 7274 * @brief Disable interruption ADC analog watchdog 2.
AnnaBridge 189:f392fc9709a3 7275 * @rmtoll IER AWD2IE LL_ADC_DisableIT_AWD2
AnnaBridge 189:f392fc9709a3 7276 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7277 * @retval None
AnnaBridge 189:f392fc9709a3 7278 */
AnnaBridge 189:f392fc9709a3 7279 __STATIC_INLINE void LL_ADC_DisableIT_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7280 {
AnnaBridge 189:f392fc9709a3 7281 CLEAR_BIT(ADCx->IER, LL_ADC_IT_AWD2);
AnnaBridge 189:f392fc9709a3 7282 }
AnnaBridge 189:f392fc9709a3 7283
AnnaBridge 189:f392fc9709a3 7284 /**
AnnaBridge 189:f392fc9709a3 7285 * @brief Disable interruption ADC analog watchdog 3.
AnnaBridge 189:f392fc9709a3 7286 * @rmtoll IER AWD3IE LL_ADC_DisableIT_AWD3
AnnaBridge 189:f392fc9709a3 7287 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7288 * @retval None
AnnaBridge 189:f392fc9709a3 7289 */
AnnaBridge 189:f392fc9709a3 7290 __STATIC_INLINE void LL_ADC_DisableIT_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7291 {
AnnaBridge 189:f392fc9709a3 7292 CLEAR_BIT(ADCx->IER, LL_ADC_IT_AWD3);
AnnaBridge 189:f392fc9709a3 7293 }
AnnaBridge 189:f392fc9709a3 7294
AnnaBridge 189:f392fc9709a3 7295 /**
AnnaBridge 189:f392fc9709a3 7296 * @brief Get state of interruption ADC ready
AnnaBridge 189:f392fc9709a3 7297 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7298 * @rmtoll IER ADRDYIE LL_ADC_IsEnabledIT_ADRDY
AnnaBridge 189:f392fc9709a3 7299 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7300 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7301 */
AnnaBridge 189:f392fc9709a3 7302 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_ADRDY(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7303 {
AnnaBridge 189:f392fc9709a3 7304 return (READ_BIT(ADCx->IER, LL_ADC_IT_ADRDY) == (LL_ADC_IT_ADRDY));
AnnaBridge 189:f392fc9709a3 7305 }
AnnaBridge 189:f392fc9709a3 7306
AnnaBridge 189:f392fc9709a3 7307 /**
AnnaBridge 189:f392fc9709a3 7308 * @brief Get state of interruption ADC group regular end of unitary conversion
AnnaBridge 189:f392fc9709a3 7309 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7310 * @rmtoll IER EOCIE LL_ADC_IsEnabledIT_EOC
AnnaBridge 189:f392fc9709a3 7311 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7312 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7313 */
AnnaBridge 189:f392fc9709a3 7314 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7315 {
AnnaBridge 189:f392fc9709a3 7316 return (READ_BIT(ADCx->IER, LL_ADC_IT_EOC) == (LL_ADC_IT_EOC));
AnnaBridge 189:f392fc9709a3 7317 }
AnnaBridge 189:f392fc9709a3 7318
AnnaBridge 189:f392fc9709a3 7319 /**
AnnaBridge 189:f392fc9709a3 7320 * @brief Get state of interruption ADC group regular end of sequence conversions
AnnaBridge 189:f392fc9709a3 7321 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7322 * @rmtoll IER EOSIE LL_ADC_IsEnabledIT_EOS
AnnaBridge 189:f392fc9709a3 7323 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7324 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7325 */
AnnaBridge 189:f392fc9709a3 7326 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7327 {
AnnaBridge 189:f392fc9709a3 7328 return (READ_BIT(ADCx->IER, LL_ADC_IT_EOS) == (LL_ADC_IT_EOS));
AnnaBridge 189:f392fc9709a3 7329 }
AnnaBridge 189:f392fc9709a3 7330
AnnaBridge 189:f392fc9709a3 7331 /**
AnnaBridge 189:f392fc9709a3 7332 * @brief Get state of interruption ADC group regular overrun
AnnaBridge 189:f392fc9709a3 7333 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7334 * @rmtoll IER OVRIE LL_ADC_IsEnabledIT_OVR
AnnaBridge 189:f392fc9709a3 7335 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7336 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7337 */
AnnaBridge 189:f392fc9709a3 7338 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7339 {
AnnaBridge 189:f392fc9709a3 7340 return (READ_BIT(ADCx->IER, LL_ADC_IT_OVR) == (LL_ADC_IT_OVR));
AnnaBridge 189:f392fc9709a3 7341 }
AnnaBridge 189:f392fc9709a3 7342
AnnaBridge 189:f392fc9709a3 7343 /**
AnnaBridge 189:f392fc9709a3 7344 * @brief Get state of interruption ADC group regular end of sampling
AnnaBridge 189:f392fc9709a3 7345 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7346 * @rmtoll IER EOSMPIE LL_ADC_IsEnabledIT_EOSMP
AnnaBridge 189:f392fc9709a3 7347 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7348 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7349 */
AnnaBridge 189:f392fc9709a3 7350 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOSMP(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7351 {
AnnaBridge 189:f392fc9709a3 7352 return (READ_BIT(ADCx->IER, LL_ADC_IT_EOSMP) == (LL_ADC_IT_EOSMP));
AnnaBridge 189:f392fc9709a3 7353 }
AnnaBridge 189:f392fc9709a3 7354
AnnaBridge 189:f392fc9709a3 7355 /**
AnnaBridge 189:f392fc9709a3 7356 * @brief Get state of interruption ADC group injected end of unitary conversion
AnnaBridge 189:f392fc9709a3 7357 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7358 * @rmtoll IER JEOCIE LL_ADC_IsEnabledIT_JEOC
AnnaBridge 189:f392fc9709a3 7359 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7360 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7361 */
AnnaBridge 189:f392fc9709a3 7362 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOC(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7363 {
AnnaBridge 189:f392fc9709a3 7364 return (READ_BIT(ADCx->IER, LL_ADC_IT_JEOC) == (LL_ADC_IT_JEOC));
AnnaBridge 189:f392fc9709a3 7365 }
AnnaBridge 189:f392fc9709a3 7366
AnnaBridge 189:f392fc9709a3 7367 /**
AnnaBridge 189:f392fc9709a3 7368 * @brief Get state of interruption ADC group injected end of sequence conversions
AnnaBridge 189:f392fc9709a3 7369 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7370 * @rmtoll IER JEOSIE LL_ADC_IsEnabledIT_JEOS
AnnaBridge 189:f392fc9709a3 7371 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7372 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7373 */
AnnaBridge 189:f392fc9709a3 7374 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7375 {
AnnaBridge 189:f392fc9709a3 7376 return (READ_BIT(ADCx->IER, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS));
AnnaBridge 189:f392fc9709a3 7377 }
AnnaBridge 189:f392fc9709a3 7378
AnnaBridge 189:f392fc9709a3 7379 /**
AnnaBridge 189:f392fc9709a3 7380 * @brief Get state of interruption ADC group injected context queue overflow interrupt state
AnnaBridge 189:f392fc9709a3 7381 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7382 * @rmtoll IER JQOVFIE LL_ADC_IsEnabledIT_JQOVF
AnnaBridge 189:f392fc9709a3 7383 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7384 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7385 */
AnnaBridge 189:f392fc9709a3 7386 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JQOVF(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7387 {
AnnaBridge 189:f392fc9709a3 7388 return (READ_BIT(ADCx->IER, LL_ADC_IT_JQOVF) == (LL_ADC_IT_JQOVF));
AnnaBridge 189:f392fc9709a3 7389 }
AnnaBridge 189:f392fc9709a3 7390
AnnaBridge 189:f392fc9709a3 7391 /**
AnnaBridge 189:f392fc9709a3 7392 * @brief Get state of interruption ADC analog watchdog 1
AnnaBridge 189:f392fc9709a3 7393 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7394 * @rmtoll IER AWD1IE LL_ADC_IsEnabledIT_AWD1
AnnaBridge 189:f392fc9709a3 7395 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7396 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7397 */
AnnaBridge 189:f392fc9709a3 7398 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7399 {
AnnaBridge 189:f392fc9709a3 7400 return (READ_BIT(ADCx->IER, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1));
AnnaBridge 189:f392fc9709a3 7401 }
AnnaBridge 189:f392fc9709a3 7402
AnnaBridge 189:f392fc9709a3 7403 /**
AnnaBridge 189:f392fc9709a3 7404 * @brief Get state of interruption Get ADC analog watchdog 2
AnnaBridge 189:f392fc9709a3 7405 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7406 * @rmtoll IER AWD2IE LL_ADC_IsEnabledIT_AWD2
AnnaBridge 189:f392fc9709a3 7407 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7408 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7409 */
AnnaBridge 189:f392fc9709a3 7410 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD2(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7411 {
AnnaBridge 189:f392fc9709a3 7412 return (READ_BIT(ADCx->IER, LL_ADC_IT_AWD2) == (LL_ADC_IT_AWD2));
AnnaBridge 189:f392fc9709a3 7413 }
AnnaBridge 189:f392fc9709a3 7414
AnnaBridge 189:f392fc9709a3 7415 /**
AnnaBridge 189:f392fc9709a3 7416 * @brief Get state of interruption Get ADC analog watchdog 3
AnnaBridge 189:f392fc9709a3 7417 * (0: interrupt disabled, 1: interrupt enabled).
AnnaBridge 189:f392fc9709a3 7418 * @rmtoll IER AWD3IE LL_ADC_IsEnabledIT_AWD3
AnnaBridge 189:f392fc9709a3 7419 * @param ADCx ADC instance
AnnaBridge 189:f392fc9709a3 7420 * @retval State of bit (1 or 0).
AnnaBridge 189:f392fc9709a3 7421 */
AnnaBridge 189:f392fc9709a3 7422 __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD3(ADC_TypeDef *ADCx)
AnnaBridge 189:f392fc9709a3 7423 {
AnnaBridge 189:f392fc9709a3 7424 return (READ_BIT(ADCx->IER, LL_ADC_IT_AWD3) == (LL_ADC_IT_AWD3));
AnnaBridge 189:f392fc9709a3 7425 }
AnnaBridge 189:f392fc9709a3 7426
AnnaBridge 189:f392fc9709a3 7427 /**
AnnaBridge 189:f392fc9709a3 7428 * @}
AnnaBridge 189:f392fc9709a3 7429 */
AnnaBridge 189:f392fc9709a3 7430
AnnaBridge 189:f392fc9709a3 7431 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 189:f392fc9709a3 7432 /** @defgroup ADC_LL_EF_Init Initialization and de-initialization functions
AnnaBridge 189:f392fc9709a3 7433 * @{
AnnaBridge 189:f392fc9709a3 7434 */
AnnaBridge 189:f392fc9709a3 7435
AnnaBridge 189:f392fc9709a3 7436 /* Initialization of some features of ADC common parameters and multimode */
AnnaBridge 189:f392fc9709a3 7437 ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON);
AnnaBridge 189:f392fc9709a3 7438 ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct);
AnnaBridge 189:f392fc9709a3 7439 void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct);
AnnaBridge 189:f392fc9709a3 7440
AnnaBridge 189:f392fc9709a3 7441 /* De-initialization of ADC instance, ADC group regular and ADC group injected */
AnnaBridge 189:f392fc9709a3 7442 /* (availability of ADC group injected depends on STM32 families) */
AnnaBridge 189:f392fc9709a3 7443 ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx);
AnnaBridge 189:f392fc9709a3 7444
AnnaBridge 189:f392fc9709a3 7445 /* Initialization of some features of ADC instance */
AnnaBridge 189:f392fc9709a3 7446 ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct);
AnnaBridge 189:f392fc9709a3 7447 void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct);
AnnaBridge 189:f392fc9709a3 7448
AnnaBridge 189:f392fc9709a3 7449 /* Initialization of some features of ADC instance and ADC group regular */
AnnaBridge 189:f392fc9709a3 7450 ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
AnnaBridge 189:f392fc9709a3 7451 void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct);
AnnaBridge 189:f392fc9709a3 7452
AnnaBridge 189:f392fc9709a3 7453 /* Initialization of some features of ADC instance and ADC group injected */
AnnaBridge 189:f392fc9709a3 7454 ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
AnnaBridge 189:f392fc9709a3 7455 void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct);
AnnaBridge 189:f392fc9709a3 7456
AnnaBridge 189:f392fc9709a3 7457 /**
AnnaBridge 189:f392fc9709a3 7458 * @}
AnnaBridge 189:f392fc9709a3 7459 */
AnnaBridge 189:f392fc9709a3 7460 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 189:f392fc9709a3 7461
AnnaBridge 189:f392fc9709a3 7462 /**
AnnaBridge 189:f392fc9709a3 7463 * @}
AnnaBridge 189:f392fc9709a3 7464 */
AnnaBridge 189:f392fc9709a3 7465
AnnaBridge 189:f392fc9709a3 7466 /**
AnnaBridge 189:f392fc9709a3 7467 * @}
AnnaBridge 189:f392fc9709a3 7468 */
AnnaBridge 189:f392fc9709a3 7469
AnnaBridge 189:f392fc9709a3 7470 #endif /* ADC1 || ADC2 || ADC3 */
AnnaBridge 189:f392fc9709a3 7471
AnnaBridge 189:f392fc9709a3 7472 /**
AnnaBridge 189:f392fc9709a3 7473 * @}
AnnaBridge 189:f392fc9709a3 7474 */
AnnaBridge 189:f392fc9709a3 7475
AnnaBridge 189:f392fc9709a3 7476 #ifdef __cplusplus
AnnaBridge 189:f392fc9709a3 7477 }
AnnaBridge 189:f392fc9709a3 7478 #endif
AnnaBridge 189:f392fc9709a3 7479
AnnaBridge 189:f392fc9709a3 7480 #endif /* __STM32L4xx_LL_ADC_H */
AnnaBridge 189:f392fc9709a3 7481
AnnaBridge 189:f392fc9709a3 7482 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/