The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:65be27845400 1 /**
AnnaBridge 172:65be27845400 2 ******************************************************************************
AnnaBridge 172:65be27845400 3 * @file stm32l4xx_hal_adc.h
AnnaBridge 172:65be27845400 4 * @author MCD Application Team
AnnaBridge 172:65be27845400 5 * @brief Header file of ADC HAL module.
AnnaBridge 172:65be27845400 6 ******************************************************************************
AnnaBridge 172:65be27845400 7 * @attention
AnnaBridge 172:65be27845400 8 *
AnnaBridge 172:65be27845400 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 172:65be27845400 10 *
AnnaBridge 172:65be27845400 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 172:65be27845400 12 * are permitted provided that the following conditions are met:
AnnaBridge 172:65be27845400 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 172:65be27845400 14 * this list of conditions and the following disclaimer.
AnnaBridge 172:65be27845400 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 172:65be27845400 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 172:65be27845400 17 * and/or other materials provided with the distribution.
AnnaBridge 172:65be27845400 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 172:65be27845400 19 * may be used to endorse or promote products derived from this software
AnnaBridge 172:65be27845400 20 * without specific prior written permission.
AnnaBridge 172:65be27845400 21 *
AnnaBridge 172:65be27845400 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 172:65be27845400 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 172:65be27845400 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 172:65be27845400 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 172:65be27845400 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 172:65be27845400 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 172:65be27845400 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 172:65be27845400 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 172:65be27845400 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 172:65be27845400 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 172:65be27845400 32 *
AnnaBridge 172:65be27845400 33 ******************************************************************************
AnnaBridge 172:65be27845400 34 */
AnnaBridge 172:65be27845400 35
AnnaBridge 172:65be27845400 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 172:65be27845400 37 #ifndef __STM32L4xx_HAL_ADC_H
AnnaBridge 172:65be27845400 38 #define __STM32L4xx_HAL_ADC_H
AnnaBridge 172:65be27845400 39
AnnaBridge 172:65be27845400 40 #ifdef __cplusplus
AnnaBridge 172:65be27845400 41 extern "C" {
AnnaBridge 172:65be27845400 42 #endif
AnnaBridge 172:65be27845400 43
AnnaBridge 172:65be27845400 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 172:65be27845400 45 #include "stm32l4xx_hal_def.h"
AnnaBridge 172:65be27845400 46
AnnaBridge 172:65be27845400 47 /* Include low level driver */
AnnaBridge 172:65be27845400 48 #include "stm32l4xx_ll_adc.h"
AnnaBridge 172:65be27845400 49
AnnaBridge 172:65be27845400 50 /** @addtogroup STM32L4xx_HAL_Driver
AnnaBridge 172:65be27845400 51 * @{
AnnaBridge 172:65be27845400 52 */
AnnaBridge 172:65be27845400 53
AnnaBridge 172:65be27845400 54 /** @addtogroup ADC
AnnaBridge 172:65be27845400 55 * @{
AnnaBridge 172:65be27845400 56 */
AnnaBridge 172:65be27845400 57
AnnaBridge 172:65be27845400 58 /* Exported types ------------------------------------------------------------*/
AnnaBridge 172:65be27845400 59 /** @defgroup ADC_Exported_Types ADC Exported Types
AnnaBridge 172:65be27845400 60 * @{
AnnaBridge 172:65be27845400 61 */
AnnaBridge 172:65be27845400 62
AnnaBridge 172:65be27845400 63 /**
AnnaBridge 172:65be27845400 64 * @brief ADC group regular oversampling structure definition
AnnaBridge 172:65be27845400 65 */
AnnaBridge 172:65be27845400 66 typedef struct
AnnaBridge 172:65be27845400 67 {
AnnaBridge 172:65be27845400 68 uint32_t Ratio; /*!< Configures the oversampling ratio.
AnnaBridge 172:65be27845400 69 This parameter can be a value of @ref ADC_HAL_EC_OVS_RATIO */
AnnaBridge 172:65be27845400 70
AnnaBridge 172:65be27845400 71 uint32_t RightBitShift; /*!< Configures the division coefficient for the Oversampler.
AnnaBridge 172:65be27845400 72 This parameter can be a value of @ref ADC_HAL_EC_OVS_SHIFT */
AnnaBridge 172:65be27845400 73
AnnaBridge 172:65be27845400 74 uint32_t TriggeredMode; /*!< Selects the regular triggered oversampling mode.
AnnaBridge 172:65be27845400 75 This parameter can be a value of @ref ADC_HAL_EC_OVS_DISCONT_MODE */
AnnaBridge 172:65be27845400 76
AnnaBridge 172:65be27845400 77 uint32_t OversamplingStopReset; /*!< Selects the regular oversampling mode.
AnnaBridge 172:65be27845400 78 The oversampling is either temporary stopped or reset upon an injected
AnnaBridge 172:65be27845400 79 sequence interruption.
AnnaBridge 172:65be27845400 80 If oversampling is enabled on both regular and injected groups, this parameter
AnnaBridge 172:65be27845400 81 is discarded and forced to setting "ADC_REGOVERSAMPLING_RESUMED_MODE"
AnnaBridge 172:65be27845400 82 (the oversampling buffer is zeroed during injection sequence).
AnnaBridge 172:65be27845400 83 This parameter can be a value of @ref ADC_HAL_EC_OVS_SCOPE_REG */
AnnaBridge 172:65be27845400 84
AnnaBridge 172:65be27845400 85 }ADC_OversamplingTypeDef;
AnnaBridge 172:65be27845400 86
AnnaBridge 172:65be27845400 87 /**
AnnaBridge 172:65be27845400 88 * @brief Structure definition of ADC instance and ADC group regular.
AnnaBridge 172:65be27845400 89 * @note Parameters of this structure are shared within 2 scopes:
AnnaBridge 172:65be27845400 90 * - Scope entire ADC (affects ADC groups regular and injected): ClockPrescaler, Resolution, DataAlign,
AnnaBridge 172:65be27845400 91 * ScanConvMode, EOCSelection, LowPowerAutoWait.
AnnaBridge 172:65be27845400 92 * - Scope ADC group regular: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion,
AnnaBridge 172:65be27845400 93 * ExternalTrigConv, ExternalTrigConvEdge, DMAContinuousRequests, Overrun, OversamplingMode, Oversampling.
AnnaBridge 172:65be27845400 94 * @note The setting of these parameters by function HAL_ADC_Init() is conditioned to ADC state.
AnnaBridge 172:65be27845400 95 * ADC state can be either:
AnnaBridge 172:65be27845400 96 * - For all parameters: ADC disabled
AnnaBridge 172:65be27845400 97 * - For all parameters except 'LowPowerAutoWait', 'DMAContinuousRequests' and 'Oversampling': ADC enabled without conversion on going on group regular.
AnnaBridge 172:65be27845400 98 * - For parameters 'LowPowerAutoWait' and 'DMAContinuousRequests': ADC enabled without conversion on going on groups regular and injected.
AnnaBridge 172:65be27845400 99 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 172:65be27845400 100 * without error reporting (as it can be the expected behavior in case of intended action to update another parameter
AnnaBridge 172:65be27845400 101 * (which fulfills the ADC state condition) on the fly).
AnnaBridge 172:65be27845400 102 */
AnnaBridge 172:65be27845400 103 typedef struct
AnnaBridge 172:65be27845400 104 {
AnnaBridge 172:65be27845400 105 uint32_t ClockPrescaler; /*!< Select ADC clock source (synchronous clock derived from APB clock or asynchronous clock derived from system clock or PLL (Refer to reference manual for list of clocks available)) and clock prescaler.
AnnaBridge 172:65be27845400 106 This parameter can be a value of @ref ADC_HAL_EC_COMMON_CLOCK_SOURCE.
AnnaBridge 172:65be27845400 107 Note: The ADC clock configuration is common to all ADC instances.
AnnaBridge 172:65be27845400 108 Note: In case of usage of channels on injected group, ADC frequency should be lower than AHB clock frequency /4 for resolution 12 or 10 bits,
AnnaBridge 172:65be27845400 109 AHB clock frequency /3 for resolution 8 bits, AHB clock frequency /2 for resolution 6 bits.
AnnaBridge 172:65be27845400 110 Note: In case of synchronous clock mode based on HCLK/1, the configuration must be enabled only
AnnaBridge 172:65be27845400 111 if the system clock has a 50% duty clock cycle (APB prescaler configured inside RCC
AnnaBridge 172:65be27845400 112 must be bypassed and PCLK clock must have 50% duty cycle). Refer to reference manual for details.
AnnaBridge 172:65be27845400 113 Note: In case of usage of asynchronous clock, the selected clock must be preliminarily enabled at RCC top level.
AnnaBridge 172:65be27845400 114 Note: This parameter can be modified only if all ADC instances are disabled. */
AnnaBridge 172:65be27845400 115
AnnaBridge 172:65be27845400 116 uint32_t Resolution; /*!< Configure the ADC resolution.
AnnaBridge 172:65be27845400 117 This parameter can be a value of @ref ADC_HAL_EC_RESOLUTION */
AnnaBridge 172:65be27845400 118
AnnaBridge 172:65be27845400 119 uint32_t DataAlign; /*!< Specify ADC data alignment in conversion data register (right or left).
AnnaBridge 172:65be27845400 120 Refer to reference manual for alignments formats versus resolutions.
AnnaBridge 172:65be27845400 121 This parameter can be a value of @ref ADC_HAL_EC_DATA_ALIGN */
AnnaBridge 172:65be27845400 122
AnnaBridge 172:65be27845400 123 uint32_t ScanConvMode; /*!< Configure the sequencer of ADC groups regular and injected.
AnnaBridge 172:65be27845400 124 This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts.
AnnaBridge 172:65be27845400 125 If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1).
AnnaBridge 172:65be27845400 126 Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1).
AnnaBridge 172:65be27845400 127 If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion' or 'InjectedNbrOfConversion' and rank of each channel in sequencer).
AnnaBridge 172:65be27845400 128 Scan direction is upward: from rank 1 to rank 'n'.
AnnaBridge 172:65be27845400 129 This parameter can be a value of @ref ADC_Scan_mode */
AnnaBridge 172:65be27845400 130
AnnaBridge 172:65be27845400 131 uint32_t EOCSelection; /*!< Specify which EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of unitary conversion or end of sequence conversions.
AnnaBridge 172:65be27845400 132 This parameter can be a value of @ref ADC_EOCSelection. */
AnnaBridge 172:65be27845400 133
AnnaBridge 172:65be27845400 134 uint32_t LowPowerAutoWait; /*!< Select the dynamic low power Auto Delay: new conversion start only when the previous
AnnaBridge 172:65be27845400 135 conversion (for ADC group regular) or previous sequence (for ADC group injected) has been retrieved by user software,
AnnaBridge 172:65be27845400 136 using function HAL_ADC_GetValue() or HAL_ADCEx_InjectedGetValue().
AnnaBridge 172:65be27845400 137 This feature automatically adapts the frequency of ADC conversions triggers to the speed of the system that reads the data. Moreover, this avoids risk of overrun
AnnaBridge 172:65be27845400 138 for low frequency applications.
AnnaBridge 172:65be27845400 139 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 172:65be27845400 140 Note: Do not use with interruption or DMA (HAL_ADC_Start_IT(), HAL_ADC_Start_DMA()) since they clear immediately the EOC flag
AnnaBridge 172:65be27845400 141 to free the IRQ vector sequencer.
AnnaBridge 172:65be27845400 142 Do use with polling: 1. Start conversion with HAL_ADC_Start(), 2. Later on, when ADC conversion data is needed:
AnnaBridge 172:65be27845400 143 use HAL_ADC_PollForConversion() to ensure that conversion is completed and HAL_ADC_GetValue() to retrieve conversion result and trig another conversion start.
AnnaBridge 172:65be27845400 144 (in case of usage of ADC group injected, use the equivalent functions HAL_ADCExInjected_Start(), HAL_ADCEx_InjectedGetValue(), ...). */
AnnaBridge 172:65be27845400 145
AnnaBridge 172:65be27845400 146 uint32_t ContinuousConvMode; /*!< Specify whether the conversion is performed in single mode (one conversion) or continuous mode for ADC group regular,
AnnaBridge 172:65be27845400 147 after the first ADC conversion start trigger occurred (software start or external trigger).
AnnaBridge 172:65be27845400 148 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 172:65be27845400 149
AnnaBridge 172:65be27845400 150 uint32_t NbrOfConversion; /*!< Specify the number of ranks that will be converted within the regular group sequencer.
AnnaBridge 172:65be27845400 151 To use the regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
AnnaBridge 172:65be27845400 152 This parameter must be a number between Min_Data = 1 and Max_Data = 16.
AnnaBridge 172:65be27845400 153 Note: This parameter must be modified when no conversion is on going on regular group (ADC disabled, or ADC enabled without
AnnaBridge 172:65be27845400 154 continuous mode or external trigger that could launch a conversion). */
AnnaBridge 172:65be27845400 155
AnnaBridge 172:65be27845400 156 uint32_t DiscontinuousConvMode; /*!< Specify whether the conversions sequence of ADC group regular is performed in Complete-sequence/Discontinuous-sequence
AnnaBridge 172:65be27845400 157 (main sequence subdivided in successive parts).
AnnaBridge 172:65be27845400 158 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
AnnaBridge 172:65be27845400 159 Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded.
AnnaBridge 172:65be27845400 160 This parameter can be set to ENABLE or DISABLE. */
AnnaBridge 172:65be27845400 161
AnnaBridge 172:65be27845400 162 uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of ADC group regular (parameter NbrOfConversion) will be subdivided.
AnnaBridge 172:65be27845400 163 If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded.
AnnaBridge 172:65be27845400 164 This parameter must be a number between Min_Data = 1 and Max_Data = 8. */
AnnaBridge 172:65be27845400 165
AnnaBridge 172:65be27845400 166 uint32_t ExternalTrigConv; /*!< Select the external event source used to trigger ADC group regular conversion start.
AnnaBridge 172:65be27845400 167 If set to ADC_SOFTWARE_START, external triggers are disabled and software trigger is used instead.
AnnaBridge 172:65be27845400 168 This parameter can be a value of @ref ADC_regular_external_trigger_source.
AnnaBridge 172:65be27845400 169 Caution: external trigger source is common to all ADC instances. */
AnnaBridge 172:65be27845400 170
AnnaBridge 172:65be27845400 171 uint32_t ExternalTrigConvEdge; /*!< Select the external event edge used to trigger ADC group regular conversion start.
AnnaBridge 172:65be27845400 172 If trigger source is set to ADC_SOFTWARE_START, this parameter is discarded.
AnnaBridge 172:65be27845400 173 This parameter can be a value of @ref ADC_regular_external_trigger_edge */
AnnaBridge 172:65be27845400 174
AnnaBridge 172:65be27845400 175 uint32_t DMAContinuousRequests; /*!< Specify whether the DMA requests are performed in one shot mode (DMA transfer stops when number of conversions is reached)
AnnaBridge 172:65be27845400 176 or in continuous mode (DMA transfer unlimited, whatever number of conversions).
AnnaBridge 172:65be27845400 177 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 172:65be27845400 178 Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached. */
AnnaBridge 172:65be27845400 179
AnnaBridge 172:65be27845400 180 uint32_t Overrun; /*!< Select the behavior in case of overrun: data overwritten or preserved (default).
AnnaBridge 172:65be27845400 181 This parameter applies to ADC group regular only.
AnnaBridge 172:65be27845400 182 This parameter can be a value of @ref ADC_HAL_EC_REG_OVR_DATA_BEHAVIOR.
AnnaBridge 172:65be27845400 183 Note: In case of overrun set to data preserved and usage with programming model with interruption (HAL_Start_IT()): ADC IRQ handler has to clear
AnnaBridge 172:65be27845400 184 end of conversion flags, this induces the release of the preserved data. If needed, this data can be saved in function
AnnaBridge 172:65be27845400 185 HAL_ADC_ConvCpltCallback(), placed in user program code (called before end of conversion flags clear).
AnnaBridge 172:65be27845400 186 Note: Error reporting with respect to the conversion mode:
AnnaBridge 172:65be27845400 187 - Usage with ADC conversion by polling for event or interruption: Error is reported only if overrun is set to data preserved. If overrun is set to data
AnnaBridge 172:65be27845400 188 overwritten, user can willingly not read all the converted data, this is not considered as an erroneous case.
AnnaBridge 172:65be27845400 189 - Usage with ADC conversion by DMA: Error is reported whatever overrun setting (DMA is expected to process all data from data register). */
AnnaBridge 172:65be27845400 190
AnnaBridge 172:65be27845400 191 uint32_t OversamplingMode; /*!< Specify whether the oversampling feature is enabled or disabled.
AnnaBridge 172:65be27845400 192 This parameter can be set to ENABLE or DISABLE.
AnnaBridge 172:65be27845400 193 Note: This parameter can be modified only if there is no conversion is ongoing on ADC groups regular and injected */
AnnaBridge 172:65be27845400 194
AnnaBridge 172:65be27845400 195 ADC_OversamplingTypeDef Oversampling; /*!< Specify the Oversampling parameters.
AnnaBridge 172:65be27845400 196 Caution: this setting overwrites the previous oversampling configuration if oversampling is already enabled. */
AnnaBridge 172:65be27845400 197
AnnaBridge 172:65be27845400 198 #if defined(ADC_CFGR_DFSDMCFG) &&defined(DFSDM1_Channel0)
AnnaBridge 172:65be27845400 199 uint32_t DFSDMConfig; /*!< Specify whether ADC conversion data is sent directly to DFSDM.
AnnaBridge 172:65be27845400 200 This parameter can be a value of @ref ADC_HAL_EC_REG_DFSDM_TRANSFER.
AnnaBridge 172:65be27845400 201 Note: This parameter can be modified only if there is no conversion is ongoing (both ADSTART and JADSTART cleared). */
AnnaBridge 172:65be27845400 202
AnnaBridge 172:65be27845400 203 #endif
AnnaBridge 172:65be27845400 204 }ADC_InitTypeDef;
AnnaBridge 172:65be27845400 205
AnnaBridge 172:65be27845400 206 /**
AnnaBridge 172:65be27845400 207 * @brief Structure definition of ADC channel for regular group
AnnaBridge 172:65be27845400 208 * @note The setting of these parameters by function HAL_ADC_ConfigChannel() is conditioned to ADC state.
AnnaBridge 172:65be27845400 209 * ADC state can be either:
AnnaBridge 172:65be27845400 210 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'SingleDiff')
AnnaBridge 172:65be27845400 211 * - For all except parameters 'SamplingTime', 'Offset', 'OffsetNumber': ADC enabled without conversion on going on regular group.
AnnaBridge 172:65be27845400 212 * - For parameters 'SamplingTime', 'Offset', 'OffsetNumber': ADC enabled without conversion on going on regular and injected groups.
AnnaBridge 172:65be27845400 213 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 172:65be27845400 214 * without error reporting (as it can be the expected behavior in case of intended action to update another parameter (which fulfills the ADC state condition)
AnnaBridge 172:65be27845400 215 * on the fly).
AnnaBridge 172:65be27845400 216 */
AnnaBridge 172:65be27845400 217 typedef struct
AnnaBridge 172:65be27845400 218 {
AnnaBridge 172:65be27845400 219 uint32_t Channel; /*!< Specify the channel to configure into ADC regular group.
AnnaBridge 172:65be27845400 220 This parameter can be a value of @ref ADC_HAL_EC_CHANNEL
AnnaBridge 172:65be27845400 221 Note: Depending on devices and ADC instances, some channels may not be available on device package pins. Refer to device datasheet for channels availability. */
AnnaBridge 172:65be27845400 222
AnnaBridge 172:65be27845400 223 uint32_t Rank; /*!< Specify the rank in the regular group sequencer.
AnnaBridge 172:65be27845400 224 This parameter can be a value of @ref ADC_HAL_EC_REG_SEQ_RANKS
AnnaBridge 172:65be27845400 225 Note: to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by
AnnaBridge 172:65be27845400 226 the new channel setting (or parameter number of conversions adjusted) */
AnnaBridge 172:65be27845400 227
AnnaBridge 172:65be27845400 228 uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel.
AnnaBridge 172:65be27845400 229 Unit: ADC clock cycles
AnnaBridge 172:65be27845400 230 Conversion time is the addition of sampling time and processing time
AnnaBridge 172:65be27845400 231 (12.5 ADC clock cycles at ADC resolution 12 bits, 10.5 cycles at 10 bits, 8.5 cycles at 8 bits, 6.5 cycles at 6 bits).
AnnaBridge 172:65be27845400 232 This parameter can be a value of @ref ADC_HAL_EC_CHANNEL_SAMPLINGTIME
AnnaBridge 172:65be27845400 233 Caution: This parameter applies to a channel that can be used into regular and/or injected group.
AnnaBridge 172:65be27845400 234 It overwrites the last setting.
AnnaBridge 172:65be27845400 235 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
AnnaBridge 172:65be27845400 236 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
AnnaBridge 172:65be27845400 237 Refer to device datasheet for timings values. */
AnnaBridge 172:65be27845400 238
AnnaBridge 172:65be27845400 239 uint32_t SingleDiff; /*!< Select single-ended or differential input.
AnnaBridge 172:65be27845400 240 In differential mode: Differential measurement is carried out between the selected channel 'i' (positive input) and channel 'i+1' (negative input).
AnnaBridge 172:65be27845400 241 Only channel 'i' has to be configured, channel 'i+1' is configured automatically.
AnnaBridge 172:65be27845400 242 This parameter must be a value of @ref ADC_HAL_EC_CHANNEL_SINGLE_DIFF_ENDING
AnnaBridge 172:65be27845400 243 Caution: This parameter applies to a channel that can be used in a regular and/or injected group.
AnnaBridge 172:65be27845400 244 It overwrites the last setting.
AnnaBridge 172:65be27845400 245 Note: Refer to Reference Manual to ensure the selected channel is available in differential mode.
AnnaBridge 172:65be27845400 246 Note: When configuring a channel 'i' in differential mode, the channel 'i+1' is not usable separately.
AnnaBridge 172:65be27845400 247 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 172:65be27845400 248 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behavior in case
AnnaBridge 172:65be27845400 249 of another parameter update on the fly) */
AnnaBridge 172:65be27845400 250
AnnaBridge 172:65be27845400 251 uint32_t OffsetNumber; /*!< Select the offset number
AnnaBridge 172:65be27845400 252 This parameter can be a value of @ref ADC_HAL_EC_OFFSET_NB
AnnaBridge 172:65be27845400 253 Caution: Only one offset is allowed per channel. This parameter overwrites the last setting. */
AnnaBridge 172:65be27845400 254
AnnaBridge 172:65be27845400 255 uint32_t Offset; /*!< Define the offset to be subtracted from the raw converted data.
AnnaBridge 172:65be27845400 256 Offset value must be a positive number.
AnnaBridge 172:65be27845400 257 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF,
AnnaBridge 172:65be27845400 258 0x3FF, 0xFF or 0x3F respectively.
AnnaBridge 172:65be27845400 259 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled
AnnaBridge 172:65be27845400 260 without continuous mode or external trigger that could launch a conversion). */
AnnaBridge 172:65be27845400 261
AnnaBridge 172:65be27845400 262 }ADC_ChannelConfTypeDef;
AnnaBridge 172:65be27845400 263
AnnaBridge 172:65be27845400 264 /**
AnnaBridge 172:65be27845400 265 * @brief Structure definition of ADC analog watchdog
AnnaBridge 172:65be27845400 266 * @note The setting of these parameters by function HAL_ADC_AnalogWDGConfig() is conditioned to ADC state.
AnnaBridge 172:65be27845400 267 * ADC state can be either:
AnnaBridge 172:65be27845400 268 * - For all parameters: ADC disabled or ADC enabled without conversion on going on ADC groups regular and injected.
AnnaBridge 172:65be27845400 269 */
AnnaBridge 172:65be27845400 270 typedef struct
AnnaBridge 172:65be27845400 271 {
AnnaBridge 172:65be27845400 272 uint32_t WatchdogNumber; /*!< Select which ADC analog watchdog is monitoring the selected channel.
AnnaBridge 172:65be27845400 273 For Analog Watchdog 1: Only 1 channel can be monitored (or overall group of channels by setting parameter 'WatchdogMode')
AnnaBridge 172:65be27845400 274 For Analog Watchdog 2 and 3: Several channels can be monitored (by successive calls of 'HAL_ADC_AnalogWDGConfig()' for each channel)
AnnaBridge 172:65be27845400 275 This parameter can be a value of @ref ADC_HAL_EC_AWD_NUMBER. */
AnnaBridge 172:65be27845400 276
AnnaBridge 172:65be27845400 277 uint32_t WatchdogMode; /*!< Configure the ADC analog watchdog mode: single/all/none channels.
AnnaBridge 172:65be27845400 278 For Analog Watchdog 1: Configure the ADC analog watchdog mode: single channel or all channels, ADC groups regular and-or injected.
AnnaBridge 172:65be27845400 279 For Analog Watchdog 2 and 3: Several channels can be monitored by applying successively the AWD init structure. Channels on ADC group regular and injected are not differentiated: Set value 'ADC_ANALOGWATCHDOG_SINGLE_xxx' to monitor 1 channel, value 'ADC_ANALOGWATCHDOG_ALL_xxx' to monitor all channels, 'ADC_ANALOGWATCHDOG_NONE' to monitor no channel.
AnnaBridge 172:65be27845400 280 This parameter can be a value of @ref ADC_analog_watchdog_mode. */
AnnaBridge 172:65be27845400 281
AnnaBridge 172:65be27845400 282 uint32_t Channel; /*!< Select which ADC channel to monitor by analog watchdog.
AnnaBridge 172:65be27845400 283 For Analog Watchdog 1: this parameter has an effect only if parameter 'WatchdogMode' is configured on single channel (only 1 channel can be monitored).
AnnaBridge 172:65be27845400 284 For Analog Watchdog 2 and 3: Several channels can be monitored. To use this feature, call successively the function HAL_ADC_AnalogWDGConfig() for each channel to be added (or removed with value 'ADC_ANALOGWATCHDOG_NONE').
AnnaBridge 172:65be27845400 285 This parameter can be a value of @ref ADC_HAL_EC_CHANNEL. */
AnnaBridge 172:65be27845400 286
AnnaBridge 172:65be27845400 287 uint32_t ITMode; /*!< Specify whether the analog watchdog is configured in interrupt or polling mode.
AnnaBridge 172:65be27845400 288 This parameter can be set to ENABLE or DISABLE */
AnnaBridge 172:65be27845400 289
AnnaBridge 172:65be27845400 290 uint32_t HighThreshold; /*!< Configure the ADC analog watchdog High threshold value.
AnnaBridge 172:65be27845400 291 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number
AnnaBridge 172:65be27845400 292 between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
AnnaBridge 172:65be27845400 293 Note: Analog watchdog 2 and 3 are limited to a resolution of 8 bits: if ADC resolution is 12 bits
AnnaBridge 172:65be27845400 294 the 4 LSB are ignored, if ADC resolution is 10 bits the 2 LSB are ignored. */
AnnaBridge 172:65be27845400 295
AnnaBridge 172:65be27845400 296 uint32_t LowThreshold; /*!< Configures the ADC analog watchdog Low threshold value.
AnnaBridge 172:65be27845400 297 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number
AnnaBridge 172:65be27845400 298 between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
AnnaBridge 172:65be27845400 299 Note: Analog watchdog 2 and 3 are limited to a resolution of 8 bits: if ADC resolution is 12 bits
AnnaBridge 172:65be27845400 300 the 4 LSB are ignored, if ADC resolution is 10 bits the 2 LSB are ignored. */
AnnaBridge 172:65be27845400 301 }ADC_AnalogWDGConfTypeDef;
AnnaBridge 172:65be27845400 302
AnnaBridge 172:65be27845400 303 /**
AnnaBridge 172:65be27845400 304 * @brief ADC group injected contexts queue configuration
AnnaBridge 172:65be27845400 305 * @note Structure intended to be used only through structure "ADC_HandleTypeDef"
AnnaBridge 172:65be27845400 306 */
AnnaBridge 172:65be27845400 307 typedef struct
AnnaBridge 172:65be27845400 308 {
AnnaBridge 172:65be27845400 309 uint32_t ContextQueue; /*!< Injected channel configuration context: build-up over each
AnnaBridge 172:65be27845400 310 HAL_ADCEx_InjectedConfigChannel() call to finally initialize
AnnaBridge 172:65be27845400 311 JSQR register at HAL_ADCEx_InjectedConfigChannel() last call */
AnnaBridge 172:65be27845400 312
AnnaBridge 172:65be27845400 313 uint32_t ChannelCount; /*!< Number of channels in the injected sequence */
AnnaBridge 172:65be27845400 314 }ADC_InjectionConfigTypeDef;
AnnaBridge 172:65be27845400 315
AnnaBridge 172:65be27845400 316 /** @defgroup ADC_States ADC States
AnnaBridge 172:65be27845400 317 * @{
AnnaBridge 172:65be27845400 318 */
AnnaBridge 172:65be27845400 319
AnnaBridge 172:65be27845400 320 /**
AnnaBridge 172:65be27845400 321 * @brief HAL ADC state machine: ADC states definition (bitfields)
AnnaBridge 172:65be27845400 322 * @note ADC state machine is managed by bitfields, state must be compared
AnnaBridge 172:65be27845400 323 * with bit by bit.
AnnaBridge 172:65be27845400 324 * For example:
AnnaBridge 172:65be27845400 325 * " if (HAL_IS_BIT_SET(HAL_ADC_GetState(hadc1), HAL_ADC_STATE_REG_BUSY)) "
AnnaBridge 172:65be27845400 326 * " if (HAL_IS_BIT_SET(HAL_ADC_GetState(hadc1), HAL_ADC_STATE_AWD1) ) "
AnnaBridge 172:65be27845400 327 */
AnnaBridge 172:65be27845400 328 /* States of ADC global scope */
AnnaBridge 172:65be27845400 329 #define HAL_ADC_STATE_RESET (0x00000000U) /*!< ADC not yet initialized or disabled */
AnnaBridge 172:65be27845400 330 #define HAL_ADC_STATE_READY (0x00000001U) /*!< ADC peripheral ready for use */
AnnaBridge 172:65be27845400 331 #define HAL_ADC_STATE_BUSY_INTERNAL (0x00000002U) /*!< ADC is busy due to an internal process (initialization, calibration) */
AnnaBridge 172:65be27845400 332 #define HAL_ADC_STATE_TIMEOUT (0x00000004U) /*!< TimeOut occurrence */
AnnaBridge 172:65be27845400 333
AnnaBridge 172:65be27845400 334 /* States of ADC errors */
AnnaBridge 172:65be27845400 335 #define HAL_ADC_STATE_ERROR_INTERNAL (0x00000010U) /*!< Internal error occurrence */
AnnaBridge 172:65be27845400 336 #define HAL_ADC_STATE_ERROR_CONFIG (0x00000020U) /*!< Configuration error occurrence */
AnnaBridge 172:65be27845400 337 #define HAL_ADC_STATE_ERROR_DMA (0x00000040U) /*!< DMA error occurrence */
AnnaBridge 172:65be27845400 338
AnnaBridge 172:65be27845400 339 /* States of ADC group regular */
AnnaBridge 172:65be27845400 340 #define HAL_ADC_STATE_REG_BUSY (0x00000100U) /*!< A conversion on ADC group regular is ongoing or can occur (either by continuous mode,
AnnaBridge 172:65be27845400 341 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
AnnaBridge 172:65be27845400 342 #define HAL_ADC_STATE_REG_EOC (0x00000200U) /*!< Conversion data available on group regular */
AnnaBridge 172:65be27845400 343 #define HAL_ADC_STATE_REG_OVR (0x00000400U) /*!< Overrun occurrence */
AnnaBridge 172:65be27845400 344 #define HAL_ADC_STATE_REG_EOSMP (0x00000800U) /*!< Not available on this STM32 serie: End Of Sampling flag raised */
AnnaBridge 172:65be27845400 345
AnnaBridge 172:65be27845400 346 /* States of ADC group injected */
AnnaBridge 172:65be27845400 347 #define HAL_ADC_STATE_INJ_BUSY (0x00001000U) /*!< A conversion on ADC group injected is ongoing or can occur (either by auto-injection mode,
AnnaBridge 172:65be27845400 348 external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */
AnnaBridge 172:65be27845400 349 #define HAL_ADC_STATE_INJ_EOC (0x00002000U) /*!< Conversion data available on group injected */
AnnaBridge 172:65be27845400 350 #define HAL_ADC_STATE_INJ_JQOVF (0x00004000U) /*!< Injected queue overflow occurrence */
AnnaBridge 172:65be27845400 351
AnnaBridge 172:65be27845400 352 /* States of ADC analog watchdogs */
AnnaBridge 172:65be27845400 353 #define HAL_ADC_STATE_AWD1 (0x00010000U) /*!< Out-of-window occurrence of ADC analog watchdog 1 */
AnnaBridge 172:65be27845400 354 #define HAL_ADC_STATE_AWD2 (0x00020000U) /*!< Out-of-window occurrence of ADC analog watchdog 2 */
AnnaBridge 172:65be27845400 355 #define HAL_ADC_STATE_AWD3 (0x00040000U) /*!< Out-of-window occurrence of ADC analog watchdog 3 */
AnnaBridge 172:65be27845400 356
AnnaBridge 172:65be27845400 357 /* States of ADC multi-mode */
AnnaBridge 172:65be27845400 358 #define HAL_ADC_STATE_MULTIMODE_SLAVE (0x00100000U) /*!< ADC in multimode slave state, controlled by another ADC master (when feature available) */
AnnaBridge 172:65be27845400 359
AnnaBridge 172:65be27845400 360 /**
AnnaBridge 172:65be27845400 361 * @}
AnnaBridge 172:65be27845400 362 */
AnnaBridge 172:65be27845400 363
AnnaBridge 172:65be27845400 364 /**
AnnaBridge 172:65be27845400 365 * @brief ADC handle Structure definition
AnnaBridge 172:65be27845400 366 */
AnnaBridge 172:65be27845400 367 typedef struct
AnnaBridge 172:65be27845400 368 {
AnnaBridge 172:65be27845400 369 ADC_TypeDef *Instance; /*!< Register base address */
AnnaBridge 172:65be27845400 370
AnnaBridge 172:65be27845400 371 ADC_InitTypeDef Init; /*!< ADC initialization parameters and regular conversions setting */
AnnaBridge 172:65be27845400 372
AnnaBridge 172:65be27845400 373 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
AnnaBridge 172:65be27845400 374
AnnaBridge 172:65be27845400 375 HAL_LockTypeDef Lock; /*!< ADC locking object */
AnnaBridge 172:65be27845400 376
AnnaBridge 172:65be27845400 377 __IO uint32_t State; /*!< ADC communication state (bitmap of ADC states) */
AnnaBridge 172:65be27845400 378
AnnaBridge 172:65be27845400 379 __IO uint32_t ErrorCode; /*!< ADC Error code */
AnnaBridge 172:65be27845400 380
AnnaBridge 172:65be27845400 381 ADC_InjectionConfigTypeDef InjectionConfig ; /*!< ADC injected channel configuration build-up structure */
AnnaBridge 172:65be27845400 382 }ADC_HandleTypeDef;
AnnaBridge 172:65be27845400 383
AnnaBridge 172:65be27845400 384 /**
AnnaBridge 172:65be27845400 385 * @}
AnnaBridge 172:65be27845400 386 */
AnnaBridge 172:65be27845400 387
AnnaBridge 172:65be27845400 388
AnnaBridge 172:65be27845400 389 /* Exported constants --------------------------------------------------------*/
AnnaBridge 172:65be27845400 390
AnnaBridge 172:65be27845400 391 /** @defgroup ADC_Exported_Constants ADC Exported Constants
AnnaBridge 172:65be27845400 392 * @{
AnnaBridge 172:65be27845400 393 */
AnnaBridge 172:65be27845400 394
AnnaBridge 172:65be27845400 395 /** @defgroup ADC_Error_Code ADC Error Code
AnnaBridge 172:65be27845400 396 * @{
AnnaBridge 172:65be27845400 397 */
AnnaBridge 172:65be27845400 398 #define HAL_ADC_ERROR_NONE (0x00U) /*!< No error */
AnnaBridge 172:65be27845400 399 #define HAL_ADC_ERROR_INTERNAL (0x01U) /*!< ADC IP internal error (problem of clocking,
AnnaBridge 172:65be27845400 400 enable/disable, erroneous state, ...) */
AnnaBridge 172:65be27845400 401 #define HAL_ADC_ERROR_OVR (0x02U) /*!< Overrun error */
AnnaBridge 172:65be27845400 402 #define HAL_ADC_ERROR_DMA (0x04U) /*!< DMA transfer error */
AnnaBridge 172:65be27845400 403 #define HAL_ADC_ERROR_JQOVF (0x08U) /*!< Injected context queue overflow error */
AnnaBridge 172:65be27845400 404 /**
AnnaBridge 172:65be27845400 405 * @}
AnnaBridge 172:65be27845400 406 */
AnnaBridge 172:65be27845400 407
AnnaBridge 172:65be27845400 408 /** @defgroup ADC_HAL_EC_COMMON_CLOCK_SOURCE ADC common - Clock source
AnnaBridge 172:65be27845400 409 * @{
AnnaBridge 172:65be27845400 410 */
AnnaBridge 172:65be27845400 411 #define ADC_CLOCK_SYNC_PCLK_DIV1 (LL_ADC_CLOCK_SYNC_PCLK_DIV1) /*!< ADC synchronous clock derived from AHB clock without prescaler */
AnnaBridge 172:65be27845400 412 #define ADC_CLOCK_SYNC_PCLK_DIV2 (LL_ADC_CLOCK_SYNC_PCLK_DIV2) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 2 */
AnnaBridge 172:65be27845400 413 #define ADC_CLOCK_SYNC_PCLK_DIV4 (LL_ADC_CLOCK_SYNC_PCLK_DIV4) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 4 */
AnnaBridge 172:65be27845400 414
AnnaBridge 172:65be27845400 415 #define ADC_CLOCK_ASYNC_DIV1 (LL_ADC_CLOCK_ASYNC_DIV1) /*!< ADC asynchronous clock without prescaler */
AnnaBridge 172:65be27845400 416 #define ADC_CLOCK_ASYNC_DIV2 (LL_ADC_CLOCK_ASYNC_DIV2) /*!< ADC asynchronous clock with prescaler division by 2 */
AnnaBridge 172:65be27845400 417 #define ADC_CLOCK_ASYNC_DIV4 (LL_ADC_CLOCK_ASYNC_DIV4) /*!< ADC asynchronous clock with prescaler division by 4 */
AnnaBridge 172:65be27845400 418 #define ADC_CLOCK_ASYNC_DIV6 (LL_ADC_CLOCK_ASYNC_DIV6) /*!< ADC asynchronous clock with prescaler division by 6 */
AnnaBridge 172:65be27845400 419 #define ADC_CLOCK_ASYNC_DIV8 (LL_ADC_CLOCK_ASYNC_DIV8) /*!< ADC asynchronous clock with prescaler division by 8 */
AnnaBridge 172:65be27845400 420 #define ADC_CLOCK_ASYNC_DIV10 (LL_ADC_CLOCK_ASYNC_DIV10) /*!< ADC asynchronous clock with prescaler division by 10 */
AnnaBridge 172:65be27845400 421 #define ADC_CLOCK_ASYNC_DIV12 (LL_ADC_CLOCK_ASYNC_DIV12) /*!< ADC asynchronous clock with prescaler division by 12 */
AnnaBridge 172:65be27845400 422 #define ADC_CLOCK_ASYNC_DIV16 (LL_ADC_CLOCK_ASYNC_DIV16) /*!< ADC asynchronous clock with prescaler division by 16 */
AnnaBridge 172:65be27845400 423 #define ADC_CLOCK_ASYNC_DIV32 (LL_ADC_CLOCK_ASYNC_DIV32) /*!< ADC asynchronous clock with prescaler division by 32 */
AnnaBridge 172:65be27845400 424 #define ADC_CLOCK_ASYNC_DIV64 (LL_ADC_CLOCK_ASYNC_DIV64) /*!< ADC asynchronous clock with prescaler division by 64 */
AnnaBridge 172:65be27845400 425 #define ADC_CLOCK_ASYNC_DIV128 (LL_ADC_CLOCK_ASYNC_DIV128) /*!< ADC asynchronous clock with prescaler division by 128 */
AnnaBridge 172:65be27845400 426 #define ADC_CLOCK_ASYNC_DIV256 (LL_ADC_CLOCK_ASYNC_DIV256) /*!< ADC asynchronous clock with prescaler division by 256 */
AnnaBridge 172:65be27845400 427
AnnaBridge 172:65be27845400 428 #define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1 /*!< Obsolete naming, kept for compatibility with some other devices */
AnnaBridge 172:65be27845400 429 #define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2 /*!< Obsolete naming, kept for compatibility with some other devices */
AnnaBridge 172:65be27845400 430 #define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4 /*!< Obsolete naming, kept for compatibility with some other devices */
AnnaBridge 172:65be27845400 431 /**
AnnaBridge 172:65be27845400 432 * @}
AnnaBridge 172:65be27845400 433 */
AnnaBridge 172:65be27845400 434
AnnaBridge 172:65be27845400 435 /** @defgroup ADC_HAL_EC_RESOLUTION ADC instance - Resolution
AnnaBridge 172:65be27845400 436 * @{
AnnaBridge 172:65be27845400 437 */
AnnaBridge 172:65be27845400 438 #define ADC_RESOLUTION_12B (LL_ADC_RESOLUTION_12B) /*!< ADC resolution 12 bits */
AnnaBridge 172:65be27845400 439 #define ADC_RESOLUTION_10B (LL_ADC_RESOLUTION_10B) /*!< ADC resolution 10 bits */
AnnaBridge 172:65be27845400 440 #define ADC_RESOLUTION_8B (LL_ADC_RESOLUTION_8B) /*!< ADC resolution 8 bits */
AnnaBridge 172:65be27845400 441 #define ADC_RESOLUTION_6B (LL_ADC_RESOLUTION_6B) /*!< ADC resolution 6 bits */
AnnaBridge 172:65be27845400 442 /**
AnnaBridge 172:65be27845400 443 * @}
AnnaBridge 172:65be27845400 444 */
AnnaBridge 172:65be27845400 445
AnnaBridge 172:65be27845400 446 /** @defgroup ADC_HAL_EC_DATA_ALIGN ADC conversion data alignment
AnnaBridge 172:65be27845400 447 * @{
AnnaBridge 172:65be27845400 448 */
AnnaBridge 172:65be27845400 449 #define ADC_DATAALIGN_RIGHT (LL_ADC_DATA_ALIGN_RIGHT)/*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/
AnnaBridge 172:65be27845400 450 #define ADC_DATAALIGN_LEFT (LL_ADC_DATA_ALIGN_LEFT) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/
AnnaBridge 172:65be27845400 451 /**
AnnaBridge 172:65be27845400 452 * @}
AnnaBridge 172:65be27845400 453 */
AnnaBridge 172:65be27845400 454
AnnaBridge 172:65be27845400 455 /** @defgroup ADC_Scan_mode ADC sequencer scan mode
AnnaBridge 172:65be27845400 456 * @{
AnnaBridge 172:65be27845400 457 */
AnnaBridge 172:65be27845400 458 #define ADC_SCAN_DISABLE (0x00000000U) /*!< Scan mode disabled */
AnnaBridge 172:65be27845400 459 #define ADC_SCAN_ENABLE (0x00000001U) /*!< Scan mode enabled */
AnnaBridge 172:65be27845400 460 /**
AnnaBridge 172:65be27845400 461 * @}
AnnaBridge 172:65be27845400 462 */
AnnaBridge 172:65be27845400 463
AnnaBridge 172:65be27845400 464 /** @defgroup ADC_regular_external_trigger_source ADC group regular trigger source
AnnaBridge 172:65be27845400 465 * @{
AnnaBridge 172:65be27845400 466 */
AnnaBridge 172:65be27845400 467 /* ADC group regular trigger sources for all ADC instances */
AnnaBridge 172:65be27845400 468 #define ADC_SOFTWARE_START (LL_ADC_REG_TRIG_SOFTWARE) /*!< ADC group regular conversion trigger internal: SW start. */
AnnaBridge 172:65be27845400 469 #define ADC_EXTERNALTRIG_T1_TRGO (LL_ADC_REG_TRIG_EXT_TIM1_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 470 #define ADC_EXTERNALTRIG_T1_TRGO2 (LL_ADC_REG_TRIG_EXT_TIM1_TRGO2) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 471 #define ADC_EXTERNALTRIG_T1_CC1 (LL_ADC_REG_TRIG_EXT_TIM1_CH1) /*!< 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 172:65be27845400 472 #define ADC_EXTERNALTRIG_T1_CC2 (LL_ADC_REG_TRIG_EXT_TIM1_CH2) /*!< 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 172:65be27845400 473 #define ADC_EXTERNALTRIG_T1_CC3 (LL_ADC_REG_TRIG_EXT_TIM1_CH3) /*!< 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 172:65be27845400 474 #define ADC_EXTERNALTRIG_T2_TRGO (LL_ADC_REG_TRIG_EXT_TIM2_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 475 #define ADC_EXTERNALTRIG_T2_CC2 (LL_ADC_REG_TRIG_EXT_TIM2_CH2) /*!< 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 172:65be27845400 476 #define ADC_EXTERNALTRIG_T3_TRGO (LL_ADC_REG_TRIG_EXT_TIM3_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 477 #define ADC_EXTERNALTRIG_T3_CC4 (LL_ADC_REG_TRIG_EXT_TIM3_CH4) /*!< 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 172:65be27845400 478 #define ADC_EXTERNALTRIG_T4_TRGO (LL_ADC_REG_TRIG_EXT_TIM4_CH4) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 479 #define ADC_EXTERNALTRIG_T4_CC4 (LL_ADC_REG_TRIG_EXT_TIM4_CH4) /*!< 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 172:65be27845400 480 #define ADC_EXTERNALTRIG_T6_TRGO (LL_ADC_REG_TRIG_EXT_TIM6_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 481 #define ADC_EXTERNALTRIG_T8_TRGO (LL_ADC_REG_TRIG_EXT_TIM8_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 482 #define ADC_EXTERNALTRIG_T8_TRGO2 (LL_ADC_REG_TRIG_EXT_TIM8_TRGO2) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 483 #define ADC_EXTERNALTRIG_T15_TRGO (LL_ADC_REG_TRIG_EXT_TIM15_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM15 TRGO. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 484 #define ADC_EXTERNALTRIG_EXT_IT11 (LL_ADC_REG_TRIG_EXT_EXTI_LINE11) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */
AnnaBridge 172:65be27845400 485 /**
AnnaBridge 172:65be27845400 486 * @}
AnnaBridge 172:65be27845400 487 */
AnnaBridge 172:65be27845400 488
AnnaBridge 172:65be27845400 489 /** @defgroup ADC_regular_external_trigger_edge ADC group regular trigger edge (when external trigger is selected)
AnnaBridge 172:65be27845400 490 * @{
AnnaBridge 172:65be27845400 491 */
AnnaBridge 172:65be27845400 492 #define ADC_EXTERNALTRIGCONVEDGE_NONE (0x00000000) /*!< Regular conversions hardware trigger detection disabled */
AnnaBridge 172:65be27845400 493 #define ADC_EXTERNALTRIGCONVEDGE_RISING (ADC_CFGR_EXTEN_0) /*!< Regular conversions hardware trigger detection on the rising edge */
AnnaBridge 172:65be27845400 494 #define ADC_EXTERNALTRIGCONVEDGE_FALLING (ADC_CFGR_EXTEN_1) /*!< Regular conversions hardware trigger detection on the falling edge */
AnnaBridge 172:65be27845400 495 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING (ADC_CFGR_EXTEN) /*!< Regular conversions hardware trigger detection on both the rising and falling edges */
AnnaBridge 172:65be27845400 496 /**
AnnaBridge 172:65be27845400 497 * @}
AnnaBridge 172:65be27845400 498 */
AnnaBridge 172:65be27845400 499
AnnaBridge 172:65be27845400 500 /** @defgroup ADC_EOCSelection ADC sequencer end of unitary conversion or sequence conversions
AnnaBridge 172:65be27845400 501 * @{
AnnaBridge 172:65be27845400 502 */
AnnaBridge 172:65be27845400 503 #define ADC_EOC_SINGLE_CONV (ADC_ISR_EOC) /*!< End of unitary conversion flag */
AnnaBridge 172:65be27845400 504 #define ADC_EOC_SEQ_CONV (ADC_ISR_EOS) /*!< End of sequence conversions flag */
AnnaBridge 172:65be27845400 505 /**
AnnaBridge 172:65be27845400 506 * @}
AnnaBridge 172:65be27845400 507 */
AnnaBridge 172:65be27845400 508
AnnaBridge 172:65be27845400 509 /** @defgroup ADC_HAL_EC_REG_OVR_DATA_BEHAVIOR ADC group regular - Overrun behavior on conversion data
AnnaBridge 172:65be27845400 510 * @{
AnnaBridge 172:65be27845400 511 */
AnnaBridge 172:65be27845400 512 #define ADC_OVR_DATA_PRESERVED (LL_ADC_REG_OVR_DATA_PRESERVED) /*!< ADC group regular behavior in case of overrun: data preserved */
AnnaBridge 172:65be27845400 513 #define ADC_OVR_DATA_OVERWRITTEN (LL_ADC_REG_OVR_DATA_OVERWRITTEN) /*!< ADC group regular behavior in case of overrun: data overwritten */
AnnaBridge 172:65be27845400 514 /**
AnnaBridge 172:65be27845400 515 * @}
AnnaBridge 172:65be27845400 516 */
AnnaBridge 172:65be27845400 517
AnnaBridge 172:65be27845400 518 /** @defgroup ADC_HAL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks
AnnaBridge 172:65be27845400 519 * @{
AnnaBridge 172:65be27845400 520 */
AnnaBridge 172:65be27845400 521 #define ADC_REGULAR_RANK_1 (LL_ADC_REG_RANK_1) /*!< ADC group regular sequencer rank 1 */
AnnaBridge 172:65be27845400 522 #define ADC_REGULAR_RANK_2 (LL_ADC_REG_RANK_2) /*!< ADC group regular sequencer rank 2 */
AnnaBridge 172:65be27845400 523 #define ADC_REGULAR_RANK_3 (LL_ADC_REG_RANK_3) /*!< ADC group regular sequencer rank 3 */
AnnaBridge 172:65be27845400 524 #define ADC_REGULAR_RANK_4 (LL_ADC_REG_RANK_4) /*!< ADC group regular sequencer rank 4 */
AnnaBridge 172:65be27845400 525 #define ADC_REGULAR_RANK_5 (LL_ADC_REG_RANK_5) /*!< ADC group regular sequencer rank 5 */
AnnaBridge 172:65be27845400 526 #define ADC_REGULAR_RANK_6 (LL_ADC_REG_RANK_6) /*!< ADC group regular sequencer rank 6 */
AnnaBridge 172:65be27845400 527 #define ADC_REGULAR_RANK_7 (LL_ADC_REG_RANK_7) /*!< ADC group regular sequencer rank 7 */
AnnaBridge 172:65be27845400 528 #define ADC_REGULAR_RANK_8 (LL_ADC_REG_RANK_8) /*!< ADC group regular sequencer rank 8 */
AnnaBridge 172:65be27845400 529 #define ADC_REGULAR_RANK_9 (LL_ADC_REG_RANK_9) /*!< ADC group regular sequencer rank 9 */
AnnaBridge 172:65be27845400 530 #define ADC_REGULAR_RANK_10 (LL_ADC_REG_RANK_10) /*!< ADC group regular sequencer rank 10 */
AnnaBridge 172:65be27845400 531 #define ADC_REGULAR_RANK_11 (LL_ADC_REG_RANK_11) /*!< ADC group regular sequencer rank 11 */
AnnaBridge 172:65be27845400 532 #define ADC_REGULAR_RANK_12 (LL_ADC_REG_RANK_12) /*!< ADC group regular sequencer rank 12 */
AnnaBridge 172:65be27845400 533 #define ADC_REGULAR_RANK_13 (LL_ADC_REG_RANK_13) /*!< ADC group regular sequencer rank 13 */
AnnaBridge 172:65be27845400 534 #define ADC_REGULAR_RANK_14 (LL_ADC_REG_RANK_14) /*!< ADC group regular sequencer rank 14 */
AnnaBridge 172:65be27845400 535 #define ADC_REGULAR_RANK_15 (LL_ADC_REG_RANK_15) /*!< ADC group regular sequencer rank 15 */
AnnaBridge 172:65be27845400 536 #define ADC_REGULAR_RANK_16 (LL_ADC_REG_RANK_16) /*!< ADC group regular sequencer rank 16 */
AnnaBridge 172:65be27845400 537 /**
AnnaBridge 172:65be27845400 538 * @}
AnnaBridge 172:65be27845400 539 */
AnnaBridge 172:65be27845400 540
AnnaBridge 172:65be27845400 541 /** @defgroup ADC_HAL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time
AnnaBridge 172:65be27845400 542 * @{
AnnaBridge 172:65be27845400 543 */
AnnaBridge 172:65be27845400 544 #define ADC_SAMPLETIME_2CYCLES_5 (LL_ADC_SAMPLINGTIME_2CYCLES_5) /*!< Sampling time 2.5 ADC clock cycles */
AnnaBridge 172:65be27845400 545 #define ADC_SAMPLETIME_6CYCLES_5 (LL_ADC_SAMPLINGTIME_6CYCLES_5) /*!< Sampling time 6.5 ADC clock cycles */
AnnaBridge 172:65be27845400 546 #define ADC_SAMPLETIME_12CYCLES_5 (LL_ADC_SAMPLINGTIME_12CYCLES_5) /*!< Sampling time 12.5 ADC clock cycles */
AnnaBridge 172:65be27845400 547 #define ADC_SAMPLETIME_24CYCLES_5 (LL_ADC_SAMPLINGTIME_24CYCLES_5) /*!< Sampling time 24.5 ADC clock cycles */
AnnaBridge 172:65be27845400 548 #define ADC_SAMPLETIME_47CYCLES_5 (LL_ADC_SAMPLINGTIME_47CYCLES_5) /*!< Sampling time 47.5 ADC clock cycles */
AnnaBridge 172:65be27845400 549 #define ADC_SAMPLETIME_92CYCLES_5 (LL_ADC_SAMPLINGTIME_92CYCLES_5) /*!< Sampling time 92.5 ADC clock cycles */
AnnaBridge 172:65be27845400 550 #define ADC_SAMPLETIME_247CYCLES_5 (LL_ADC_SAMPLINGTIME_247CYCLES_5) /*!< Sampling time 247.5 ADC clock cycles */
AnnaBridge 172:65be27845400 551 #define ADC_SAMPLETIME_640CYCLES_5 (LL_ADC_SAMPLINGTIME_640CYCLES_5) /*!< Sampling time 640.5 ADC clock cycles */
AnnaBridge 172:65be27845400 552 #if defined(ADC_SMPR1_SMPPLUS)
AnnaBridge 172:65be27845400 553 #define ADC_SAMPLETIME_3CYCLES_5 (ADC_SMPR1_SMPPLUS | LL_ADC_SAMPLINGTIME_2CYCLES_5) /*!< Sampling time 3.5 ADC clock cycles. If selected, this sampling time replaces all sampling time 2.5 ADC clock cycles. These 2 sampling times cannot be used simultaneously. */
AnnaBridge 172:65be27845400 554 #endif
AnnaBridge 172:65be27845400 555 /**
AnnaBridge 172:65be27845400 556 * @}
AnnaBridge 172:65be27845400 557 */
AnnaBridge 172:65be27845400 558
AnnaBridge 172:65be27845400 559 /** @defgroup ADC_HAL_EC_CHANNEL ADC instance - Channel number
AnnaBridge 172:65be27845400 560 * @{
AnnaBridge 172:65be27845400 561 */
AnnaBridge 172:65be27845400 562 /* Note: VrefInt, TempSensor and Vbat internal channels are not available on */
AnnaBridge 172:65be27845400 563 /* all ADC instances (refer to Reference Manual). */
AnnaBridge 172:65be27845400 564 #define ADC_CHANNEL_0 (LL_ADC_CHANNEL_0) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */
AnnaBridge 172:65be27845400 565 #define ADC_CHANNEL_1 (LL_ADC_CHANNEL_1) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */
AnnaBridge 172:65be27845400 566 #define ADC_CHANNEL_2 (LL_ADC_CHANNEL_2) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */
AnnaBridge 172:65be27845400 567 #define ADC_CHANNEL_3 (LL_ADC_CHANNEL_3) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */
AnnaBridge 172:65be27845400 568 #define ADC_CHANNEL_4 (LL_ADC_CHANNEL_4) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */
AnnaBridge 172:65be27845400 569 #define ADC_CHANNEL_5 (LL_ADC_CHANNEL_5) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */
AnnaBridge 172:65be27845400 570 #define ADC_CHANNEL_6 (LL_ADC_CHANNEL_6) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */
AnnaBridge 172:65be27845400 571 #define ADC_CHANNEL_7 (LL_ADC_CHANNEL_7) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */
AnnaBridge 172:65be27845400 572 #define ADC_CHANNEL_8 (LL_ADC_CHANNEL_8) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */
AnnaBridge 172:65be27845400 573 #define ADC_CHANNEL_9 (LL_ADC_CHANNEL_9) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */
AnnaBridge 172:65be27845400 574 #define ADC_CHANNEL_10 (LL_ADC_CHANNEL_10) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */
AnnaBridge 172:65be27845400 575 #define ADC_CHANNEL_11 (LL_ADC_CHANNEL_11) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */
AnnaBridge 172:65be27845400 576 #define ADC_CHANNEL_12 (LL_ADC_CHANNEL_12) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */
AnnaBridge 172:65be27845400 577 #define ADC_CHANNEL_13 (LL_ADC_CHANNEL_13) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */
AnnaBridge 172:65be27845400 578 #define ADC_CHANNEL_14 (LL_ADC_CHANNEL_14) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */
AnnaBridge 172:65be27845400 579 #define ADC_CHANNEL_15 (LL_ADC_CHANNEL_15) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */
AnnaBridge 172:65be27845400 580 #define ADC_CHANNEL_16 (LL_ADC_CHANNEL_16) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */
AnnaBridge 172:65be27845400 581 #define ADC_CHANNEL_17 (LL_ADC_CHANNEL_17) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */
AnnaBridge 172:65be27845400 582 #define ADC_CHANNEL_18 (LL_ADC_CHANNEL_18) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN18 */
AnnaBridge 172:65be27845400 583 #define ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_VREFINT) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. */
AnnaBridge 172:65be27845400 584 #define ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_TEMPSENSOR) /*!< ADC internal channel connected to Temperature sensor. */
AnnaBridge 172:65be27845400 585 #define ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_VBAT) /*!< ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda. */
AnnaBridge 172:65be27845400 586 #if defined(ADC1) && !defined(ADC2)
AnnaBridge 172:65be27845400 587 #define ADC_CHANNEL_DAC1CH1 (LL_ADC_CHANNEL_DAC1CH1) /*!< 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 172:65be27845400 588 #define ADC_CHANNEL_DAC1CH2 (LL_ADC_CHANNEL_DAC1CH2) /*!< 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 172:65be27845400 589 #elif defined(ADC2)
AnnaBridge 172:65be27845400 590 #define ADC_CHANNEL_DAC1CH1_ADC2 (LL_ADC_CHANNEL_DAC1CH1_ADC2) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC2 */
AnnaBridge 172:65be27845400 591 #define ADC_CHANNEL_DAC1CH2_ADC2 (LL_ADC_CHANNEL_DAC1CH2_ADC2) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC2 */
AnnaBridge 172:65be27845400 592 #if defined(ADC3)
AnnaBridge 172:65be27845400 593 #define ADC_CHANNEL_DAC1CH1_ADC3 (LL_ADC_CHANNEL_DAC1CH1_ADC3) /*!< ADC internal channel connected to DAC1 channel 1, channel specific to ADC3 */
AnnaBridge 172:65be27845400 594 #define ADC_CHANNEL_DAC1CH2_ADC3 (LL_ADC_CHANNEL_DAC1CH2_ADC3) /*!< ADC internal channel connected to DAC1 channel 2, channel specific to ADC3 */
AnnaBridge 172:65be27845400 595 #endif
AnnaBridge 172:65be27845400 596 #endif
AnnaBridge 172:65be27845400 597 /**
AnnaBridge 172:65be27845400 598 * @}
AnnaBridge 172:65be27845400 599 */
AnnaBridge 172:65be27845400 600
AnnaBridge 172:65be27845400 601 /** @defgroup ADC_HAL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number
AnnaBridge 172:65be27845400 602 * @{
AnnaBridge 172:65be27845400 603 */
AnnaBridge 172:65be27845400 604 #define ADC_ANALOGWATCHDOG_1 (LL_ADC_AWD1) /*!< ADC analog watchdog number 1 */
AnnaBridge 172:65be27845400 605 #define ADC_ANALOGWATCHDOG_2 (LL_ADC_AWD2) /*!< ADC analog watchdog number 2 */
AnnaBridge 172:65be27845400 606 #define ADC_ANALOGWATCHDOG_3 (LL_ADC_AWD3) /*!< ADC analog watchdog number 3 */
AnnaBridge 172:65be27845400 607 /**
AnnaBridge 172:65be27845400 608 * @}
AnnaBridge 172:65be27845400 609 */
AnnaBridge 172:65be27845400 610
AnnaBridge 172:65be27845400 611 /** @defgroup ADC_analog_watchdog_mode ADC Analog Watchdog Mode
AnnaBridge 172:65be27845400 612 * @{
AnnaBridge 172:65be27845400 613 */
AnnaBridge 172:65be27845400 614 #define ADC_ANALOGWATCHDOG_NONE (0x00000000U) /*!< No analog watchdog selected */
AnnaBridge 172:65be27845400 615 #define ADC_ANALOGWATCHDOG_SINGLE_REG (ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN) /*!< Analog watchdog applied to a regular group single channel */
AnnaBridge 172:65be27845400 616 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC (ADC_CFGR_AWD1SGL | ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to an injected group single channel */
AnnaBridge 172:65be27845400 617 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC (ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to a regular and injected groups single channel */
AnnaBridge 172:65be27845400 618 #define ADC_ANALOGWATCHDOG_ALL_REG (ADC_CFGR_AWD1EN) /*!< Analog watchdog applied to regular group all channels */
AnnaBridge 172:65be27845400 619 #define ADC_ANALOGWATCHDOG_ALL_INJEC (ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to injected group all channels */
AnnaBridge 172:65be27845400 620 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC (ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to regular and injected groups all channels */
AnnaBridge 172:65be27845400 621 /**
AnnaBridge 172:65be27845400 622 * @}
AnnaBridge 172:65be27845400 623 */
AnnaBridge 172:65be27845400 624
AnnaBridge 172:65be27845400 625 /** @defgroup ADC_HAL_EC_OVS_RATIO Oversampling - Ratio
AnnaBridge 172:65be27845400 626 * @{
AnnaBridge 172:65be27845400 627 */
AnnaBridge 172:65be27845400 628 #define ADC_OVERSAMPLING_RATIO_2 (LL_ADC_OVS_RATIO_2) /*!< 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 172:65be27845400 629 #define ADC_OVERSAMPLING_RATIO_4 (LL_ADC_OVS_RATIO_4) /*!< 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 172:65be27845400 630 #define ADC_OVERSAMPLING_RATIO_8 (LL_ADC_OVS_RATIO_8) /*!< 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 172:65be27845400 631 #define ADC_OVERSAMPLING_RATIO_16 (LL_ADC_OVS_RATIO_16) /*!< 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 172:65be27845400 632 #define ADC_OVERSAMPLING_RATIO_32 (LL_ADC_OVS_RATIO_32) /*!< 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 172:65be27845400 633 #define ADC_OVERSAMPLING_RATIO_64 (LL_ADC_OVS_RATIO_64) /*!< 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 172:65be27845400 634 #define ADC_OVERSAMPLING_RATIO_128 (LL_ADC_OVS_RATIO_128) /*!< 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 172:65be27845400 635 #define ADC_OVERSAMPLING_RATIO_256 (LL_ADC_OVS_RATIO_256) /*!< 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 172:65be27845400 636 /**
AnnaBridge 172:65be27845400 637 * @}
AnnaBridge 172:65be27845400 638 */
AnnaBridge 172:65be27845400 639
AnnaBridge 172:65be27845400 640 /** @defgroup ADC_HAL_EC_OVS_SHIFT Oversampling - Data shift
AnnaBridge 172:65be27845400 641 * @{
AnnaBridge 172:65be27845400 642 */
AnnaBridge 172:65be27845400 643 #define ADC_RIGHTBITSHIFT_NONE (LL_ADC_OVS_SHIFT_NONE) /*!< ADC oversampling no shift (sum of the ADC conversions data is not divided to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 644 #define ADC_RIGHTBITSHIFT_1 (LL_ADC_OVS_SHIFT_RIGHT_1) /*!< ADC oversampling shift of 1 (sum of the ADC conversions data is divided by 2 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 645 #define ADC_RIGHTBITSHIFT_2 (LL_ADC_OVS_SHIFT_RIGHT_2) /*!< ADC oversampling shift of 2 (sum of the ADC conversions data is divided by 4 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 646 #define ADC_RIGHTBITSHIFT_3 (LL_ADC_OVS_SHIFT_RIGHT_3) /*!< ADC oversampling shift of 3 (sum of the ADC conversions data is divided by 8 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 647 #define ADC_RIGHTBITSHIFT_4 (LL_ADC_OVS_SHIFT_RIGHT_4) /*!< ADC oversampling shift of 4 (sum of the ADC conversions data is divided by 16 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 648 #define ADC_RIGHTBITSHIFT_5 (LL_ADC_OVS_SHIFT_RIGHT_5) /*!< ADC oversampling shift of 5 (sum of the ADC conversions data is divided by 32 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 649 #define ADC_RIGHTBITSHIFT_6 (LL_ADC_OVS_SHIFT_RIGHT_6) /*!< ADC oversampling shift of 6 (sum of the ADC conversions data is divided by 64 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 650 #define ADC_RIGHTBITSHIFT_7 (LL_ADC_OVS_SHIFT_RIGHT_7) /*!< ADC oversampling shift of 7 (sum of the ADC conversions data is divided by 128 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 651 #define ADC_RIGHTBITSHIFT_8 (LL_ADC_OVS_SHIFT_RIGHT_8) /*!< ADC oversampling shift of 8 (sum of the ADC conversions data is divided by 256 to result as the ADC oversampling conversion data) */
AnnaBridge 172:65be27845400 652 /**
AnnaBridge 172:65be27845400 653 * @}
AnnaBridge 172:65be27845400 654 */
AnnaBridge 172:65be27845400 655
AnnaBridge 172:65be27845400 656 /** @defgroup ADC_HAL_EC_OVS_DISCONT_MODE Oversampling - Discontinuous mode
AnnaBridge 172:65be27845400 657 * @{
AnnaBridge 172:65be27845400 658 */
AnnaBridge 172:65be27845400 659 #define ADC_TRIGGEREDMODE_SINGLE_TRIGGER (LL_ADC_OVS_REG_CONT) /*!< ADC oversampling discontinuous mode: continuous mode (all conversions of oversampling ratio are done from 1 trigger) */
AnnaBridge 172:65be27845400 660 #define ADC_TRIGGEREDMODE_MULTI_TRIGGER (LL_ADC_OVS_REG_DISCONT) /*!< ADC oversampling discontinuous mode: discontinuous mode (each conversion of oversampling ratio needs a trigger) */
AnnaBridge 172:65be27845400 661 /**
AnnaBridge 172:65be27845400 662 * @}
AnnaBridge 172:65be27845400 663 */
AnnaBridge 172:65be27845400 664
AnnaBridge 172:65be27845400 665 /** @defgroup ADC_HAL_EC_OVS_SCOPE_REG Oversampling - Oversampling scope for ADC group regular
AnnaBridge 172:65be27845400 666 * @{
AnnaBridge 172:65be27845400 667 */
AnnaBridge 172:65be27845400 668 #define ADC_REGOVERSAMPLING_CONTINUED_MODE (LL_ADC_OVS_GRP_REGULAR_CONTINUED) /*!< Oversampling buffer maintained during injection sequence */
AnnaBridge 172:65be27845400 669 #define ADC_REGOVERSAMPLING_RESUMED_MODE (LL_ADC_OVS_GRP_REGULAR_RESUMED) /*!< Oversampling buffer zeroed during injection sequence */
AnnaBridge 172:65be27845400 670 /**
AnnaBridge 172:65be27845400 671 * @}
AnnaBridge 172:65be27845400 672 */
AnnaBridge 172:65be27845400 673
AnnaBridge 172:65be27845400 674
AnnaBridge 172:65be27845400 675 /** @defgroup ADC_Event_type ADC Event type
AnnaBridge 172:65be27845400 676 * @{
AnnaBridge 172:65be27845400 677 */
AnnaBridge 172:65be27845400 678 #define ADC_EOSMP_EVENT (ADC_FLAG_EOSMP) /*!< ADC End of Sampling event */
AnnaBridge 172:65be27845400 679 #define ADC_AWD1_EVENT (ADC_FLAG_AWD1) /*!< ADC Analog watchdog 1 event (main analog watchdog, present on all STM32 series) */
AnnaBridge 172:65be27845400 680 #define ADC_AWD2_EVENT (ADC_FLAG_AWD2) /*!< ADC Analog watchdog 2 event (additional analog watchdog, not present on all STM32 series) */
AnnaBridge 172:65be27845400 681 #define ADC_AWD3_EVENT (ADC_FLAG_AWD3) /*!< ADC Analog watchdog 3 event (additional analog watchdog, not present on all STM32 series) */
AnnaBridge 172:65be27845400 682 #define ADC_OVR_EVENT (ADC_FLAG_OVR) /*!< ADC overrun event */
AnnaBridge 172:65be27845400 683 #define ADC_JQOVF_EVENT (ADC_FLAG_JQOVF) /*!< ADC Injected Context Queue Overflow event */
AnnaBridge 172:65be27845400 684 /**
AnnaBridge 172:65be27845400 685 * @}
AnnaBridge 172:65be27845400 686 */
AnnaBridge 172:65be27845400 687 #define ADC_AWD_EVENT ADC_AWD1_EVENT /*!< ADC Analog watchdog 1 event: Naming for compatibility with other STM32 devices having only one analog watchdog */
AnnaBridge 172:65be27845400 688
AnnaBridge 172:65be27845400 689 /** @defgroup ADC_interrupts_definition ADC interrupts definition
AnnaBridge 172:65be27845400 690 * @{
AnnaBridge 172:65be27845400 691 */
AnnaBridge 172:65be27845400 692 #define ADC_IT_RDY ADC_IER_ADRDY /*!< ADC Ready interrupt source */
AnnaBridge 172:65be27845400 693 #define ADC_IT_EOSMP ADC_IER_EOSMP /*!< ADC End of sampling interrupt source */
AnnaBridge 172:65be27845400 694 #define ADC_IT_EOC ADC_IER_EOC /*!< ADC End of regular conversion interrupt source */
AnnaBridge 172:65be27845400 695 #define ADC_IT_EOS ADC_IER_EOS /*!< ADC End of regular sequence of conversions interrupt source */
AnnaBridge 172:65be27845400 696 #define ADC_IT_OVR ADC_IER_OVR /*!< ADC overrun interrupt source */
AnnaBridge 172:65be27845400 697 #define ADC_IT_JEOC ADC_IER_JEOC /*!< ADC End of injected conversion interrupt source */
AnnaBridge 172:65be27845400 698 #define ADC_IT_JEOS ADC_IER_JEOS /*!< ADC End of injected sequence of conversions interrupt source */
AnnaBridge 172:65be27845400 699 #define ADC_IT_AWD1 ADC_IER_AWD1 /*!< ADC Analog watchdog 1 interrupt source (main analog watchdog) */
AnnaBridge 172:65be27845400 700 #define ADC_IT_AWD2 ADC_IER_AWD2 /*!< ADC Analog watchdog 2 interrupt source (additional analog watchdog) */
AnnaBridge 172:65be27845400 701 #define ADC_IT_AWD3 ADC_IER_AWD3 /*!< ADC Analog watchdog 3 interrupt source (additional analog watchdog) */
AnnaBridge 172:65be27845400 702 #define ADC_IT_JQOVF ADC_IER_JQOVF /*!< ADC Injected Context Queue Overflow interrupt source */
AnnaBridge 172:65be27845400 703
AnnaBridge 172:65be27845400 704 #define ADC_IT_AWD ADC_IT_AWD1 /*!< ADC Analog watchdog 1 interrupt source: naming for compatibility with other STM32 devices having only one analog watchdog */
AnnaBridge 172:65be27845400 705
AnnaBridge 172:65be27845400 706 /**
AnnaBridge 172:65be27845400 707 * @}
AnnaBridge 172:65be27845400 708 */
AnnaBridge 172:65be27845400 709
AnnaBridge 172:65be27845400 710 /** @defgroup ADC_flags_definition ADC flags definition
AnnaBridge 172:65be27845400 711 * @{
AnnaBridge 172:65be27845400 712 */
AnnaBridge 172:65be27845400 713 #define ADC_FLAG_RDY ADC_ISR_ADRDY /*!< ADC Ready flag */
AnnaBridge 172:65be27845400 714 #define ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC End of Sampling flag */
AnnaBridge 172:65be27845400 715 #define ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC End of Regular Conversion flag */
AnnaBridge 172:65be27845400 716 #define ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC End of Regular sequence of Conversions flag */
AnnaBridge 172:65be27845400 717 #define ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC overrun flag */
AnnaBridge 172:65be27845400 718 #define ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC End of Injected Conversion flag */
AnnaBridge 172:65be27845400 719 #define ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC End of Injected sequence of Conversions flag */
AnnaBridge 172:65be27845400 720 #define ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC Analog watchdog 1 flag (main analog watchdog) */
AnnaBridge 172:65be27845400 721 #define ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC Analog watchdog 2 flag (additional analog watchdog) */
AnnaBridge 172:65be27845400 722 #define ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC Analog watchdog 3 flag (additional analog watchdog) */
AnnaBridge 172:65be27845400 723 #define ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC Injected Context Queue Overflow flag */
AnnaBridge 172:65be27845400 724
AnnaBridge 172:65be27845400 725 #define ADC_FLAG_AWD ADC_FLAG_AWD1 /*!< ADC Analog watchdog 1 flag: Naming for compatibility with other STM32 devices having only one analog watchdog */
AnnaBridge 172:65be27845400 726
AnnaBridge 172:65be27845400 727 #define ADC_FLAG_ALL (ADC_FLAG_RDY | ADC_FLAG_EOSMP | ADC_FLAG_EOC | ADC_FLAG_EOS | \
AnnaBridge 172:65be27845400 728 ADC_FLAG_JEOC | ADC_FLAG_JEOS | ADC_FLAG_OVR | ADC_FLAG_AWD1 | \
AnnaBridge 172:65be27845400 729 ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | ADC_FLAG_JQOVF) /*!< ADC all flags */
AnnaBridge 172:65be27845400 730
AnnaBridge 172:65be27845400 731 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx, JQOVF */
AnnaBridge 172:65be27845400 732 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS | \
AnnaBridge 172:65be27845400 733 ADC_FLAG_OVR | ADC_FLAG_AWD1 | ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | \
AnnaBridge 172:65be27845400 734 ADC_FLAG_JQOVF) /*!< ADC post-conversion all flags */
AnnaBridge 172:65be27845400 735
AnnaBridge 172:65be27845400 736 /**
AnnaBridge 172:65be27845400 737 * @}
AnnaBridge 172:65be27845400 738 */
AnnaBridge 172:65be27845400 739
AnnaBridge 172:65be27845400 740 /**
AnnaBridge 172:65be27845400 741 * @}
AnnaBridge 172:65be27845400 742 */
AnnaBridge 172:65be27845400 743
AnnaBridge 172:65be27845400 744 /* Private macro -------------------------------------------------------------*/
AnnaBridge 172:65be27845400 745
AnnaBridge 172:65be27845400 746 /** @defgroup ADC_Private_Macros ADC Private Macros
AnnaBridge 172:65be27845400 747 * @{
AnnaBridge 172:65be27845400 748 */
AnnaBridge 172:65be27845400 749 /* Macro reserved for internal HAL driver usage, not intended to be used in */
AnnaBridge 172:65be27845400 750 /* code of final user. */
AnnaBridge 172:65be27845400 751
AnnaBridge 172:65be27845400 752 /**
AnnaBridge 172:65be27845400 753 * @brief Test if conversion trigger of regular group is software start
AnnaBridge 172:65be27845400 754 * or external trigger.
AnnaBridge 172:65be27845400 755 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 756 * @retval SET (software start) or RESET (external trigger)
AnnaBridge 172:65be27845400 757 */
AnnaBridge 172:65be27845400 758 #define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
AnnaBridge 172:65be27845400 759 (((__HANDLE__)->Instance->CFGR & ADC_CFGR_EXTEN) == RESET)
AnnaBridge 172:65be27845400 760
AnnaBridge 172:65be27845400 761 /**
AnnaBridge 172:65be27845400 762 * @brief Return resolution bits in CFGR register RES[1:0] field.
AnnaBridge 172:65be27845400 763 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 764 * @retval Value of bitfield RES in CFGR register.
AnnaBridge 172:65be27845400 765 */
AnnaBridge 172:65be27845400 766 #define ADC_GET_RESOLUTION(__HANDLE__) \
AnnaBridge 172:65be27845400 767 (LL_ADC_GetResolution((__HANDLE__)->Instance))
AnnaBridge 172:65be27845400 768
AnnaBridge 172:65be27845400 769 /**
AnnaBridge 172:65be27845400 770 * @brief Clear ADC error code (set it to no error code "HAL_ADC_ERROR_NONE").
AnnaBridge 172:65be27845400 771 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 772 * @retval None
AnnaBridge 172:65be27845400 773 */
AnnaBridge 172:65be27845400 774 #define ADC_CLEAR_ERRORCODE(__HANDLE__) ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
AnnaBridge 172:65be27845400 775
AnnaBridge 172:65be27845400 776 /**
AnnaBridge 172:65be27845400 777 * @brief Verification of ADC state: enabled or disabled.
AnnaBridge 172:65be27845400 778 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 779 * @retval SET (ADC enabled) or RESET (ADC disabled)
AnnaBridge 172:65be27845400 780 */
AnnaBridge 172:65be27845400 781 #define ADC_IS_ENABLE(__HANDLE__) \
AnnaBridge 172:65be27845400 782 (( ((((__HANDLE__)->Instance->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
AnnaBridge 172:65be27845400 783 ((((__HANDLE__)->Instance->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) \
AnnaBridge 172:65be27845400 784 ) ? SET : RESET)
AnnaBridge 172:65be27845400 785
AnnaBridge 172:65be27845400 786 /**
AnnaBridge 172:65be27845400 787 * @brief Check if conversion is on going on regular group.
AnnaBridge 172:65be27845400 788 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 789 * @retval SET (conversion is on going) or RESET (no conversion is on going)
AnnaBridge 172:65be27845400 790 */
AnnaBridge 172:65be27845400 791 #define ADC_IS_CONVERSION_ONGOING_REGULAR(__HANDLE__) \
AnnaBridge 172:65be27845400 792 (LL_ADC_REG_IsConversionOngoing((__HANDLE__)->Instance))
AnnaBridge 172:65be27845400 793
AnnaBridge 172:65be27845400 794 /**
AnnaBridge 172:65be27845400 795 * @brief Simultaneously clear and set specific bits of the handle State.
AnnaBridge 172:65be27845400 796 * @note ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(),
AnnaBridge 172:65be27845400 797 * the first parameter is the ADC handle State, the second parameter is the
AnnaBridge 172:65be27845400 798 * bit field to clear, the third and last parameter is the bit field to set.
AnnaBridge 172:65be27845400 799 * @retval None
AnnaBridge 172:65be27845400 800 */
AnnaBridge 172:65be27845400 801 #define ADC_STATE_CLR_SET MODIFY_REG
AnnaBridge 172:65be27845400 802
AnnaBridge 172:65be27845400 803 /**
AnnaBridge 172:65be27845400 804 * @brief Verify that a given value is aligned with the ADC resolution range.
AnnaBridge 172:65be27845400 805 * @param __RESOLUTION__ ADC resolution (12, 10, 8 or 6 bits).
AnnaBridge 172:65be27845400 806 * @param __ADC_VALUE__ value checked against the resolution.
AnnaBridge 172:65be27845400 807 * @retval SET (__ADC_VALUE__ in line with __RESOLUTION__) or RESET (__ADC_VALUE__ not in line with __RESOLUTION__)
AnnaBridge 172:65be27845400 808 */
AnnaBridge 172:65be27845400 809 #define IS_ADC_RANGE(__RESOLUTION__, __ADC_VALUE__) \
AnnaBridge 172:65be27845400 810 ((((__RESOLUTION__) == ADC_RESOLUTION_12B) && ((__ADC_VALUE__) <= (0x0FFF))) || \
AnnaBridge 172:65be27845400 811 (((__RESOLUTION__) == ADC_RESOLUTION_10B) && ((__ADC_VALUE__) <= (0x03FF))) || \
AnnaBridge 172:65be27845400 812 (((__RESOLUTION__) == ADC_RESOLUTION_8B) && ((__ADC_VALUE__) <= (0x00FF))) || \
AnnaBridge 172:65be27845400 813 (((__RESOLUTION__) == ADC_RESOLUTION_6B) && ((__ADC_VALUE__) <= (0x003F))) )
AnnaBridge 172:65be27845400 814
AnnaBridge 172:65be27845400 815 /**
AnnaBridge 172:65be27845400 816 * @brief Verify the length of the scheduled regular conversions group.
AnnaBridge 172:65be27845400 817 * @param __LENGTH__ number of programmed conversions.
AnnaBridge 172:65be27845400 818 * @retval SET (__LENGTH__ is within the maximum number of possible programmable regular conversions) or RESET (__LENGTH__ is null or too large)
AnnaBridge 172:65be27845400 819 */
AnnaBridge 172:65be27845400 820 #define IS_ADC_REGULAR_NB_CONV(__LENGTH__) (((__LENGTH__) >= (1U)) && ((__LENGTH__) <= (16U)))
AnnaBridge 172:65be27845400 821
AnnaBridge 172:65be27845400 822
AnnaBridge 172:65be27845400 823 /**
AnnaBridge 172:65be27845400 824 * @brief Verify the number of scheduled regular conversions in discontinuous mode.
AnnaBridge 172:65be27845400 825 * @param NUMBER number of scheduled regular conversions in discontinuous mode.
AnnaBridge 172:65be27845400 826 * @retval SET (NUMBER is within the maximum number of regular conversions in discontinous mode) or RESET (NUMBER is null or too large)
AnnaBridge 172:65be27845400 827 */
AnnaBridge 172:65be27845400 828 #define IS_ADC_REGULAR_DISCONT_NUMBER(NUMBER) (((NUMBER) >= (1U)) && ((NUMBER) <= (8U)))
AnnaBridge 172:65be27845400 829
AnnaBridge 172:65be27845400 830
AnnaBridge 172:65be27845400 831 /**
AnnaBridge 172:65be27845400 832 * @brief Verify the ADC clock setting.
AnnaBridge 172:65be27845400 833 * @param __ADC_CLOCK__ programmed ADC clock.
AnnaBridge 172:65be27845400 834 * @retval SET (__ADC_CLOCK__ is a valid value) or RESET (__ADC_CLOCK__ is invalid)
AnnaBridge 172:65be27845400 835 */
AnnaBridge 172:65be27845400 836 #define IS_ADC_CLOCKPRESCALER(__ADC_CLOCK__) (((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV1) || \
AnnaBridge 172:65be27845400 837 ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
AnnaBridge 172:65be27845400 838 ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV4) || \
AnnaBridge 172:65be27845400 839 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV1) || \
AnnaBridge 172:65be27845400 840 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV2) || \
AnnaBridge 172:65be27845400 841 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV4) || \
AnnaBridge 172:65be27845400 842 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV6) || \
AnnaBridge 172:65be27845400 843 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV8) || \
AnnaBridge 172:65be27845400 844 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV10) || \
AnnaBridge 172:65be27845400 845 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV12) || \
AnnaBridge 172:65be27845400 846 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV16) || \
AnnaBridge 172:65be27845400 847 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV32) || \
AnnaBridge 172:65be27845400 848 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV64) || \
AnnaBridge 172:65be27845400 849 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV128) || \
AnnaBridge 172:65be27845400 850 ((__ADC_CLOCK__) == ADC_CLOCK_ASYNC_DIV256) )
AnnaBridge 172:65be27845400 851
AnnaBridge 172:65be27845400 852 /**
AnnaBridge 172:65be27845400 853 * @brief Verify the ADC resolution setting.
AnnaBridge 172:65be27845400 854 * @param __RESOLUTION__ programmed ADC resolution.
AnnaBridge 172:65be27845400 855 * @retval SET (__RESOLUTION__ is a valid value) or RESET (__RESOLUTION__ is invalid)
AnnaBridge 172:65be27845400 856 */
AnnaBridge 172:65be27845400 857 #define IS_ADC_RESOLUTION(__RESOLUTION__) (((__RESOLUTION__) == ADC_RESOLUTION_12B) || \
AnnaBridge 172:65be27845400 858 ((__RESOLUTION__) == ADC_RESOLUTION_10B) || \
AnnaBridge 172:65be27845400 859 ((__RESOLUTION__) == ADC_RESOLUTION_8B) || \
AnnaBridge 172:65be27845400 860 ((__RESOLUTION__) == ADC_RESOLUTION_6B) )
AnnaBridge 172:65be27845400 861
AnnaBridge 172:65be27845400 862 /**
AnnaBridge 172:65be27845400 863 * @brief Verify the ADC resolution setting when limited to 6 or 8 bits.
AnnaBridge 172:65be27845400 864 * @param __RESOLUTION__ programmed ADC resolution when limited to 6 or 8 bits.
AnnaBridge 172:65be27845400 865 * @retval SET (__RESOLUTION__ is a valid value) or RESET (__RESOLUTION__ is invalid)
AnnaBridge 172:65be27845400 866 */
AnnaBridge 172:65be27845400 867 #define IS_ADC_RESOLUTION_8_6_BITS(__RESOLUTION__) (((__RESOLUTION__) == ADC_RESOLUTION_8B) || \
AnnaBridge 172:65be27845400 868 ((__RESOLUTION__) == ADC_RESOLUTION_6B) )
AnnaBridge 172:65be27845400 869
AnnaBridge 172:65be27845400 870 /**
AnnaBridge 172:65be27845400 871 * @brief Verify the ADC converted data alignment.
AnnaBridge 172:65be27845400 872 * @param __ALIGN__ programmed ADC converted data alignment.
AnnaBridge 172:65be27845400 873 * @retval SET (__ALIGN__ is a valid value) or RESET (__ALIGN__ is invalid)
AnnaBridge 172:65be27845400 874 */
AnnaBridge 172:65be27845400 875 #define IS_ADC_DATA_ALIGN(__ALIGN__) (((__ALIGN__) == ADC_DATAALIGN_RIGHT) || \
AnnaBridge 172:65be27845400 876 ((__ALIGN__) == ADC_DATAALIGN_LEFT) )
AnnaBridge 172:65be27845400 877
AnnaBridge 172:65be27845400 878 /**
AnnaBridge 172:65be27845400 879 * @brief Verify the ADC scan mode.
AnnaBridge 172:65be27845400 880 * @param __SCAN_MODE__ programmed ADC scan mode.
AnnaBridge 172:65be27845400 881 * @retval SET (__SCAN_MODE__ is valid) or RESET (__SCAN_MODE__ is invalid)
AnnaBridge 172:65be27845400 882 */
AnnaBridge 172:65be27845400 883 #define IS_ADC_SCAN_MODE(__SCAN_MODE__) (((__SCAN_MODE__) == ADC_SCAN_DISABLE) || \
AnnaBridge 172:65be27845400 884 ((__SCAN_MODE__) == ADC_SCAN_ENABLE) )
AnnaBridge 172:65be27845400 885
AnnaBridge 172:65be27845400 886 /**
AnnaBridge 172:65be27845400 887 * @brief Verify the ADC edge trigger setting for regular group.
AnnaBridge 172:65be27845400 888 * @param __EDGE__ programmed ADC edge trigger setting.
AnnaBridge 172:65be27845400 889 * @retval SET (__EDGE__ is a valid value) or RESET (__EDGE__ is invalid)
AnnaBridge 172:65be27845400 890 */
AnnaBridge 172:65be27845400 891 #define IS_ADC_EXTTRIG_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
AnnaBridge 172:65be27845400 892 ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
AnnaBridge 172:65be27845400 893 ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
AnnaBridge 172:65be27845400 894 ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING) )
AnnaBridge 172:65be27845400 895
AnnaBridge 172:65be27845400 896 /**
AnnaBridge 172:65be27845400 897 * @brief Verify the ADC regular conversions external trigger.
AnnaBridge 172:65be27845400 898 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 899 * @param __REGTRIG__ programmed ADC regular conversions external trigger.
AnnaBridge 172:65be27845400 900 * @retval SET (__REGTRIG__ is a valid value) or RESET (__REGTRIG__ is invalid)
AnnaBridge 172:65be27845400 901 */
AnnaBridge 172:65be27845400 902 #define IS_ADC_EXTTRIG(__HANDLE__, __REGTRIG__) (((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC1) || \
AnnaBridge 172:65be27845400 903 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC2) || \
AnnaBridge 172:65be27845400 904 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC3) || \
AnnaBridge 172:65be27845400 905 ((__REGTRIG__) == ADC_EXTERNALTRIG_T2_CC2) || \
AnnaBridge 172:65be27845400 906 ((__REGTRIG__) == ADC_EXTERNALTRIG_T3_TRGO) || \
AnnaBridge 172:65be27845400 907 ((__REGTRIG__) == ADC_EXTERNALTRIG_T4_CC4) || \
AnnaBridge 172:65be27845400 908 ((__REGTRIG__) == ADC_EXTERNALTRIG_EXT_IT11) || \
AnnaBridge 172:65be27845400 909 ((__REGTRIG__) == ADC_EXTERNALTRIG_T8_TRGO) || \
AnnaBridge 172:65be27845400 910 ((__REGTRIG__) == ADC_EXTERNALTRIG_T8_TRGO2) || \
AnnaBridge 172:65be27845400 911 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_TRGO) || \
AnnaBridge 172:65be27845400 912 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_TRGO2) || \
AnnaBridge 172:65be27845400 913 ((__REGTRIG__) == ADC_EXTERNALTRIG_T2_TRGO) || \
AnnaBridge 172:65be27845400 914 ((__REGTRIG__) == ADC_EXTERNALTRIG_T4_TRGO) || \
AnnaBridge 172:65be27845400 915 ((__REGTRIG__) == ADC_EXTERNALTRIG_T6_TRGO) || \
AnnaBridge 172:65be27845400 916 ((__REGTRIG__) == ADC_EXTERNALTRIG_T15_TRGO) || \
AnnaBridge 172:65be27845400 917 ((__REGTRIG__) == ADC_EXTERNALTRIG_T3_CC4) || \
AnnaBridge 172:65be27845400 918 ((__REGTRIG__) == ADC_SOFTWARE_START) )
AnnaBridge 172:65be27845400 919
AnnaBridge 172:65be27845400 920 /**
AnnaBridge 172:65be27845400 921 * @brief Verify the ADC regular conversions check for converted data availability.
AnnaBridge 172:65be27845400 922 * @param __EOC_SELECTION__ converted data availability check.
AnnaBridge 172:65be27845400 923 * @retval SET (__EOC_SELECTION__ is a valid value) or RESET (__EOC_SELECTION__ is invalid)
AnnaBridge 172:65be27845400 924 */
AnnaBridge 172:65be27845400 925 #define IS_ADC_EOC_SELECTION(__EOC_SELECTION__) (((__EOC_SELECTION__) == ADC_EOC_SINGLE_CONV) || \
AnnaBridge 172:65be27845400 926 ((__EOC_SELECTION__) == ADC_EOC_SEQ_CONV) )
AnnaBridge 172:65be27845400 927
AnnaBridge 172:65be27845400 928 /**
AnnaBridge 172:65be27845400 929 * @brief Verify the ADC regular conversions overrun handling.
AnnaBridge 172:65be27845400 930 * @param __OVR__ ADC regular conversions overrun handling.
AnnaBridge 172:65be27845400 931 * @retval SET (__OVR__ is a valid value) or RESET (__OVR__ is invalid)
AnnaBridge 172:65be27845400 932 */
AnnaBridge 172:65be27845400 933 #define IS_ADC_OVERRUN(__OVR__) (((__OVR__) == ADC_OVR_DATA_PRESERVED) || \
AnnaBridge 172:65be27845400 934 ((__OVR__) == ADC_OVR_DATA_OVERWRITTEN) )
AnnaBridge 172:65be27845400 935
AnnaBridge 172:65be27845400 936 /**
AnnaBridge 172:65be27845400 937 * @brief Verify the ADC conversions sampling time.
AnnaBridge 172:65be27845400 938 * @param __TIME__ ADC conversions sampling time.
AnnaBridge 172:65be27845400 939 * @retval SET (__TIME__ is a valid value) or RESET (__TIME__ is invalid)
AnnaBridge 172:65be27845400 940 */
AnnaBridge 172:65be27845400 941 #if defined(ADC_SMPR1_SMPPLUS)
AnnaBridge 172:65be27845400 942 #define IS_ADC_SAMPLE_TIME(__TIME__) (((__TIME__) == ADC_SAMPLETIME_2CYCLES_5) || \
AnnaBridge 172:65be27845400 943 ((__TIME__) == ADC_SAMPLETIME_3CYCLES_5) || \
AnnaBridge 172:65be27845400 944 ((__TIME__) == ADC_SAMPLETIME_6CYCLES_5) || \
AnnaBridge 172:65be27845400 945 ((__TIME__) == ADC_SAMPLETIME_12CYCLES_5) || \
AnnaBridge 172:65be27845400 946 ((__TIME__) == ADC_SAMPLETIME_24CYCLES_5) || \
AnnaBridge 172:65be27845400 947 ((__TIME__) == ADC_SAMPLETIME_47CYCLES_5) || \
AnnaBridge 172:65be27845400 948 ((__TIME__) == ADC_SAMPLETIME_92CYCLES_5) || \
AnnaBridge 172:65be27845400 949 ((__TIME__) == ADC_SAMPLETIME_247CYCLES_5) || \
AnnaBridge 172:65be27845400 950 ((__TIME__) == ADC_SAMPLETIME_640CYCLES_5) )
AnnaBridge 172:65be27845400 951 #else
AnnaBridge 172:65be27845400 952 #define IS_ADC_SAMPLE_TIME(__TIME__) (((__TIME__) == ADC_SAMPLETIME_2CYCLES_5) || \
AnnaBridge 172:65be27845400 953 ((__TIME__) == ADC_SAMPLETIME_6CYCLES_5) || \
AnnaBridge 172:65be27845400 954 ((__TIME__) == ADC_SAMPLETIME_12CYCLES_5) || \
AnnaBridge 172:65be27845400 955 ((__TIME__) == ADC_SAMPLETIME_24CYCLES_5) || \
AnnaBridge 172:65be27845400 956 ((__TIME__) == ADC_SAMPLETIME_47CYCLES_5) || \
AnnaBridge 172:65be27845400 957 ((__TIME__) == ADC_SAMPLETIME_92CYCLES_5) || \
AnnaBridge 172:65be27845400 958 ((__TIME__) == ADC_SAMPLETIME_247CYCLES_5) || \
AnnaBridge 172:65be27845400 959 ((__TIME__) == ADC_SAMPLETIME_640CYCLES_5) )
AnnaBridge 172:65be27845400 960 #endif
AnnaBridge 172:65be27845400 961
AnnaBridge 172:65be27845400 962 /**
AnnaBridge 172:65be27845400 963 * @brief Verify the ADC regular channel setting.
AnnaBridge 172:65be27845400 964 * @param __CHANNEL__ programmed ADC regular channel.
AnnaBridge 172:65be27845400 965 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
AnnaBridge 172:65be27845400 966 */
AnnaBridge 172:65be27845400 967 #define IS_ADC_REGULAR_RANK(__CHANNEL__) (((__CHANNEL__) == ADC_REGULAR_RANK_1 ) || \
AnnaBridge 172:65be27845400 968 ((__CHANNEL__) == ADC_REGULAR_RANK_2 ) || \
AnnaBridge 172:65be27845400 969 ((__CHANNEL__) == ADC_REGULAR_RANK_3 ) || \
AnnaBridge 172:65be27845400 970 ((__CHANNEL__) == ADC_REGULAR_RANK_4 ) || \
AnnaBridge 172:65be27845400 971 ((__CHANNEL__) == ADC_REGULAR_RANK_5 ) || \
AnnaBridge 172:65be27845400 972 ((__CHANNEL__) == ADC_REGULAR_RANK_6 ) || \
AnnaBridge 172:65be27845400 973 ((__CHANNEL__) == ADC_REGULAR_RANK_7 ) || \
AnnaBridge 172:65be27845400 974 ((__CHANNEL__) == ADC_REGULAR_RANK_8 ) || \
AnnaBridge 172:65be27845400 975 ((__CHANNEL__) == ADC_REGULAR_RANK_9 ) || \
AnnaBridge 172:65be27845400 976 ((__CHANNEL__) == ADC_REGULAR_RANK_10) || \
AnnaBridge 172:65be27845400 977 ((__CHANNEL__) == ADC_REGULAR_RANK_11) || \
AnnaBridge 172:65be27845400 978 ((__CHANNEL__) == ADC_REGULAR_RANK_12) || \
AnnaBridge 172:65be27845400 979 ((__CHANNEL__) == ADC_REGULAR_RANK_13) || \
AnnaBridge 172:65be27845400 980 ((__CHANNEL__) == ADC_REGULAR_RANK_14) || \
AnnaBridge 172:65be27845400 981 ((__CHANNEL__) == ADC_REGULAR_RANK_15) || \
AnnaBridge 172:65be27845400 982 ((__CHANNEL__) == ADC_REGULAR_RANK_16) )
AnnaBridge 172:65be27845400 983
AnnaBridge 172:65be27845400 984 /**
AnnaBridge 172:65be27845400 985 * @}
AnnaBridge 172:65be27845400 986 */
AnnaBridge 172:65be27845400 987
AnnaBridge 172:65be27845400 988
AnnaBridge 172:65be27845400 989 /* Private constants ---------------------------------------------------------*/
AnnaBridge 172:65be27845400 990
AnnaBridge 172:65be27845400 991 /** @defgroup ADC_Private_Constants ADC Private Constants
AnnaBridge 172:65be27845400 992 * @{
AnnaBridge 172:65be27845400 993 */
AnnaBridge 172:65be27845400 994
AnnaBridge 172:65be27845400 995 /* Fixed timeout values for ADC conversion (including sampling time) */
AnnaBridge 172:65be27845400 996 /* Maximum sampling time is 640.5 ADC clock cycle (SMPx[2:0] = 0b111 */
AnnaBridge 172:65be27845400 997 /* Maximum conversion time is 12.5 + Maximum sampling time */
AnnaBridge 172:65be27845400 998 /* or 12.5 + 640.5 = 653 ADC clock cycles */
AnnaBridge 172:65be27845400 999 /* Minimum ADC Clock frequency is 0.14 MHz */
AnnaBridge 172:65be27845400 1000 /* Maximum conversion time is */
AnnaBridge 172:65be27845400 1001 /* 653 / 0.14 MHz = 4.66 ms */
AnnaBridge 172:65be27845400 1002 #define ADC_STOP_CONVERSION_TIMEOUT ( 5U) /*!< ADC stop time-out value */
AnnaBridge 172:65be27845400 1003
AnnaBridge 172:65be27845400 1004 /* Delay for temperature sensor stabilization time. */
AnnaBridge 172:65be27845400 1005 /* Maximum delay is 120us (refer device datasheet, parameter tSTART). */
AnnaBridge 172:65be27845400 1006 /* Unit: us */
AnnaBridge 172:65be27845400 1007 #define ADC_TEMPSENSOR_DELAY_US (LL_ADC_DELAY_TEMPSENSOR_STAB_US)
AnnaBridge 172:65be27845400 1008
AnnaBridge 172:65be27845400 1009 /**
AnnaBridge 172:65be27845400 1010 * @}
AnnaBridge 172:65be27845400 1011 */
AnnaBridge 172:65be27845400 1012
AnnaBridge 172:65be27845400 1013 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 172:65be27845400 1014
AnnaBridge 172:65be27845400 1015 /** @defgroup ADC_Exported_Macros ADC Exported Macros
AnnaBridge 172:65be27845400 1016 * @{
AnnaBridge 172:65be27845400 1017 */
AnnaBridge 172:65be27845400 1018 /* Macro for internal HAL driver usage, and possibly can be used into code of */
AnnaBridge 172:65be27845400 1019 /* final user. */
AnnaBridge 172:65be27845400 1020
AnnaBridge 172:65be27845400 1021 /** @defgroup ADC_HAL_EM_HANDLE_IT_FLAG HAL ADC macro to manage HAL ADC handle, IT and flags.
AnnaBridge 172:65be27845400 1022 * @{
AnnaBridge 172:65be27845400 1023 */
AnnaBridge 172:65be27845400 1024
AnnaBridge 172:65be27845400 1025 /** @brief Reset ADC handle state.
AnnaBridge 172:65be27845400 1026 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 1027 * @retval None
AnnaBridge 172:65be27845400 1028 */
AnnaBridge 172:65be27845400 1029 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
AnnaBridge 172:65be27845400 1030 ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
AnnaBridge 172:65be27845400 1031
AnnaBridge 172:65be27845400 1032 /**
AnnaBridge 172:65be27845400 1033 * @brief Enable ADC interrupt.
AnnaBridge 172:65be27845400 1034 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 1035 * @param __INTERRUPT__ ADC Interrupt
AnnaBridge 172:65be27845400 1036 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1037 * @arg @ref ADC_IT_RDY ADC Ready interrupt source
AnnaBridge 172:65be27845400 1038 * @arg @ref ADC_IT_EOSMP ADC End of Sampling interrupt source
AnnaBridge 172:65be27845400 1039 * @arg @ref ADC_IT_EOC ADC End of Regular Conversion interrupt source
AnnaBridge 172:65be27845400 1040 * @arg @ref ADC_IT_EOS ADC End of Regular sequence of Conversions interrupt source
AnnaBridge 172:65be27845400 1041 * @arg @ref ADC_IT_OVR ADC overrun interrupt source
AnnaBridge 172:65be27845400 1042 * @arg @ref ADC_IT_JEOC ADC End of Injected Conversion interrupt source
AnnaBridge 172:65be27845400 1043 * @arg @ref ADC_IT_JEOS ADC End of Injected sequence of Conversions interrupt source
AnnaBridge 172:65be27845400 1044 * @arg @ref ADC_IT_AWD1 ADC Analog watchdog 1 interrupt source (main analog watchdog)
AnnaBridge 172:65be27845400 1045 * @arg @ref ADC_IT_AWD2 ADC Analog watchdog 2 interrupt source (additional analog watchdog)
AnnaBridge 172:65be27845400 1046 * @arg @ref ADC_IT_AWD3 ADC Analog watchdog 3 interrupt source (additional analog watchdog)
AnnaBridge 172:65be27845400 1047 * @arg @ref ADC_IT_JQOVF ADC Injected Context Queue Overflow interrupt source.
AnnaBridge 172:65be27845400 1048 * @retval None
AnnaBridge 172:65be27845400 1049 */
AnnaBridge 172:65be27845400 1050 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) \
AnnaBridge 172:65be27845400 1051 (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
AnnaBridge 172:65be27845400 1052
AnnaBridge 172:65be27845400 1053 /**
AnnaBridge 172:65be27845400 1054 * @brief Disable ADC interrupt.
AnnaBridge 172:65be27845400 1055 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 1056 * @param __INTERRUPT__ ADC Interrupt
AnnaBridge 172:65be27845400 1057 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1058 * @arg @ref ADC_IT_RDY ADC Ready interrupt source
AnnaBridge 172:65be27845400 1059 * @arg @ref ADC_IT_EOSMP ADC End of Sampling interrupt source
AnnaBridge 172:65be27845400 1060 * @arg @ref ADC_IT_EOC ADC End of Regular Conversion interrupt source
AnnaBridge 172:65be27845400 1061 * @arg @ref ADC_IT_EOS ADC End of Regular sequence of Conversions interrupt source
AnnaBridge 172:65be27845400 1062 * @arg @ref ADC_IT_OVR ADC overrun interrupt source
AnnaBridge 172:65be27845400 1063 * @arg @ref ADC_IT_JEOC ADC End of Injected Conversion interrupt source
AnnaBridge 172:65be27845400 1064 * @arg @ref ADC_IT_JEOS ADC End of Injected sequence of Conversions interrupt source
AnnaBridge 172:65be27845400 1065 * @arg @ref ADC_IT_AWD1 ADC Analog watchdog 1 interrupt source (main analog watchdog)
AnnaBridge 172:65be27845400 1066 * @arg @ref ADC_IT_AWD2 ADC Analog watchdog 2 interrupt source (additional analog watchdog)
AnnaBridge 172:65be27845400 1067 * @arg @ref ADC_IT_AWD3 ADC Analog watchdog 3 interrupt source (additional analog watchdog)
AnnaBridge 172:65be27845400 1068 * @arg @ref ADC_IT_JQOVF ADC Injected Context Queue Overflow interrupt source.
AnnaBridge 172:65be27845400 1069 * @retval None
AnnaBridge 172:65be27845400 1070 */
AnnaBridge 172:65be27845400 1071 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) \
AnnaBridge 172:65be27845400 1072 (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
AnnaBridge 172:65be27845400 1073
AnnaBridge 172:65be27845400 1074 /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
AnnaBridge 172:65be27845400 1075 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 1076 * @param __INTERRUPT__ ADC interrupt source to check
AnnaBridge 172:65be27845400 1077 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1078 * @arg @ref ADC_IT_RDY ADC Ready interrupt source
AnnaBridge 172:65be27845400 1079 * @arg @ref ADC_IT_EOSMP ADC End of Sampling interrupt source
AnnaBridge 172:65be27845400 1080 * @arg @ref ADC_IT_EOC ADC End of Regular Conversion interrupt source
AnnaBridge 172:65be27845400 1081 * @arg @ref ADC_IT_EOS ADC End of Regular sequence of Conversions interrupt source
AnnaBridge 172:65be27845400 1082 * @arg @ref ADC_IT_OVR ADC overrun interrupt source
AnnaBridge 172:65be27845400 1083 * @arg @ref ADC_IT_JEOC ADC End of Injected Conversion interrupt source
AnnaBridge 172:65be27845400 1084 * @arg @ref ADC_IT_JEOS ADC End of Injected sequence of Conversions interrupt source
AnnaBridge 172:65be27845400 1085 * @arg @ref ADC_IT_AWD1 ADC Analog watchdog 1 interrupt source (main analog watchdog)
AnnaBridge 172:65be27845400 1086 * @arg @ref ADC_IT_AWD2 ADC Analog watchdog 2 interrupt source (additional analog watchdog)
AnnaBridge 172:65be27845400 1087 * @arg @ref ADC_IT_AWD3 ADC Analog watchdog 3 interrupt source (additional analog watchdog)
AnnaBridge 172:65be27845400 1088 * @arg @ref ADC_IT_JQOVF ADC Injected Context Queue Overflow interrupt source.
AnnaBridge 172:65be27845400 1089 * @retval State of interruption (SET or RESET)
AnnaBridge 172:65be27845400 1090 */
AnnaBridge 172:65be27845400 1091 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
AnnaBridge 172:65be27845400 1092 (((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__))
AnnaBridge 172:65be27845400 1093
AnnaBridge 172:65be27845400 1094 /**
AnnaBridge 172:65be27845400 1095 * @brief Check whether the specified ADC flag is set or not.
AnnaBridge 172:65be27845400 1096 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 1097 * @param __FLAG__ ADC flag
AnnaBridge 172:65be27845400 1098 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1099 * @arg @ref ADC_FLAG_RDY ADC Ready flag
AnnaBridge 172:65be27845400 1100 * @arg @ref ADC_FLAG_EOSMP ADC End of Sampling flag
AnnaBridge 172:65be27845400 1101 * @arg @ref ADC_FLAG_EOC ADC End of Regular Conversion flag
AnnaBridge 172:65be27845400 1102 * @arg @ref ADC_FLAG_EOS ADC End of Regular sequence of Conversions flag
AnnaBridge 172:65be27845400 1103 * @arg @ref ADC_FLAG_OVR ADC overrun flag
AnnaBridge 172:65be27845400 1104 * @arg @ref ADC_FLAG_JEOC ADC End of Injected Conversion flag
AnnaBridge 172:65be27845400 1105 * @arg @ref ADC_FLAG_JEOS ADC End of Injected sequence of Conversions flag
AnnaBridge 172:65be27845400 1106 * @arg @ref ADC_FLAG_AWD1 ADC Analog watchdog 1 flag (main analog watchdog)
AnnaBridge 172:65be27845400 1107 * @arg @ref ADC_FLAG_AWD2 ADC Analog watchdog 2 flag (additional analog watchdog)
AnnaBridge 172:65be27845400 1108 * @arg @ref ADC_FLAG_AWD3 ADC Analog watchdog 3 flag (additional analog watchdog)
AnnaBridge 172:65be27845400 1109 * @arg @ref ADC_FLAG_JQOVF ADC Injected Context Queue Overflow flag.
AnnaBridge 172:65be27845400 1110 * @retval State of flag (TRUE or FALSE).
AnnaBridge 172:65be27845400 1111 */
AnnaBridge 172:65be27845400 1112 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) \
AnnaBridge 172:65be27845400 1113 ((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__))
AnnaBridge 172:65be27845400 1114
AnnaBridge 172:65be27845400 1115 /**
AnnaBridge 172:65be27845400 1116 * @brief Clear the specified ADC flag.
AnnaBridge 172:65be27845400 1117 * @param __HANDLE__ ADC handle
AnnaBridge 172:65be27845400 1118 * @param __FLAG__ ADC flag
AnnaBridge 172:65be27845400 1119 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1120 * @arg @ref ADC_FLAG_RDY ADC Ready flag
AnnaBridge 172:65be27845400 1121 * @arg @ref ADC_FLAG_EOSMP ADC End of Sampling flag
AnnaBridge 172:65be27845400 1122 * @arg @ref ADC_FLAG_EOC ADC End of Regular Conversion flag
AnnaBridge 172:65be27845400 1123 * @arg @ref ADC_FLAG_EOS ADC End of Regular sequence of Conversions flag
AnnaBridge 172:65be27845400 1124 * @arg @ref ADC_FLAG_OVR ADC overrun flag
AnnaBridge 172:65be27845400 1125 * @arg @ref ADC_FLAG_JEOC ADC End of Injected Conversion flag
AnnaBridge 172:65be27845400 1126 * @arg @ref ADC_FLAG_JEOS ADC End of Injected sequence of Conversions flag
AnnaBridge 172:65be27845400 1127 * @arg @ref ADC_FLAG_AWD1 ADC Analog watchdog 1 flag (main analog watchdog)
AnnaBridge 172:65be27845400 1128 * @arg @ref ADC_FLAG_AWD2 ADC Analog watchdog 2 flag (additional analog watchdog)
AnnaBridge 172:65be27845400 1129 * @arg @ref ADC_FLAG_AWD3 ADC Analog watchdog 3 flag (additional analog watchdog)
AnnaBridge 172:65be27845400 1130 * @arg @ref ADC_FLAG_JQOVF ADC Injected Context Queue Overflow flag.
AnnaBridge 172:65be27845400 1131 * @retval None
AnnaBridge 172:65be27845400 1132 */
AnnaBridge 172:65be27845400 1133 /* Note: bit cleared bit by writing 1 (writing 0 has no effect on any bit of register ISR) */
AnnaBridge 172:65be27845400 1134 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) \
AnnaBridge 172:65be27845400 1135 (((__HANDLE__)->Instance->ISR) = (__FLAG__))
AnnaBridge 172:65be27845400 1136
AnnaBridge 172:65be27845400 1137 /**
AnnaBridge 172:65be27845400 1138 * @}
AnnaBridge 172:65be27845400 1139 */
AnnaBridge 172:65be27845400 1140
AnnaBridge 172:65be27845400 1141 /** @defgroup ADC_HAL_EM_HELPER_MACRO HAL ADC helper macro
AnnaBridge 172:65be27845400 1142 * @{
AnnaBridge 172:65be27845400 1143 */
AnnaBridge 172:65be27845400 1144
AnnaBridge 172:65be27845400 1145 /**
AnnaBridge 172:65be27845400 1146 * @brief Helper macro to get ADC channel number in decimal format
AnnaBridge 172:65be27845400 1147 * from literals ADC_CHANNEL_x.
AnnaBridge 172:65be27845400 1148 * @note Example:
AnnaBridge 172:65be27845400 1149 * __HAL_ADC_CHANNEL_TO_DECIMAL_NB(ADC_CHANNEL_4)
AnnaBridge 172:65be27845400 1150 * will return decimal number "4".
AnnaBridge 172:65be27845400 1151 * @note The input can be a value from functions where a channel
AnnaBridge 172:65be27845400 1152 * number is returned, either defined with number
AnnaBridge 172:65be27845400 1153 * or with bitfield (only one bit must be set).
AnnaBridge 172:65be27845400 1154 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1155 * @arg @ref ADC_CHANNEL_0
AnnaBridge 172:65be27845400 1156 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 172:65be27845400 1157 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 172:65be27845400 1158 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 172:65be27845400 1159 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 172:65be27845400 1160 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 172:65be27845400 1161 * @arg @ref ADC_CHANNEL_6
AnnaBridge 172:65be27845400 1162 * @arg @ref ADC_CHANNEL_7
AnnaBridge 172:65be27845400 1163 * @arg @ref ADC_CHANNEL_8
AnnaBridge 172:65be27845400 1164 * @arg @ref ADC_CHANNEL_9
AnnaBridge 172:65be27845400 1165 * @arg @ref ADC_CHANNEL_10
AnnaBridge 172:65be27845400 1166 * @arg @ref ADC_CHANNEL_11
AnnaBridge 172:65be27845400 1167 * @arg @ref ADC_CHANNEL_12
AnnaBridge 172:65be27845400 1168 * @arg @ref ADC_CHANNEL_13
AnnaBridge 172:65be27845400 1169 * @arg @ref ADC_CHANNEL_14
AnnaBridge 172:65be27845400 1170 * @arg @ref ADC_CHANNEL_15
AnnaBridge 172:65be27845400 1171 * @arg @ref ADC_CHANNEL_16
AnnaBridge 172:65be27845400 1172 * @arg @ref ADC_CHANNEL_17
AnnaBridge 172:65be27845400 1173 * @arg @ref ADC_CHANNEL_18
AnnaBridge 172:65be27845400 1174 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 172:65be27845400 1175 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 172:65be27845400 1176 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 172:65be27845400 1177 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 172:65be27845400 1178 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 172:65be27845400 1179 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1180 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1181 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1182 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1183 *
AnnaBridge 172:65be27845400 1184 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 172:65be27845400 1185 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 172:65be27845400 1186 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 172:65be27845400 1187 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 172:65be27845400 1188 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 172:65be27845400 1189 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 172:65be27845400 1190 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 172:65be27845400 1191 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 172:65be27845400 1192 * @retval Value between Min_Data=0 and Max_Data=18
AnnaBridge 172:65be27845400 1193 */
AnnaBridge 172:65be27845400 1194 #define __HAL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
AnnaBridge 172:65be27845400 1195 __LL_ADC_CHANNEL_TO_DECIMAL_NB((__CHANNEL__))
AnnaBridge 172:65be27845400 1196
AnnaBridge 172:65be27845400 1197 /**
AnnaBridge 172:65be27845400 1198 * @brief Helper macro to get ADC channel in literal format ADC_CHANNEL_x
AnnaBridge 172:65be27845400 1199 * from number in decimal format.
AnnaBridge 172:65be27845400 1200 * @note Example:
AnnaBridge 172:65be27845400 1201 * __HAL_ADC_DECIMAL_NB_TO_CHANNEL(4)
AnnaBridge 172:65be27845400 1202 * will return a data equivalent to "ADC_CHANNEL_4".
AnnaBridge 172:65be27845400 1203 * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18
AnnaBridge 172:65be27845400 1204 * @retval Returned value can be one of the following values:
AnnaBridge 172:65be27845400 1205 * @arg @ref ADC_CHANNEL_0
AnnaBridge 172:65be27845400 1206 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 172:65be27845400 1207 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 172:65be27845400 1208 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 172:65be27845400 1209 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 172:65be27845400 1210 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 172:65be27845400 1211 * @arg @ref ADC_CHANNEL_6
AnnaBridge 172:65be27845400 1212 * @arg @ref ADC_CHANNEL_7
AnnaBridge 172:65be27845400 1213 * @arg @ref ADC_CHANNEL_8
AnnaBridge 172:65be27845400 1214 * @arg @ref ADC_CHANNEL_9
AnnaBridge 172:65be27845400 1215 * @arg @ref ADC_CHANNEL_10
AnnaBridge 172:65be27845400 1216 * @arg @ref ADC_CHANNEL_11
AnnaBridge 172:65be27845400 1217 * @arg @ref ADC_CHANNEL_12
AnnaBridge 172:65be27845400 1218 * @arg @ref ADC_CHANNEL_13
AnnaBridge 172:65be27845400 1219 * @arg @ref ADC_CHANNEL_14
AnnaBridge 172:65be27845400 1220 * @arg @ref ADC_CHANNEL_15
AnnaBridge 172:65be27845400 1221 * @arg @ref ADC_CHANNEL_16
AnnaBridge 172:65be27845400 1222 * @arg @ref ADC_CHANNEL_17
AnnaBridge 172:65be27845400 1223 * @arg @ref ADC_CHANNEL_18
AnnaBridge 172:65be27845400 1224 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 172:65be27845400 1225 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 172:65be27845400 1226 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 172:65be27845400 1227 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 172:65be27845400 1228 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 172:65be27845400 1229 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1230 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1231 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1232 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1233 *
AnnaBridge 172:65be27845400 1234 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 172:65be27845400 1235 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 172:65be27845400 1236 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 172:65be27845400 1237 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 172:65be27845400 1238 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 172:65be27845400 1239 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 172:65be27845400 1240 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 172:65be27845400 1241 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).\n
AnnaBridge 172:65be27845400 1242 * (1, 2, 3, 4) For ADC channel read back from ADC register,
AnnaBridge 172:65be27845400 1243 * comparison with internal channel parameter to be done
AnnaBridge 172:65be27845400 1244 * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL().
AnnaBridge 172:65be27845400 1245 */
AnnaBridge 172:65be27845400 1246 #define __HAL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
AnnaBridge 172:65be27845400 1247 __LL_ADC_DECIMAL_NB_TO_CHANNEL((__DECIMAL_NB__))
AnnaBridge 172:65be27845400 1248
AnnaBridge 172:65be27845400 1249 /**
AnnaBridge 172:65be27845400 1250 * @brief Helper macro to determine whether the selected channel
AnnaBridge 172:65be27845400 1251 * corresponds to literal definitions of driver.
AnnaBridge 172:65be27845400 1252 * @note The different literal definitions of ADC channels are:
AnnaBridge 172:65be27845400 1253 * - ADC internal channel:
AnnaBridge 172:65be27845400 1254 * ADC_CHANNEL_VREFINT, ADC_CHANNEL_TEMPSENSOR, ...
AnnaBridge 172:65be27845400 1255 * - ADC external channel (channel connected to a GPIO pin):
AnnaBridge 172:65be27845400 1256 * ADC_CHANNEL_1, ADC_CHANNEL_2, ...
AnnaBridge 172:65be27845400 1257 * @note The channel parameter must be a value defined from literal
AnnaBridge 172:65be27845400 1258 * definition of a ADC internal channel (ADC_CHANNEL_VREFINT,
AnnaBridge 172:65be27845400 1259 * ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 172:65be27845400 1260 * ADC external channel (ADC_CHANNEL_1, ADC_CHANNEL_2, ...),
AnnaBridge 172:65be27845400 1261 * must not be a value from functions where a channel number is
AnnaBridge 172:65be27845400 1262 * returned from ADC registers,
AnnaBridge 172:65be27845400 1263 * because internal and external channels share the same channel
AnnaBridge 172:65be27845400 1264 * number in ADC registers. The differentiation is made only with
AnnaBridge 172:65be27845400 1265 * parameters definitions of driver.
AnnaBridge 172:65be27845400 1266 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1267 * @arg @ref ADC_CHANNEL_0
AnnaBridge 172:65be27845400 1268 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 172:65be27845400 1269 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 172:65be27845400 1270 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 172:65be27845400 1271 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 172:65be27845400 1272 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 172:65be27845400 1273 * @arg @ref ADC_CHANNEL_6
AnnaBridge 172:65be27845400 1274 * @arg @ref ADC_CHANNEL_7
AnnaBridge 172:65be27845400 1275 * @arg @ref ADC_CHANNEL_8
AnnaBridge 172:65be27845400 1276 * @arg @ref ADC_CHANNEL_9
AnnaBridge 172:65be27845400 1277 * @arg @ref ADC_CHANNEL_10
AnnaBridge 172:65be27845400 1278 * @arg @ref ADC_CHANNEL_11
AnnaBridge 172:65be27845400 1279 * @arg @ref ADC_CHANNEL_12
AnnaBridge 172:65be27845400 1280 * @arg @ref ADC_CHANNEL_13
AnnaBridge 172:65be27845400 1281 * @arg @ref ADC_CHANNEL_14
AnnaBridge 172:65be27845400 1282 * @arg @ref ADC_CHANNEL_15
AnnaBridge 172:65be27845400 1283 * @arg @ref ADC_CHANNEL_16
AnnaBridge 172:65be27845400 1284 * @arg @ref ADC_CHANNEL_17
AnnaBridge 172:65be27845400 1285 * @arg @ref ADC_CHANNEL_18
AnnaBridge 172:65be27845400 1286 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 172:65be27845400 1287 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 172:65be27845400 1288 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 172:65be27845400 1289 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 172:65be27845400 1290 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 172:65be27845400 1291 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1292 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1293 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1294 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1295 *
AnnaBridge 172:65be27845400 1296 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 172:65be27845400 1297 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 172:65be27845400 1298 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 172:65be27845400 1299 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 172:65be27845400 1300 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 172:65be27845400 1301 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 172:65be27845400 1302 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 172:65be27845400 1303 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 172:65be27845400 1304 * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin).
AnnaBridge 172:65be27845400 1305 * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel.
AnnaBridge 172:65be27845400 1306 */
AnnaBridge 172:65be27845400 1307 #define __HAL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \
AnnaBridge 172:65be27845400 1308 __LL_ADC_IS_CHANNEL_INTERNAL((__CHANNEL__))
AnnaBridge 172:65be27845400 1309
AnnaBridge 172:65be27845400 1310 /**
AnnaBridge 172:65be27845400 1311 * @brief Helper macro to convert a channel defined from parameter
AnnaBridge 172:65be27845400 1312 * definition of a ADC internal channel (ADC_CHANNEL_VREFINT,
AnnaBridge 172:65be27845400 1313 * ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 172:65be27845400 1314 * to its equivalent parameter definition of a ADC external channel
AnnaBridge 172:65be27845400 1315 * (ADC_CHANNEL_1, ADC_CHANNEL_2, ...).
AnnaBridge 172:65be27845400 1316 * @note The channel parameter can be, additionally to a value
AnnaBridge 172:65be27845400 1317 * defined from parameter definition of a ADC internal channel
AnnaBridge 172:65be27845400 1318 * (ADC_CHANNEL_VREFINT, ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 172:65be27845400 1319 * a value defined from parameter definition of
AnnaBridge 172:65be27845400 1320 * ADC external channel (ADC_CHANNEL_1, ADC_CHANNEL_2, ...)
AnnaBridge 172:65be27845400 1321 * or a value from functions where a channel number is returned
AnnaBridge 172:65be27845400 1322 * from ADC registers.
AnnaBridge 172:65be27845400 1323 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1324 * @arg @ref ADC_CHANNEL_0
AnnaBridge 172:65be27845400 1325 * @arg @ref ADC_CHANNEL_1 (7)
AnnaBridge 172:65be27845400 1326 * @arg @ref ADC_CHANNEL_2 (7)
AnnaBridge 172:65be27845400 1327 * @arg @ref ADC_CHANNEL_3 (7)
AnnaBridge 172:65be27845400 1328 * @arg @ref ADC_CHANNEL_4 (7)
AnnaBridge 172:65be27845400 1329 * @arg @ref ADC_CHANNEL_5 (7)
AnnaBridge 172:65be27845400 1330 * @arg @ref ADC_CHANNEL_6
AnnaBridge 172:65be27845400 1331 * @arg @ref ADC_CHANNEL_7
AnnaBridge 172:65be27845400 1332 * @arg @ref ADC_CHANNEL_8
AnnaBridge 172:65be27845400 1333 * @arg @ref ADC_CHANNEL_9
AnnaBridge 172:65be27845400 1334 * @arg @ref ADC_CHANNEL_10
AnnaBridge 172:65be27845400 1335 * @arg @ref ADC_CHANNEL_11
AnnaBridge 172:65be27845400 1336 * @arg @ref ADC_CHANNEL_12
AnnaBridge 172:65be27845400 1337 * @arg @ref ADC_CHANNEL_13
AnnaBridge 172:65be27845400 1338 * @arg @ref ADC_CHANNEL_14
AnnaBridge 172:65be27845400 1339 * @arg @ref ADC_CHANNEL_15
AnnaBridge 172:65be27845400 1340 * @arg @ref ADC_CHANNEL_16
AnnaBridge 172:65be27845400 1341 * @arg @ref ADC_CHANNEL_17
AnnaBridge 172:65be27845400 1342 * @arg @ref ADC_CHANNEL_18
AnnaBridge 172:65be27845400 1343 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 172:65be27845400 1344 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 172:65be27845400 1345 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 172:65be27845400 1346 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 172:65be27845400 1347 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 172:65be27845400 1348 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1349 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1350 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1351 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1352 *
AnnaBridge 172:65be27845400 1353 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 172:65be27845400 1354 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 172:65be27845400 1355 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 172:65be27845400 1356 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 172:65be27845400 1357 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 172:65be27845400 1358 * (6) On STM32L4, parameter available on devices with several ADC instances.\n
AnnaBridge 172:65be27845400 1359 * (7) On STM32L4, fast channel (0.188 us for 12-bit resolution (ADC conversion rate up to 5.33 Ms/s)).
AnnaBridge 172:65be27845400 1360 * Other channels are slow channels (0.238 us for 12-bit resolution (ADC conversion rate up to 4.21 Ms/s)).
AnnaBridge 172:65be27845400 1361 * @retval Returned value can be one of the following values:
AnnaBridge 172:65be27845400 1362 * @arg @ref ADC_CHANNEL_0
AnnaBridge 172:65be27845400 1363 * @arg @ref ADC_CHANNEL_1
AnnaBridge 172:65be27845400 1364 * @arg @ref ADC_CHANNEL_2
AnnaBridge 172:65be27845400 1365 * @arg @ref ADC_CHANNEL_3
AnnaBridge 172:65be27845400 1366 * @arg @ref ADC_CHANNEL_4
AnnaBridge 172:65be27845400 1367 * @arg @ref ADC_CHANNEL_5
AnnaBridge 172:65be27845400 1368 * @arg @ref ADC_CHANNEL_6
AnnaBridge 172:65be27845400 1369 * @arg @ref ADC_CHANNEL_7
AnnaBridge 172:65be27845400 1370 * @arg @ref ADC_CHANNEL_8
AnnaBridge 172:65be27845400 1371 * @arg @ref ADC_CHANNEL_9
AnnaBridge 172:65be27845400 1372 * @arg @ref ADC_CHANNEL_10
AnnaBridge 172:65be27845400 1373 * @arg @ref ADC_CHANNEL_11
AnnaBridge 172:65be27845400 1374 * @arg @ref ADC_CHANNEL_12
AnnaBridge 172:65be27845400 1375 * @arg @ref ADC_CHANNEL_13
AnnaBridge 172:65be27845400 1376 * @arg @ref ADC_CHANNEL_14
AnnaBridge 172:65be27845400 1377 * @arg @ref ADC_CHANNEL_15
AnnaBridge 172:65be27845400 1378 * @arg @ref ADC_CHANNEL_16
AnnaBridge 172:65be27845400 1379 * @arg @ref ADC_CHANNEL_17
AnnaBridge 172:65be27845400 1380 * @arg @ref ADC_CHANNEL_18
AnnaBridge 172:65be27845400 1381 */
AnnaBridge 172:65be27845400 1382 #define __HAL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \
AnnaBridge 172:65be27845400 1383 __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL((__CHANNEL__))
AnnaBridge 172:65be27845400 1384
AnnaBridge 172:65be27845400 1385 /**
AnnaBridge 172:65be27845400 1386 * @brief Helper macro to determine whether the internal channel
AnnaBridge 172:65be27845400 1387 * selected is available on the ADC instance selected.
AnnaBridge 172:65be27845400 1388 * @note The channel parameter must be a value defined from parameter
AnnaBridge 172:65be27845400 1389 * definition of a ADC internal channel (ADC_CHANNEL_VREFINT,
AnnaBridge 172:65be27845400 1390 * ADC_CHANNEL_TEMPSENSOR, ...),
AnnaBridge 172:65be27845400 1391 * must not be a value defined from parameter definition of
AnnaBridge 172:65be27845400 1392 * ADC external channel (ADC_CHANNEL_1, ADC_CHANNEL_2, ...)
AnnaBridge 172:65be27845400 1393 * or a value from functions where a channel number is
AnnaBridge 172:65be27845400 1394 * returned from ADC registers,
AnnaBridge 172:65be27845400 1395 * because internal and external channels share the same channel
AnnaBridge 172:65be27845400 1396 * number in ADC registers. The differentiation is made only with
AnnaBridge 172:65be27845400 1397 * parameters definitions of driver.
AnnaBridge 172:65be27845400 1398 * @param __ADC_INSTANCE__ ADC instance
AnnaBridge 172:65be27845400 1399 * @param __CHANNEL__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1400 * @arg @ref ADC_CHANNEL_VREFINT (1)
AnnaBridge 172:65be27845400 1401 * @arg @ref ADC_CHANNEL_TEMPSENSOR (4)
AnnaBridge 172:65be27845400 1402 * @arg @ref ADC_CHANNEL_VBAT (4)
AnnaBridge 172:65be27845400 1403 * @arg @ref ADC_CHANNEL_DAC1CH1 (5)
AnnaBridge 172:65be27845400 1404 * @arg @ref ADC_CHANNEL_DAC1CH2 (5)
AnnaBridge 172:65be27845400 1405 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1406 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC2 (2)(6)
AnnaBridge 172:65be27845400 1407 * @arg @ref ADC_CHANNEL_DAC1CH1_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1408 * @arg @ref ADC_CHANNEL_DAC1CH2_ADC3 (3)(6)
AnnaBridge 172:65be27845400 1409 *
AnnaBridge 172:65be27845400 1410 * (1) On STM32L4, parameter available only on ADC instance: ADC1.\n
AnnaBridge 172:65be27845400 1411 * (2) On STM32L4, parameter available only on ADC instance: ADC2.\n
AnnaBridge 172:65be27845400 1412 * (3) On STM32L4, parameter available only on ADC instance: ADC3.\n
AnnaBridge 172:65be27845400 1413 * (4) On STM32L4, parameter available only on ADC instances: ADC1, ADC3.\n
AnnaBridge 172:65be27845400 1414 * (5) On STM32L4, parameter available on devices with only 1 ADC instance.\n
AnnaBridge 172:65be27845400 1415 * (6) On STM32L4, parameter available on devices with several ADC instances.
AnnaBridge 172:65be27845400 1416 * @retval Value "0" if the internal channel selected is not available on the ADC instance selected.
AnnaBridge 172:65be27845400 1417 * Value "1" if the internal channel selected is available on the ADC instance selected.
AnnaBridge 172:65be27845400 1418 */
AnnaBridge 172:65be27845400 1419 #define __HAL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \
AnnaBridge 172:65be27845400 1420 __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE((__ADC_INSTANCE__), (__CHANNEL__))
AnnaBridge 172:65be27845400 1421
AnnaBridge 172:65be27845400 1422 #if defined(ADC_MULTIMODE_SUPPORT)
AnnaBridge 172:65be27845400 1423 /**
AnnaBridge 172:65be27845400 1424 * @brief Helper macro to get the ADC multimode conversion data of ADC master
AnnaBridge 172:65be27845400 1425 * or ADC slave from raw value with both ADC conversion data concatenated.
AnnaBridge 172:65be27845400 1426 * @note This macro is intended to be used when multimode transfer by DMA
AnnaBridge 172:65be27845400 1427 * is enabled: refer to function @ref LL_ADC_SetMultiDMATransfer().
AnnaBridge 172:65be27845400 1428 * In this case the transferred data need to processed with this macro
AnnaBridge 172:65be27845400 1429 * to separate the conversion data of ADC master and ADC slave.
AnnaBridge 172:65be27845400 1430 * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1431 * @arg @ref LL_ADC_MULTI_MASTER
AnnaBridge 172:65be27845400 1432 * @arg @ref LL_ADC_MULTI_SLAVE
AnnaBridge 172:65be27845400 1433 * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 172:65be27845400 1434 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
AnnaBridge 172:65be27845400 1435 */
AnnaBridge 172:65be27845400 1436 #define __HAL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \
AnnaBridge 172:65be27845400 1437 __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE((__ADC_MULTI_MASTER_SLAVE__), (__ADC_MULTI_CONV_DATA__))
AnnaBridge 172:65be27845400 1438 #endif
AnnaBridge 172:65be27845400 1439
AnnaBridge 172:65be27845400 1440 /**
AnnaBridge 172:65be27845400 1441 * @brief Helper macro to select the ADC common instance
AnnaBridge 172:65be27845400 1442 * to which is belonging the selected ADC instance.
AnnaBridge 172:65be27845400 1443 * @note ADC common register instance can be used for:
AnnaBridge 172:65be27845400 1444 * - Set parameters common to several ADC instances
AnnaBridge 172:65be27845400 1445 * - Multimode (for devices with several ADC instances)
AnnaBridge 172:65be27845400 1446 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 172:65be27845400 1447 * @param __ADCx__ ADC instance
AnnaBridge 172:65be27845400 1448 * @retval ADC common register instance
AnnaBridge 172:65be27845400 1449 */
AnnaBridge 172:65be27845400 1450 #define __HAL_ADC_COMMON_INSTANCE(__ADCx__) \
AnnaBridge 172:65be27845400 1451 __LL_ADC_COMMON_INSTANCE((__ADCx__))
AnnaBridge 172:65be27845400 1452
AnnaBridge 172:65be27845400 1453 /**
AnnaBridge 172:65be27845400 1454 * @brief Helper macro to check if all ADC instances sharing the same
AnnaBridge 172:65be27845400 1455 * ADC common instance are disabled.
AnnaBridge 172:65be27845400 1456 * @note This check is required by functions with setting conditioned to
AnnaBridge 172:65be27845400 1457 * ADC state:
AnnaBridge 172:65be27845400 1458 * All ADC instances of the ADC common group must be disabled.
AnnaBridge 172:65be27845400 1459 * Refer to functions having argument "ADCxy_COMMON" as parameter.
AnnaBridge 172:65be27845400 1460 * @note On devices with only 1 ADC common instance, parameter of this macro
AnnaBridge 172:65be27845400 1461 * is useless and can be ignored (parameter kept for compatibility
AnnaBridge 172:65be27845400 1462 * with devices featuring several ADC common instances).
AnnaBridge 172:65be27845400 1463 * @param __ADCXY_COMMON__ ADC common instance
AnnaBridge 172:65be27845400 1464 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
AnnaBridge 172:65be27845400 1465 * @retval Value "0" if all ADC instances sharing the same ADC common instance
AnnaBridge 172:65be27845400 1466 * are disabled.
AnnaBridge 172:65be27845400 1467 * Value "1" if at least one ADC instance sharing the same ADC common instance
AnnaBridge 172:65be27845400 1468 * is enabled.
AnnaBridge 172:65be27845400 1469 */
AnnaBridge 172:65be27845400 1470 #define __HAL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \
AnnaBridge 172:65be27845400 1471 __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE((__ADCXY_COMMON__))
AnnaBridge 172:65be27845400 1472
AnnaBridge 172:65be27845400 1473 /**
AnnaBridge 172:65be27845400 1474 * @brief Helper macro to define the ADC conversion data full-scale digital
AnnaBridge 172:65be27845400 1475 * value corresponding to the selected ADC resolution.
AnnaBridge 172:65be27845400 1476 * @note ADC conversion data full-scale corresponds to voltage range
AnnaBridge 172:65be27845400 1477 * determined by analog voltage references Vref+ and Vref-
AnnaBridge 172:65be27845400 1478 * (refer to reference manual).
AnnaBridge 172:65be27845400 1479 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1480 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1481 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1482 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1483 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1484 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 172:65be27845400 1485 */
AnnaBridge 172:65be27845400 1486 #define __HAL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \
AnnaBridge 172:65be27845400 1487 __LL_ADC_DIGITAL_SCALE((__ADC_RESOLUTION__))
AnnaBridge 172:65be27845400 1488
AnnaBridge 172:65be27845400 1489 /**
AnnaBridge 172:65be27845400 1490 * @brief Helper macro to convert the ADC conversion data from
AnnaBridge 172:65be27845400 1491 * a resolution to another resolution.
AnnaBridge 172:65be27845400 1492 * @param __DATA__ ADC conversion data to be converted
AnnaBridge 172:65be27845400 1493 * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted
AnnaBridge 172:65be27845400 1494 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1495 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1496 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1497 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1498 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1499 * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion
AnnaBridge 172:65be27845400 1500 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1501 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1502 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1503 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1504 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1505 * @retval ADC conversion data to the requested resolution
AnnaBridge 172:65be27845400 1506 */
AnnaBridge 172:65be27845400 1507 #define __HAL_ADC_CONVERT_DATA_RESOLUTION(__DATA__,\
AnnaBridge 172:65be27845400 1508 __ADC_RESOLUTION_CURRENT__,\
AnnaBridge 172:65be27845400 1509 __ADC_RESOLUTION_TARGET__) \
AnnaBridge 172:65be27845400 1510 __LL_ADC_CONVERT_DATA_RESOLUTION((__DATA__),\
AnnaBridge 172:65be27845400 1511 (__ADC_RESOLUTION_CURRENT__),\
AnnaBridge 172:65be27845400 1512 (__ADC_RESOLUTION_TARGET__))
AnnaBridge 172:65be27845400 1513
AnnaBridge 172:65be27845400 1514 /**
AnnaBridge 172:65be27845400 1515 * @brief Helper macro to calculate the voltage (unit: mVolt)
AnnaBridge 172:65be27845400 1516 * corresponding to a ADC conversion data (unit: digital value).
AnnaBridge 172:65be27845400 1517 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 172:65be27845400 1518 * user board environment or can be calculated using ADC measurement
AnnaBridge 172:65be27845400 1519 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 172:65be27845400 1520 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 172:65be27845400 1521 * @param __ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 172:65be27845400 1522 * (unit: digital value).
AnnaBridge 172:65be27845400 1523 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1524 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1525 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1526 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1527 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1528 * @retval ADC conversion data equivalent voltage value (unit: mVolt)
AnnaBridge 172:65be27845400 1529 */
AnnaBridge 172:65be27845400 1530 #define __HAL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 172:65be27845400 1531 __ADC_DATA__,\
AnnaBridge 172:65be27845400 1532 __ADC_RESOLUTION__) \
AnnaBridge 172:65be27845400 1533 __LL_ADC_CALC_DATA_TO_VOLTAGE((__VREFANALOG_VOLTAGE__),\
AnnaBridge 172:65be27845400 1534 (__ADC_DATA__),\
AnnaBridge 172:65be27845400 1535 (__ADC_RESOLUTION__))
AnnaBridge 172:65be27845400 1536
AnnaBridge 172:65be27845400 1537 /**
AnnaBridge 172:65be27845400 1538 * @brief Helper macro to calculate analog reference voltage (Vref+)
AnnaBridge 172:65be27845400 1539 * (unit: mVolt) from ADC conversion data of internal voltage
AnnaBridge 172:65be27845400 1540 * reference VrefInt.
AnnaBridge 172:65be27845400 1541 * @note Computation is using VrefInt calibration value
AnnaBridge 172:65be27845400 1542 * stored in system memory for each device during production.
AnnaBridge 172:65be27845400 1543 * @note This voltage depends on user board environment: voltage level
AnnaBridge 172:65be27845400 1544 * connected to pin Vref+.
AnnaBridge 172:65be27845400 1545 * On devices with small package, the pin Vref+ is not present
AnnaBridge 172:65be27845400 1546 * and internally bonded to pin Vdda.
AnnaBridge 172:65be27845400 1547 * @note On this STM32 serie, calibration data of internal voltage reference
AnnaBridge 172:65be27845400 1548 * VrefInt corresponds to a resolution of 12 bits,
AnnaBridge 172:65be27845400 1549 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 172:65be27845400 1550 * internal voltage reference VrefInt.
AnnaBridge 172:65be27845400 1551 * Otherwise, this macro performs the processing to scale
AnnaBridge 172:65be27845400 1552 * ADC conversion data to 12 bits.
AnnaBridge 172:65be27845400 1553 * @param __VREFINT_ADC_DATA__ ADC conversion data (resolution 12 bits)
AnnaBridge 172:65be27845400 1554 * of internal voltage reference VrefInt (unit: digital value).
AnnaBridge 172:65be27845400 1555 * @param __ADC_RESOLUTION__ This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1556 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1557 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1558 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1559 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1560 * @retval Analog reference voltage (unit: mV)
AnnaBridge 172:65be27845400 1561 */
AnnaBridge 172:65be27845400 1562 #define __HAL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
AnnaBridge 172:65be27845400 1563 __ADC_RESOLUTION__) \
AnnaBridge 172:65be27845400 1564 __LL_ADC_CALC_VREFANALOG_VOLTAGE((__VREFINT_ADC_DATA__),\
AnnaBridge 172:65be27845400 1565 (__ADC_RESOLUTION__))
AnnaBridge 172:65be27845400 1566
AnnaBridge 172:65be27845400 1567 /**
AnnaBridge 172:65be27845400 1568 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 172:65be27845400 1569 * from ADC conversion data of internal temperature sensor.
AnnaBridge 172:65be27845400 1570 * @note Computation is using temperature sensor calibration values
AnnaBridge 172:65be27845400 1571 * stored in system memory for each device during production.
AnnaBridge 172:65be27845400 1572 * @note Calculation formula:
AnnaBridge 172:65be27845400 1573 * Temperature = ((TS_ADC_DATA - TS_CAL1)
AnnaBridge 172:65be27845400 1574 * * (TS_CAL2_TEMP - TS_CAL1_TEMP))
AnnaBridge 172:65be27845400 1575 * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP
AnnaBridge 172:65be27845400 1576 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 172:65be27845400 1577 * Avg_Slope = (TS_CAL2 - TS_CAL1)
AnnaBridge 172:65be27845400 1578 * / (TS_CAL2_TEMP - TS_CAL1_TEMP)
AnnaBridge 172:65be27845400 1579 * TS_CAL1 = equivalent TS_ADC_DATA at temperature
AnnaBridge 172:65be27845400 1580 * TEMP_DEGC_CAL1 (calibrated in factory)
AnnaBridge 172:65be27845400 1581 * TS_CAL2 = equivalent TS_ADC_DATA at temperature
AnnaBridge 172:65be27845400 1582 * TEMP_DEGC_CAL2 (calibrated in factory)
AnnaBridge 172:65be27845400 1583 * Caution: Calculation relevancy under reserve that calibration
AnnaBridge 172:65be27845400 1584 * parameters are correct (address and data).
AnnaBridge 172:65be27845400 1585 * To calculate temperature using temperature sensor
AnnaBridge 172:65be27845400 1586 * datasheet typical values (generic values less, therefore
AnnaBridge 172:65be27845400 1587 * less accurate than calibrated values),
AnnaBridge 172:65be27845400 1588 * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS().
AnnaBridge 172:65be27845400 1589 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 172:65be27845400 1590 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 172:65be27845400 1591 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 172:65be27845400 1592 * user board environment or can be calculated using ADC measurement
AnnaBridge 172:65be27845400 1593 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 172:65be27845400 1594 * @note On this STM32 serie, calibration data of temperature sensor
AnnaBridge 172:65be27845400 1595 * corresponds to a resolution of 12 bits,
AnnaBridge 172:65be27845400 1596 * this is the recommended ADC resolution to convert voltage of
AnnaBridge 172:65be27845400 1597 * temperature sensor.
AnnaBridge 172:65be27845400 1598 * Otherwise, this macro performs the processing to scale
AnnaBridge 172:65be27845400 1599 * ADC conversion data to 12 bits.
AnnaBridge 172:65be27845400 1600 * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV)
AnnaBridge 172:65be27845400 1601 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal
AnnaBridge 172:65be27845400 1602 * temperature sensor (unit: digital value).
AnnaBridge 172:65be27845400 1603 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature
AnnaBridge 172:65be27845400 1604 * sensor voltage has been measured.
AnnaBridge 172:65be27845400 1605 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1606 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1607 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1608 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1609 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1610 * @retval Temperature (unit: degree Celsius)
AnnaBridge 172:65be27845400 1611 */
AnnaBridge 172:65be27845400 1612 #define __HAL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
AnnaBridge 172:65be27845400 1613 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 172:65be27845400 1614 __ADC_RESOLUTION__) \
AnnaBridge 172:65be27845400 1615 __LL_ADC_CALC_TEMPERATURE((__VREFANALOG_VOLTAGE__),\
AnnaBridge 172:65be27845400 1616 (__TEMPSENSOR_ADC_DATA__),\
AnnaBridge 172:65be27845400 1617 (__ADC_RESOLUTION__))
AnnaBridge 172:65be27845400 1618
AnnaBridge 172:65be27845400 1619 /**
AnnaBridge 172:65be27845400 1620 * @brief Helper macro to calculate the temperature (unit: degree Celsius)
AnnaBridge 172:65be27845400 1621 * from ADC conversion data of internal temperature sensor.
AnnaBridge 172:65be27845400 1622 * @note Computation is using temperature sensor typical values
AnnaBridge 172:65be27845400 1623 * (refer to device datasheet).
AnnaBridge 172:65be27845400 1624 * @note Calculation formula:
AnnaBridge 172:65be27845400 1625 * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV)
AnnaBridge 172:65be27845400 1626 * / Avg_Slope + CALx_TEMP
AnnaBridge 172:65be27845400 1627 * with TS_ADC_DATA = temperature sensor raw data measured by ADC
AnnaBridge 172:65be27845400 1628 * (unit: digital value)
AnnaBridge 172:65be27845400 1629 * Avg_Slope = temperature sensor slope
AnnaBridge 172:65be27845400 1630 * (unit: uV/Degree Celsius)
AnnaBridge 172:65be27845400 1631 * TS_TYP_CALx_VOLT = temperature sensor digital value at
AnnaBridge 172:65be27845400 1632 * temperature CALx_TEMP (unit: mV)
AnnaBridge 172:65be27845400 1633 * Caution: Calculation relevancy under reserve the temperature sensor
AnnaBridge 172:65be27845400 1634 * of the current device has characteristics in line with
AnnaBridge 172:65be27845400 1635 * datasheet typical values.
AnnaBridge 172:65be27845400 1636 * If temperature sensor calibration values are available on
AnnaBridge 172:65be27845400 1637 * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()),
AnnaBridge 172:65be27845400 1638 * temperature calculation will be more accurate using
AnnaBridge 172:65be27845400 1639 * helper macro @ref __LL_ADC_CALC_TEMPERATURE().
AnnaBridge 172:65be27845400 1640 * @note As calculation input, the analog reference voltage (Vref+) must be
AnnaBridge 172:65be27845400 1641 * defined as it impacts the ADC LSB equivalent voltage.
AnnaBridge 172:65be27845400 1642 * @note Analog reference voltage (Vref+) must be either known from
AnnaBridge 172:65be27845400 1643 * user board environment or can be calculated using ADC measurement
AnnaBridge 172:65be27845400 1644 * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE().
AnnaBridge 172:65be27845400 1645 * @note ADC measurement data must correspond to a resolution of 12bits
AnnaBridge 172:65be27845400 1646 * (full scale digital value 4095). If not the case, the data must be
AnnaBridge 172:65be27845400 1647 * preliminarily rescaled to an equivalent resolution of 12 bits.
AnnaBridge 172:65be27845400 1648 * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data: Temperature sensor slope typical value (unit: uV/DegCelsius).
AnnaBridge 172:65be27845400 1649 * On STM32L4, refer to device datasheet parameter "Avg_Slope".
AnnaBridge 172:65be27845400 1650 * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data: Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit: mV).
AnnaBridge 172:65be27845400 1651 * On STM32L4, refer to device datasheet parameter "V30" (corresponding to TS_CAL1).
AnnaBridge 172:65be27845400 1652 * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data: Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit: mV)
AnnaBridge 172:65be27845400 1653 * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit: mV)
AnnaBridge 172:65be27845400 1654 * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit: digital value).
AnnaBridge 172:65be27845400 1655 * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured.
AnnaBridge 172:65be27845400 1656 * This parameter can be one of the following values:
AnnaBridge 172:65be27845400 1657 * @arg @ref ADC_RESOLUTION_12B
AnnaBridge 172:65be27845400 1658 * @arg @ref ADC_RESOLUTION_10B
AnnaBridge 172:65be27845400 1659 * @arg @ref ADC_RESOLUTION_8B
AnnaBridge 172:65be27845400 1660 * @arg @ref ADC_RESOLUTION_6B
AnnaBridge 172:65be27845400 1661 * @retval Temperature (unit: degree Celsius)
AnnaBridge 172:65be27845400 1662 */
AnnaBridge 172:65be27845400 1663 #define __HAL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\
AnnaBridge 172:65be27845400 1664 __TEMPSENSOR_TYP_CALX_V__,\
AnnaBridge 172:65be27845400 1665 __TEMPSENSOR_CALX_TEMP__,\
AnnaBridge 172:65be27845400 1666 __VREFANALOG_VOLTAGE__,\
AnnaBridge 172:65be27845400 1667 __TEMPSENSOR_ADC_DATA__,\
AnnaBridge 172:65be27845400 1668 __ADC_RESOLUTION__) \
AnnaBridge 172:65be27845400 1669 __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS((__TEMPSENSOR_TYP_AVGSLOPE__),\
AnnaBridge 172:65be27845400 1670 (__TEMPSENSOR_TYP_CALX_V__),\
AnnaBridge 172:65be27845400 1671 (__TEMPSENSOR_CALX_TEMP__),\
AnnaBridge 172:65be27845400 1672 (__VREFANALOG_VOLTAGE__),\
AnnaBridge 172:65be27845400 1673 (__TEMPSENSOR_ADC_DATA__),\
AnnaBridge 172:65be27845400 1674 (__ADC_RESOLUTION__))
AnnaBridge 172:65be27845400 1675
AnnaBridge 172:65be27845400 1676 /**
AnnaBridge 172:65be27845400 1677 * @}
AnnaBridge 172:65be27845400 1678 */
AnnaBridge 172:65be27845400 1679
AnnaBridge 172:65be27845400 1680 /**
AnnaBridge 172:65be27845400 1681 * @}
AnnaBridge 172:65be27845400 1682 */
AnnaBridge 172:65be27845400 1683
AnnaBridge 172:65be27845400 1684 /* Include ADC HAL Extended module */
AnnaBridge 172:65be27845400 1685 #include "stm32l4xx_hal_adc_ex.h"
AnnaBridge 172:65be27845400 1686
AnnaBridge 172:65be27845400 1687 /* Exported functions --------------------------------------------------------*/
AnnaBridge 172:65be27845400 1688 /** @addtogroup ADC_Exported_Functions
AnnaBridge 172:65be27845400 1689 * @{
AnnaBridge 172:65be27845400 1690 */
AnnaBridge 172:65be27845400 1691
AnnaBridge 172:65be27845400 1692 /** @addtogroup ADC_Exported_Functions_Group1
AnnaBridge 172:65be27845400 1693 * @brief Initialization and Configuration functions
AnnaBridge 172:65be27845400 1694 * @{
AnnaBridge 172:65be27845400 1695 */
AnnaBridge 172:65be27845400 1696 /* Initialization and de-initialization functions ****************************/
AnnaBridge 172:65be27845400 1697 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1698 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
AnnaBridge 172:65be27845400 1699 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1700 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1701 /**
AnnaBridge 172:65be27845400 1702 * @}
AnnaBridge 172:65be27845400 1703 */
AnnaBridge 172:65be27845400 1704
AnnaBridge 172:65be27845400 1705 /** @addtogroup ADC_Exported_Functions_Group2
AnnaBridge 172:65be27845400 1706 * @brief IO operation functions
AnnaBridge 172:65be27845400 1707 * @{
AnnaBridge 172:65be27845400 1708 */
AnnaBridge 172:65be27845400 1709 /* IO operation functions *****************************************************/
AnnaBridge 172:65be27845400 1710
AnnaBridge 172:65be27845400 1711 /* Blocking mode: Polling */
AnnaBridge 172:65be27845400 1712 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1713 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1714 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
AnnaBridge 172:65be27845400 1715 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
AnnaBridge 172:65be27845400 1716
AnnaBridge 172:65be27845400 1717 /* Non-blocking mode: Interruption */
AnnaBridge 172:65be27845400 1718 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1719 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1720
AnnaBridge 172:65be27845400 1721 /* Non-blocking mode: DMA */
AnnaBridge 172:65be27845400 1722 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
AnnaBridge 172:65be27845400 1723 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1724
AnnaBridge 172:65be27845400 1725 /* ADC retrieve conversion value intended to be used with polling or interruption */
AnnaBridge 172:65be27845400 1726 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1727
AnnaBridge 172:65be27845400 1728 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption and DMA) */
AnnaBridge 172:65be27845400 1729 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1730 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1731 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1732 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1733 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
AnnaBridge 172:65be27845400 1734 /**
AnnaBridge 172:65be27845400 1735 * @}
AnnaBridge 172:65be27845400 1736 */
AnnaBridge 172:65be27845400 1737
AnnaBridge 172:65be27845400 1738 /** @addtogroup ADC_Exported_Functions_Group3 Peripheral Control functions
AnnaBridge 172:65be27845400 1739 * @brief Peripheral Control functions
AnnaBridge 172:65be27845400 1740 * @{
AnnaBridge 172:65be27845400 1741 */
AnnaBridge 172:65be27845400 1742 /* Peripheral Control functions ***********************************************/
AnnaBridge 172:65be27845400 1743 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
AnnaBridge 172:65be27845400 1744 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
AnnaBridge 172:65be27845400 1745
AnnaBridge 172:65be27845400 1746 /**
AnnaBridge 172:65be27845400 1747 * @}
AnnaBridge 172:65be27845400 1748 */
AnnaBridge 172:65be27845400 1749
AnnaBridge 172:65be27845400 1750 /* Peripheral State functions *************************************************/
AnnaBridge 172:65be27845400 1751 /** @addtogroup ADC_Exported_Functions_Group4
AnnaBridge 172:65be27845400 1752 * @{
AnnaBridge 172:65be27845400 1753 */
AnnaBridge 172:65be27845400 1754 uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1755 uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
AnnaBridge 172:65be27845400 1756
AnnaBridge 172:65be27845400 1757 /**
AnnaBridge 172:65be27845400 1758 * @}
AnnaBridge 172:65be27845400 1759 */
AnnaBridge 172:65be27845400 1760
AnnaBridge 172:65be27845400 1761 /**
AnnaBridge 172:65be27845400 1762 * @}
AnnaBridge 172:65be27845400 1763 */
AnnaBridge 172:65be27845400 1764
AnnaBridge 172:65be27845400 1765 /* Private functions -----------------------------------------------------------*/
AnnaBridge 172:65be27845400 1766 /** @addtogroup ADC_Private_Functions ADC Private Functions
AnnaBridge 172:65be27845400 1767 * @{
AnnaBridge 172:65be27845400 1768 */
AnnaBridge 172:65be27845400 1769 HAL_StatusTypeDef ADC_ConversionStop(ADC_HandleTypeDef* hadc, uint32_t ConversionGroup);
AnnaBridge 172:65be27845400 1770 HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1771 HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef* hadc);
AnnaBridge 172:65be27845400 1772 void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma);
AnnaBridge 172:65be27845400 1773 void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma);
AnnaBridge 172:65be27845400 1774 void ADC_DMAError(DMA_HandleTypeDef *hdma);
AnnaBridge 172:65be27845400 1775
AnnaBridge 172:65be27845400 1776 /**
AnnaBridge 172:65be27845400 1777 * @}
AnnaBridge 172:65be27845400 1778 */
AnnaBridge 172:65be27845400 1779
AnnaBridge 172:65be27845400 1780 /**
AnnaBridge 172:65be27845400 1781 * @}
AnnaBridge 172:65be27845400 1782 */
AnnaBridge 172:65be27845400 1783
AnnaBridge 172:65be27845400 1784 /**
AnnaBridge 172:65be27845400 1785 * @}
AnnaBridge 172:65be27845400 1786 */
AnnaBridge 172:65be27845400 1787
AnnaBridge 172:65be27845400 1788 #ifdef __cplusplus
AnnaBridge 172:65be27845400 1789 }
AnnaBridge 172:65be27845400 1790 #endif
AnnaBridge 172:65be27845400 1791
AnnaBridge 172:65be27845400 1792
AnnaBridge 172:65be27845400 1793 #endif /* __STM32L4xx_HAL_ADC_H */
AnnaBridge 172:65be27845400 1794
AnnaBridge 172:65be27845400 1795 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/