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 Jun 21 17:31:38 2017 +0100
Revision:
145:64910690c574
Parent:
128:9bcdf88f62b0
Release 145 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 122:f9eeca106725 1 /**
Kojto 122:f9eeca106725 2 ******************************************************************************
Kojto 122:f9eeca106725 3 * @file stm32l4xx_hal_adc_ex.h
Kojto 122:f9eeca106725 4 * @author MCD Application Team
AnnaBridge 145:64910690c574 5 * @version V1.7.1
AnnaBridge 145:64910690c574 6 * @date 21-April-2017
Kojto 122:f9eeca106725 7 * @brief Header file of ADC HAL extended module.
Kojto 122:f9eeca106725 8 ******************************************************************************
Kojto 122:f9eeca106725 9 * @attention
Kojto 122:f9eeca106725 10 *
AnnaBridge 145:64910690c574 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
Kojto 122:f9eeca106725 12 *
Kojto 122:f9eeca106725 13 * Redistribution and use in source and binary forms, with or without modification,
Kojto 122:f9eeca106725 14 * are permitted provided that the following conditions are met:
Kojto 122:f9eeca106725 15 * 1. Redistributions of source code must retain the above copyright notice,
Kojto 122:f9eeca106725 16 * this list of conditions and the following disclaimer.
Kojto 122:f9eeca106725 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Kojto 122:f9eeca106725 18 * this list of conditions and the following disclaimer in the documentation
Kojto 122:f9eeca106725 19 * and/or other materials provided with the distribution.
Kojto 122:f9eeca106725 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Kojto 122:f9eeca106725 21 * may be used to endorse or promote products derived from this software
Kojto 122:f9eeca106725 22 * without specific prior written permission.
Kojto 122:f9eeca106725 23 *
Kojto 122:f9eeca106725 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Kojto 122:f9eeca106725 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Kojto 122:f9eeca106725 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Kojto 122:f9eeca106725 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Kojto 122:f9eeca106725 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Kojto 122:f9eeca106725 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Kojto 122:f9eeca106725 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Kojto 122:f9eeca106725 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Kojto 122:f9eeca106725 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Kojto 122:f9eeca106725 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 122:f9eeca106725 34 *
Kojto 122:f9eeca106725 35 ******************************************************************************
Kojto 122:f9eeca106725 36 */
Kojto 122:f9eeca106725 37
Kojto 122:f9eeca106725 38 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 145:64910690c574 39 #ifndef __STM32L4xx_HAL_ADC_EX_H
AnnaBridge 145:64910690c574 40 #define __STM32L4xx_HAL_ADC_EX_H
Kojto 122:f9eeca106725 41
Kojto 122:f9eeca106725 42 #ifdef __cplusplus
Kojto 122:f9eeca106725 43 extern "C" {
Kojto 122:f9eeca106725 44 #endif
Kojto 122:f9eeca106725 45
Kojto 122:f9eeca106725 46 /* Includes ------------------------------------------------------------------*/
Kojto 122:f9eeca106725 47 #include "stm32l4xx_hal_def.h"
Kojto 122:f9eeca106725 48
Kojto 122:f9eeca106725 49 /** @addtogroup STM32L4xx_HAL_Driver
Kojto 122:f9eeca106725 50 * @{
Kojto 122:f9eeca106725 51 */
Kojto 122:f9eeca106725 52
AnnaBridge 145:64910690c574 53 /** @addtogroup ADCEx
Kojto 122:f9eeca106725 54 * @{
Kojto 122:f9eeca106725 55 */
Kojto 122:f9eeca106725 56
Kojto 122:f9eeca106725 57 /* Exported types ------------------------------------------------------------*/
Kojto 122:f9eeca106725 58 /** @defgroup ADCEx_Exported_Types ADC Extended Exported Types
Kojto 122:f9eeca106725 59 * @{
Kojto 122:f9eeca106725 60 */
Kojto 122:f9eeca106725 61
Kojto 122:f9eeca106725 62 /**
AnnaBridge 145:64910690c574 63 * @brief ADC group injected contexts queue configuration
Kojto 122:f9eeca106725 64 */
Kojto 122:f9eeca106725 65 typedef struct
Kojto 122:f9eeca106725 66 {
AnnaBridge 145:64910690c574 67 uint32_t ContextQueue; /*!< Injected channel configuration context: build-up over each
AnnaBridge 145:64910690c574 68 HAL_ADCEx_InjectedConfigChannel() call to finally initialize
AnnaBridge 145:64910690c574 69 JSQR register at HAL_ADCEx_InjectedConfigChannel() last call */
Kojto 122:f9eeca106725 70
AnnaBridge 145:64910690c574 71 uint32_t ChannelCount; /*!< Number of channels in the injected sequence */
AnnaBridge 145:64910690c574 72 }ADC_InjectionConfigTypeDef;
Kojto 122:f9eeca106725 73
Kojto 122:f9eeca106725 74 /**
Kojto 122:f9eeca106725 75 * @brief ADC handle Structure definition
Kojto 122:f9eeca106725 76 */
Kojto 122:f9eeca106725 77 typedef struct
Kojto 122:f9eeca106725 78 {
Kojto 122:f9eeca106725 79 ADC_TypeDef *Instance; /*!< Register base address */
Kojto 122:f9eeca106725 80
Kojto 122:f9eeca106725 81 ADC_InitTypeDef Init; /*!< ADC initialization parameters and regular conversions setting */
Kojto 122:f9eeca106725 82
Kojto 122:f9eeca106725 83 DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */
Kojto 122:f9eeca106725 84
Kojto 122:f9eeca106725 85 HAL_LockTypeDef Lock; /*!< ADC locking object */
Kojto 122:f9eeca106725 86
Kojto 122:f9eeca106725 87 __IO uint32_t State; /*!< ADC communication state (bit-map of ADC states) */
Kojto 122:f9eeca106725 88
Kojto 122:f9eeca106725 89 __IO uint32_t ErrorCode; /*!< ADC Error code */
Kojto 122:f9eeca106725 90
Kojto 122:f9eeca106725 91 ADC_InjectionConfigTypeDef InjectionConfig ; /*!< ADC injected channel configuration build-up structure */
Kojto 122:f9eeca106725 92 }ADC_HandleTypeDef;
Kojto 122:f9eeca106725 93
Kojto 122:f9eeca106725 94 /**
Kojto 122:f9eeca106725 95 * @brief ADC Injected Conversion Oversampling structure definition
Kojto 122:f9eeca106725 96 */
Kojto 122:f9eeca106725 97 typedef struct
Kojto 122:f9eeca106725 98 {
Kojto 122:f9eeca106725 99 uint32_t Ratio; /*!< Configures the oversampling ratio.
Kojto 122:f9eeca106725 100 This parameter can be a value of @ref ADCEx_Oversampling_Ratio */
Kojto 122:f9eeca106725 101
Kojto 122:f9eeca106725 102 uint32_t RightBitShift; /*!< Configures the division coefficient for the Oversampler.
Kojto 122:f9eeca106725 103 This parameter can be a value of @ref ADCEx_Right_Bit_Shift */
Kojto 122:f9eeca106725 104 }ADC_InjOversamplingTypeDef;
Kojto 122:f9eeca106725 105
Kojto 122:f9eeca106725 106 /**
AnnaBridge 145:64910690c574 107 * @brief Structure definition of ADC group injected and ADC channel affected to ADC group injected
Kojto 122:f9eeca106725 108 * @note Parameters of this structure are shared within 2 scopes:
Kojto 122:f9eeca106725 109 * - Scope channel: InjectedChannel, InjectedRank, InjectedSamplingTime , InjectedSingleDiff, InjectedOffsetNumber, InjectedOffset
AnnaBridge 145:64910690c574 110 * - Scope ADC group injected (affects all channels of injected group): InjectedNbrOfConversion, InjectedDiscontinuousConvMode,
AnnaBridge 145:64910690c574 111 * AutoInjectedConv, QueueInjectedContext, ExternalTrigInjecConv, ExternalTrigInjecConvEdge, InjecOversamplingMode, InjecOversampling.
AnnaBridge 145:64910690c574 112 * @note The setting of these parameters by function HAL_ADCEx_InjectedConfigChannel() is conditioned to ADC state.
Kojto 122:f9eeca106725 113 * ADC state can be either:
Kojto 122:f9eeca106725 114 * - For all parameters: ADC disabled (this is the only possible ADC state to modify parameter 'InjectedSingleDiff')
Kojto 122:f9eeca106725 115 * - For parameters 'InjectedDiscontinuousConvMode', 'QueueInjectedContext', 'InjecOversampling': ADC enabled without conversion on going on injected group.
Kojto 122:f9eeca106725 116 * - For parameters 'InjectedSamplingTime', 'InjectedOffset', 'InjectedOffsetNumber', 'AutoInjectedConv': ADC enabled without conversion on going on regular and injected groups.
Kojto 122:f9eeca106725 117 * - For parameters 'InjectedChannel', 'InjectedRank', 'InjectedNbrOfConversion', 'ExternalTrigInjecConv', 'ExternalTrigInjecConvEdge': ADC enabled and while conversion on going
AnnaBridge 145:64910690c574 118 * on ADC groups regular and injected.
Kojto 122:f9eeca106725 119 * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed
AnnaBridge 145:64910690c574 120 * 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) on the fly).
Kojto 122:f9eeca106725 121 */
Kojto 122:f9eeca106725 122 typedef struct
Kojto 122:f9eeca106725 123 {
AnnaBridge 145:64910690c574 124 uint32_t InjectedChannel; /*!< Specifies the channel to configure into ADC group injected.
Kojto 122:f9eeca106725 125 This parameter can be a value of @ref ADC_channels
AnnaBridge 145:64910690c574 126 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 145:64910690c574 127
AnnaBridge 145:64910690c574 128 uint32_t InjectedRank; /*!< Specifies the rank in the ADC group injected sequencer.
Kojto 122:f9eeca106725 129 This parameter must be a value of @ref ADCEx_injected_rank.
Kojto 122:f9eeca106725 130 Note: to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by
AnnaBridge 145:64910690c574 131 the new channel setting (or parameter number of conversions adjusted) */
AnnaBridge 145:64910690c574 132
Kojto 122:f9eeca106725 133 uint32_t InjectedSamplingTime; /*!< Sampling time value to be set for the selected channel.
Kojto 122:f9eeca106725 134 Unit: ADC clock cycles.
AnnaBridge 145:64910690c574 135 Conversion time is the addition of sampling time and processing time
AnnaBridge 145:64910690c574 136 (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).
Kojto 122:f9eeca106725 137 This parameter can be a value of @ref ADC_sampling_times.
Kojto 122:f9eeca106725 138 Caution: This parameter applies to a channel that can be used in a regular and/or injected group.
Kojto 122:f9eeca106725 139 It overwrites the last setting.
Kojto 122:f9eeca106725 140 Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor),
AnnaBridge 145:64910690c574 141 sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting)
AnnaBridge 145:64910690c574 142 Refer to device datasheet for timings values. */
AnnaBridge 145:64910690c574 143
Kojto 122:f9eeca106725 144 uint32_t InjectedSingleDiff; /*!< Selection of single-ended or differential input.
Kojto 122:f9eeca106725 145 In differential mode: Differential measurement is between the selected channel 'i' (positive input) and channel 'i+1' (negative input).
Kojto 122:f9eeca106725 146 Only channel 'i' has to be configured, channel 'i+1' is configured automatically.
Kojto 122:f9eeca106725 147 This parameter must be a value of @ref ADCEx_SingleDifferential.
Kojto 122:f9eeca106725 148 Caution: This parameter applies to a channel that can be used in a regular and/or injected group.
Kojto 122:f9eeca106725 149 It overwrites the last setting.
Kojto 122:f9eeca106725 150 Note: Refer to Reference Manual to ensure the selected channel is available in differential mode.
Kojto 122:f9eeca106725 151 Note: When configuring a channel 'i' in differential mode, the channel 'i+1' is not usable separately.
Kojto 122:f9eeca106725 152 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 145:64910690c574 153 If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behavior in case
Kojto 122:f9eeca106725 154 of another parameter update on the fly) */
AnnaBridge 145:64910690c574 155
Kojto 122:f9eeca106725 156 uint32_t InjectedOffsetNumber; /*!< Selects the offset number.
Kojto 122:f9eeca106725 157 This parameter can be a value of @ref ADCEx_OffsetNumber.
Kojto 122:f9eeca106725 158 Caution: Only one offset is allowed per channel. This parameter overwrites the last setting. */
AnnaBridge 145:64910690c574 159
Kojto 122:f9eeca106725 160 uint32_t InjectedOffset; /*!< Defines the offset to be subtracted from the raw converted data.
Kojto 122:f9eeca106725 161 Offset value must be a positive number.
AnnaBridge 145:64910690c574 162 Depending of ADC resolution selected (12, 10, 8 or 6 bits), this parameter must be a number
AnnaBridge 145:64910690c574 163 between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively.
Kojto 122:f9eeca106725 164 Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled
Kojto 122:f9eeca106725 165 without continuous mode or external trigger that could launch a conversion). */
AnnaBridge 145:64910690c574 166
AnnaBridge 145:64910690c574 167 uint32_t InjectedNbrOfConversion; /*!< Specifies the number of ranks that will be converted within the ADC group injected sequencer.
Kojto 122:f9eeca106725 168 To use the injected group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled.
Kojto 122:f9eeca106725 169 This parameter must be a number between Min_Data = 1 and Max_Data = 4.
Kojto 122:f9eeca106725 170 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
Kojto 122:f9eeca106725 171 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 145:64910690c574 172
AnnaBridge 145:64910690c574 173 uint32_t InjectedDiscontinuousConvMode; /*!< Specifies whether the conversions sequence of ADC group injected is performed in Complete-sequence/Discontinuous-sequence
AnnaBridge 145:64910690c574 174 (main sequence subdivided in successive parts).
Kojto 122:f9eeca106725 175 Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded.
Kojto 122:f9eeca106725 176 Discontinuous mode can be enabled only if continuous mode is disabled.
Kojto 122:f9eeca106725 177 This parameter can be set to ENABLE or DISABLE.
Kojto 122:f9eeca106725 178 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion).
AnnaBridge 145:64910690c574 179 Note: For injected group, discontinuous mode converts the sequence channel by channel (discontinuous length fixed to 1 rank).
Kojto 122:f9eeca106725 180 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
Kojto 122:f9eeca106725 181 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 145:64910690c574 182
AnnaBridge 145:64910690c574 183 uint32_t AutoInjectedConv; /*!< Enables or disables the selected ADC group injected automatic conversion after regular one
Kojto 122:f9eeca106725 184 This parameter can be set to ENABLE or DISABLE.
Kojto 122:f9eeca106725 185 Note: To use Automatic injected conversion, discontinuous mode must be disabled ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' set to DISABLE)
AnnaBridge 145:64910690c574 186 Note: To use Automatic injected conversion, injected group external triggers must be disabled ('ExternalTrigInjecConv' set to ADC_INJECTED_SOFTWARE_START)
Kojto 122:f9eeca106725 187 Note: In case of DMA used with regular group: if DMA configured in normal mode (single shot) JAUTO will be stopped upon DMA transfer complete.
Kojto 122:f9eeca106725 188 To maintain JAUTO always enabled, DMA must be configured in circular mode.
Kojto 122:f9eeca106725 189 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
Kojto 122:f9eeca106725 190 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 145:64910690c574 191
Kojto 122:f9eeca106725 192 uint32_t QueueInjectedContext; /*!< Specifies whether the context queue feature is enabled.
Kojto 122:f9eeca106725 193 This parameter can be set to ENABLE or DISABLE.
Kojto 122:f9eeca106725 194 If context queue is enabled, injected sequencer&channels configurations are queued on up to 2 contexts. If a
Kojto 122:f9eeca106725 195 new injected context is set when queue is full, error is triggered by interruption and through function
Kojto 122:f9eeca106725 196 'HAL_ADCEx_InjectedQueueOverflowCallback'.
Kojto 122:f9eeca106725 197 Caution: This feature request that the sequence is fully configured before injected conversion start.
Kojto 122:f9eeca106725 198 Therefore, configure channels with as many calls to HAL_ADCEx_InjectedConfigChannel() as the 'InjectedNbrOfConversion' parameter.
Kojto 122:f9eeca106725 199 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
Kojto 122:f9eeca106725 200 configure a channel on injected group can impact the configuration of other channels previously set.
Kojto 122:f9eeca106725 201 Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion). */
AnnaBridge 145:64910690c574 202
Kojto 122:f9eeca106725 203 uint32_t ExternalTrigInjecConv; /*!< Selects the external event used to trigger the conversion start of injected group.
Kojto 122:f9eeca106725 204 If set to ADC_INJECTED_SOFTWARE_START, external triggers are disabled and software trigger is used instead.
AnnaBridge 145:64910690c574 205 This parameter can be a value of @ref ADC_injected_external_trigger_source.
Kojto 122:f9eeca106725 206 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
Kojto 122:f9eeca106725 207 configure a channel on injected group can impact the configuration of other channels previously set. */
AnnaBridge 145:64910690c574 208
Kojto 122:f9eeca106725 209 uint32_t ExternalTrigInjecConvEdge; /*!< Selects the external trigger edge of injected group.
AnnaBridge 145:64910690c574 210 This parameter can be a value of @ref ADC_injected_external_trigger_edge.
AnnaBridge 145:64910690c574 211 If trigger source is set to ADC_INJECTED_SOFTWARE_START, this parameter is discarded.
Kojto 122:f9eeca106725 212 Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to
Kojto 122:f9eeca106725 213 configure a channel on injected group can impact the configuration of other channels previously set. */
Kojto 122:f9eeca106725 214
Kojto 122:f9eeca106725 215 uint32_t InjecOversamplingMode; /*!< Specifies whether the oversampling feature is enabled or disabled.
Kojto 122:f9eeca106725 216 This parameter can be set to ENABLE or DISABLE.
Kojto 122:f9eeca106725 217 Note: This parameter can be modified only if there is no conversion is ongoing (both ADSTART and JADSTART cleared). */
Kojto 122:f9eeca106725 218
Kojto 122:f9eeca106725 219 ADC_InjOversamplingTypeDef InjecOversampling; /*!< Specifies the Oversampling parameters.
Kojto 122:f9eeca106725 220 Caution: this setting overwrites the previous oversampling configuration if oversampling already enabled.
Kojto 122:f9eeca106725 221 Note: This parameter can be modified only if there is no conversion is ongoing (both ADSTART and JADSTART cleared). */
Kojto 122:f9eeca106725 222 }ADC_InjectionConfTypeDef;
Kojto 122:f9eeca106725 223
Kojto 122:f9eeca106725 224
AnnaBridge 145:64910690c574 225 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 226 /**
Kojto 122:f9eeca106725 227 * @brief Structure definition of ADC multimode
Kojto 122:f9eeca106725 228 * @note The setting of these parameters by function HAL_ADCEx_MultiModeConfigChannel() is conditioned by ADCs state (both Master and Slave ADCs).
Kojto 122:f9eeca106725 229 * Both Master and Slave ADCs must be disabled.
Kojto 122:f9eeca106725 230 */
Kojto 122:f9eeca106725 231 typedef struct
Kojto 122:f9eeca106725 232 {
Kojto 122:f9eeca106725 233 uint32_t Mode; /*!< Configures the ADC to operate in independent or multimode.
Kojto 122:f9eeca106725 234 This parameter can be a value of @ref ADCEx_Common_mode. */
AnnaBridge 145:64910690c574 235
Kojto 122:f9eeca106725 236 uint32_t DMAAccessMode; /*!< Configures the DMA mode for multimode ADC:
Kojto 122:f9eeca106725 237 selection whether 2 DMA channels (each ADC uses its own DMA channel) or 1 DMA channel (one DMA channel for both ADC, DMA of ADC master)
Kojto 122:f9eeca106725 238 This parameter can be a value of @ref ADCEx_Direct_memory_access_mode_for_multimode. */
AnnaBridge 145:64910690c574 239
Kojto 122:f9eeca106725 240 uint32_t TwoSamplingDelay; /*!< Configures the Delay between 2 sampling phases.
Kojto 122:f9eeca106725 241 This parameter can be a value of @ref ADCEx_delay_between_2_sampling_phases.
Kojto 122:f9eeca106725 242 Delay range depends on selected resolution:
Kojto 122:f9eeca106725 243 from 1 to 12 clock cycles for 12 bits, from 1 to 10 clock cycles for 10 bits,
Kojto 122:f9eeca106725 244 from 1 to 8 clock cycles for 8 bits, from 1 to 6 clock cycles for 6 bits. */
Kojto 122:f9eeca106725 245 }ADC_MultiModeTypeDef;
AnnaBridge 145:64910690c574 246 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 247
Kojto 122:f9eeca106725 248 /**
Kojto 122:f9eeca106725 249 * @}
Kojto 122:f9eeca106725 250 */
Kojto 122:f9eeca106725 251
Kojto 122:f9eeca106725 252 /* Exported constants --------------------------------------------------------*/
Kojto 122:f9eeca106725 253
Kojto 122:f9eeca106725 254 /** @defgroup ADCEx_Exported_Constants ADC Extended Exported Constants
Kojto 122:f9eeca106725 255 * @{
Kojto 122:f9eeca106725 256 */
Kojto 122:f9eeca106725 257
AnnaBridge 145:64910690c574 258 /** @defgroup ADC_injected_external_trigger_source ADC group injected trigger source
AnnaBridge 145:64910690c574 259 * @{
AnnaBridge 145:64910690c574 260 */
AnnaBridge 145:64910690c574 261 /* ADC group regular trigger sources for all ADC instances */
AnnaBridge 145:64910690c574 262 #define ADC_EXTERNALTRIGINJEC_T1_TRGO ((uint32_t)0x00000000) /*!< Event 0 triggers injected group conversion start */
AnnaBridge 145:64910690c574 263 #define ADC_EXTERNALTRIGINJEC_T1_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_0) /*!< Event 1 triggers injected group conversion start */
AnnaBridge 145:64910690c574 264 #define ADC_EXTERNALTRIGINJEC_T2_TRGO ((uint32_t)ADC_JSQR_JEXTSEL_1) /*!< Event 2 triggers injected group conversion start */
AnnaBridge 145:64910690c574 265 #define ADC_EXTERNALTRIGINJEC_T2_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0)) /*!< Event 3 triggers injected group conversion start */
AnnaBridge 145:64910690c574 266 #define ADC_EXTERNALTRIGINJEC_T3_CC4 ((uint32_t)ADC_JSQR_JEXTSEL_2) /*!< Event 4 triggers injected group conversion start */
AnnaBridge 145:64910690c574 267 #define ADC_EXTERNALTRIGINJEC_T4_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0)) /*!< Event 5 triggers injected group conversion start */
AnnaBridge 145:64910690c574 268 #define ADC_EXTERNALTRIGINJEC_EXT_IT15 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1)) /*!< Event 6 triggers injected group conversion start */
AnnaBridge 145:64910690c574 269 #define ADC_EXTERNALTRIGINJEC_T8_CC4 ((uint32_t)(ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0)) /*!< Event 7 triggers injected group conversion start */
AnnaBridge 145:64910690c574 270 #define ADC_EXTERNALTRIGINJEC_T1_TRGO2 ((uint32_t)ADC_JSQR_JEXTSEL_3) /*!< Event 8 triggers injected group conversion start */
AnnaBridge 145:64910690c574 271 #define ADC_EXTERNALTRIGINJEC_T8_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0)) /*!< Event 9 triggers injected group conversion start */
AnnaBridge 145:64910690c574 272 #define ADC_EXTERNALTRIGINJEC_T8_TRGO2 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1)) /*!< Event 10 triggers injected group conversion start */
AnnaBridge 145:64910690c574 273 #define ADC_EXTERNALTRIGINJEC_T3_CC3 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0)) /*!< Event 11 triggers injected group conversion start */
AnnaBridge 145:64910690c574 274 #define ADC_EXTERNALTRIGINJEC_T3_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2)) /*!< Event 12 triggers injected group conversion start */
AnnaBridge 145:64910690c574 275 #define ADC_EXTERNALTRIGINJEC_T3_CC1 ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0)) /*!< Event 13 triggers injected group conversion start */
AnnaBridge 145:64910690c574 276 #define ADC_EXTERNALTRIGINJEC_T6_TRGO ((uint32_t)(ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1)) /*!< Event 14 triggers injected group conversion start */
AnnaBridge 145:64910690c574 277 #define ADC_EXTERNALTRIGINJEC_T15_TRGO ((uint32_t)ADC_JSQR_JEXTSEL) /*!< Event 15 triggers injected group conversion start */
AnnaBridge 145:64910690c574 278 #define ADC_INJECTED_SOFTWARE_START ((uint32_t)0x00000001) /*!< Software triggers injected group conversion start */
AnnaBridge 145:64910690c574 279 /**
AnnaBridge 145:64910690c574 280 * @}
AnnaBridge 145:64910690c574 281 */
AnnaBridge 145:64910690c574 282
AnnaBridge 145:64910690c574 283 /** @defgroup ADC_injected_external_trigger_edge ADC group injected trigger edge (when external trigger is selected)
AnnaBridge 145:64910690c574 284 * @{
AnnaBridge 145:64910690c574 285 */
AnnaBridge 145:64910690c574 286 #define ADC_EXTERNALTRIGINJECCONV_EDGE_NONE ((uint32_t)0x00000000) /*!< Injected conversions hardware trigger detection disabled */
AnnaBridge 145:64910690c574 287 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISING ((uint32_t)ADC_JSQR_JEXTEN_0) /*!< Injected conversions hardware trigger detection on the rising edge */
AnnaBridge 145:64910690c574 288 #define ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING ((uint32_t)ADC_JSQR_JEXTEN_1) /*!< Injected conversions hardware trigger detection on the falling edge */
AnnaBridge 145:64910690c574 289 #define ADC_EXTERNALTRIGINJECCONV_EDGE_RISINGFALLING ((uint32_t)ADC_JSQR_JEXTEN) /*!< Injected conversions hardware trigger detection on both the rising and falling edges */
AnnaBridge 145:64910690c574 290 /**
AnnaBridge 145:64910690c574 291 * @}
AnnaBridge 145:64910690c574 292 */
AnnaBridge 145:64910690c574 293
Kojto 122:f9eeca106725 294 /** @defgroup ADCEx_SingleDifferential ADC Extended Single-ended/Differential input mode
Kojto 122:f9eeca106725 295 * @{
Kojto 122:f9eeca106725 296 */
Kojto 122:f9eeca106725 297 #define ADC_SINGLE_ENDED ((uint32_t)0x00000000) /*!< ADC channel set in single-ended input mode */
Kojto 122:f9eeca106725 298 #define ADC_DIFFERENTIAL_ENDED ((uint32_t)ADC_CR_ADCALDIF) /*!< ADC channel set in differential mode */
Kojto 122:f9eeca106725 299 /**
Kojto 122:f9eeca106725 300 * @}
Kojto 122:f9eeca106725 301 */
Kojto 122:f9eeca106725 302
Kojto 122:f9eeca106725 303 /** @defgroup ADCEx_OffsetNumber ADC Extended Offset Number
Kojto 122:f9eeca106725 304 * @{
Kojto 122:f9eeca106725 305 */
Kojto 122:f9eeca106725 306 #define ADC_OFFSET_NONE ((uint32_t)0x00) /*!< No offset correction */
Kojto 122:f9eeca106725 307 #define ADC_OFFSET_1 ((uint32_t)0x01) /*!< Offset correction to apply to a first channel */
Kojto 122:f9eeca106725 308 #define ADC_OFFSET_2 ((uint32_t)0x02) /*!< Offset correction to apply to a second channel */
Kojto 122:f9eeca106725 309 #define ADC_OFFSET_3 ((uint32_t)0x03) /*!< Offset correction to apply to a third channel */
Kojto 122:f9eeca106725 310 #define ADC_OFFSET_4 ((uint32_t)0x04) /*!< Offset correction to apply to a fourth channel */
Kojto 122:f9eeca106725 311 /**
Kojto 122:f9eeca106725 312 * @}
Kojto 122:f9eeca106725 313 */
Kojto 122:f9eeca106725 314
Kojto 122:f9eeca106725 315 /** @defgroup ADCEx_injected_rank ADC Extended Injected Channel Rank
Kojto 122:f9eeca106725 316 * @{
Kojto 122:f9eeca106725 317 */
Kojto 122:f9eeca106725 318 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001) /*!< ADC injected conversion rank 1 */
Kojto 122:f9eeca106725 319 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002) /*!< ADC injected conversion rank 2 */
Kojto 122:f9eeca106725 320 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003) /*!< ADC injected conversion rank 3 */
Kojto 122:f9eeca106725 321 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004) /*!< ADC injected conversion rank 4 */
Kojto 122:f9eeca106725 322 /**
Kojto 122:f9eeca106725 323 * @}
Kojto 122:f9eeca106725 324 */
Kojto 122:f9eeca106725 325
AnnaBridge 145:64910690c574 326 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 327 /** @defgroup ADCEx_Common_mode ADC Extended multimode dual mode
Kojto 122:f9eeca106725 328 * @{
Kojto 122:f9eeca106725 329 */
Kojto 122:f9eeca106725 330 #define ADC_MODE_INDEPENDENT ((uint32_t)(0x00000000)) /*!< Independent ADC conversions mode */
Kojto 122:f9eeca106725 331 #define ADC_DUALMODE_REGSIMULT_INJECSIMULT ((uint32_t)(ADC_CCR_DUAL_0)) /*!< Combined regular simultaneous + injected simultaneous mode */
Kojto 122:f9eeca106725 332 #define ADC_DUALMODE_REGSIMULT_ALTERTRIG ((uint32_t)(ADC_CCR_DUAL_1)) /*!< Combined regular simultaneous + alternate trigger mode */
Kojto 122:f9eeca106725 333 #define ADC_DUALMODE_REGINTERL_INJECSIMULT ((uint32_t)(ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0)) /*!< Combined Interleaved mode + injected simultaneous mode */
Kojto 122:f9eeca106725 334 #define ADC_DUALMODE_INJECSIMULT ((uint32_t)(ADC_CCR_DUAL_2 | ADC_CCR_DUAL_0)) /*!< Injected simultaneous mode only */
Kojto 122:f9eeca106725 335 #define ADC_DUALMODE_REGSIMULT ((uint32_t)(ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1)) /*!< Regular simultaneous mode only */
Kojto 122:f9eeca106725 336 #define ADC_DUALMODE_INTERL ((uint32_t)(ADC_CCR_DUAL_2 | ADC_CCR_DUAL_1 | ADC_CCR_DUAL_0)) /*!< Interleaved mode only */
Kojto 122:f9eeca106725 337 #define ADC_DUALMODE_ALTERTRIG ((uint32_t)(ADC_CCR_DUAL_3 | ADC_CCR_DUAL_0)) /*!< Alternate trigger mode only */
Kojto 122:f9eeca106725 338 /**
Kojto 122:f9eeca106725 339 * @}
Kojto 122:f9eeca106725 340 */
Kojto 122:f9eeca106725 341
AnnaBridge 145:64910690c574 342 /** @defgroup ADCEx_Direct_memory_access_mode_for_multimode ADC Extended DMA mode for multimode
Kojto 122:f9eeca106725 343 * @{
Kojto 122:f9eeca106725 344 */
Kojto 122:f9eeca106725 345 #define ADC_DMAACCESSMODE_DISABLED ((uint32_t)0x00000000) /*!< DMA multimode disabled: each ADC uses its own DMA channel */
Kojto 122:f9eeca106725 346 #define ADC_DMAACCESSMODE_12_10_BITS ((uint32_t)ADC_CCR_MDMA_1) /*!< DMA multimode enabled (one DMA channel for both ADC, DMA of ADC master) for 12 and 10 bits resolution */
Kojto 122:f9eeca106725 347 #define ADC_DMAACCESSMODE_8_6_BITS ((uint32_t)ADC_CCR_MDMA) /*!< DMA multimode enabled (one DMA channel for both ADC, DMA of ADC master) for 8 and 6 bits resolution */
Kojto 122:f9eeca106725 348 /**
Kojto 122:f9eeca106725 349 * @}
Kojto 122:f9eeca106725 350 */
Kojto 122:f9eeca106725 351
AnnaBridge 145:64910690c574 352 /** @defgroup ADCEx_delay_between_2_sampling_phases ADC Extended delay between 2 sampling phases
Kojto 122:f9eeca106725 353 * @{
Kojto 122:f9eeca106725 354 */
Kojto 122:f9eeca106725 355 #define ADC_TWOSAMPLINGDELAY_1CYCLE ((uint32_t)(0x00000000)) /*!< 1 ADC clock cycle delay */
Kojto 122:f9eeca106725 356 #define ADC_TWOSAMPLINGDELAY_2CYCLES ((uint32_t)(ADC_CCR_DELAY_0)) /*!< 2 ADC clock cycles delay */
Kojto 122:f9eeca106725 357 #define ADC_TWOSAMPLINGDELAY_3CYCLES ((uint32_t)(ADC_CCR_DELAY_1)) /*!< 3 ADC clock cycles delay */
Kojto 122:f9eeca106725 358 #define ADC_TWOSAMPLINGDELAY_4CYCLES ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) /*!< 4 ADC clock cycles delay */
Kojto 122:f9eeca106725 359 #define ADC_TWOSAMPLINGDELAY_5CYCLES ((uint32_t)(ADC_CCR_DELAY_2)) /*!< 5 ADC clock cycles delay */
Kojto 122:f9eeca106725 360 #define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0)) /*!< 6 ADC clock cycles delay */
Kojto 122:f9eeca106725 361 #define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1)) /*!< 7 ADC clock cycles delay (lower for non 12-bit resolution) */
Kojto 122:f9eeca106725 362 #define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) /*!< 8 ADC clock cycles delay (lower for non 12-bit resolution) */
Kojto 122:f9eeca106725 363 #define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)(ADC_CCR_DELAY_3)) /*!< 9 ADC clock cycles delay (lower for non 12-bit resolution) */
Kojto 122:f9eeca106725 364 #define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0)) /*!< 10 ADC clock cycles delay (lower for non 12-bit resolution) */
Kojto 122:f9eeca106725 365 #define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1)) /*!< 11 ADC clock cycles delay (lower for non 12-bit resolution) */
Kojto 122:f9eeca106725 366 #define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) /*!< 12 ADC clock cycles delay (lower for non 12-bit resolution) */
Kojto 122:f9eeca106725 367 /**
Kojto 122:f9eeca106725 368 * @}
Kojto 122:f9eeca106725 369 */
AnnaBridge 145:64910690c574 370 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 371 /** @defgroup ADCEx_Common_mode ADC Extended Independent ADC Mode
Kojto 122:f9eeca106725 372 * @{
Kojto 122:f9eeca106725 373 */
Kojto 122:f9eeca106725 374 #define ADC_MODE_INDEPENDENT ((uint32_t)(0x00000000)) /*!< Independent ADC conversions mode */
Kojto 122:f9eeca106725 375 /**
Kojto 122:f9eeca106725 376 * @}
Kojto 122:f9eeca106725 377 */
Kojto 122:f9eeca106725 378
AnnaBridge 145:64910690c574 379 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 380
Kojto 122:f9eeca106725 381 /** @defgroup ADCEx_analog_watchdog_number ADC Extended Analog Watchdog Selection
Kojto 122:f9eeca106725 382 * @{
Kojto 122:f9eeca106725 383 */
Kojto 122:f9eeca106725 384 #define ADC_ANALOGWATCHDOG_1 ((uint32_t)0x00000001) /*!< Analog watchdog 1 selection */
Kojto 122:f9eeca106725 385 #define ADC_ANALOGWATCHDOG_2 ((uint32_t)0x00000002) /*!< Analog watchdog 2 selection */
Kojto 122:f9eeca106725 386 #define ADC_ANALOGWATCHDOG_3 ((uint32_t)0x00000003) /*!< Analog watchdog 3 selection */
Kojto 122:f9eeca106725 387 /**
Kojto 122:f9eeca106725 388 * @}
Kojto 122:f9eeca106725 389 */
Kojto 122:f9eeca106725 390
Kojto 122:f9eeca106725 391 /** @defgroup ADCEx_analog_watchdog_mode ADC Extended Analog Watchdog Mode
Kojto 122:f9eeca106725 392 * @{
Kojto 122:f9eeca106725 393 */
Kojto 122:f9eeca106725 394 #define ADC_ANALOGWATCHDOG_NONE ((uint32_t) 0x00000000) /*!< No analog watchdog selected */
Kojto 122:f9eeca106725 395 #define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN)) /*!< Analog watchdog applied to a regular group single channel */
Kojto 122:f9eeca106725 396 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_JAWD1EN)) /*!< Analog watchdog applied to an injected group single channel */
Kojto 122:f9eeca106725 397 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CFGR_AWD1SGL | ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN)) /*!< Analog watchdog applied to a regular and injected groups single channel */
Kojto 122:f9eeca106725 398 #define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t) ADC_CFGR_AWD1EN) /*!< Analog watchdog applied to regular group all channels */
Kojto 122:f9eeca106725 399 #define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t) ADC_CFGR_JAWD1EN) /*!< Analog watchdog applied to injected group all channels */
Kojto 122:f9eeca106725 400 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CFGR_AWD1EN | ADC_CFGR_JAWD1EN)) /*!< Analog watchdog applied to regular and injected groups all channels */
Kojto 122:f9eeca106725 401 /**
Kojto 122:f9eeca106725 402 * @}
Kojto 122:f9eeca106725 403 */
Kojto 122:f9eeca106725 404
Kojto 122:f9eeca106725 405 /** @defgroup ADCEx_conversion_group ADC Extended Conversion Group
Kojto 122:f9eeca106725 406 * @{
Kojto 122:f9eeca106725 407 */
Kojto 122:f9eeca106725 408 #define ADC_REGULAR_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_EOS)) /*!< ADC regular group selection */
Kojto 122:f9eeca106725 409 #define ADC_INJECTED_GROUP ((uint32_t)(ADC_FLAG_JEOC | ADC_FLAG_JEOS)) /*!< ADC injected group selection */
Kojto 122:f9eeca106725 410 #define ADC_REGULAR_INJECTED_GROUP ((uint32_t)(ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS)) /*!< ADC regular and injected groups selection */
Kojto 122:f9eeca106725 411 /**
Kojto 122:f9eeca106725 412 * @}
Kojto 122:f9eeca106725 413 */
Kojto 122:f9eeca106725 414
Kojto 122:f9eeca106725 415 /** @defgroup ADCEx_Event_type ADC Extended Event Type
Kojto 122:f9eeca106725 416 * @{
Kojto 122:f9eeca106725 417 */
Kojto 122:f9eeca106725 418 #define ADC_EOSMP_EVENT ((uint32_t)ADC_FLAG_EOSMP) /*!< ADC End of Sampling event */
AnnaBridge 145:64910690c574 419 #define ADC_AWD1_EVENT ((uint32_t)ADC_FLAG_AWD1) /*!< ADC Analog watchdog 1 event (main analog watchdog, present on all STM32 series) */
AnnaBridge 145:64910690c574 420 #define ADC_AWD2_EVENT ((uint32_t)ADC_FLAG_AWD2) /*!< ADC Analog watchdog 2 event (additional analog watchdog, not present on all STM32 series) */
AnnaBridge 145:64910690c574 421 #define ADC_AWD3_EVENT ((uint32_t)ADC_FLAG_AWD3) /*!< ADC Analog watchdog 3 event (additional analog watchdog, not present on all STM32 series) */
Kojto 122:f9eeca106725 422 #define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR) /*!< ADC overrun event */
Kojto 122:f9eeca106725 423 #define ADC_JQOVF_EVENT ((uint32_t)ADC_FLAG_JQOVF) /*!< ADC Injected Context Queue Overflow event */
Kojto 122:f9eeca106725 424 /**
Kojto 122:f9eeca106725 425 * @}
Kojto 122:f9eeca106725 426 */
AnnaBridge 145:64910690c574 427 #define ADC_AWD_EVENT ADC_AWD1_EVENT /*!< ADC Analog watchdog 1 event: Naming for compatibility with other STM32 devices having only one analog watchdog */
Kojto 122:f9eeca106725 428
Kojto 122:f9eeca106725 429 /** @defgroup ADCEx_interrupts_definition ADC Extended Interrupts Definition
Kojto 122:f9eeca106725 430 * @{
Kojto 122:f9eeca106725 431 */
Kojto 122:f9eeca106725 432 #define ADC_IT_RDY ADC_IER_ADRDY /*!< ADC Ready (ADRDY) interrupt source */
Kojto 122:f9eeca106725 433 #define ADC_IT_EOSMP ADC_IER_EOSMP /*!< ADC End of sampling interrupt source */
Kojto 122:f9eeca106725 434 #define ADC_IT_EOC ADC_IER_EOC /*!< ADC End of regular conversion interrupt source */
Kojto 122:f9eeca106725 435 #define ADC_IT_EOS ADC_IER_EOS /*!< ADC End of regular sequence of conversions interrupt source */
Kojto 122:f9eeca106725 436 #define ADC_IT_OVR ADC_IER_OVR /*!< ADC overrun interrupt source */
Kojto 122:f9eeca106725 437 #define ADC_IT_JEOC ADC_IER_JEOC /*!< ADC End of injected conversion interrupt source */
Kojto 122:f9eeca106725 438 #define ADC_IT_JEOS ADC_IER_JEOS /*!< ADC End of injected sequence of conversions interrupt source */
Kojto 122:f9eeca106725 439 #define ADC_IT_AWD1 ADC_IER_AWD1 /*!< ADC Analog watchdog 1 interrupt source (main analog watchdog) */
Kojto 122:f9eeca106725 440 #define ADC_IT_AWD2 ADC_IER_AWD2 /*!< ADC Analog watchdog 2 interrupt source (additional analog watchdog) */
Kojto 122:f9eeca106725 441 #define ADC_IT_AWD3 ADC_IER_AWD3 /*!< ADC Analog watchdog 3 interrupt source (additional analog watchdog) */
Kojto 122:f9eeca106725 442 #define ADC_IT_JQOVF ADC_IER_JQOVF /*!< ADC Injected Context Queue Overflow interrupt source */
Kojto 122:f9eeca106725 443
Kojto 122:f9eeca106725 444 #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 */
Kojto 122:f9eeca106725 445
Kojto 122:f9eeca106725 446 /**
Kojto 122:f9eeca106725 447 * @}
Kojto 122:f9eeca106725 448 */
Kojto 122:f9eeca106725 449
Kojto 122:f9eeca106725 450 /** @defgroup ADCEx_flags_definition ADC Extended Flags Definition
Kojto 122:f9eeca106725 451 * @{
Kojto 122:f9eeca106725 452 */
Kojto 122:f9eeca106725 453 #define ADC_FLAG_RDY ADC_ISR_ADRDY /*!< ADC Ready (ADRDY) flag */
Kojto 122:f9eeca106725 454 #define ADC_FLAG_EOSMP ADC_ISR_EOSMP /*!< ADC End of Sampling flag */
Kojto 122:f9eeca106725 455 #define ADC_FLAG_EOC ADC_ISR_EOC /*!< ADC End of Regular Conversion flag */
Kojto 122:f9eeca106725 456 #define ADC_FLAG_EOS ADC_ISR_EOS /*!< ADC End of Regular sequence of Conversions flag */
Kojto 122:f9eeca106725 457 #define ADC_FLAG_OVR ADC_ISR_OVR /*!< ADC overrun flag */
Kojto 122:f9eeca106725 458 #define ADC_FLAG_JEOC ADC_ISR_JEOC /*!< ADC End of Injected Conversion flag */
Kojto 122:f9eeca106725 459 #define ADC_FLAG_JEOS ADC_ISR_JEOS /*!< ADC End of Injected sequence of Conversions flag */
Kojto 122:f9eeca106725 460 #define ADC_FLAG_AWD1 ADC_ISR_AWD1 /*!< ADC Analog watchdog 1 flag (main analog watchdog) */
Kojto 122:f9eeca106725 461 #define ADC_FLAG_AWD2 ADC_ISR_AWD2 /*!< ADC Analog watchdog 2 flag (additional analog watchdog) */
Kojto 122:f9eeca106725 462 #define ADC_FLAG_AWD3 ADC_ISR_AWD3 /*!< ADC Analog watchdog 3 flag (additional analog watchdog) */
Kojto 122:f9eeca106725 463 #define ADC_FLAG_JQOVF ADC_ISR_JQOVF /*!< ADC Injected Context Queue Overflow flag */
Kojto 122:f9eeca106725 464
Kojto 122:f9eeca106725 465 #define ADC_FLAG_AWD ADC_FLAG_AWD1 /*!< ADC Analog watchdog 1 flag: Naming for compatibility with other STM32 devices having only one analog watchdog */
Kojto 122:f9eeca106725 466
Kojto 122:f9eeca106725 467 #define ADC_FLAG_ALL (ADC_FLAG_RDY | ADC_FLAG_EOSMP | ADC_FLAG_EOC | ADC_FLAG_EOS | \
Kojto 122:f9eeca106725 468 ADC_FLAG_JEOC | ADC_FLAG_JEOS | ADC_FLAG_OVR | ADC_FLAG_AWD1 | \
Kojto 122:f9eeca106725 469 ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | ADC_FLAG_JQOVF) /*!< ADC all flags */
Kojto 122:f9eeca106725 470
Kojto 122:f9eeca106725 471 /* Combination of all post-conversion flags bits: EOC/EOS, JEOC/JEOS, OVR, AWDx, JQOVF */
Kojto 122:f9eeca106725 472 #define ADC_FLAG_POSTCONV_ALL (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_JEOC | ADC_FLAG_JEOS | \
Kojto 122:f9eeca106725 473 ADC_FLAG_OVR | ADC_FLAG_AWD1 | ADC_FLAG_AWD2 | ADC_FLAG_AWD3 | \
Kojto 122:f9eeca106725 474 ADC_FLAG_JQOVF) /*!< ADC post-conversion all flags */
Kojto 122:f9eeca106725 475
Kojto 122:f9eeca106725 476 /**
Kojto 122:f9eeca106725 477 * @}
Kojto 122:f9eeca106725 478 */
Kojto 122:f9eeca106725 479
Kojto 122:f9eeca106725 480
Kojto 122:f9eeca106725 481 /** @defgroup ADCEx_injected_rank ADC Extended Injected Channel Rank
Kojto 122:f9eeca106725 482 * @{
Kojto 122:f9eeca106725 483 */
Kojto 122:f9eeca106725 484 #define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001) /*!< ADC injected conversion rank 1 */
Kojto 122:f9eeca106725 485 #define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002) /*!< ADC injected conversion rank 2 */
Kojto 122:f9eeca106725 486 #define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003) /*!< ADC injected conversion rank 3 */
Kojto 122:f9eeca106725 487 #define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004) /*!< ADC injected conversion rank 4 */
Kojto 122:f9eeca106725 488 /**
Kojto 122:f9eeca106725 489 * @}
Kojto 122:f9eeca106725 490 */
Kojto 122:f9eeca106725 491
Kojto 122:f9eeca106725 492
Kojto 122:f9eeca106725 493
Kojto 122:f9eeca106725 494 /** @defgroup ADCEx_Oversampling_Ratio ADC Extended Oversampling Ratio
Kojto 122:f9eeca106725 495 * @{
Kojto 122:f9eeca106725 496 */
Kojto 122:f9eeca106725 497
Kojto 122:f9eeca106725 498 #define ADC_OVERSAMPLING_RATIO_2 ((uint32_t)0x00000000) /*!< ADC Oversampling ratio 2x */
Kojto 122:f9eeca106725 499 #define ADC_OVERSAMPLING_RATIO_4 ((uint32_t)ADC_CFGR2_OVSR_0) /*!< ADC Oversampling ratio 4x */
Kojto 122:f9eeca106725 500 #define ADC_OVERSAMPLING_RATIO_8 ((uint32_t)ADC_CFGR2_OVSR_1) /*!< ADC Oversampling ratio 8x */
Kojto 122:f9eeca106725 501 #define ADC_OVERSAMPLING_RATIO_16 ((uint32_t)(ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSR_0)) /*!< ADC Oversampling ratio 16x */
Kojto 122:f9eeca106725 502 #define ADC_OVERSAMPLING_RATIO_32 ((uint32_t)ADC_CFGR2_OVSR_2) /*!< ADC Oversampling ratio 32x */
Kojto 122:f9eeca106725 503 #define ADC_OVERSAMPLING_RATIO_64 ((uint32_t)(ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_0)) /*!< ADC Oversampling ratio 64x */
Kojto 122:f9eeca106725 504 #define ADC_OVERSAMPLING_RATIO_128 ((uint32_t)(ADC_CFGR2_OVSR_2 | ADC_CFGR2_OVSR_1)) /*!< ADC Oversampling ratio 128x */
Kojto 122:f9eeca106725 505 #define ADC_OVERSAMPLING_RATIO_256 ((uint32_t)(ADC_CFGR2_OVSR)) /*!< ADC Oversampling ratio 256x */
Kojto 122:f9eeca106725 506 /**
Kojto 122:f9eeca106725 507 * @}
Kojto 122:f9eeca106725 508 */
Kojto 122:f9eeca106725 509
Kojto 122:f9eeca106725 510 /** @defgroup ADCEx_Right_Bit_Shift ADC Extended Oversampling Right Shift
Kojto 122:f9eeca106725 511 * @{
Kojto 122:f9eeca106725 512 */
Kojto 122:f9eeca106725 513 #define ADC_RIGHTBITSHIFT_NONE ((uint32_t)0x00000000) /*!< ADC No bit shift for oversampling */
Kojto 122:f9eeca106725 514 #define ADC_RIGHTBITSHIFT_1 ((uint32_t)ADC_CFGR2_OVSS_0) /*!< ADC 1 bit shift for oversampling */
Kojto 122:f9eeca106725 515 #define ADC_RIGHTBITSHIFT_2 ((uint32_t)ADC_CFGR2_OVSS_1) /*!< ADC 2 bits shift for oversampling */
Kojto 122:f9eeca106725 516 #define ADC_RIGHTBITSHIFT_3 ((uint32_t)(ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0)) /*!< ADC 3 bits shift for oversampling */
Kojto 122:f9eeca106725 517 #define ADC_RIGHTBITSHIFT_4 ((uint32_t)ADC_CFGR2_OVSS_2) /*!< ADC 4 bits shift for oversampling */
Kojto 122:f9eeca106725 518 #define ADC_RIGHTBITSHIFT_5 ((uint32_t)(ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_0)) /*!< ADC 5 bits shift for oversampling */
Kojto 122:f9eeca106725 519 #define ADC_RIGHTBITSHIFT_6 ((uint32_t)(ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_1)) /*!< ADC 6 bits shift for oversampling */
Kojto 122:f9eeca106725 520 #define ADC_RIGHTBITSHIFT_7 ((uint32_t)(ADC_CFGR2_OVSS_2 | ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0)) /*!< ADC 7 bits shift for oversampling */
Kojto 122:f9eeca106725 521 #define ADC_RIGHTBITSHIFT_8 ((uint32_t)ADC_CFGR2_OVSS_3) /*!< ADC 8 bits shift for oversampling */
Kojto 122:f9eeca106725 522 /**
Kojto 122:f9eeca106725 523 * @}
Kojto 122:f9eeca106725 524 */
Kojto 122:f9eeca106725 525
Kojto 122:f9eeca106725 526 /** @defgroup ADCEx_Triggered_Oversampling_Mode ADC Extended Triggered Regular Oversampling
Kojto 122:f9eeca106725 527 * @{
Kojto 122:f9eeca106725 528 */
Kojto 122:f9eeca106725 529 #define ADC_TRIGGEREDMODE_SINGLE_TRIGGER ((uint32_t)0x00000000) /*!< A single trigger for all channel oversampled conversions */
Kojto 122:f9eeca106725 530 #define ADC_TRIGGEREDMODE_MULTI_TRIGGER ((uint32_t)ADC_CFGR2_TROVS) /*!< A trigger for each oversampled conversion */
Kojto 122:f9eeca106725 531 /**
Kojto 122:f9eeca106725 532 * @}
Kojto 122:f9eeca106725 533 */
Kojto 122:f9eeca106725 534
Kojto 122:f9eeca106725 535 /** @defgroup ADCEx_Regular_Oversampling_Mode ADC Extended Regular Oversampling Continued or Resumed Mode
Kojto 122:f9eeca106725 536 * @{
Kojto 122:f9eeca106725 537 */
Kojto 122:f9eeca106725 538 #define ADC_REGOVERSAMPLING_CONTINUED_MODE ((uint32_t)0x00000000) /*!< Oversampling buffer maintained during injection sequence */
Kojto 122:f9eeca106725 539 #define ADC_REGOVERSAMPLING_RESUMED_MODE ((uint32_t)ADC_CFGR2_ROVSM) /*!< Oversampling buffer zeroed during injection sequence */
Kojto 122:f9eeca106725 540 /**
Kojto 122:f9eeca106725 541 * @}
Kojto 122:f9eeca106725 542 */
Kojto 122:f9eeca106725 543
Kojto 122:f9eeca106725 544 /** @defgroup ADC_sampling_times ADC Sampling Times
Kojto 122:f9eeca106725 545 * @{
Kojto 122:f9eeca106725 546 */
Kojto 122:f9eeca106725 547 #define ADC_SAMPLETIME_2CYCLES_5 ((uint32_t)0x00000000) /*!< Sampling time 2.5 ADC clock cycle */
AnnaBridge 145:64910690c574 548 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 549 #define ADC_SAMPLETIME_3CYCLES_5 ((uint32_t)ADC_SMPR1_SMPPLUS) /*!< Sampling time 3.5 ADC clock cycles. If selected, this sampling time
AnnaBridge 145:64910690c574 550 replaces all sampling time 2.5 ADC clock cycles. These 2 sampling
AnnaBridge 145:64910690c574 551 times cannot be used simultaneously. */
AnnaBridge 145:64910690c574 552 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
Kojto 122:f9eeca106725 553 #define ADC_SAMPLETIME_6CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_0) /*!< Sampling time 6.5 ADC clock cycles */
Kojto 122:f9eeca106725 554 #define ADC_SAMPLETIME_12CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_1) /*!< Sampling time 12.5 ADC clock cycles */
Kojto 122:f9eeca106725 555 #define ADC_SAMPLETIME_24CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_1 | ADC_SMPR2_SMP10_0)) /*!< Sampling time 24.5 ADC clock cycles */
Kojto 122:f9eeca106725 556 #define ADC_SAMPLETIME_47CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10_2) /*!< Sampling time 47.5 ADC clock cycles */
Kojto 122:f9eeca106725 557 #define ADC_SAMPLETIME_92CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_0)) /*!< Sampling time 92.5 ADC clock cycles */
Kojto 122:f9eeca106725 558 #define ADC_SAMPLETIME_247CYCLES_5 ((uint32_t)(ADC_SMPR2_SMP10_2 | ADC_SMPR2_SMP10_1)) /*!< Sampling time 247.5 ADC clock cycles */
Kojto 122:f9eeca106725 559 #define ADC_SAMPLETIME_640CYCLES_5 ((uint32_t)ADC_SMPR2_SMP10) /*!< Sampling time 640.5 ADC clock cycles */
Kojto 122:f9eeca106725 560 /**
Kojto 122:f9eeca106725 561 * @}
Kojto 122:f9eeca106725 562 */
Kojto 122:f9eeca106725 563
Kojto 122:f9eeca106725 564 /** @defgroup ADC_CFGR_fields ADCx CFGR fields
Kojto 122:f9eeca106725 565 * @{
Kojto 122:f9eeca106725 566 */
AnnaBridge 145:64910690c574 567 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 568 #define ADC_CFGR_FIELDS (ADC_CFGR_AWD1CH | ADC_CFGR_JAUTO | ADC_CFGR_JAWD1EN |\
AnnaBridge 145:64910690c574 569 ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL | ADC_CFGR_JQM |\
AnnaBridge 145:64910690c574 570 ADC_CFGR_JDISCEN | ADC_CFGR_DISCNUM | ADC_CFGR_DISCEN |\
AnnaBridge 145:64910690c574 571 ADC_CFGR_AUTDLY | ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\
AnnaBridge 145:64910690c574 572 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL | ADC_CFGR_ALIGN |\
AnnaBridge 145:64910690c574 573 ADC_CFGR_RES | ADC_CFGR_DFSDMCFG | ADC_CFGR_DMACFG | ADC_CFGR_DMAEN)
AnnaBridge 145:64910690c574 574 #else
Kojto 122:f9eeca106725 575 #define ADC_CFGR_FIELDS (ADC_CFGR_AWD1CH | ADC_CFGR_JAUTO | ADC_CFGR_JAWD1EN |\
Kojto 122:f9eeca106725 576 ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL | ADC_CFGR_JQM |\
Kojto 122:f9eeca106725 577 ADC_CFGR_JDISCEN | ADC_CFGR_DISCNUM | ADC_CFGR_DISCEN |\
Kojto 122:f9eeca106725 578 ADC_CFGR_AUTDLY | ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\
Kojto 122:f9eeca106725 579 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL | ADC_CFGR_ALIGN |\
Kojto 122:f9eeca106725 580 ADC_CFGR_RES | ADC_CFGR_DMACFG | ADC_CFGR_DMAEN )
AnnaBridge 145:64910690c574 581 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
Kojto 122:f9eeca106725 582 /**
Kojto 122:f9eeca106725 583 * @}
Kojto 122:f9eeca106725 584 */
Kojto 122:f9eeca106725 585
Kojto 122:f9eeca106725 586 /** @defgroup ADC_SMPR1_fields ADCx SMPR1 fields
Kojto 122:f9eeca106725 587 * @{
Kojto 122:f9eeca106725 588 */
AnnaBridge 145:64910690c574 589 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 590 #define ADC_SMPR1_FIELDS (ADC_SMPR1_SMP9 | ADC_SMPR1_SMP8 | ADC_SMPR1_SMP7 |\
AnnaBridge 145:64910690c574 591 ADC_SMPR1_SMP6 | ADC_SMPR1_SMP5 | ADC_SMPR1_SMP4 |\
AnnaBridge 145:64910690c574 592 ADC_SMPR1_SMP3 | ADC_SMPR1_SMP2 | ADC_SMPR1_SMP1 |\
AnnaBridge 145:64910690c574 593 ADC_SMPR1_SMP0 | ADC_SMPR1_SMPPLUS)
AnnaBridge 145:64910690c574 594 #else
Kojto 122:f9eeca106725 595 #define ADC_SMPR1_FIELDS (ADC_SMPR1_SMP9 | ADC_SMPR1_SMP8 | ADC_SMPR1_SMP7 |\
Kojto 122:f9eeca106725 596 ADC_SMPR1_SMP6 | ADC_SMPR1_SMP5 | ADC_SMPR1_SMP4 |\
Kojto 122:f9eeca106725 597 ADC_SMPR1_SMP3 | ADC_SMPR1_SMP2 | ADC_SMPR1_SMP1 |\
Kojto 122:f9eeca106725 598 ADC_SMPR1_SMP0)
AnnaBridge 145:64910690c574 599 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
Kojto 122:f9eeca106725 600 /**
Kojto 122:f9eeca106725 601 * @}
Kojto 122:f9eeca106725 602 */
Kojto 122:f9eeca106725 603
Kojto 122:f9eeca106725 604 /** @defgroup ADC_CFGR_fields_2 ADCx CFGR sub fields
Kojto 122:f9eeca106725 605 * @{
Kojto 122:f9eeca106725 606 */
Kojto 122:f9eeca106725 607 /* ADC_CFGR fields of parameters that can be updated when no conversion
Kojto 122:f9eeca106725 608 (neither regular nor injected) is on-going */
AnnaBridge 145:64910690c574 609 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 610 #define ADC_CFGR_FIELDS_2 ((uint32_t)(ADC_CFGR_DMACFG | ADC_CFGR_AUTDLY | ADC_CFGR_DFSDMCFG))
AnnaBridge 145:64910690c574 611 #else
Kojto 122:f9eeca106725 612 #define ADC_CFGR_FIELDS_2 ((uint32_t)(ADC_CFGR_DMACFG | ADC_CFGR_AUTDLY))
AnnaBridge 145:64910690c574 613 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
Kojto 122:f9eeca106725 614 /**
Kojto 122:f9eeca106725 615 * @}
Kojto 122:f9eeca106725 616 */
Kojto 122:f9eeca106725 617
AnnaBridge 145:64910690c574 618 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 619 /** @defgroup ADCEx_DFSDM_Mode_Configuration ADC Extended DFSDM mode configuration
AnnaBridge 145:64910690c574 620 * @{
AnnaBridge 145:64910690c574 621 */
AnnaBridge 145:64910690c574 622 #define ADC_DFSDM_MODE_DISABLE ((uint32_t)0x00000000) /*!< DFSDM mode configuration disabled */
AnnaBridge 145:64910690c574 623 #define ADC_DFSDM_MODE_ENABLE ((uint32_t)ADC_CFGR_DFSDMCFG) /*!< DFSDM mode configuration enabled */
AnnaBridge 145:64910690c574 624 /**
AnnaBridge 145:64910690c574 625 * @}
AnnaBridge 145:64910690c574 626 */
AnnaBridge 145:64910690c574 627 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
AnnaBridge 145:64910690c574 628
Kojto 122:f9eeca106725 629 /**
Kojto 122:f9eeca106725 630 * @}
Kojto 122:f9eeca106725 631 */
Kojto 122:f9eeca106725 632
AnnaBridge 145:64910690c574 633 /* Exported macros -----------------------------------------------------------*/
Kojto 122:f9eeca106725 634
AnnaBridge 145:64910690c574 635 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 636 /** @defgroup ADCEx_Exported_Macro ADC Extended Exported Macros
AnnaBridge 145:64910690c574 637 * @{
AnnaBridge 145:64910690c574 638 */
AnnaBridge 145:64910690c574 639
AnnaBridge 145:64910690c574 640 /** @brief Force ADC instance in multimode mode independant (multimode disable).
AnnaBridge 145:64910690c574 641 * @note This macro must be used only in case of transition from multimode
AnnaBridge 145:64910690c574 642 * to mode independent and in case of unknown previous state,
AnnaBridge 145:64910690c574 643 * to ensure ADC configuration is in mode independent.
AnnaBridge 145:64910690c574 644 * @note Standard way of multimode configuration change is done from
AnnaBridge 145:64910690c574 645 * HAL ADC handle of ADC master using function
AnnaBridge 145:64910690c574 646 * "HAL_ADCEx_MultiModeConfigChannel(..., ADC_MODE_INDEPENDENT)" )".
AnnaBridge 145:64910690c574 647 * Usage of this macro is not the Standard way of multimode
AnnaBridge 145:64910690c574 648 * configuration and can lead to have HAL ADC handles status
AnnaBridge 145:64910690c574 649 * misaligned. Usage of this macro must be limited to cases
AnnaBridge 145:64910690c574 650 * mentionned above.
AnnaBridge 145:64910690c574 651 * @param __HANDLE__: ADC handle.
AnnaBridge 145:64910690c574 652 * @retval None
AnnaBridge 145:64910690c574 653 */
AnnaBridge 145:64910690c574 654 #define ADC_FORCE_MODE_INDEPENDENT(__HANDLE__) \
AnnaBridge 145:64910690c574 655 CLEAR_BIT(ADC_COMMON_REGISTER(__HANDLE__)->CCR, ADC_CCR_DUAL)
AnnaBridge 145:64910690c574 656
AnnaBridge 145:64910690c574 657 /**
AnnaBridge 145:64910690c574 658 * @}
AnnaBridge 145:64910690c574 659 */
AnnaBridge 145:64910690c574 660 #endif
Kojto 122:f9eeca106725 661
Kojto 122:f9eeca106725 662 /* Private macros -----------------------------------------------------------*/
Kojto 122:f9eeca106725 663
Kojto 122:f9eeca106725 664 /** @defgroup ADCEx_Private_Macro_internal_HAL_driver ADC Extended Private Macros
Kojto 122:f9eeca106725 665 * @{
Kojto 122:f9eeca106725 666 */
Kojto 122:f9eeca106725 667
Kojto 122:f9eeca106725 668 /**
Kojto 122:f9eeca106725 669 * @brief Test if conversion trigger of injected group is software start
Kojto 122:f9eeca106725 670 * or external trigger.
Kojto 122:f9eeca106725 671 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 672 * @retval SET (software start) or RESET (external trigger).
Kojto 122:f9eeca106725 673 */
Kojto 122:f9eeca106725 674 #define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \
Kojto 122:f9eeca106725 675 (((__HANDLE__)->Instance->JSQR & ADC_JSQR_JEXTEN) == RESET)
Kojto 122:f9eeca106725 676
Kojto 122:f9eeca106725 677 /**
Kojto 122:f9eeca106725 678 * @brief Check if conversion is on going on regular or injected groups.
Kojto 122:f9eeca106725 679 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 680 * @retval SET (conversion is on going) or RESET (no conversion is on going).
Kojto 122:f9eeca106725 681 */
Kojto 122:f9eeca106725 682 #define ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED(__HANDLE__) \
Kojto 122:f9eeca106725 683 (( (((__HANDLE__)->Instance->CR) & (ADC_CR_ADSTART | ADC_CR_JADSTART)) == RESET \
Kojto 122:f9eeca106725 684 ) ? RESET : SET)
Kojto 122:f9eeca106725 685
Kojto 122:f9eeca106725 686 /**
Kojto 122:f9eeca106725 687 * @brief Check if conversion is on going on injected group.
Kojto 122:f9eeca106725 688 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 689 * @retval SET (conversion is on going) or RESET (no conversion is on going).
Kojto 122:f9eeca106725 690 */
Kojto 122:f9eeca106725 691 #define ADC_IS_CONVERSION_ONGOING_INJECTED(__HANDLE__) \
Kojto 122:f9eeca106725 692 (( (((__HANDLE__)->Instance->CR) & ADC_CR_JADSTART) == RESET \
Kojto 122:f9eeca106725 693 ) ? RESET : SET)
Kojto 122:f9eeca106725 694
Kojto 122:f9eeca106725 695 /**
Kojto 122:f9eeca106725 696 * @brief Check whether or not ADC is independent.
Kojto 122:f9eeca106725 697 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 698 * @note When multimode feature is not available, the macro always returns SET.
Kojto 122:f9eeca106725 699 * @retval SET (ADC is independent) or RESET (ADC is not).
Kojto 122:f9eeca106725 700 */
AnnaBridge 145:64910690c574 701 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 702 #define ADC_IS_INDEPENDENT(__HANDLE__) \
Kojto 122:f9eeca106725 703 ( ( ( ((__HANDLE__)->Instance) == ADC3) \
Kojto 122:f9eeca106725 704 )? \
Kojto 122:f9eeca106725 705 SET \
Kojto 122:f9eeca106725 706 : \
Kojto 122:f9eeca106725 707 RESET \
Kojto 122:f9eeca106725 708 )
AnnaBridge 145:64910690c574 709 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 710 #define ADC_IS_INDEPENDENT(__HANDLE__) (SET)
Kojto 122:f9eeca106725 711 #endif
Kojto 122:f9eeca106725 712
Kojto 122:f9eeca106725 713 /**
Kojto 122:f9eeca106725 714 * @brief Set the sample time for Channels numbers between 0 and 9.
Kojto 122:f9eeca106725 715 * @param __SAMPLETIME__: Sample time parameter.
Kojto 122:f9eeca106725 716 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 717 * @retval None
Kojto 122:f9eeca106725 718 */
Kojto 122:f9eeca106725 719 #define ADC_SMPR1(__SAMPLETIME__, __CHANNELNB__) ((__SAMPLETIME__) << (POSITION_VAL(ADC_SMPR1_SMP1) * (__CHANNELNB__)))
Kojto 122:f9eeca106725 720
Kojto 122:f9eeca106725 721 /**
Kojto 122:f9eeca106725 722 * @brief Set the sample time for Channels numbers between 10 and 18.
Kojto 122:f9eeca106725 723 * @param __SAMPLETIME__: Sample time parameter.
Kojto 122:f9eeca106725 724 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 725 * @retval None
Kojto 122:f9eeca106725 726 */
Kojto 122:f9eeca106725 727 #define ADC_SMPR2(__SAMPLETIME__, __CHANNELNB__) ((__SAMPLETIME__) << ((POSITION_VAL(ADC_SMPR2_SMP11) * ((__CHANNELNB__) - 10))))
Kojto 122:f9eeca106725 728
Kojto 122:f9eeca106725 729 /**
Kojto 122:f9eeca106725 730 * @brief Write SMPR1 register.
Kojto 122:f9eeca106725 731 * @param __HANDLE__ : ADC handle.
Kojto 122:f9eeca106725 732 * @param __SAMPLETIME__: Sample time parameter.
Kojto 122:f9eeca106725 733 * @param __CHANNELNB__ : Channel number.
Kojto 122:f9eeca106725 734 * @retval None
Kojto 122:f9eeca106725 735 */
AnnaBridge 145:64910690c574 736 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 737 #define ADC_SMPR1_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
AnnaBridge 145:64910690c574 738 do { \
AnnaBridge 145:64910690c574 739 if((__SAMPLETIME__) == ADC_SAMPLETIME_3CYCLES_5) \
AnnaBridge 145:64910690c574 740 { \
AnnaBridge 145:64910690c574 741 SET_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 145:64910690c574 742 } \
AnnaBridge 145:64910690c574 743 else if ((__SAMPLETIME__) == ADC_SAMPLETIME_2CYCLES_5) \
AnnaBridge 145:64910690c574 744 { \
AnnaBridge 145:64910690c574 745 CLEAR_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 145:64910690c574 746 } \
AnnaBridge 145:64910690c574 747 MODIFY_REG((__HANDLE__)->Instance->SMPR1, \
AnnaBridge 145:64910690c574 748 ADC_SMPR1(ADC_SMPR1_SMP0, (__CHANNELNB__)), \
AnnaBridge 145:64910690c574 749 ADC_SMPR1((__SAMPLETIME__) & 0x7FFFFFFF, (__CHANNELNB__))); \
AnnaBridge 145:64910690c574 750 } while(0)
AnnaBridge 145:64910690c574 751 #else
Kojto 122:f9eeca106725 752 #define ADC_SMPR1_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
Kojto 122:f9eeca106725 753 MODIFY_REG((__HANDLE__)->Instance->SMPR1, \
Kojto 122:f9eeca106725 754 ADC_SMPR1(ADC_SMPR1_SMP0, (__CHANNELNB__)), \
Kojto 122:f9eeca106725 755 ADC_SMPR1((__SAMPLETIME__), (__CHANNELNB__)))
AnnaBridge 145:64910690c574 756 #endif
Kojto 122:f9eeca106725 757
Kojto 122:f9eeca106725 758 /**
Kojto 122:f9eeca106725 759 * @brief Write SMPR2 register.
Kojto 122:f9eeca106725 760 * @param __HANDLE__ : ADC handle.
Kojto 122:f9eeca106725 761 * @param __SAMPLETIME__: Sample time parameter.
Kojto 122:f9eeca106725 762 * @param __CHANNELNB__ : Channel number.
Kojto 122:f9eeca106725 763 * @retval None
Kojto 122:f9eeca106725 764 */
AnnaBridge 145:64910690c574 765 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 766 #define ADC_SMPR2_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
AnnaBridge 145:64910690c574 767 do { \
AnnaBridge 145:64910690c574 768 if((__SAMPLETIME__) == ADC_SAMPLETIME_3CYCLES_5) \
AnnaBridge 145:64910690c574 769 { \
AnnaBridge 145:64910690c574 770 SET_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 145:64910690c574 771 } \
AnnaBridge 145:64910690c574 772 else if ((__SAMPLETIME__) == ADC_SAMPLETIME_2CYCLES_5) \
AnnaBridge 145:64910690c574 773 { \
AnnaBridge 145:64910690c574 774 CLEAR_BIT((__HANDLE__)->Instance->SMPR1, ADC_SMPR1_SMPPLUS); \
AnnaBridge 145:64910690c574 775 } \
AnnaBridge 145:64910690c574 776 MODIFY_REG((__HANDLE__)->Instance->SMPR2, \
AnnaBridge 145:64910690c574 777 ADC_SMPR2(ADC_SMPR2_SMP10, (__CHANNELNB__)), \
AnnaBridge 145:64910690c574 778 ADC_SMPR2((__SAMPLETIME__) & 0x7FFFFFFF, (__CHANNELNB__))); \
AnnaBridge 145:64910690c574 779 } while(0)
AnnaBridge 145:64910690c574 780 #else
Kojto 122:f9eeca106725 781 #define ADC_SMPR2_SETTING(__HANDLE__, __SAMPLETIME__, __CHANNELNB__) \
Kojto 122:f9eeca106725 782 MODIFY_REG((__HANDLE__)->Instance->SMPR2, \
Kojto 122:f9eeca106725 783 ADC_SMPR2(ADC_SMPR2_SMP10, (__CHANNELNB__)), \
Kojto 122:f9eeca106725 784 ADC_SMPR2((__SAMPLETIME__), (__CHANNELNB__)))
AnnaBridge 145:64910690c574 785 #endif
Kojto 122:f9eeca106725 786
Kojto 122:f9eeca106725 787
Kojto 122:f9eeca106725 788 /**
Kojto 122:f9eeca106725 789 * @brief Set the selected regular Channel rank for rank between 1 and 4.
Kojto 122:f9eeca106725 790 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 791 * @param __RANKNB__: Rank number.
Kojto 122:f9eeca106725 792 * @retval None
Kojto 122:f9eeca106725 793 */
Kojto 122:f9eeca106725 794 #define ADC_SQR1_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR1_SQ1) * (__RANKNB__)))
Kojto 122:f9eeca106725 795
Kojto 122:f9eeca106725 796 /**
Kojto 122:f9eeca106725 797 * @brief Set the selected regular Channel rank for rank between 5 and 9.
Kojto 122:f9eeca106725 798 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 799 * @param __RANKNB__: Rank number.
Kojto 122:f9eeca106725 800 * @retval None
Kojto 122:f9eeca106725 801 */
Kojto 122:f9eeca106725 802 #define ADC_SQR2_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR2_SQ6) * ((__RANKNB__) - 5)))
Kojto 122:f9eeca106725 803
Kojto 122:f9eeca106725 804 /**
Kojto 122:f9eeca106725 805 * @brief Set the selected regular Channel rank for rank between 10 and 14.
Kojto 122:f9eeca106725 806 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 807 * @param __RANKNB__: Rank number.
Kojto 122:f9eeca106725 808 * @retval None
Kojto 122:f9eeca106725 809 */
Kojto 122:f9eeca106725 810 #define ADC_SQR3_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR3_SQ11) * ((__RANKNB__) - 10)))
Kojto 122:f9eeca106725 811
Kojto 122:f9eeca106725 812 /**
Kojto 122:f9eeca106725 813 * @brief Set the selected regular Channel rank for rank between 15 and 16.
Kojto 122:f9eeca106725 814 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 815 * @param __RANKNB__: Rank number.
Kojto 122:f9eeca106725 816 * @retval None
Kojto 122:f9eeca106725 817 */
Kojto 122:f9eeca106725 818 #define ADC_SQR4_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << (POSITION_VAL(ADC_SQR4_SQ16) * ((__RANKNB__) - 15)))
Kojto 122:f9eeca106725 819
Kojto 122:f9eeca106725 820 /**
Kojto 122:f9eeca106725 821 * @brief Set the selected injected Channel rank.
Kojto 122:f9eeca106725 822 * @param __CHANNELNB__: Channel number.
Kojto 122:f9eeca106725 823 * @param __RANKNB__: Rank number.
Kojto 122:f9eeca106725 824 * @retval None
Kojto 122:f9eeca106725 825 */
Kojto 122:f9eeca106725 826 #define ADC_JSQR_RK(__CHANNELNB__, __RANKNB__) ((__CHANNELNB__) << ((POSITION_VAL(ADC_JSQR_JSQ1)-2) * (__RANKNB__) +2))
Kojto 122:f9eeca106725 827
Kojto 122:f9eeca106725 828
Kojto 122:f9eeca106725 829 /**
Kojto 122:f9eeca106725 830 * @brief Set the Analog Watchdog 1 channel.
Kojto 122:f9eeca106725 831 * @param __CHANNEL__: channel to be monitored by Analog Watchdog 1.
Kojto 122:f9eeca106725 832 * @retval None
Kojto 122:f9eeca106725 833 */
Kojto 122:f9eeca106725 834 #define ADC_CFGR_SET_AWD1CH(__CHANNEL__) ((__CHANNEL__) << POSITION_VAL(ADC_CFGR_AWD1CH))
Kojto 122:f9eeca106725 835
Kojto 122:f9eeca106725 836 /**
Kojto 122:f9eeca106725 837 * @brief Configure the channel number in Analog Watchdog 2 or 3.
Kojto 122:f9eeca106725 838 * @param __CHANNEL__: ADC Channel
Kojto 122:f9eeca106725 839 * @retval None
Kojto 122:f9eeca106725 840 */
Kojto 122:f9eeca106725 841 #define ADC_CFGR_SET_AWD23CR(__CHANNEL__) (1U << (__CHANNEL__))
Kojto 122:f9eeca106725 842
Kojto 122:f9eeca106725 843 /**
Kojto 122:f9eeca106725 844 * @brief Configure ADC injected context queue
Kojto 122:f9eeca106725 845 * @param __INJECT_CONTEXT_QUEUE_MODE__: Injected context queue mode.
Kojto 122:f9eeca106725 846 * @retval None
Kojto 122:f9eeca106725 847 */
Kojto 122:f9eeca106725 848 #define ADC_CFGR_INJECT_CONTEXT_QUEUE(__INJECT_CONTEXT_QUEUE_MODE__) ((__INJECT_CONTEXT_QUEUE_MODE__) << POSITION_VAL(ADC_CFGR_JQM))
Kojto 122:f9eeca106725 849
Kojto 122:f9eeca106725 850 /**
Kojto 122:f9eeca106725 851 * @brief Configure ADC discontinuous conversion mode for injected group
Kojto 122:f9eeca106725 852 * @param __INJECT_DISCONTINUOUS_MODE__: Injected discontinuous mode.
Kojto 122:f9eeca106725 853 * @retval None
Kojto 122:f9eeca106725 854 */
Kojto 122:f9eeca106725 855 #define ADC_CFGR_INJECT_DISCCONTINUOUS(__INJECT_DISCONTINUOUS_MODE__) ((__INJECT_DISCONTINUOUS_MODE__) << POSITION_VAL(ADC_CFGR_JDISCEN))
Kojto 122:f9eeca106725 856
Kojto 122:f9eeca106725 857 /**
Kojto 122:f9eeca106725 858 * @brief Configure ADC discontinuous conversion mode for regular group
Kojto 122:f9eeca106725 859 * @param __REG_DISCONTINUOUS_MODE__: Regular discontinuous mode.
Kojto 122:f9eeca106725 860 * @retval None
Kojto 122:f9eeca106725 861 */
Kojto 122:f9eeca106725 862 #define ADC_CFGR_REG_DISCONTINUOUS(__REG_DISCONTINUOUS_MODE__) ((__REG_DISCONTINUOUS_MODE__) << POSITION_VAL(ADC_CFGR_DISCEN))
Kojto 122:f9eeca106725 863 /**
Kojto 122:f9eeca106725 864 * @brief Configure the number of discontinuous conversions for regular group.
Kojto 122:f9eeca106725 865 * @param __NBR_DISCONTINUOUS_CONV__: Number of discontinuous conversions.
Kojto 122:f9eeca106725 866 * @retval None
Kojto 122:f9eeca106725 867 */
Kojto 122:f9eeca106725 868 #define ADC_CFGR_DISCONTINUOUS_NUM(__NBR_DISCONTINUOUS_CONV__) (((__NBR_DISCONTINUOUS_CONV__) - 1) << POSITION_VAL(ADC_CFGR_DISCNUM))
Kojto 122:f9eeca106725 869
Kojto 122:f9eeca106725 870 /**
Kojto 122:f9eeca106725 871 * @brief Configure the ADC auto delay mode.
Kojto 122:f9eeca106725 872 * @param __AUTOWAIT__: Auto delay bit enable or disable.
Kojto 122:f9eeca106725 873 * @retval None
Kojto 122:f9eeca106725 874 */
Kojto 122:f9eeca106725 875 #define ADC_CFGR_AUTOWAIT(__AUTOWAIT__) ((__AUTOWAIT__) << POSITION_VAL(ADC_CFGR_AUTDLY))
Kojto 122:f9eeca106725 876
Kojto 122:f9eeca106725 877 /**
Kojto 122:f9eeca106725 878 * @brief Configure ADC continuous conversion mode.
Kojto 122:f9eeca106725 879 * @param __CONTINUOUS_MODE__: Continuous mode.
Kojto 122:f9eeca106725 880 * @retval None
Kojto 122:f9eeca106725 881 */
Kojto 122:f9eeca106725 882 #define ADC_CFGR_CONTINUOUS(__CONTINUOUS_MODE__) ((__CONTINUOUS_MODE__) << POSITION_VAL(ADC_CFGR_CONT))
Kojto 122:f9eeca106725 883
Kojto 122:f9eeca106725 884 /**
Kojto 122:f9eeca106725 885 * @brief Configure the ADC DMA continuous request.
Kojto 122:f9eeca106725 886 * @param __DMACONTREQ_MODE__: DMA continuous request mode.
Kojto 122:f9eeca106725 887 * @retval None
Kojto 122:f9eeca106725 888 */
Kojto 122:f9eeca106725 889 #define ADC_CFGR_DMACONTREQ(__DMACONTREQ_MODE__) ((__DMACONTREQ_MODE__) << POSITION_VAL(ADC_CFGR_DMACFG))
Kojto 122:f9eeca106725 890
Kojto 122:f9eeca106725 891
Kojto 122:f9eeca106725 892 /**
Kojto 122:f9eeca106725 893 * @brief Configure the channel number into offset OFRx register.
Kojto 122:f9eeca106725 894 * @param __CHANNEL__: ADC Channel.
Kojto 122:f9eeca106725 895 * @retval None
Kojto 122:f9eeca106725 896 */
Kojto 122:f9eeca106725 897 #define ADC_OFR_CHANNEL(__CHANNEL__) ((__CHANNEL__) << POSITION_VAL(ADC_OFR1_OFFSET1_CH))
Kojto 122:f9eeca106725 898
Kojto 122:f9eeca106725 899 /**
Kojto 122:f9eeca106725 900 * @brief Configure the channel number into differential mode selection register.
Kojto 122:f9eeca106725 901 * @param __CHANNEL__: ADC Channel.
Kojto 122:f9eeca106725 902 * @retval None
Kojto 122:f9eeca106725 903 */
Kojto 122:f9eeca106725 904 #define ADC_DIFSEL_CHANNEL(__CHANNEL__) (1U << (__CHANNEL__))
Kojto 122:f9eeca106725 905
Kojto 122:f9eeca106725 906 /**
Kojto 122:f9eeca106725 907 * @brief Configure calibration factor in differential mode to be set into calibration register.
Kojto 122:f9eeca106725 908 * @param __CALIBRATION_FACTOR__: Calibration factor value.
Kojto 122:f9eeca106725 909 * @retval None
Kojto 122:f9eeca106725 910 */
Kojto 122:f9eeca106725 911 #define ADC_CALFACT_DIFF_SET(__CALIBRATION_FACTOR__) (((__CALIBRATION_FACTOR__) & (ADC_CALFACT_CALFACT_D >> POSITION_VAL(ADC_CALFACT_CALFACT_D)) ) << POSITION_VAL(ADC_CALFACT_CALFACT_D))
Kojto 122:f9eeca106725 912 /**
Kojto 122:f9eeca106725 913 * @brief Calibration factor in differential mode to be retrieved from calibration register.
Kojto 122:f9eeca106725 914 * @param __CALIBRATION_FACTOR__: Calibration factor value.
Kojto 122:f9eeca106725 915 * @retval None
Kojto 122:f9eeca106725 916 */
Kojto 122:f9eeca106725 917 #define ADC_CALFACT_DIFF_GET(__CALIBRATION_FACTOR__) ((__CALIBRATION_FACTOR__) >> POSITION_VAL(ADC_CALFACT_CALFACT_D))
Kojto 122:f9eeca106725 918
Kojto 122:f9eeca106725 919 /**
Kojto 122:f9eeca106725 920 * @brief Configure the analog watchdog high threshold into registers TR1, TR2 or TR3.
Kojto 122:f9eeca106725 921 * @param __THRESHOLD__: Threshold value.
Kojto 122:f9eeca106725 922 * @retval None
Kojto 122:f9eeca106725 923 */
Kojto 122:f9eeca106725 924 #define ADC_TRX_HIGHTHRESHOLD(__THRESHOLD__) ((__THRESHOLD__) << 16)
Kojto 122:f9eeca106725 925
AnnaBridge 145:64910690c574 926 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 927 /**
Kojto 122:f9eeca106725 928 * @brief Configure the ADC DMA continuous request for ADC multimode.
Kojto 122:f9eeca106725 929 * @param __DMACONTREQ_MODE__: DMA continuous request mode.
Kojto 122:f9eeca106725 930 * @retval None
Kojto 122:f9eeca106725 931 */
Kojto 122:f9eeca106725 932 #define ADC_CCR_MULTI_DMACONTREQ(__DMACONTREQ_MODE__) ((__DMACONTREQ_MODE__) << POSITION_VAL(ADC_CCR_DMACFG))
AnnaBridge 145:64910690c574 933 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 934
Kojto 122:f9eeca106725 935 /**
Kojto 122:f9eeca106725 936 * @brief Enable the ADC peripheral.
Kojto 122:f9eeca106725 937 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 938 * @retval None
Kojto 122:f9eeca106725 939 */
Kojto 122:f9eeca106725 940 #define ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= ADC_CR_ADEN)
Kojto 122:f9eeca106725 941
Kojto 122:f9eeca106725 942 /**
Kojto 122:f9eeca106725 943 * @brief Verification of hardware constraints before ADC can be enabled.
Kojto 122:f9eeca106725 944 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 945 * @retval SET (ADC can be enabled) or RESET (ADC cannot be enabled)
Kojto 122:f9eeca106725 946 */
Kojto 122:f9eeca106725 947 #define ADC_ENABLING_CONDITIONS(__HANDLE__) \
Kojto 122:f9eeca106725 948 (( ( ((__HANDLE__)->Instance->CR) & \
Kojto 122:f9eeca106725 949 (ADC_CR_ADCAL | ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | \
Kojto 122:f9eeca106725 950 ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN ) \
Kojto 122:f9eeca106725 951 ) == RESET \
Kojto 122:f9eeca106725 952 ) ? SET : RESET)
Kojto 122:f9eeca106725 953
Kojto 122:f9eeca106725 954 /**
Kojto 122:f9eeca106725 955 * @brief Disable the ADC peripheral.
Kojto 122:f9eeca106725 956 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 957 * @retval None
Kojto 122:f9eeca106725 958 */
Kojto 122:f9eeca106725 959 #define ADC_DISABLE(__HANDLE__) \
Kojto 122:f9eeca106725 960 do{ \
Kojto 122:f9eeca106725 961 (__HANDLE__)->Instance->CR |= ADC_CR_ADDIS; \
Kojto 122:f9eeca106725 962 __HAL_ADC_CLEAR_FLAG((__HANDLE__), (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); \
Kojto 122:f9eeca106725 963 } while(0)
Kojto 122:f9eeca106725 964
Kojto 122:f9eeca106725 965 /**
Kojto 122:f9eeca106725 966 * @brief Verification of hardware constraints before ADC can be disabled.
Kojto 122:f9eeca106725 967 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 968 * @retval SET (ADC can be disabled) or RESET (ADC cannot be disabled)
Kojto 122:f9eeca106725 969 */
Kojto 122:f9eeca106725 970 #define ADC_DISABLING_CONDITIONS(__HANDLE__) \
Kojto 122:f9eeca106725 971 (( ( ((__HANDLE__)->Instance->CR) & \
Kojto 122:f9eeca106725 972 (ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN \
Kojto 122:f9eeca106725 973 ) ? SET : RESET)
Kojto 122:f9eeca106725 974
Kojto 122:f9eeca106725 975 /**
Kojto 122:f9eeca106725 976 * @brief Shift the offset with respect to the selected ADC resolution.
Kojto 122:f9eeca106725 977 * @note Offset has to be left-aligned on bit 11, the LSB (right bits) are set to 0.
Kojto 122:f9eeca106725 978 * If resolution 12 bits, no shift.
Kojto 122:f9eeca106725 979 * If resolution 10 bits, shift of 2 ranks on the left.
Kojto 122:f9eeca106725 980 * If resolution 8 bits, shift of 4 ranks on the left.
Kojto 122:f9eeca106725 981 * If resolution 6 bits, shift of 6 ranks on the left.
Kojto 122:f9eeca106725 982 * Therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2)).
Kojto 122:f9eeca106725 983 * @param __HANDLE__: ADC handle
Kojto 122:f9eeca106725 984 * @param __OFFSET__: Value to be shifted
Kojto 122:f9eeca106725 985 * @retval None
Kojto 122:f9eeca106725 986 */
Kojto 122:f9eeca106725 987 #define ADC_OFFSET_SHIFT_RESOLUTION(__HANDLE__, __OFFSET__) \
Kojto 122:f9eeca106725 988 ((__OFFSET__) << ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))
Kojto 122:f9eeca106725 989
Kojto 122:f9eeca106725 990
Kojto 122:f9eeca106725 991 /**
Kojto 122:f9eeca106725 992 * @brief Shift the AWD1 threshold with respect to the selected ADC resolution.
Kojto 122:f9eeca106725 993 * @note Thresholds have to be left-aligned on bit 11, the LSB (right bits) are set to 0.
Kojto 122:f9eeca106725 994 * If resolution 12 bits, no shift.
Kojto 122:f9eeca106725 995 * If resolution 10 bits, shift of 2 ranks on the left.
Kojto 122:f9eeca106725 996 * If resolution 8 bits, shift of 4 ranks on the left.
Kojto 122:f9eeca106725 997 * If resolution 6 bits, shift of 6 ranks on the left.
Kojto 122:f9eeca106725 998 * Therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2)).
Kojto 122:f9eeca106725 999 * @param __HANDLE__: ADC handle
Kojto 122:f9eeca106725 1000 * @param __THRESHOLD__: Value to be shifted
Kojto 122:f9eeca106725 1001 * @retval None
Kojto 122:f9eeca106725 1002 */
Kojto 122:f9eeca106725 1003 #define ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, __THRESHOLD__) \
Kojto 122:f9eeca106725 1004 ((__THRESHOLD__) << ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))
Kojto 122:f9eeca106725 1005
Kojto 122:f9eeca106725 1006 /**
Kojto 122:f9eeca106725 1007 * @brief Shift the AWD2 and AWD3 threshold with respect to the selected ADC resolution.
Kojto 122:f9eeca106725 1008 * @note Thresholds have to be left-aligned on bit 7.
Kojto 122:f9eeca106725 1009 * If resolution 12 bits, shift of 4 ranks on the right (the 4 LSB are discarded).
Kojto 122:f9eeca106725 1010 * If resolution 10 bits, shift of 2 ranks on the right (the 2 LSB are discarded).
Kojto 122:f9eeca106725 1011 * If resolution 8 bits, no shift.
Kojto 122:f9eeca106725 1012 * If resolution 6 bits, shift of 2 ranks on the left (the 2 LSB are set to 0).
Kojto 122:f9eeca106725 1013 * @param __HANDLE__: ADC handle
Kojto 122:f9eeca106725 1014 * @param __THRESHOLD__: Value to be shifted
Kojto 122:f9eeca106725 1015 * @retval None
Kojto 122:f9eeca106725 1016 */
Kojto 122:f9eeca106725 1017 #define ADC_AWD23THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, __THRESHOLD__) \
Kojto 122:f9eeca106725 1018 ( ((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) != (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) ? \
Kojto 122:f9eeca106725 1019 ((__THRESHOLD__) >> (4- ((((__HANDLE__)->Instance->CFGR & ADC_CFGR_RES) >> 3)*2))) : \
Kojto 122:f9eeca106725 1020 (__THRESHOLD__) << 2 )
Kojto 122:f9eeca106725 1021
Kojto 122:f9eeca106725 1022 /**
Kojto 122:f9eeca106725 1023 * @brief Report ADC common register.
Kojto 122:f9eeca106725 1024 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1025 * @retval Common control register
Kojto 122:f9eeca106725 1026 */
AnnaBridge 145:64910690c574 1027 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1028 #define ADC_COMMON_REGISTER(__HANDLE__) (ADC123_COMMON)
AnnaBridge 145:64910690c574 1029 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1030 #define ADC_COMMON_REGISTER(__HANDLE__) (ADC1_COMMON)
Kojto 122:f9eeca106725 1031 #endif
Kojto 122:f9eeca106725 1032
Kojto 122:f9eeca106725 1033 /**
Kojto 122:f9eeca106725 1034 * @brief Report Master Instance.
Kojto 122:f9eeca106725 1035 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1036 * @note Return same instance if ADC of input handle is independent ADC or if
Kojto 122:f9eeca106725 1037 * multimode feature is not available.
Kojto 122:f9eeca106725 1038 * @retval Master Instance
Kojto 122:f9eeca106725 1039 */
AnnaBridge 145:64910690c574 1040 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1041 #define ADC_MASTER_REGISTER(__HANDLE__) \
Kojto 122:f9eeca106725 1042 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC3)) \
Kojto 122:f9eeca106725 1043 )? \
Kojto 122:f9eeca106725 1044 ((__HANDLE__)->Instance) \
Kojto 122:f9eeca106725 1045 : \
Kojto 122:f9eeca106725 1046 (ADC1) \
Kojto 122:f9eeca106725 1047 )
AnnaBridge 145:64910690c574 1048 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1049 #define ADC_MASTER_REGISTER(__HANDLE__) ((__HANDLE__)->Instance)
Kojto 122:f9eeca106725 1050 #endif
Kojto 122:f9eeca106725 1051
Kojto 122:f9eeca106725 1052 /**
Kojto 122:f9eeca106725 1053 * @brief Clear Common Control Register.
Kojto 122:f9eeca106725 1054 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1055 * @retval None
Kojto 122:f9eeca106725 1056 */
AnnaBridge 145:64910690c574 1057 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1058 #define ADC_CLEAR_COMMON_CONTROL_REGISTER(__HANDLE__) CLEAR_BIT(ADC_COMMON_REGISTER(__HANDLE__)->CCR, ADC_CCR_CKMODE | \
Kojto 122:f9eeca106725 1059 ADC_CCR_PRESC | \
Kojto 122:f9eeca106725 1060 ADC_CCR_VBATEN | \
Kojto 122:f9eeca106725 1061 ADC_CCR_TSEN | \
Kojto 122:f9eeca106725 1062 ADC_CCR_VREFEN | \
Kojto 122:f9eeca106725 1063 ADC_CCR_MDMA | \
Kojto 122:f9eeca106725 1064 ADC_CCR_DMACFG | \
Kojto 122:f9eeca106725 1065 ADC_CCR_DELAY | \
Kojto 122:f9eeca106725 1066 ADC_CCR_DUAL )
AnnaBridge 145:64910690c574 1067 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1068 #define ADC_CLEAR_COMMON_CONTROL_REGISTER(__HANDLE__) CLEAR_BIT(ADC_COMMON_REGISTER(__HANDLE__)->CCR, ADC_CCR_CKMODE | \
Kojto 122:f9eeca106725 1069 ADC_CCR_PRESC | \
Kojto 122:f9eeca106725 1070 ADC_CCR_VBATEN | \
Kojto 122:f9eeca106725 1071 ADC_CCR_TSEN | \
Kojto 122:f9eeca106725 1072 ADC_CCR_VREFEN )
Kojto 122:f9eeca106725 1073 #endif
Kojto 122:f9eeca106725 1074
Kojto 122:f9eeca106725 1075
Kojto 122:f9eeca106725 1076 /**
Kojto 122:f9eeca106725 1077 * @brief Check whether or not dual conversions are enabled.
Kojto 122:f9eeca106725 1078 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1079 * @note Return RESET if ADC of input handle is independent ADC or if multimode feature is not available.
Kojto 122:f9eeca106725 1080 * @retval SET (dual regular conversions are enabled) or RESET (ADC is independent or no dual regular conversions are enabled)
Kojto 122:f9eeca106725 1081 */
AnnaBridge 145:64910690c574 1082 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1083 #define ADC_IS_DUAL_CONVERSION_ENABLE(__HANDLE__) \
Kojto 122:f9eeca106725 1084 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC2)) \
Kojto 122:f9eeca106725 1085 )? \
Kojto 122:f9eeca106725 1086 ( ((ADC123_COMMON->CCR & ADC_CCR_DUAL) != ADC_MODE_INDEPENDENT) ) \
Kojto 122:f9eeca106725 1087 : \
Kojto 122:f9eeca106725 1088 RESET \
Kojto 122:f9eeca106725 1089 )
AnnaBridge 145:64910690c574 1090 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1091 #define ADC_IS_DUAL_CONVERSION_ENABLE(__HANDLE__) (RESET)
Kojto 122:f9eeca106725 1092 #endif
Kojto 122:f9eeca106725 1093
Kojto 122:f9eeca106725 1094 /**
Kojto 122:f9eeca106725 1095 * @brief Check whether or not dual regular conversions are enabled.
Kojto 122:f9eeca106725 1096 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1097 * @note Return RESET if ADC of input handle is independent ADC or if multimode feature is not available.
Kojto 122:f9eeca106725 1098 * @retval SET (dual regular conversions are enabled) or RESET (ADC is independent or no dual regular conversions are enabled)
Kojto 122:f9eeca106725 1099 */
AnnaBridge 145:64910690c574 1100 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1101 #define ADC_IS_DUAL_REGULAR_CONVERSION_ENABLE(__HANDLE__) \
Kojto 122:f9eeca106725 1102 ( ( ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC2)) \
Kojto 122:f9eeca106725 1103 )? \
Kojto 122:f9eeca106725 1104 ( (((ADC_COMMON_REGISTER(__HANDLE__))->CCR & ADC_CCR_DUAL) != ADC_MODE_INDEPENDENT) && \
Kojto 122:f9eeca106725 1105 (((ADC_COMMON_REGISTER(__HANDLE__))->CCR & ADC_CCR_DUAL) != ADC_DUALMODE_INJECSIMULT) && \
Kojto 122:f9eeca106725 1106 (((ADC_COMMON_REGISTER(__HANDLE__))->CCR & ADC_CCR_DUAL) != ADC_DUALMODE_ALTERTRIG) ) \
Kojto 122:f9eeca106725 1107 : \
Kojto 122:f9eeca106725 1108 RESET \
Kojto 122:f9eeca106725 1109 )
AnnaBridge 145:64910690c574 1110 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1111 #define ADC_IS_DUAL_REGULAR_CONVERSION_ENABLE(__HANDLE__) (RESET)
Kojto 122:f9eeca106725 1112 #endif
Kojto 122:f9eeca106725 1113
Kojto 122:f9eeca106725 1114
Kojto 122:f9eeca106725 1115 /**
Kojto 122:f9eeca106725 1116 * @brief Verification of condition for ADC start conversion: ADC must be in non-multimode or multimode with handle of ADC master.
Kojto 122:f9eeca106725 1117 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1118 * @note Return SET if multimode feature is not available.
Kojto 122:f9eeca106725 1119 * @retval SET (non-multimode or Master handle) or RESET (handle of Slave ADC in multimode)
Kojto 122:f9eeca106725 1120 */
AnnaBridge 145:64910690c574 1121 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1122 #define ADC_NONMULTIMODE_OR_MULTIMODEMASTER(__HANDLE__) \
Kojto 122:f9eeca106725 1123 ( ( ((__HANDLE__)->Instance == ADC1) || ((__HANDLE__)->Instance == ADC3) \
Kojto 122:f9eeca106725 1124 )? \
Kojto 122:f9eeca106725 1125 SET \
Kojto 122:f9eeca106725 1126 : \
Kojto 122:f9eeca106725 1127 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == RESET) \
Kojto 122:f9eeca106725 1128 )
AnnaBridge 145:64910690c574 1129 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1130 #define ADC_NONMULTIMODE_OR_MULTIMODEMASTER(__HANDLE__) (SET)
Kojto 122:f9eeca106725 1131 #endif
Kojto 122:f9eeca106725 1132
Kojto 122:f9eeca106725 1133 /**
Kojto 122:f9eeca106725 1134 * @brief Ensure ADC Instance is Independent or Master, or is not Slave ADC with dual regular conversions enabled.
Kojto 122:f9eeca106725 1135 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1136 * @note Return SET if multimode feature is not available.
Kojto 122:f9eeca106725 1137 * @retval SET (Independent or Master, or Slave without dual regular conversions enabled) or RESET (Slave ADC with dual regular conversions enabled)
Kojto 122:f9eeca106725 1138 */
AnnaBridge 145:64910690c574 1139 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1140 #define ADC_INDEPENDENT_OR_NONMULTIMODEREGULAR_SLAVE(__HANDLE__) \
Kojto 122:f9eeca106725 1141 ( ( ((__HANDLE__)->Instance == ADC1) || ((__HANDLE__)->Instance == ADC3) \
Kojto 122:f9eeca106725 1142 )? \
Kojto 122:f9eeca106725 1143 SET \
Kojto 122:f9eeca106725 1144 : \
Kojto 122:f9eeca106725 1145 ( ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_MODE_INDEPENDENT) || \
Kojto 122:f9eeca106725 1146 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_INJECSIMULT) || \
Kojto 122:f9eeca106725 1147 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_ALTERTRIG) ))
AnnaBridge 145:64910690c574 1148 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1149 #define ADC_INDEPENDENT_OR_NONMULTIMODEREGULAR_SLAVE(__HANDLE__) (SET)
Kojto 122:f9eeca106725 1150 #endif
Kojto 122:f9eeca106725 1151
Kojto 122:f9eeca106725 1152 /**
Kojto 122:f9eeca106725 1153 * @brief Ensure ADC Instance is Independent or Master, or is not Slave ADC with dual injected conversions enabled.
Kojto 122:f9eeca106725 1154 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1155 * @note Return SET if multimode feature is not available.
Kojto 122:f9eeca106725 1156 * @retval SET (non-multimode or Master, or Slave without dual injected conversions enabled) or RESET (Slave ADC with dual injected conversions enabled)
Kojto 122:f9eeca106725 1157 */
AnnaBridge 145:64910690c574 1158 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1159 #define ADC_INDEPENDENT_OR_NONMULTIMODEINJECTED_SLAVE(__HANDLE__) \
Kojto 122:f9eeca106725 1160 ( ( ((__HANDLE__)->Instance == ADC1) || ((__HANDLE__)->Instance == ADC3) \
Kojto 122:f9eeca106725 1161 )? \
Kojto 122:f9eeca106725 1162 SET \
Kojto 122:f9eeca106725 1163 : \
Kojto 122:f9eeca106725 1164 ( ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_MODE_INDEPENDENT) || \
Kojto 122:f9eeca106725 1165 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_REGSIMULT) || \
Kojto 122:f9eeca106725 1166 ((ADC123_COMMON->CCR & ADC_CCR_DUAL) == ADC_DUALMODE_INTERL) ))
AnnaBridge 145:64910690c574 1167 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1168 #define ADC_INDEPENDENT_OR_NONMULTIMODEINJECTED_SLAVE(__HANDLE__) (SET)
Kojto 122:f9eeca106725 1169 #endif
Kojto 122:f9eeca106725 1170
Kojto 122:f9eeca106725 1171 /**
Kojto 122:f9eeca106725 1172 * @brief Verification of ADC state: enabled or disabled, directly checked on instance as input parameter.
Kojto 122:f9eeca106725 1173 * @param __INSTANCE__: ADC instance.
Kojto 122:f9eeca106725 1174 * @retval SET (ADC enabled) or RESET (ADC disabled)
Kojto 122:f9eeca106725 1175 */
Kojto 122:f9eeca106725 1176 #define ADC_INSTANCE_IS_ENABLED(__INSTANCE__) \
Kojto 122:f9eeca106725 1177 (( ((((__INSTANCE__)->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
Kojto 122:f9eeca106725 1178 ((((__INSTANCE__)->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) \
Kojto 122:f9eeca106725 1179 ) ? SET : RESET)
Kojto 122:f9eeca106725 1180
Kojto 122:f9eeca106725 1181 /**
Kojto 122:f9eeca106725 1182 * @brief Verification of enabled/disabled status of ADCs other than that associated to the input parameter handle.
Kojto 122:f9eeca106725 1183 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1184 * @retval SET (at least one other ADC is enabled) or RESET (no other ADC is enabled, all other ADCs are disabled)
Kojto 122:f9eeca106725 1185 */
AnnaBridge 145:64910690c574 1186 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1187 #define ADC_ANY_OTHER_ENABLED(__HANDLE__) \
Kojto 122:f9eeca106725 1188 ( ( ((__HANDLE__)->Instance == ADC1) \
Kojto 122:f9eeca106725 1189 )? \
Kojto 122:f9eeca106725 1190 (ADC_INSTANCE_IS_ENABLED(ADC2)) || (ADC_INSTANCE_IS_ENABLED(ADC3)) \
Kojto 122:f9eeca106725 1191 : \
Kojto 122:f9eeca106725 1192 ( ( ((__HANDLE__)->Instance == ADC2) \
Kojto 122:f9eeca106725 1193 )? \
Kojto 122:f9eeca106725 1194 (ADC_INSTANCE_IS_ENABLED(ADC1)) || (ADC_INSTANCE_IS_ENABLED(ADC3)) \
Kojto 122:f9eeca106725 1195 : \
Kojto 122:f9eeca106725 1196 ADC_INSTANCE_IS_ENABLED(ADC1)) || (ADC_INSTANCE_IS_ENABLED(ADC2)) \
Kojto 122:f9eeca106725 1197 )
AnnaBridge 145:64910690c574 1198 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1199 #define ADC_ANY_OTHER_ENABLED(__HANDLE__) (RESET)
Kojto 122:f9eeca106725 1200 #endif
Kojto 122:f9eeca106725 1201
Kojto 122:f9eeca106725 1202
AnnaBridge 145:64910690c574 1203 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1204 /**
Kojto 122:f9eeca106725 1205 * @brief Set handle instance of the ADC slave associated to the ADC master.
Kojto 122:f9eeca106725 1206 * @param __HANDLE_MASTER__: ADC master handle.
Kojto 122:f9eeca106725 1207 * @param __HANDLE_SLAVE__: ADC slave handle.
Kojto 122:f9eeca106725 1208 * @note if __HANDLE_MASTER__ is the handle of a slave ADC (ADC2) or an independent ADC (ADC3), __HANDLE_SLAVE__ instance is set to NULL.
Kojto 122:f9eeca106725 1209 * @retval None
Kojto 122:f9eeca106725 1210 */
Kojto 122:f9eeca106725 1211 #define ADC_MULTI_SLAVE(__HANDLE_MASTER__, __HANDLE_SLAVE__) \
Kojto 122:f9eeca106725 1212 ( (((__HANDLE_MASTER__)->Instance == ADC1)) ? ((__HANDLE_SLAVE__)->Instance = ADC2) : ((__HANDLE_SLAVE__)->Instance = NULL) )
Kojto 122:f9eeca106725 1213 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) */
Kojto 122:f9eeca106725 1214
Kojto 122:f9eeca106725 1215
Kojto 122:f9eeca106725 1216 /**
Kojto 122:f9eeca106725 1217 * @brief Check whether or not multimode is configured in DMA mode.
Kojto 122:f9eeca106725 1218 * @note Return RESET if multimode feature is not available.
Kojto 122:f9eeca106725 1219 * @retval SET (multimode is configured in DMA mode) or RESET (DMA multimode is disabled)
Kojto 122:f9eeca106725 1220 */
AnnaBridge 145:64910690c574 1221 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1222 #define ADC_MULTIMODE_DMA_ENABLED() \
Kojto 122:f9eeca106725 1223 ((READ_BIT(ADC123_COMMON->CCR, ADC_CCR_MDMA) == ADC_DMAACCESSMODE_12_10_BITS) \
Kojto 122:f9eeca106725 1224 || (READ_BIT(ADC123_COMMON->CCR, ADC_CCR_MDMA) == ADC_DMAACCESSMODE_8_6_BITS))
AnnaBridge 145:64910690c574 1225 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1226 #define ADC_MULTIMODE_DMA_ENABLED() (RESET)
Kojto 122:f9eeca106725 1227 #endif
Kojto 122:f9eeca106725 1228
Kojto 122:f9eeca106725 1229
Kojto 122:f9eeca106725 1230 /**
Kojto 122:f9eeca106725 1231 * @brief Verify the ADC instance connected to the temperature sensor.
Kojto 122:f9eeca106725 1232 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1233 * @retval SET (ADC instance is valid) or RESET (ADC instance is invalid)
Kojto 122:f9eeca106725 1234 */
AnnaBridge 145:64910690c574 1235 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1236 /* The temperature sensor measurement path (channel 17) is available on ADC1 */
Kojto 122:f9eeca106725 1237 #define ADC_TEMPERATURE_SENSOR_INSTANCE(__HANDLE__) (((__HANDLE__)->Instance) == ADC1)
AnnaBridge 145:64910690c574 1238 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1239 /* The temperature sensor measurement path (channel 17) is available on ADC1 and ADC3 */
Kojto 122:f9eeca106725 1240 #define ADC_TEMPERATURE_SENSOR_INSTANCE(__HANDLE__) ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC3))
Kojto 122:f9eeca106725 1241 #endif
Kojto 122:f9eeca106725 1242
Kojto 122:f9eeca106725 1243 /**
Kojto 122:f9eeca106725 1244 * @brief Verify the ADC instance connected to the battery voltage VBAT.
Kojto 122:f9eeca106725 1245 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1246 * @retval SET (ADC instance is valid) or RESET (ADC instance is invalid)
Kojto 122:f9eeca106725 1247 */
AnnaBridge 145:64910690c574 1248 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1249 /* The battery voltage measurement path (channel 18) is available on ADC1 */
Kojto 122:f9eeca106725 1250 #define ADC_BATTERY_VOLTAGE_INSTANCE(__HANDLE__) (((__HANDLE__)->Instance) == ADC1)
AnnaBridge 145:64910690c574 1251 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1252 /* The battery voltage measurement path (channel 18) is available on ADC1 and ADC3 */
Kojto 122:f9eeca106725 1253 #define ADC_BATTERY_VOLTAGE_INSTANCE(__HANDLE__) ((((__HANDLE__)->Instance) == ADC1) || (((__HANDLE__)->Instance) == ADC3))
Kojto 122:f9eeca106725 1254 #endif
Kojto 122:f9eeca106725 1255
Kojto 122:f9eeca106725 1256 /**
Kojto 122:f9eeca106725 1257 * @brief Verify the ADC instance connected to the internal voltage reference VREFINT.
Kojto 122:f9eeca106725 1258 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1259 * @retval SET (ADC instance is valid) or RESET (ADC instance is invalid)
Kojto 122:f9eeca106725 1260 */
Kojto 122:f9eeca106725 1261 /* The internal voltage reference VREFINT measurement path (channel 0) is available on ADC1 */
Kojto 122:f9eeca106725 1262 #define ADC_VREFINT_INSTANCE(__HANDLE__) (((__HANDLE__)->Instance) == ADC1)
Kojto 122:f9eeca106725 1263
Kojto 122:f9eeca106725 1264
Kojto 122:f9eeca106725 1265 /**
Kojto 122:f9eeca106725 1266 * @brief Verify the length of scheduled injected conversions group.
Kojto 122:f9eeca106725 1267 * @param __LENGTH__: number of programmed conversions.
Kojto 122:f9eeca106725 1268 * @retval SET (__LENGTH__ is within the maximum number of possible programmable injected conversions) or RESET (__LENGTH__ is null or too large)
Kojto 122:f9eeca106725 1269 */
Kojto 122:f9eeca106725 1270 #define IS_ADC_INJECTED_NB_CONV(__LENGTH__) (((__LENGTH__) >= ((uint32_t)1)) && ((__LENGTH__) <= ((uint32_t)4)))
Kojto 122:f9eeca106725 1271
Kojto 122:f9eeca106725 1272
Kojto 122:f9eeca106725 1273 /**
Kojto 122:f9eeca106725 1274 * @brief Calibration factor size verification (7 bits maximum).
Kojto 122:f9eeca106725 1275 * @param __CALIBRATION_FACTOR__: Calibration factor value.
Kojto 122:f9eeca106725 1276 * @retval SET (__CALIBRATION_FACTOR__ is within the authorized size) or RESET (__CALIBRATION_FACTOR__ is too large)
Kojto 122:f9eeca106725 1277 */
Kojto 122:f9eeca106725 1278 #define IS_ADC_CALFACT(__CALIBRATION_FACTOR__) ((__CALIBRATION_FACTOR__) <= ((uint32_t)0x7F))
Kojto 122:f9eeca106725 1279
Kojto 122:f9eeca106725 1280
Kojto 122:f9eeca106725 1281 /**
Kojto 122:f9eeca106725 1282 * @brief Verify the ADC channel setting.
Kojto 122:f9eeca106725 1283 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1284 * @param __CHANNEL__: programmed ADC channel.
Kojto 122:f9eeca106725 1285 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
Kojto 122:f9eeca106725 1286 */
AnnaBridge 145:64910690c574 1287 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1288 #define IS_ADC_CHANNEL(__HANDLE__, __CHANNEL__) ((((__HANDLE__)->Instance) == ADC1) && \
Kojto 122:f9eeca106725 1289 (((__CHANNEL__) == ADC_CHANNEL_VREFINT) || \
Kojto 122:f9eeca106725 1290 ((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1291 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1292 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1293 ((__CHANNEL__) == ADC_CHANNEL_4) || \
Kojto 122:f9eeca106725 1294 ((__CHANNEL__) == ADC_CHANNEL_5) || \
Kojto 122:f9eeca106725 1295 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1296 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1297 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1298 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1299 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1300 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1301 ((__CHANNEL__) == ADC_CHANNEL_12) || \
Kojto 122:f9eeca106725 1302 ((__CHANNEL__) == ADC_CHANNEL_13) || \
Kojto 122:f9eeca106725 1303 ((__CHANNEL__) == ADC_CHANNEL_14) || \
Kojto 122:f9eeca106725 1304 ((__CHANNEL__) == ADC_CHANNEL_15) || \
Kojto 122:f9eeca106725 1305 ((__CHANNEL__) == ADC_CHANNEL_16) || \
Kojto 122:f9eeca106725 1306 ((__CHANNEL__) == ADC_CHANNEL_17) || \
Kojto 122:f9eeca106725 1307 ((__CHANNEL__) == ADC_CHANNEL_18) || \
Kojto 122:f9eeca106725 1308 ((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) || \
Kojto 122:f9eeca106725 1309 ((__CHANNEL__) == ADC_CHANNEL_VBAT)))
AnnaBridge 145:64910690c574 1310 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1311 #define IS_ADC_CHANNEL(__HANDLE__, __CHANNEL__) (((((__HANDLE__)->Instance) == ADC1) && \
Kojto 122:f9eeca106725 1312 (((__CHANNEL__) == ADC_CHANNEL_VREFINT) || \
Kojto 122:f9eeca106725 1313 ((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1314 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1315 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1316 ((__CHANNEL__) == ADC_CHANNEL_4) || \
Kojto 122:f9eeca106725 1317 ((__CHANNEL__) == ADC_CHANNEL_5) || \
Kojto 122:f9eeca106725 1318 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1319 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1320 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1321 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1322 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1323 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1324 ((__CHANNEL__) == ADC_CHANNEL_12) || \
Kojto 122:f9eeca106725 1325 ((__CHANNEL__) == ADC_CHANNEL_13) || \
Kojto 122:f9eeca106725 1326 ((__CHANNEL__) == ADC_CHANNEL_14) || \
Kojto 122:f9eeca106725 1327 ((__CHANNEL__) == ADC_CHANNEL_15) || \
Kojto 122:f9eeca106725 1328 ((__CHANNEL__) == ADC_CHANNEL_16) || \
Kojto 122:f9eeca106725 1329 ((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) || \
Kojto 122:f9eeca106725 1330 ((__CHANNEL__) == ADC_CHANNEL_VBAT))) || \
Kojto 122:f9eeca106725 1331 ((((__HANDLE__)->Instance) == ADC2) && \
Kojto 122:f9eeca106725 1332 (((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1333 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1334 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1335 ((__CHANNEL__) == ADC_CHANNEL_4) || \
Kojto 122:f9eeca106725 1336 ((__CHANNEL__) == ADC_CHANNEL_5) || \
Kojto 122:f9eeca106725 1337 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1338 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1339 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1340 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1341 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1342 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1343 ((__CHANNEL__) == ADC_CHANNEL_12) || \
Kojto 122:f9eeca106725 1344 ((__CHANNEL__) == ADC_CHANNEL_13) || \
Kojto 122:f9eeca106725 1345 ((__CHANNEL__) == ADC_CHANNEL_14) || \
Kojto 122:f9eeca106725 1346 ((__CHANNEL__) == ADC_CHANNEL_15) || \
Kojto 122:f9eeca106725 1347 ((__CHANNEL__) == ADC_CHANNEL_16) || \
Kojto 122:f9eeca106725 1348 ((__CHANNEL__) == ADC_CHANNEL_17) || \
Kojto 122:f9eeca106725 1349 ((__CHANNEL__) == ADC_CHANNEL_18))) || \
Kojto 122:f9eeca106725 1350 ((((__HANDLE__)->Instance) == ADC3) && \
Kojto 122:f9eeca106725 1351 (((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1352 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1353 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1354 ((__CHANNEL__) == ADC_CHANNEL_4) || \
Kojto 122:f9eeca106725 1355 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1356 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1357 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1358 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1359 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1360 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1361 ((__CHANNEL__) == ADC_CHANNEL_12) || \
Kojto 122:f9eeca106725 1362 ((__CHANNEL__) == ADC_CHANNEL_13) || \
Kojto 122:f9eeca106725 1363 ((__CHANNEL__) == ADC_CHANNEL_14) || \
Kojto 122:f9eeca106725 1364 ((__CHANNEL__) == ADC_CHANNEL_15) || \
Kojto 122:f9eeca106725 1365 ((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) || \
Kojto 122:f9eeca106725 1366 ((__CHANNEL__) == ADC_CHANNEL_VBAT) )))
Kojto 122:f9eeca106725 1367 #endif
Kojto 122:f9eeca106725 1368
Kojto 122:f9eeca106725 1369 /**
Kojto 122:f9eeca106725 1370 * @brief Verify the ADC channel setting in differential mode.
Kojto 122:f9eeca106725 1371 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1372 * @param __CHANNEL__: programmed ADC channel.
Kojto 122:f9eeca106725 1373 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
Kojto 122:f9eeca106725 1374 */
AnnaBridge 145:64910690c574 1375 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
Kojto 122:f9eeca106725 1376 #define IS_ADC_DIFF_CHANNEL(__HANDLE__, __CHANNEL__) (((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1377 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1378 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1379 ((__CHANNEL__) == ADC_CHANNEL_4) || \
Kojto 122:f9eeca106725 1380 ((__CHANNEL__) == ADC_CHANNEL_5) || \
Kojto 122:f9eeca106725 1381 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1382 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1383 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1384 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1385 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1386 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1387 ((__CHANNEL__) == ADC_CHANNEL_12) || \
Kojto 122:f9eeca106725 1388 ((__CHANNEL__) == ADC_CHANNEL_13) || \
Kojto 122:f9eeca106725 1389 ((__CHANNEL__) == ADC_CHANNEL_14) || \
Kojto 122:f9eeca106725 1390 ((__CHANNEL__) == ADC_CHANNEL_15) )
AnnaBridge 145:64910690c574 1391 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1392 /* For ADC1 and ADC2, channels 1 to 15 are available in differential mode,
Kojto 122:f9eeca106725 1393 channels 0, 16 to 18 can be only used in single-ended mode.
Kojto 122:f9eeca106725 1394 For ADC3, channels 1 to 3 and 6 to 12 are available in differential mode,
Kojto 122:f9eeca106725 1395 channels 4, 5 and 13 to 18 can only be used in single-ended mode. */
Kojto 122:f9eeca106725 1396 #define IS_ADC_DIFF_CHANNEL(__HANDLE__, __CHANNEL__) ((((((__HANDLE__)->Instance) == ADC1) || \
Kojto 122:f9eeca106725 1397 (((__HANDLE__)->Instance) == ADC2)) && \
Kojto 122:f9eeca106725 1398 (((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1399 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1400 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1401 ((__CHANNEL__) == ADC_CHANNEL_4) || \
Kojto 122:f9eeca106725 1402 ((__CHANNEL__) == ADC_CHANNEL_5) || \
Kojto 122:f9eeca106725 1403 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1404 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1405 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1406 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1407 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1408 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1409 ((__CHANNEL__) == ADC_CHANNEL_12) || \
Kojto 122:f9eeca106725 1410 ((__CHANNEL__) == ADC_CHANNEL_13) || \
Kojto 122:f9eeca106725 1411 ((__CHANNEL__) == ADC_CHANNEL_14) || \
Kojto 122:f9eeca106725 1412 ((__CHANNEL__) == ADC_CHANNEL_15))) || \
Kojto 122:f9eeca106725 1413 ((((__HANDLE__)->Instance) == ADC3) && \
Kojto 122:f9eeca106725 1414 (((__CHANNEL__) == ADC_CHANNEL_1) || \
Kojto 122:f9eeca106725 1415 ((__CHANNEL__) == ADC_CHANNEL_2) || \
Kojto 122:f9eeca106725 1416 ((__CHANNEL__) == ADC_CHANNEL_3) || \
Kojto 122:f9eeca106725 1417 ((__CHANNEL__) == ADC_CHANNEL_6) || \
Kojto 122:f9eeca106725 1418 ((__CHANNEL__) == ADC_CHANNEL_7) || \
Kojto 122:f9eeca106725 1419 ((__CHANNEL__) == ADC_CHANNEL_8) || \
Kojto 122:f9eeca106725 1420 ((__CHANNEL__) == ADC_CHANNEL_9) || \
Kojto 122:f9eeca106725 1421 ((__CHANNEL__) == ADC_CHANNEL_10) || \
Kojto 122:f9eeca106725 1422 ((__CHANNEL__) == ADC_CHANNEL_11) || \
Kojto 122:f9eeca106725 1423 ((__CHANNEL__) == ADC_CHANNEL_12) )))
Kojto 122:f9eeca106725 1424 #endif
Kojto 122:f9eeca106725 1425
Kojto 122:f9eeca106725 1426 /**
Kojto 122:f9eeca106725 1427 * @brief Verify the ADC single-ended input or differential mode setting.
Kojto 122:f9eeca106725 1428 * @param __SING_DIFF__: programmed channel setting.
Kojto 122:f9eeca106725 1429 * @retval SET (__SING_DIFF__ is valid) or RESET (__SING_DIFF__ is invalid)
Kojto 122:f9eeca106725 1430 */
Kojto 122:f9eeca106725 1431 #define IS_ADC_SINGLE_DIFFERENTIAL(__SING_DIFF__) (((__SING_DIFF__) == ADC_SINGLE_ENDED) || \
Kojto 122:f9eeca106725 1432 ((__SING_DIFF__) == ADC_DIFFERENTIAL_ENDED) )
Kojto 122:f9eeca106725 1433
Kojto 122:f9eeca106725 1434 /**
Kojto 122:f9eeca106725 1435 * @brief Verify the ADC offset management setting.
Kojto 122:f9eeca106725 1436 * @param __OFFSET_NUMBER__: ADC offset management.
Kojto 122:f9eeca106725 1437 * @retval SET (__OFFSET_NUMBER__ is valid) or RESET (__OFFSET_NUMBER__ is invalid)
Kojto 122:f9eeca106725 1438 */
Kojto 122:f9eeca106725 1439 #define IS_ADC_OFFSET_NUMBER(__OFFSET_NUMBER__) (((__OFFSET_NUMBER__) == ADC_OFFSET_NONE) || \
Kojto 122:f9eeca106725 1440 ((__OFFSET_NUMBER__) == ADC_OFFSET_1) || \
Kojto 122:f9eeca106725 1441 ((__OFFSET_NUMBER__) == ADC_OFFSET_2) || \
Kojto 122:f9eeca106725 1442 ((__OFFSET_NUMBER__) == ADC_OFFSET_3) || \
Kojto 122:f9eeca106725 1443 ((__OFFSET_NUMBER__) == ADC_OFFSET_4) )
Kojto 122:f9eeca106725 1444
Kojto 122:f9eeca106725 1445 /**
Kojto 122:f9eeca106725 1446 * @brief Verify the ADC injected channel setting.
Kojto 122:f9eeca106725 1447 * @param __CHANNEL__: programmed ADC injected channel.
Kojto 122:f9eeca106725 1448 * @retval SET (__CHANNEL__ is valid) or RESET (__CHANNEL__ is invalid)
Kojto 122:f9eeca106725 1449 */
Kojto 122:f9eeca106725 1450 #define IS_ADC_INJECTED_RANK(__CHANNEL__) (((__CHANNEL__) == ADC_INJECTED_RANK_1) || \
Kojto 122:f9eeca106725 1451 ((__CHANNEL__) == ADC_INJECTED_RANK_2) || \
Kojto 122:f9eeca106725 1452 ((__CHANNEL__) == ADC_INJECTED_RANK_3) || \
Kojto 122:f9eeca106725 1453 ((__CHANNEL__) == ADC_INJECTED_RANK_4) )
Kojto 122:f9eeca106725 1454
Kojto 122:f9eeca106725 1455 /**
Kojto 122:f9eeca106725 1456 * @brief Verify the ADC injected conversions external trigger.
Kojto 122:f9eeca106725 1457 * @param __INJTRIG__: programmed ADC injected conversions external trigger.
Kojto 122:f9eeca106725 1458 * @retval SET (__INJTRIG__ is a valid value) or RESET (__INJTRIG__ is invalid)
Kojto 122:f9eeca106725 1459 */
Kojto 122:f9eeca106725 1460 #define IS_ADC_EXTTRIGINJEC(__INJTRIG__) (((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T1_TRGO) || \
Kojto 122:f9eeca106725 1461 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T1_CC4) || \
Kojto 122:f9eeca106725 1462 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T2_TRGO) || \
Kojto 122:f9eeca106725 1463 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T2_CC1) || \
Kojto 122:f9eeca106725 1464 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_CC4) || \
Kojto 122:f9eeca106725 1465 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T4_TRGO) || \
Kojto 122:f9eeca106725 1466 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_EXT_IT15) || \
Kojto 122:f9eeca106725 1467 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T8_CC4) || \
Kojto 122:f9eeca106725 1468 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T1_TRGO2) || \
Kojto 122:f9eeca106725 1469 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T8_TRGO) || \
Kojto 122:f9eeca106725 1470 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T8_TRGO2) || \
Kojto 122:f9eeca106725 1471 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_CC3) || \
Kojto 122:f9eeca106725 1472 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_TRGO) || \
Kojto 122:f9eeca106725 1473 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T3_CC1) || \
Kojto 122:f9eeca106725 1474 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T6_TRGO) || \
Kojto 122:f9eeca106725 1475 ((__INJTRIG__) == ADC_EXTERNALTRIGINJEC_T15_TRGO) || \
Kojto 122:f9eeca106725 1476 \
Kojto 122:f9eeca106725 1477 ((__INJTRIG__) == ADC_SOFTWARE_START) )
Kojto 122:f9eeca106725 1478
AnnaBridge 145:64910690c574 1479 /**
AnnaBridge 145:64910690c574 1480 * @brief Verify the ADC edge trigger setting for injected group.
AnnaBridge 145:64910690c574 1481 * @param __EDGE__: programmed ADC edge trigger setting.
AnnaBridge 145:64910690c574 1482 * @retval SET (__EDGE__ is a valid value) or RESET (__EDGE__ is invalid)
AnnaBridge 145:64910690c574 1483 */
AnnaBridge 145:64910690c574 1484 #define IS_ADC_EXTTRIGINJEC_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_NONE) || \
AnnaBridge 145:64910690c574 1485 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISING) || \
AnnaBridge 145:64910690c574 1486 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_FALLING) || \
AnnaBridge 145:64910690c574 1487 ((__EDGE__) == ADC_EXTERNALTRIGINJECCONV_EDGE_RISINGFALLING) )
Kojto 122:f9eeca106725 1488
AnnaBridge 145:64910690c574 1489 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1490 /**
Kojto 122:f9eeca106725 1491 * @brief Verify the ADC multimode setting.
Kojto 122:f9eeca106725 1492 * @param __MODE__: programmed ADC multimode setting.
Kojto 122:f9eeca106725 1493 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
Kojto 122:f9eeca106725 1494 */
Kojto 122:f9eeca106725 1495 #define IS_ADC_MULTIMODE(__MODE__) (((__MODE__) == ADC_MODE_INDEPENDENT) || \
Kojto 122:f9eeca106725 1496 ((__MODE__) == ADC_DUALMODE_REGSIMULT_INJECSIMULT) || \
Kojto 122:f9eeca106725 1497 ((__MODE__) == ADC_DUALMODE_REGSIMULT_ALTERTRIG) || \
Kojto 122:f9eeca106725 1498 ((__MODE__) == ADC_DUALMODE_REGINTERL_INJECSIMULT) || \
Kojto 122:f9eeca106725 1499 ((__MODE__) == ADC_DUALMODE_INJECSIMULT) || \
Kojto 122:f9eeca106725 1500 ((__MODE__) == ADC_DUALMODE_REGSIMULT) || \
Kojto 122:f9eeca106725 1501 ((__MODE__) == ADC_DUALMODE_INTERL) || \
Kojto 122:f9eeca106725 1502 ((__MODE__) == ADC_DUALMODE_ALTERTRIG) )
Kojto 122:f9eeca106725 1503
Kojto 122:f9eeca106725 1504 /**
Kojto 122:f9eeca106725 1505 * @brief Verify the ADC multimode DMA access setting.
Kojto 122:f9eeca106725 1506 * @param __MODE__: programmed ADC multimode DMA access setting.
Kojto 122:f9eeca106725 1507 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
Kojto 122:f9eeca106725 1508 */
Kojto 122:f9eeca106725 1509 #define IS_ADC_DMA_ACCESS_MULTIMODE(__MODE__) (((__MODE__) == ADC_DMAACCESSMODE_DISABLED) || \
Kojto 122:f9eeca106725 1510 ((__MODE__) == ADC_DMAACCESSMODE_12_10_BITS) || \
Kojto 122:f9eeca106725 1511 ((__MODE__) == ADC_DMAACCESSMODE_8_6_BITS) )
Kojto 122:f9eeca106725 1512
Kojto 122:f9eeca106725 1513 /**
Kojto 122:f9eeca106725 1514 * @brief Verify the ADC multimode delay setting.
Kojto 122:f9eeca106725 1515 * @param __DELAY__: programmed ADC multimode delay setting.
Kojto 122:f9eeca106725 1516 * @retval SET (__DELAY__ is a valid value) or RESET (__DELAY__ is invalid)
Kojto 122:f9eeca106725 1517 */
Kojto 122:f9eeca106725 1518 #define IS_ADC_SAMPLING_DELAY(__DELAY__) (((__DELAY__) == ADC_TWOSAMPLINGDELAY_1CYCLE) || \
Kojto 122:f9eeca106725 1519 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_2CYCLES) || \
Kojto 122:f9eeca106725 1520 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_3CYCLES) || \
Kojto 122:f9eeca106725 1521 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_4CYCLES) || \
Kojto 122:f9eeca106725 1522 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \
Kojto 122:f9eeca106725 1523 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \
Kojto 122:f9eeca106725 1524 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \
Kojto 122:f9eeca106725 1525 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \
Kojto 122:f9eeca106725 1526 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \
Kojto 122:f9eeca106725 1527 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \
Kojto 122:f9eeca106725 1528 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \
Kojto 122:f9eeca106725 1529 ((__DELAY__) == ADC_TWOSAMPLINGDELAY_12CYCLES) )
AnnaBridge 145:64910690c574 1530 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 1531
Kojto 122:f9eeca106725 1532 /**
Kojto 122:f9eeca106725 1533 * @brief Verify the ADC analog watchdog setting.
Kojto 122:f9eeca106725 1534 * @param __WATCHDOG__: programmed ADC analog watchdog setting.
Kojto 122:f9eeca106725 1535 * @retval SET (__WATCHDOG__ is valid) or RESET (__WATCHDOG__ is invalid)
Kojto 122:f9eeca106725 1536 */
Kojto 122:f9eeca106725 1537 #define IS_ADC_ANALOG_WATCHDOG_NUMBER(__WATCHDOG__) (((__WATCHDOG__) == ADC_ANALOGWATCHDOG_1) || \
Kojto 122:f9eeca106725 1538 ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_2) || \
Kojto 122:f9eeca106725 1539 ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_3) )
Kojto 122:f9eeca106725 1540
Kojto 122:f9eeca106725 1541 /**
Kojto 122:f9eeca106725 1542 * @brief Verify the ADC analog watchdog mode setting.
Kojto 122:f9eeca106725 1543 * @param __WATCHDOG_MODE__: programmed ADC analog watchdog mode setting.
Kojto 122:f9eeca106725 1544 * @retval SET (__WATCHDOG_MODE__ is valid) or RESET (__WATCHDOG_MODE__ is invalid)
Kojto 122:f9eeca106725 1545 */
Kojto 122:f9eeca106725 1546 #define IS_ADC_ANALOG_WATCHDOG_MODE(__WATCHDOG_MODE__) (((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_NONE) || \
Kojto 122:f9eeca106725 1547 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
Kojto 122:f9eeca106725 1548 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \
Kojto 122:f9eeca106725 1549 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \
Kojto 122:f9eeca106725 1550 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_ALL_REG) || \
Kojto 122:f9eeca106725 1551 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \
Kojto 122:f9eeca106725 1552 ((__WATCHDOG_MODE__) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) )
Kojto 122:f9eeca106725 1553
Kojto 122:f9eeca106725 1554 /**
Kojto 122:f9eeca106725 1555 * @brief Verify the ADC conversion (regular or injected or both).
Kojto 122:f9eeca106725 1556 * @param __CONVERSION__: ADC conversion group.
Kojto 122:f9eeca106725 1557 * @retval SET (__CONVERSION__ is valid) or RESET (__CONVERSION__ is invalid)
Kojto 122:f9eeca106725 1558 */
Kojto 122:f9eeca106725 1559 #define IS_ADC_CONVERSION_GROUP(__CONVERSION__) (((__CONVERSION__) == ADC_REGULAR_GROUP) || \
Kojto 122:f9eeca106725 1560 ((__CONVERSION__) == ADC_INJECTED_GROUP) || \
Kojto 122:f9eeca106725 1561 ((__CONVERSION__) == ADC_REGULAR_INJECTED_GROUP) )
Kojto 122:f9eeca106725 1562
Kojto 122:f9eeca106725 1563 /**
Kojto 122:f9eeca106725 1564 * @brief Verify the ADC event type.
Kojto 122:f9eeca106725 1565 * @param __EVENT__: ADC event.
Kojto 122:f9eeca106725 1566 * @retval SET (__EVENT__ is valid) or RESET (__EVENT__ is invalid)
Kojto 122:f9eeca106725 1567 */
Kojto 122:f9eeca106725 1568 #define IS_ADC_EVENT_TYPE(__EVENT__) (((__EVENT__) == ADC_EOSMP_EVENT) || \
Kojto 122:f9eeca106725 1569 ((__EVENT__) == ADC_AWD_EVENT) || \
Kojto 122:f9eeca106725 1570 ((__EVENT__) == ADC_AWD2_EVENT) || \
Kojto 122:f9eeca106725 1571 ((__EVENT__) == ADC_AWD3_EVENT) || \
Kojto 122:f9eeca106725 1572 ((__EVENT__) == ADC_OVR_EVENT) || \
Kojto 122:f9eeca106725 1573 ((__EVENT__) == ADC_JQOVF_EVENT) )
Kojto 122:f9eeca106725 1574
Kojto 122:f9eeca106725 1575 /**
Kojto 122:f9eeca106725 1576 * @brief Verify the ADC oversampling ratio.
Kojto 122:f9eeca106725 1577 * @param __RATIO__: programmed ADC oversampling ratio.
Kojto 122:f9eeca106725 1578 * @retval SET (__RATIO__ is a valid value) or RESET (__RATIO__ is invalid)
Kojto 122:f9eeca106725 1579 */
Kojto 122:f9eeca106725 1580 #define IS_ADC_OVERSAMPLING_RATIO(__RATIO__) (((__RATIO__) == ADC_OVERSAMPLING_RATIO_2 ) || \
Kojto 122:f9eeca106725 1581 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_4 ) || \
Kojto 122:f9eeca106725 1582 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_8 ) || \
Kojto 122:f9eeca106725 1583 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_16 ) || \
Kojto 122:f9eeca106725 1584 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_32 ) || \
Kojto 122:f9eeca106725 1585 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_64 ) || \
Kojto 122:f9eeca106725 1586 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_128 ) || \
Kojto 122:f9eeca106725 1587 ((__RATIO__) == ADC_OVERSAMPLING_RATIO_256 ))
Kojto 122:f9eeca106725 1588
Kojto 122:f9eeca106725 1589 /**
Kojto 122:f9eeca106725 1590 * @brief Verify the ADC oversampling shift.
Kojto 122:f9eeca106725 1591 * @param __SHIFT__: programmed ADC oversampling shift.
Kojto 122:f9eeca106725 1592 * @retval SET (__SHIFT__ is a valid value) or RESET (__SHIFT__ is invalid)
Kojto 122:f9eeca106725 1593 */
Kojto 122:f9eeca106725 1594 #define IS_ADC_RIGHT_BIT_SHIFT(__SHIFT__) (((__SHIFT__) == ADC_RIGHTBITSHIFT_NONE) || \
Kojto 122:f9eeca106725 1595 ((__SHIFT__) == ADC_RIGHTBITSHIFT_1 ) || \
Kojto 122:f9eeca106725 1596 ((__SHIFT__) == ADC_RIGHTBITSHIFT_2 ) || \
Kojto 122:f9eeca106725 1597 ((__SHIFT__) == ADC_RIGHTBITSHIFT_3 ) || \
Kojto 122:f9eeca106725 1598 ((__SHIFT__) == ADC_RIGHTBITSHIFT_4 ) || \
Kojto 122:f9eeca106725 1599 ((__SHIFT__) == ADC_RIGHTBITSHIFT_5 ) || \
Kojto 122:f9eeca106725 1600 ((__SHIFT__) == ADC_RIGHTBITSHIFT_6 ) || \
Kojto 122:f9eeca106725 1601 ((__SHIFT__) == ADC_RIGHTBITSHIFT_7 ) || \
Kojto 122:f9eeca106725 1602 ((__SHIFT__) == ADC_RIGHTBITSHIFT_8 ))
Kojto 122:f9eeca106725 1603
Kojto 122:f9eeca106725 1604 /**
Kojto 122:f9eeca106725 1605 * @brief Verify the ADC oversampling triggered mode.
Kojto 122:f9eeca106725 1606 * @param __MODE__: programmed ADC oversampling triggered mode.
Kojto 122:f9eeca106725 1607 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
Kojto 122:f9eeca106725 1608 */
Kojto 122:f9eeca106725 1609 #define IS_ADC_TRIGGERED_OVERSAMPLING_MODE(__MODE__) (((__MODE__) == ADC_TRIGGEREDMODE_SINGLE_TRIGGER) || \
Kojto 122:f9eeca106725 1610 ((__MODE__) == ADC_TRIGGEREDMODE_MULTI_TRIGGER) )
Kojto 122:f9eeca106725 1611
Kojto 122:f9eeca106725 1612 /**
Kojto 122:f9eeca106725 1613 * @brief Verify the ADC oversampling regular conversion resumed or continued mode.
Kojto 122:f9eeca106725 1614 * @param __MODE__: programmed ADC oversampling regular conversion resumed or continued mode.
Kojto 122:f9eeca106725 1615 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
Kojto 122:f9eeca106725 1616 */
Kojto 122:f9eeca106725 1617 #define IS_ADC_REGOVERSAMPLING_MODE(__MODE__) (((__MODE__) == ADC_REGOVERSAMPLING_CONTINUED_MODE) || \
Kojto 122:f9eeca106725 1618 ((__MODE__) == ADC_REGOVERSAMPLING_RESUMED_MODE) )
Kojto 122:f9eeca106725 1619
Kojto 122:f9eeca106725 1620
Kojto 122:f9eeca106725 1621 /**
Kojto 122:f9eeca106725 1622 * @brief Verify the DFSDM mode configuration.
Kojto 122:f9eeca106725 1623 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1624 * @note When DMSDFM configuration is not supported, the macro systematically reports SET. For
Kojto 122:f9eeca106725 1625 * this reason, the input parameter is the ADC handle and not the configuration parameter
Kojto 122:f9eeca106725 1626 * directly.
Kojto 122:f9eeca106725 1627 * @retval SET (DFSDM mode configuration is valid) or RESET (DFSDM mode configuration is invalid)
Kojto 122:f9eeca106725 1628 */
AnnaBridge 145:64910690c574 1629 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 1630 #define IS_ADC_DFSDMCFG_MODE(__HANDLE__) (((__HANDLE__)->Init.DFSDMConfig == ADC_DFSDM_MODE_DISABLE) || \
AnnaBridge 145:64910690c574 1631 ((__HANDLE__)->Init.DFSDMConfig == ADC_DFSDM_MODE_ENABLE) )
AnnaBridge 145:64910690c574 1632 #else
Kojto 122:f9eeca106725 1633 #define IS_ADC_DFSDMCFG_MODE(__HANDLE__) (SET)
AnnaBridge 145:64910690c574 1634 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
Kojto 122:f9eeca106725 1635
Kojto 122:f9eeca106725 1636 /**
Kojto 122:f9eeca106725 1637 * @brief Return the DFSDM configuration mode.
Kojto 122:f9eeca106725 1638 * @param __HANDLE__: ADC handle.
Kojto 122:f9eeca106725 1639 * @note When DMSDFM configuration is not supported, the macro systematically reports 0x0 (i.e disabled).
Kojto 122:f9eeca106725 1640 * For this reason, the input parameter is the ADC handle and not the configuration parameter
Kojto 122:f9eeca106725 1641 * directly.
Kojto 122:f9eeca106725 1642 * @retval DFSDM configuration mode
Kojto 122:f9eeca106725 1643 */
AnnaBridge 145:64910690c574 1644 #if defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
AnnaBridge 145:64910690c574 1645 #define ADC_CFGR_DFSDM(__HANDLE__) ((__HANDLE__)->Init.DFSDMConfig)
AnnaBridge 145:64910690c574 1646 #else
Kojto 122:f9eeca106725 1647 #define ADC_CFGR_DFSDM(__HANDLE__) (0x0)
AnnaBridge 145:64910690c574 1648 #endif /* STM32L451xx || STM32L452xx || STM32L462xx || STM32L496xx || STM32L4A6xx */
Kojto 122:f9eeca106725 1649
Kojto 122:f9eeca106725 1650 /**
Kojto 122:f9eeca106725 1651 * @}
Kojto 122:f9eeca106725 1652 */
Kojto 122:f9eeca106725 1653
Kojto 122:f9eeca106725 1654
Kojto 122:f9eeca106725 1655 /* Exported functions --------------------------------------------------------*/
AnnaBridge 145:64910690c574 1656 /** @addtogroup ADCEx_Exported_Functions
Kojto 122:f9eeca106725 1657 * @{
Kojto 122:f9eeca106725 1658 */
Kojto 122:f9eeca106725 1659
AnnaBridge 145:64910690c574 1660 /** @addtogroup ADCEx_Exported_Functions_Group1
Kojto 122:f9eeca106725 1661 * @{
Kojto 122:f9eeca106725 1662 */
AnnaBridge 145:64910690c574 1663 /* IO operation functions *****************************************************/
Kojto 122:f9eeca106725 1664
Kojto 122:f9eeca106725 1665 /* ADC calibration */
Kojto 122:f9eeca106725 1666 HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc, uint32_t SingleDiff);
Kojto 122:f9eeca106725 1667 uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff);
Kojto 122:f9eeca106725 1668 HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff, uint32_t CalibrationFactor);
Kojto 122:f9eeca106725 1669
Kojto 122:f9eeca106725 1670 /* Blocking mode: Polling */
Kojto 122:f9eeca106725 1671 HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1672 HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1673 HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
Kojto 122:f9eeca106725 1674
Kojto 122:f9eeca106725 1675 /* Non-blocking mode: Interruption */
Kojto 122:f9eeca106725 1676 HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1677 HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1678
AnnaBridge 145:64910690c574 1679 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1680 /* ADC multimode */
Kojto 122:f9eeca106725 1681 HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length);
Kojto 122:f9eeca106725 1682 HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc);
Kojto 122:f9eeca106725 1683 uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef *hadc);
AnnaBridge 145:64910690c574 1684 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 1685
Kojto 122:f9eeca106725 1686 /* ADC retrieve conversion value intended to be used with polling or interruption */
Kojto 122:f9eeca106725 1687 uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef* hadc, uint32_t InjectedRank);
Kojto 122:f9eeca106725 1688
Kojto 122:f9eeca106725 1689 /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption) */
Kojto 122:f9eeca106725 1690 void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1691 void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1692 void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1693 void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1694 void HAL_ADCEx_EndOfSamplingCallback(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1695
Kojto 122:f9eeca106725 1696 /* ADC Regular conversions stop */
Kojto 122:f9eeca106725 1697 HAL_StatusTypeDef HAL_ADCEx_RegularStop(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1698 HAL_StatusTypeDef HAL_ADCEx_RegularStop_IT(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1699 HAL_StatusTypeDef HAL_ADCEx_RegularStop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1700 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1701 HAL_StatusTypeDef HAL_ADCEx_RegularMultiModeStop_DMA(ADC_HandleTypeDef* hadc);
AnnaBridge 145:64910690c574 1702 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 1703
Kojto 122:f9eeca106725 1704 /**
Kojto 122:f9eeca106725 1705 * @}
Kojto 122:f9eeca106725 1706 */
Kojto 122:f9eeca106725 1707
AnnaBridge 145:64910690c574 1708 /** @addtogroup ADCEx_Exported_Functions_Group2
Kojto 122:f9eeca106725 1709 * @{
Kojto 122:f9eeca106725 1710 */
Kojto 122:f9eeca106725 1711 /* Peripheral Control functions ***********************************************/
Kojto 122:f9eeca106725 1712 HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef* hadc,ADC_InjectionConfTypeDef* sConfigInjected);
AnnaBridge 145:64910690c574 1713 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx)
Kojto 122:f9eeca106725 1714 HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_MultiModeTypeDef *multimode);
AnnaBridge 145:64910690c574 1715 #endif /* defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || defined (STM32L496xx) || defined (STM32L4A6xx) */
Kojto 122:f9eeca106725 1716 HAL_StatusTypeDef HAL_ADCEx_EnableInjectedQueue(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1717 HAL_StatusTypeDef HAL_ADCEx_DisableInjectedQueue(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1718 HAL_StatusTypeDef HAL_ADCEx_DisableVoltageRegulator(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1719 HAL_StatusTypeDef HAL_ADCEx_EnterADCDeepPowerDownMode(ADC_HandleTypeDef* hadc);
Kojto 122:f9eeca106725 1720
Kojto 122:f9eeca106725 1721 /**
Kojto 122:f9eeca106725 1722 * @}
Kojto 122:f9eeca106725 1723 */
Kojto 122:f9eeca106725 1724
Kojto 122:f9eeca106725 1725 /**
Kojto 122:f9eeca106725 1726 * @}
Kojto 122:f9eeca106725 1727 */
Kojto 122:f9eeca106725 1728
Kojto 122:f9eeca106725 1729 /**
Kojto 122:f9eeca106725 1730 * @}
Kojto 122:f9eeca106725 1731 */
Kojto 122:f9eeca106725 1732
Kojto 122:f9eeca106725 1733 /**
Kojto 122:f9eeca106725 1734 * @}
Kojto 122:f9eeca106725 1735 */
Kojto 122:f9eeca106725 1736
Kojto 122:f9eeca106725 1737 #ifdef __cplusplus
Kojto 122:f9eeca106725 1738 }
Kojto 122:f9eeca106725 1739 #endif
Kojto 122:f9eeca106725 1740
AnnaBridge 145:64910690c574 1741 #endif /* __STM32L4xx_HAL_ADC_EX_H */
Kojto 122:f9eeca106725 1742
Kojto 122:f9eeca106725 1743
Kojto 122:f9eeca106725 1744 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/