mbed library sources. Supersedes mbed-src.

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

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

Who changed what in which revision?

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