34. Analog-to-digital converter (ADC4)

34.1 ADC introduction

The 12-bit ADC is a successive approximation analog-to-digital converter. It has up to 25 multiplexed channels enabling it to measure signals from up to 19 external sources and 6 internal sources. A/D conversion of the various channels can be performed in single, continuous, scan or discontinuous mode. The result of the ADC is stored in a left-aligned or right-aligned 16-bit data register.

The analog watchdog feature enables the application to detect if the input voltage goes outside the user-defined higher or lower thresholds.

An efficient low-power mode is implemented to allow very low consumption at low frequency.

A built-in hardware oversampler allows improving analog performances while off-loading the related computational burden from the CPU.

34.2 ADC main features

34.3 ADC implementation

Table 324. ADC main features (1)

ADC modes/featuresSTM32U535/545/
575/585
STM32U59x/5Ax
/5Fx/5Gx
STM32U535/545/575/585
/59x/5Ax/5Fx/5Gx
ADC1ADC1ADC2ADC4
Resolution14 bits12 bits
Maximum sampling speed for 14-bit resolution2.5 Msps2.5 Msps
Hardware offset calibrationXX
Hardware linearity calibrationX-
Single-ended inputsXX
Differential inputsX-
Injected channel conversionX-
Oversamplingup to x1024up to x256
Data register32 bits16 bits
DMA supportXX
Parallel data output to MDFX-
Dual mode-X-
Autonomous mode-X
Offset compensationX-
Table 324. ADC main features (1) (continued)
ADC modes/featuresSTM32U535/545/
575/585
STM32U59x/5Ax
/5Fx/5Gx
STM32U535/545/575/585
/59x/5Ax/5Fx/5Gx
ADC1ADC1ADC2ADC4
Gain compensationX-
Number of analog watchdogs33
Wake-up from Stop mode-X (2)
  1. 1. Note: 'X' = supported, '-' = not supported.
  2. 2. Wake-up supported from Stop 0, Stop 1, and Stop 2 modes.

Table 325. Memory location of the temperature sensor calibration values

NameDescriptionMemory address
TS_CAL1Temperature sensor 14-bit raw data acquired by ADC1 at 30 °C ( \( \pm 5 \) °C), \( V_{DDA} = V_{REF+} = 3.0 \) V ( \( \pm 10 \) mV)0x0BFA 0710 - 0x0BFA 0711
TS_CAL2Temperature sensor 14-bit raw data acquired by ADC1 at 130 °C ( \( \pm 5 \) °C), \( V_{DDA} = V_{REF+} = 3.0 \) V ( \( \pm 10 \) mV)0x0BFA 0742 - 0x0BFA 0743

Table 326. Memory location of the internal reference voltage sensor calibration value

NameDescriptionMemory address
VREFINT_CAL14-bit raw data acquired by ADC1 at 30 °C ( \( \pm 5 \) °C), \( V_{DDA} = V_{REF+} = 3.0 \) V ( \( \pm 10 \) mV)0x0BFA 07A5 - 0x0BFA 07A6

34.4 ADC functional description

34.4.1 ADC block diagram

Figure 278 shows the ADC block diagram and Table 327 gives the ADC pin description.

Figure 278. ADC block diagram

ADC block diagram showing internal components like SAR ADC, Oversampler, AHB interface, and various control signals.

The block diagram illustrates the internal architecture of the ADC4. At the core is the SAR ADC block, which receives CONVERTED DATA from an Oversampler . The SAR ADC is controlled by a Start & Stop control block, which in turn is triggered by ADSTART (SW trigger) or HW trigger (from EXTEN[1:0] and EXTSEL[2:0] ). The Input selection & scan control block manages ADC_INx channels and is configured by SCANDIR , CHSELRMOD , CHSEL[23:0] , SQx[3:0] , and CONT (single/continuous). The Supply and reference block provides V IN and V REF+ and is controlled by ADVREGEN , LFTRIG , and ADCAL . The AHB interface connects to the ADC via DATA[15:0] and is controlled by ADRDY , EOSMP , EOC , EOS , OVR , AWDx , EOCAL , and LDORDY . The Analog watchdog 1,2,3 block compares TOVS , OVSS[3:0] , OVSR[2:0] , and OVSE against AWDxEN , AWDxSGL , AWDCH[4:0] , LTx[11:0] , HTx[11:0] , and AWDxCH[23:0] to generate adc_awd1 , adc_awd2 , and adc_awd3 signals. The ADC also receives adc_trg0 , adc_trg1 , and other trigger signals. External pins include V REF+ , V DDA , adc_it , adc_dma , adc_ker_ck , and adc_hclk .

ADC block diagram showing internal components like SAR ADC, Oversampler, AHB interface, and various control signals.

MSv62483V2

34.4.2 ADC pins and internal signals

Table 327. ADC input/output pins

Pin nameSignal typeDescription
VDDAInput, analog power supplyAnalog power supply and positive reference voltage for the ADC, \( V_{DDA} \geq V_{DD} \)
VSSAInput, analog supply groundGround for analog power supply, equal to \( V_{SS} \) .
VREF+Input, reference positiveThe higher/positive reference voltage for the ADC.
ADC_INxAnalog input signalsup to 19 external analog input channels.

Table 328. ADC internal input/output signals

Internal signal nameSignal typeDescription
V IN [x]Analog inputsAnalog input channels connected either to internal channels or to ADC_INx external channels.
adc_trgxInputsADC conversion triggers.
adc_awdxOutputInternal analog watchdog output signal connected to on-chip timers (x = Analog watchdog number = 1,2,3).
adc_itOutputADC interrupt.
adc_hclkInputAHB clock.
adc_ker_ckInputADC kernel clock input from the RCC block.
adc_dmaOutputADC DMA request

Table 329. ADC interconnection

Signal nameSource/destination
ADC4 V IN [13]V SENSE (internal temperature sensor output voltage)
ADC4 V IN [0]V REFINT (buffered voltage from internal reference voltage)
ADC4 V IN [14]V BAT/4 (VBAT pin input voltage divided by 4)
ADC4 V IN [12]V CORE (internal logic supply voltage).
ADC4 V IN [21]dac1_out1
dac1_out2
adc_trg0tim1_trgo2
adc_trg1tim1_oc4
adc_trg2tim2_trgo
adc_trg3tim15_trgo
adc_trg4tim6_trgo
adc_trg5lptim1_ch1
adc_trg6lptim3_ch2
adc_trg7exti15

34.4.3 ADC voltage regulator (ADVREGEN)

The ADC has a specific internal voltage regulator which must be enabled and stable before using the ADC.

The ADC internal voltage regulator can be enabled by setting ADVREGEN bit to 1 in the ADC_CR register. The software must wait for the ADC voltage regulator startup time ( \( t_{ADCVREG\_SETUP} \) ) before launching a calibration or enabling the ADC. The LDO status can be verified by checking the LDORDY bit in ADC_ISR register.

After ADC operations are complete, the ADC can be disabled (ADEN = 0). It is then possible to save additional power by disabling the ADC voltage regulator (refer to Section : ADC voltage regulator disable sequence ).

Note: When the internal voltage regulator is disabled, the internal analog calibration factor is reset, and a new calibration must be performed.

ADC voltage regulator enable sequence

To enable the ADC voltage regulator, follow the sequence below:

  1. 1. Clear the LDORDY bit in ADC_ISR register by programming this bit to 1.
  2. 2. Set the ADVREGEN bit to 1 in ADC_CR register.
  3. 3. Wait until LDORDY = 1 in the ADC_ISR register (LDORDY is set after the ADC voltage regulator startup time). This can be handled by interrupt if the interrupt is enabled by setting the LDORDYIE bit in the ADC_IER register.

ADC voltage regulator disable sequence

To disable the ADC voltage regulator, follow the sequence below:

  1. 1. Make sure that the ADC is disabled (ADEN = 0).
  2. 2. Clear ADVREGEN bit in ADC_CR register.
  3. 3. Clear the LDORDY bit in ADC_ISR register by programming this bit to 1(optional),

34.4.4 Calibration (ADCAL)

The ADC has a calibration feature. During the procedure, the ADC calculates a calibration factor which is internally applied to the ADC until the next ADC power-off. The application must not use the ADC during calibration and must wait until it is complete.

The calibration must be performed before starting analog-to-digital conversion. It removes the offset error which may vary from chip to chip due to process variation, supply voltage and temperature.

The calibration is initiated by software by setting bit ADCAL to 1. It can be initiated only when all the following conditions are met:

ADCAL bit stays at 1 during all the calibration sequence. It is then cleared by hardware as soon the calibration completes. After this, the calibration factor can be read from the ADC_DR register (from bits 6 to 0).

The internal analog calibration is kept if the ADC is disabled (ADEN = 0). When the ADC operating conditions change ( \( V_{DDA} \) changes are the main contributor to ADC offset variations and temperature change to a lesser extent), it is recommended to re-run a calibration cycle. It is recommended to recalibrate when \( V_{REF+} \) voltage changed more than 10%.

The calibration factor is lost in the following cases:

The calibration factor is lost each time power is removed from the ADC (for example when the product enters Standby or \( V_{BAT} \) mode). Still, it is possible to save and restore the calibration factor by software to save time when re-starting the ADC (as long as temperature and voltage are stable during the ADC power-down).

The calibration factor can be written if the ADC is enabled but not converting (ADEN = 1 and ADSTART = 0). Then, at the next start of conversion, the calibration factor is automatically injected into the analog ADC. This loading is transparent and does not add any cycle latency to the start of the conversion.

Software calibration procedure

  1. 1. Ensure that ADEN = 0, ADVREGEN = 1, AUTOFF = 0, DPD = 0, and DMAEN = 0.
  2. 2. Set ADCAL = 1.
  3. 3. Wait until ADCAL = 0 (or until EOCAL = 1). This can be handled by interrupt if the interrupt is enabled by setting the EOCALIE bit in the ADC_IER register
  4. 4. The calibration factor can be read from bits 6:0 of ADC_DR or ADC_CALFACT registers.

Figure 279. ADC calibration

Timing diagram for ADC calibration showing the relationship between ADCAL, ADC State, ADC_DR[6:0], and ADC_CALFACT[6:0] over time.

The diagram illustrates the timing of the ADC calibration process. It shows four signal levels over time:

The time interval \( t_{CAB} \) is marked from the rising edge of ADCAL to the falling edge of ADCAL. A legend indicates that a rising arrow represents 'by SW' (software) and a falling arrow represents 'by HW' (hardware). The diagram is labeled MSV33703V2.

Timing diagram for ADC calibration showing the relationship between ADCAL, ADC State, ADC_DR[6:0], and ADC_CALFACT[6:0] over time.
  1. 1. Refer to the device datasheet for the value of \( t_{CAB} \) .

Calibration factor forcing software procedure

  1. 1. Ensure that ADEN = 1 and ADSTART = 0 (ADC started with no conversion ongoing).
  2. 2. Write ADC_CALFACT with the saved calibration factor.
  3. 3. The calibration factor is used as soon as a new conversion is launched.

Figure 280. Calibration factor forcing

Figure 280: Calibration factor forcing timing diagram. Shows ADC state transitions from Ready to Converting channel. Internal calibration factor changes from F1 to F2. Start conversion pulses are shown for S/W and H/W. WRITE ADC_CALFACT pulse occurs during Ready state. CALFACT[6:0] updates to F2 upon the start of conversion.

MSv31925V2

Figure 280: Calibration factor forcing timing diagram. Shows ADC state transitions from Ready to Converting channel. Internal calibration factor changes from F1 to F2. Start conversion pulses are shown for S/W and H/W. WRITE ADC_CALFACT pulse occurs during Ready state. CALFACT[6:0] updates to F2 upon the start of conversion.

34.4.5 ADC on-off control (ADEN, ADDIS, ADRDY)

At power-up, the ADC is disabled and put in power-down mode (ADEN = 0).

As shown in Figure 281 , the ADC needs a stabilization time of \( t_{STAB} \) before it starts converting accurately.

Two control bits are used to enable or disable the ADC:

Conversion can then start either by setting ADSTART to 1 (refer to Section 34.4.16: Conversion on external trigger and trigger polarity (EXTSEL, EXTEN) ) or when an external trigger event occurs if triggers are enabled.

Follow the procedure below to enable the ADC:

  1. 1. Clear the ADRDY bit in ADC_ISR register by programming this bit to 1.
  2. 2. Set ADEN = 1 in the ADC_CR register.
  3. 3. Wait until ADRDY = 1 in the ADC_ISR register (ADRDY is set after the ADC startup time). This can be handled by interrupt if the interrupt is enabled by setting the ADRDYIE bit in the ADC_IER register.

Follow the procedure below to disable the ADC:

  1. 1. Check that ADSTART = 0 in the ADC_CR register to ensure that no conversion is ongoing. If the software trigger mode was used, stop the software trigger mode by writing 1 to the ADSTP bit of the ADC_CR register and waiting until this bit is read at 0.
  2. 2. Set ADDIS = 1 in the ADC_CR register.
  3. 3. If required by the application, wait until ADEN = 0 in the ADC_CR register, indicating that the ADC is fully disabled (ADDIS is automatically reset once ADEN = 0).
  4. 4. Clear the ADRDY bit in ADC_ISR register by programming this bit to 1 (optional).

Figure 281. Enabling/disabling the ADC

Timing diagram for enabling/disabling the ADC. It shows four signal lines over time: ADEN, ADRDY, ADDIS, and ADC state. ADEN is set by software (S/W) to enable the ADC. ADRDY goes high after a stabilization time tSTAB. ADDIS is set by software to disable the ADC. The ADC state transitions from OFF to Startup, then RDY, then Converting CH, then RDY, then REQ-OF, and finally OFF. ADRDY goes low when the ADC is disabled. A legend indicates that rising arrows represent software (S/W) and falling arrows represent hardware (H/W).

The diagram illustrates the timing for enabling and disabling the ADC. The ADEN signal is set by software (S/W) to enable the ADC. The ADRDY signal goes high after a stabilization time \( t_{STAB} \) . The ADDIS signal is set by software (S/W) to disable the ADC. The ADC state transitions from OFF to Startup, then RDY, then Converting CH, then RDY, then REQ-OF, and finally OFF. ADRDY goes low when the ADC is disabled. A legend indicates that rising arrows represent software (S/W) and falling arrows represent hardware (H/W). The diagram is labeled MSv62472V1.

Timing diagram for enabling/disabling the ADC. It shows four signal lines over time: ADEN, ADRDY, ADDIS, and ADC state. ADEN is set by software (S/W) to enable the ADC. ADRDY goes high after a stabilization time tSTAB. ADDIS is set by software to disable the ADC. The ADC state transitions from OFF to Startup, then RDY, then Converting CH, then RDY, then REQ-OF, and finally OFF. ADRDY goes low when the ADC is disabled. A legend indicates that rising arrows represent software (S/W) and falling arrows represent hardware (H/W).

Note: In auto-off mode (AUTOFF = 1) the power-on/off phases are performed automatically, by hardware and the ADRDY flag is not set.

Caution: The ADEN bit cannot be set while the ADCAL bit is set, and during four ADC clock cycles after the ADCAL bit is cleared by the hardware (end of calibration).

34.4.6 ADC clock (PRESC[3:0])

The ADC has a dual clock-domain architecture, so that the ADC can be fed with a clock (ADC asynchronous clock) independent from the bus clock.

Figure 282. ADC clock scheme

Figure 282. ADC clock scheme diagram showing the RCC (Reset and clock controller) connected to the AHB interface via adc_hclk and to the Analog ADC via adc_ker_ck. The adc_ker_ck path includes a programmable divider with ratios /1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256, controlled by Bits PRESC[3:0] of ADCx_CCR. The output of the divider is F_ADC to the Analog ADC.
Figure 282. ADC clock scheme diagram showing the RCC (Reset and clock controller) connected to the AHB interface via adc_hclk and to the Analog ADC via adc_ker_ck. The adc_ker_ck path includes a programmable divider with ratios /1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256, controlled by Bits PRESC[3:0] of ADCx_CCR. The output of the divider is F_ADC to the Analog ADC.
  1. 1. Refer to Section Reset and clock control (RCC) for how the bus clock and ADC asynchronous clock are enabled.

The adc_ker_ck input clock can be selected between different clock sources (see Figure 282: ADC clock scheme ). This selection is done in the RCC (refer to the RCC section for more information):

Option a) has the advantage of reaching the maximum ADC clock frequency whatever the clock scheme selected. The ADC clock can eventually be divided by a programmable ratio of 1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128 or 256, configured through PRESC[3:0] bits in the ADCx_CCR register.

Option b) has the advantage of bypassing the clock domain resynchronizations. This can be useful when the ADC is triggered by a timer and if the application requires that the ADC is precisely triggered without any uncertainty (otherwise, an uncertainty of the trigger instant is added by the resynchronizations between the two clock domains).

Table 330. Latency between trigger and start of conversion (1)

ADC clock sourceLatency between the trigger event and the start of conversion
Clock different from bus clockLatency is not deterministic (jitter)
Bus clock divided by 2Latency is deterministic (no jitter) and equal to 4 ADC clock cycles
Table 330. Latency between trigger and start of conversion (1)
ADC clock sourceLatency between the trigger event and the start of conversion
Bus clock divided by 4Latency is deterministic (no jitter) and equal to 3.75 ADC clock cycles
Bus clock divided by 1Latency is deterministic (no jitter) and equal to 4 ADC clock cycles

1. Refer to the device datasheet for the maximum \( F_{ADC} \) frequency.

34.4.7 ADC connectivity

ADC inputs are connected to the external channels as well as internal sources as described in Figure 283.

Figure 283. ADC4 connectivity

Figure 283. ADC4 connectivity diagram showing internal and external connections to the ADC4 SAR block.

The diagram illustrates the connectivity of the ADC4 SAR (Successive Approximation Register) block. On the right, a block labeled 'SAR ADC4' has inputs for \( V_{REF+} \) , \( V_{IN} \) , and \( V_{SSA} \) . The \( V_{IN} \) input is connected to a vertical bus. To the left of this bus, various internal and external sources are connected to specific ADC4 input channels ( \( V_{IN}[0] \) through \( V_{IN}[23] \) ). A 'Channel selection' block is shown above the bus, with switches connecting each channel to the \( V_{IN} \) line. The connections are as follows:

MSV62485V5

Figure 283. ADC4 connectivity diagram showing internal and external connections to the ADC4 SAR block.

1. \( V_{IN}[5] \) to \( V_{IN}[8] \) are reserved on STM32U535/545 devices.

34.4.8 Configuring the ADC

The software can write to the ADCAL and ADEN bits in the ADC_CR and ADC_PWR register if the ADC is disabled (ADEN must be 0).

The software must only write to the ADSTART and ADDIS bits in the ADC_CR register only if the ADC is enabled and there is no pending request to disable the ADC (ADEN = 1 and ADDIS = 0).

For all the other control bits in the ADC_IER, ADC_CFGRI, ADC_SMPR, ADC_CHSELR and ADC_CCR registers, refer to the description of the corresponding control bit in Section 34.7: ADC registers . If the ADC operates in software trigger mode, set the ADSTP bit in ADC_CR register, then wait until ADSTP bit become 0 before reconfiguring the above registers.

ADC_AWDTRi registers can be modified when a conversion is ongoing.

The software must only write to the ADSTP bit in the ADC_CR register if the ADC is enabled (and possibly converting) and there is no pending request to disable the ADC (ADSTART = 1 and ADDIS = 0).

Note: There is no hardware protection preventing software from making write operations forbidden by the above rules. If such a forbidden write access occurs, the ADC may enter an undefined state. To recover correct operation in this case, the ADC must be disabled (clear ADEN = 0 and all the bits in the ADC_CR register).

34.4.9 Channel selection (CHSEL, SCANDIR, CHSELROMOD)

There are up to 25 multiplexed channels:

It is possible to convert a single channel or a sequence of channels.

The sequence of the channels to be converted can be programmed in the ADC_CHSELR channel selection register: each analog input channel has a dedicated selection bit (CHSELx).

The ADC scan sequencer can be used in two different modes:

The software is allowed to program the CHSEL, SCANDIR and CHSELRMOD bit only when ADSTART bit is cleared in ADC_CR register. This ensures that no conversion is ongoing. If the ADC operated in software trigger mode, set ADSTP bit then wait until ADSTP bit become 0 before reconfiguring these registers. This sequence must be respected even if ADSTART bit is cleared to 0 after the conversion,

Temperature sensor, DAC output, V REFINT , V BAT , and V CORE internal channels

The temperature sensor, the internal DAC channels, the internal reference voltage (V REFINT ), V BAT , and V CORE are connected to ADC internal channels. Refer to Table ADC interconnection in Section 34.4.2: ADC pins and internal signals for details.

34.4.10 Programmable sampling time (SMPx[2:0])

Before starting a conversion, the ADC needs to establish a direct connection between the voltage source to be measured and the embedded sampling capacitor of the ADC. This sampling time must be enough for the input voltage source to charge the sample and hold capacitor to the input voltage level.

Having a programmable sampling time allows the conversion speed to be trimmed according to the input resistance of the input voltage source.

The ADC samples the input voltage for a number of ADC clock cycles that can be modified using the SMP1[2:0] and SMP2[2:0] bits in the ADC_SMPR register.

Each channel can choose one out of two sampling times configured in SMP1[2:0] and SMP2[2:0] bitfields, through SMPSELx bits in ADC_SMPR register.

The total conversion time is calculated as follows:

\[ t_{\text{CONV}} = \text{Sampling time} + 12.5 \times \text{ADC clock cycles} \]

Example:

With ADC_CLK = 16 MHz and a sampling time of 1.5 ADC clock cycles:

\[ t_{\text{CONV}} = 1.5 + 12.5 = 14 \text{ ADC clock cycles} = 0.875 \mu\text{s} \]

The ADC indicates the end of the sampling phase by setting the EOSMP flag.

I/O analog switch voltage booster

The resistance of the I/O analog switch increases when the V DDA voltage is too low. The sampling time must consequently be adapted accordingly (refer to the device datasheet for

the corresponding electrical characteristics). This resistance can be minimized at low \( V_{DDA} \) voltage by enabling an internal voltage booster through the BOOSTEN bit of the SYSCFG_CFGR1 register or by selecting a \( V_{DD} \) booster voltage through the ANASWVDD bit of the SYSCFG_CFGR1 register.

34.4.11 Single conversion mode (CONT = 0)

In single conversion mode, the ADC performs a single sequence of conversions, converting all the channels once. This mode is selected when CONT is cleared in the ADC_CFGR1 register. Conversion is started by either:

Inside the sequence, after each conversion is complete:

After the sequence of conversions is complete:

Then the ADC stops until a new external trigger event occurs or the ADSTART bit is set again.

Note: To convert a single channel, program a sequence with a length of 1.

34.4.12 Continuous conversion mode (CONT = 1)

In continuous conversion mode, when a software or hardware trigger event occurs, the ADC performs a sequence of conversions, converting all the channels once and then automatically re-starts and continuously performs the same sequence of conversions. This mode is selected when CONT is set to 1 in the ADC_CFGR1 register. Conversion is started by either:

Inside the sequence, after each conversion is complete:

After the sequence of conversions is complete:

Then, a new sequence restarts immediately and the ADC continuously repeats the conversion sequence.

Note: To convert a single channel, program a sequence with a length of 1.

It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1.

34.4.13 Starting conversions (ADSTART)

Software starts ADC conversions by setting ADSTART to 1.

When ADSTART is set, the conversion:

The ADSTART bit is also used to indicate whether an ADC operation is currently ongoing. It is possible to re-configure the ADC while ADSTART remains at 0, indicating that the ADC is idle.

The ADSTART bit is cleared by hardware:

When the ADC operates in autonomous mode (DPD bit transition from 1 to 0, see Autonomous mode (AUTOFF, DPD) ), the ADSTART bit can be set only when the ADC is powered on. (both LDORDY = 1 and ADRDY = 1). In continuous mode (CONT = 1), the ADSTART bit is not cleared by hardware when the EOS flag is set because the sequence is automatically relaunched.

Note: When hardware trigger is selected in single mode (CONT = 0 and EXTEN = 01), ADSTART is not cleared by hardware when the EOS flag is set. This avoids the need for software having to set the ADSTART bit again and ensures the next trigger event is not missed. It is necessary to set ADSTP to 1 and wait until ADSTP is cleared before reconfiguring or disabling the ADC, even if ADSTART bit is cleared to after the software triggered ADC conversion mode.

34.4.14 Timings

The elapsed time between the start of a conversion and the end of conversion is the sum of the configured sampling time plus the successive approximation time depending on data resolution:

\[ t_{CONV} = t_{SMPL} + t_{SAR} = [1.5 \text{ } \mu\text{s}_{\min} + 12.5 \text{ } \mu\text{s}_{|12\text{bit}}] \times t_{ADC\_CLK} \]

\[ t_{CONV} = t_{SMPL} + t_{SAR} = 42.9 \text{ ns}_{\min} + 357.1 \text{ ns}_{|12\text{bit}} = 0.400 \text{ } \mu\text{s}_{\min} \text{ (for } f_{ADC\_CLK} = 35 \text{ MHz)} \]

Figure 284. Analog-to-digital conversion time

Timing diagram for Figure 284 showing ADC state, Analog channel, Internal S/H, ADSTART, EOSMP, EOC, and ADC_DR signals over time. It illustrates the sampling and conversion phases for channels Ch(N) and Ch(N+1).

The diagram shows the timing of an ADC conversion. The 'ADC state' line transitions from 'RDY' to 'Sampling Ch(N)', then 'Converting Ch(N)', and finally 'Sampling Ch(N+1)'. The 'Analog channel' line shows 'Ch(N)' being sampled and then 'Ch(N+1)'. The 'Internal S/H' line shows 'Sample AIN(N)', 'Hold AIN(N)', and 'Sample AIN(N+1)'. The 'ADSTART' line is set by software (SW) at the beginning of the sampling phase. The 'EOSMP' line is set by hardware (HW) at the start of conversion and cleared by software (SW) at the end of conversion. The 'EOC' line is set by hardware (HW) at the end of conversion and cleared by hardware/software (HW/SW). The 'ADC_DR' line shows 'Data N-1' and 'Data N' being output. The sampling time is labeled as \( t_{SMPL}^{(1)} \) and the conversion time as \( t_{SAR}^{(2)} \) . The diagram is labeled 'Indicative timings' and 'MSV30532V2'.

Timing diagram for Figure 284 showing ADC state, Analog channel, Internal S/H, ADSTART, EOSMP, EOC, and ADC_DR signals over time. It illustrates the sampling and conversion phases for channels Ch(N) and Ch(N+1).

Figure 285. ADC conversion timings

Timing diagram for Figure 285 showing ADSTART, ADC state, and ADC_DR signals over time. It illustrates the latency from ADSTART to the start of conversion and the write latency for the ADC_DR register.

The diagram shows the timing of ADC conversions. The 'ADSTART' line is triggered, and the latency to the start of the first conversion is labeled as \( t_{LATENCY}^{(2)} \) . The 'ADC state' line shows a sequence of 'Ready', 'S0', 'Conversion 0', 'S1', 'Conversion 1', 'S2', 'Conversion 2', 'S3', and 'Conversion 3'. The 'ADC_DR' line shows 'Data 0', 'Data 1', and 'Data 2' being output. The write latency for the ADC_DR register is labeled as \( W_{LATENCY}^{(3)} \) . The diagram is labeled 'MSV33174V1'.

Timing diagram for Figure 285 showing ADSTART, ADC state, and ADC_DR signals over time. It illustrates the latency from ADSTART to the start of conversion and the write latency for the ADC_DR register.

34.4.15 Stopping an ongoing conversion (ADSTP)

The software can decide to stop any ongoing conversions by setting ADSTP to 1 in the ADC_CR register.

This resets the ADC operation and the ADC is idle, ready for a new operation.

When the ADSTP bit is set by software, any ongoing conversion is aborted and the result is discarded (ADC_DR register is not updated with the current conversion).

The scan sequence is also aborted and reset (meaning that restarting the ADC would restart a new sequence).

Once this procedure is complete, the ADSTP and ADSTART bits are both cleared by hardware and the software must wait until ADSTART is cleared to 0 before starting new conversions.

Figure 286. Stopping an ongoing conversion

Timing diagram showing the sequence of events to stop an ongoing conversion. It tracks four signals: ADC state (RDY -> SAMPLING CH(N) -> CONVERTING CH(N) -> RDY), ADSTART (set by SW, cleared by HW), ADSTOP (set by SW, cleared by HW), and ADC_DR (DATA N-1).

The diagram illustrates the timing for stopping an ongoing conversion. The top signal, 'ADC state', shows a transition from 'RDY' to 'SAMPLING CH(N)' to 'CONVERTING CH(N)' and back to 'RDY'. The 'ADSTART' signal is set by software (SW) at the beginning of the conversion sequence and is cleared by hardware (HW) when the ADC returns to the 'RDY' state. The 'ADSTOP' signal is set by software while the ADC is in the 'CONVERTING CH(N)' state and is also cleared by hardware (HW) when the ADC returns to the 'RDY' state. The 'ADC_DR' signal shows the data output 'DATA N-1' during the conversion phase.

Timing diagram showing the sequence of events to stop an ongoing conversion. It tracks four signals: ADC state (RDY -> SAMPLING CH(N) -> CONVERTING CH(N) -> RDY), ADSTART (set by SW, cleared by HW), ADSTOP (set by SW, cleared by HW), and ADC_DR (DATA N-1).

34.4.16 Conversion on external trigger and trigger polarity (EXTSEL, EXTEN)

A conversion or a sequence of conversion can be triggered either by software or by an external event (for example timer capture). If the EXTEN[1:0] control bits are not equal to “0b00”, then external events are able to trigger a conversion with the selected polarity. The trigger selection is effective once software has set bit ADSTART to 1.

Any hardware triggers which occur while a conversion is ongoing are ignored.

If bit ADSTART is cleared, any hardware triggers which occur are ignored.

Table 331 provides the correspondence between the EXTEN[1:0] values and the trigger polarity.

Table 331. Configuring the trigger polarity

SourceEXTEN[1:0]
Trigger detection disabled00
Detection on rising edge01
Detection on falling edge10
Detection on both rising and falling edges11

Note: The polarity of the external trigger can be changed only when the ADC is not converting ( \( ADSTART = 0 \) ).

The EXTSEL[2:0] control bits are used to select which of 8 possible events can trigger conversions.

Refer to Table ADC interconnection in Section 34.4.2: ADC pins and internal signals for the list of all the external triggers that can be used for regular conversion.

The software source trigger events can be generated by setting the ADSTART bit in the ADC_CR register.

Note: The trigger selection can be changed only when the ADC is not converting ( \( ADSTART = 0 \) ).

34.4.17 Discontinuous mode (DISCEN)

This mode is enabled by setting the DISCEN bit in the ADC_CFGR1 register.

In this mode ( \( DISCEN = 1 \) ), a hardware or software trigger event is required to start each conversion defined in the sequence. On the contrary, if DISCEN is cleared, a single hardware or software trigger event successively starts all the conversions defined in the sequence.

Example:

Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits \( DISCEN = 1 \) and \( CONT = 1 \) .

34.4.18 Programmable resolution (RES) - fast conversion mode

It is possible to obtain faster conversion times ( \( t_{SAR} \) ) by reducing the ADC resolution.

The resolution can be configured to be either 12, 10, 8, or 6 bits by programming the RES[1:0] bits in the ADC_CFGR1 register. Lower resolution allows faster conversion times for applications where high data precision is not required.

Note: The RES[1:0] bit must only be changed when the ADEN bit is reset.

The result of the conversion is always 12 bits wide and any unused LSB bits are read as zeros.

Lower resolution reduces the conversion time needed for the successive approximation steps as shown in Table 332 .

Table 332. \( t_{SAR} \) timings depending on resolution

RES[1:0] bits\( t_{SAR} \) (ADC clock cycles)\( t_{SAR} \) (ns) at \( f_{ADC} = 35 \) MHz\( t_{SMPL} \) (min) (ADC clock cycles)\( t_{CONV} \) (ADC clock cycles) (with min. \( t_{SMPL} \) )\( t_{CONV} \) (ns) at \( f_{ADC} = 35 \) MHz
1212.53571.514400
1010.53001.512343
88.52431.510286
66.51861.58229

34.4.19 End of conversion, end of sampling phase (EOC, EOSMP flags)

The ADC indicates each end of conversion (EOC) event.

The ADC sets the EOC flag in the ADC_ISR register as soon as a new conversion data result is available in the ADC_DR register. An interrupt can be generated if the EOCIE bit is set in the ADC_IER register. The EOC flag is cleared by software either by writing 1 to it, or by reading the ADC_DR register.

The ADC also indicates the end of sampling phase by setting the EOSMP flag in the ADC_ISR register. The EOSMP flag is cleared by software by writing 1 to it. An interrupt can be generated if the EOSMPIE bit is set in the ADC_IER register.

The aim of this interrupt is to allow the processing to be synchronized with the conversions. Typically, an analog multiplexer can be accessed in hidden time during the conversion phase, so that the multiplexer is positioned when the next sampling starts.

Note: As there is only a very short time left between the end of the sampling and the end of the conversion, it is recommenced to use polling or a WFE instruction rather than an interrupt and a WFI instruction.

34.4.20 End of conversion sequence (EOS flag)

The ADC notifies the application of each end of sequence (EOS) event.

The ADC sets the EOS flag in the ADC_ISR register as soon as the last data result of a conversion sequence is available in the ADC_DR register. An interrupt can be generated if the EOSIE bit is set in the ADC_IER register. The EOS flag is cleared by software by writing 1 to it.

34.4.21 Example timing diagrams (single/continuous modes hardware/software triggers)

Figure 287. Single conversions of a sequence, software trigger

Timing diagram for single conversions of a sequence with software trigger. The diagram shows five signal lines over time: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), SCANDIR (scan direction), and ADC_DR (data register). The ADC state shows a sequence of channels: RDY, CH0, CH9, CH10, CH17, RDY, CH17, CH10, CH9, CH0, RDY. Data values D0, D9, D10, D17 are shown in the ADC_DR register. A legend indicates that rising edges are triggered by software (S/W) and falling edges are triggered by hardware (H/W). rising edge symbol falling edge symbol

The timing diagram illustrates the sequence of events for a software-triggered ADC conversion sequence. The signals shown are:

Legend:
by S/W by H/W

MSV30338V3

Timing diagram for single conversions of a sequence with software trigger. The diagram shows five signal lines over time: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), SCANDIR (scan direction), and ADC_DR (data register). The ADC state shows a sequence of channels: RDY, CH0, CH9, CH10, CH17, RDY, CH17, CH10, CH9, CH0, RDY. Data values D0, D9, D10, D17 are shown in the ADC_DR register. A legend indicates that rising edges are triggered by software (S/W) and falling edges are triggered by hardware (H/W). rising edge symbol falling edge symbol

1. EXTEN = 00, CONT = 0.

2. CHSEL = 0x20601, WAIT = 0, AUTOFF = 0.

Figure 288. Continuous conversion of a sequence, software trigger

Timing diagram for continuous conversion of a sequence with software trigger. It shows signals ADSTART, EOC, EOS, ADSTP, SCANDIR, ADC state, and ADC_DR over time. ADSTART is triggered by software (S/W) and hardware (H/W). EOC pulses occur for each conversion. EOS goes high after the last conversion in the sequence. ADC state shows a sequence of channels: RDY, CH0, CH9, CH10, CH17, then repeating CH0, CH9, CH10, STP, RDY, CH17, CH10. ADC_DR shows corresponding data values: D0, D9, D10, D17, then repeating D0, D9, D17.

Legend: by S/W (software trigger), by H/W (hardware trigger)

MSv30339V2

Timing diagram for continuous conversion of a sequence with software trigger. It shows signals ADSTART, EOC, EOS, ADSTP, SCANDIR, ADC state, and ADC_DR over time. ADSTART is triggered by software (S/W) and hardware (H/W). EOC pulses occur for each conversion. EOS goes high after the last conversion in the sequence. ADC state shows a sequence of channels: RDY, CH0, CH9, CH10, CH17, then repeating CH0, CH9, CH10, STP, RDY, CH17, CH10. ADC_DR shows corresponding data values: D0, D9, D10, D17, then repeating D0, D9, D17.
  1. 1. EXTEN = 00, CONT = 1.
  2. 2. CHSEL = 0x20601, WAIT = 0, AUTOFF = 0.

Figure 289. Single conversions of a sequence, hardware trigger

Timing diagram for single conversions of a sequence with hardware trigger. It shows signals ADSTART, EOC, EOS, TRGx, ADC state, and ADC_DR over time. ADSTART is triggered by hardware (H/W). EOC pulses occur for each conversion. EOS goes high after the last conversion in the sequence. TRGx is an over-frequency hardware trigger. ADC state shows a sequence of channels: RDY, CH0, CH1, CH2, CH3, then repeating RDY, CH0, CH1, CH2, CH3, RDY. ADC_DR shows corresponding data values: D0, D1, D2, D3, then repeating D0, D1, D2, D3.

Legend: by S/W (software trigger), by H/W (hardware trigger), triggered (successful trigger), ignored (ignored trigger)

MSv30340V2

Timing diagram for single conversions of a sequence with hardware trigger. It shows signals ADSTART, EOC, EOS, TRGx, ADC state, and ADC_DR over time. ADSTART is triggered by hardware (H/W). EOC pulses occur for each conversion. EOS goes high after the last conversion in the sequence. TRGx is an over-frequency hardware trigger. ADC state shows a sequence of channels: RDY, CH0, CH1, CH2, CH3, then repeating RDY, CH0, CH1, CH2, CH3, RDY. ADC_DR shows corresponding data values: D0, D1, D2, D3, then repeating D0, D1, D2, D3.
  1. 1. EXTSEL = TRGx (over-frequency), EXTEN = 01 (rising edge), CONT = 0.
  2. 2. CHSEL = 0xF, SCANDIR = 0, WAIT = 0, AUTOFF = 0.

Figure 290. Continuous conversions of a sequence, hardware trigger

Timing diagram for Figure 290 showing continuous ADC conversions. The diagram tracks several signals: ADSTART (software start), EOC (End of Conversion pulses), EOS (End of Sequence pulses), ADSTP (software stop), TRGx (hardware trigger), ADC state (RDY, CH0, CH1, CH2, CH3, STOP), and ADC_DR (data output D0, D1, D2, D3). A software trigger on ADSTART initiates the sequence. Conversions for CH0-CH3 repeat continuously. EOC pulses occur after each channel conversion, and EOS pulses occur after each full sequence (CH3). A hardware trigger (TRGx) falling edge is shown but ignored during active conversion. A software stop (ADSTP) ends the sequence, transitioning the ADC state to STOP then RDY. rising arrow rising edge pulse falling arrow crossed out falling edge

by S/W triggered

by H/W ignored

MSv30341V2

Timing diagram for Figure 290 showing continuous ADC conversions. The diagram tracks several signals: ADSTART (software start), EOC (End of Conversion pulses), EOS (End of Sequence pulses), ADSTP (software stop), TRGx (hardware trigger), ADC state (RDY, CH0, CH1, CH2, CH3, STOP), and ADC_DR (data output D0, D1, D2, D3). A software trigger on ADSTART initiates the sequence. Conversions for CH0-CH3 repeat continuously. EOC pulses occur after each channel conversion, and EOS pulses occur after each full sequence (CH3). A hardware trigger (TRGx) falling edge is shown but ignored during active conversion. A software stop (ADSTP) ends the sequence, transitioning the ADC state to STOP then RDY. rising arrow rising edge pulse falling arrow crossed out falling edge
  1. 1. EXTSEL = TRGx, EXTEN = 10 (falling edge), CONT = 1.
  2. 2. CHSEL = 0xF, SCANDIR = 0, WAIT = 0, AUTOFF = 0.

34.4.22 Low-frequency trigger mode

If the application has to support a time longer than the maximum \( t_{\text{IDLE}} \) value (between one trigger to another for single conversion mode or between the ADC enable and the first ADC conversion), then the ADC internal state needs to be rearmed. This mechanism can be enabled by setting LFTRIG bit to 1 in ADC_CFGR2 register. By setting this bit, any trigger (software or hardware) sends a rearm command to ADC. The conversion is started after a two ADC clock cycle delay compared to LFTRIG set to 0.

It is not necessary to use this mode when AUTOFF bit is set to 1. For wait mode, only the first trigger generates an internal rearm command.

34.4.23 Data management

Data register and data alignment (ADC_DR, ALIGN)

At the end of each conversion (when an EOC event occurs), the result of the converted data is stored in the ADC_DR data register which is 16-bit wide.

The format of the ADC_DR depends on the configured data alignment and resolution.

The ALIGN bit in the ADC_CFGR1 register selects the alignment of the data stored after conversion. Data can be right-aligned (ALIGN = 0) or left-aligned (ALIGN = 1) as shown in Figure 291 .

Figure 291. Data alignment and resolution (oversampling disabled: OVSE = 0)

ALIGNRES1514131211109876543210
00x00x0 DR[11:0]
0x10x00 DR[9:0]
0x20x00 DR[7:0]
0x30x00 DR[5:0]
10x0DR[11:0]0x0
0x1DR[9:0]0x00
0x2DR[7:0]0x00
0x30x00 DR[5:0]0x0

MS30342V1

ADC overrun (OVR, OVRMOD)

The overrun flag (OVR) indicates a data overrun event, when the converted data was not read in time by the CPU or the DMA, before the data from a new conversion is available.

The OVR flag is set in the ADC_ISR register if the EOC flag is still at 1 at the time when a new conversion completes. An interrupt can be generated if the OVRRIE bit is set in the ADC_IER register.

When an overrun condition occurs, the ADC keeps operating and can continue to convert unless the software decides to stop and reset the sequence by setting the ADSTP bit in the ADC_CR register.

The OVR flag is cleared by software by writing 1 to it.

It is possible to configure if the data is preserved or overwritten when an overrun event occurs by programming the OVRMOD bit in the ADC_CFGR1 register:

Figure 292. Example of overrun (OVR)

Timing diagram illustrating an overrun (OVR) event in the ADC4. The diagram shows the relationship between ADSTART, EOC, EOS, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, and ADC_DR data for two OVRMOD settings. An overrun occurs when a new conversion starts before the previous data is read while OVRMOD=0.

The timing diagram shows the following signals and states over time:

Legend:

MSv30343V3

Timing diagram illustrating an overrun (OVR) event in the ADC4. The diagram shows the relationship between ADSTART, EOC, EOS, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, and ADC_DR data for two OVRMOD settings. An overrun occurs when a new conversion starts before the previous data is read while OVRMOD=0.

Managing a sequence of data converted without using the DMA

If the conversions are slow enough, the conversion sequence can be handled by software. In this case the software must use the EOC flag and its associated interrupt to handle each data result. Each time a conversion is complete, the EOC bit is set in the ADC_ISR register and the ADC_DR register can be read. The OVRMOD bit in the ADC_CFGR1 register must be configured to 0 to manage overrun events as an error.

Managing converted data without using the DMA without overrun

It may be useful to let the ADC convert one or more channels without reading the data after each conversion. In this case, the OVRMOD bit must be configured at 1 and the OVR flag must be ignored by the software. When OVRMOD is set to 1, an overrun event does not prevent the ADC from continuing to convert and the ADC_DR register always contains the latest conversion data.

Managing converted data using the DMA

Since all converted channel values are stored in a single data register, it is efficient to use DMA when converting more than one channel. This avoids losing the conversion data results stored in the ADC_DR register.

When DMA mode is enabled (DMAEN bit set to 1 in the ADC_CFGR1 register), a DMA request is generated after the conversion of each channel. This allows the transfer of the

converted data from the ADC_DR register to the destination location selected by the software.

Note: The DMAEN bit in the ADC_CFGR1 register must be set after the ADC calibration phase.

Despite this, if an overrun occurs (OVR = 1) because the DMA did not serve the DMA transfer request in time, the ADC stops generating DMA requests and the data corresponding to the new conversion is not transferred by the DMA. Which means that all the data transferred to the RAM can be considered as valid.

Depending on the configuration of OVRMOD bit, the data is either preserved or overwritten (refer to ADC overrun (OVR, OVRMOD) ).

The DMA transfer requests are blocked until the software clears the OVR bit.

Two different DMA modes are proposed depending on the application use and are configured with bit DMACFG in the ADC_CFGR1 register:

DMA one-shot mode (DMACFG = 0)

In this mode, the ADC generates a DMA transfer request each time a new conversion data word is available and stops generating DMA requests once the DMA has reached the last DMA transfer (when a transfer complete interrupt occurs - refer to DMA section), even if a conversion has been started again.

When the DMA transfer is complete (all the transfers configured in the DMA controller have been done):

DMA circular mode (DMACFG = 1)

In this mode, the ADC generates a DMA transfer request each time a new conversion data word is available in the data register, even if the DMA has reached the last DMA transfer. This allows the DMA configuration in circular mode in order to handle a continuous analog input data stream.

34.4.24 Low-power features

Wait conversion mode (WAIT)

Wait conversion mode can be used to simplify the software as well as optimizing the performance of applications clocked at low frequency where there might be a risk of ADC overrun occurring.

When the WAIT bit is set to 1 in the ADC_CFGR1 register, a new conversion can start only if the previous data has been treated, once the ADC_DR register has been read or if the EOC bit has been cleared.

This is a way to automatically adapt the speed of the ADC to the speed of the system that reads the data.

Note: Any hardware triggers which occur while a conversion is ongoing or during the wait time preceding the read access are ignored.

Figure 293. Wait conversion mode (continuous mode, software trigger)

Timing diagram for Figure 293 showing ADSTART, EOC, EOS, ADSTP, ADC_DR Read access, ADC state, and ADC_DR signals over time. The diagram illustrates the sequence of events in continuous conversion mode with software triggers, showing the flow between Ready (RDY), Channel (CH1, CH2, CH3), Delay (DLY), Stop (STOP), and Ready (RDY) states, and the corresponding data (D1, D2, D3) in the ADC_DR register.

The timing diagram shows the following signals and states over time:

Legend:
by S/W (Software trigger)
by H/W (Hardware trigger)

MSv30344V2

Timing diagram for Figure 293 showing ADSTART, EOC, EOS, ADSTP, ADC_DR Read access, ADC state, and ADC_DR signals over time. The diagram illustrates the sequence of events in continuous conversion mode with software triggers, showing the flow between Ready (RDY), Channel (CH1, CH2, CH3), Delay (DLY), Stop (STOP), and Ready (RDY) states, and the corresponding data (D1, D2, D3) in the ADC_DR register.
  1. 1. EXTEN = 00, CONT = 1.
  2. 2. CHSEL = 0x3, SCANDIR = 0, WAIT = 1, AUTOFF = 0.

ADC power-saving modes

The ADC embeds two power-saving modes, the auto-off and the autonomous modes.

Auto-off mode (AUTOFF)

The auto-off mode is enabled by setting the AUTOFF bit to 1 in the ADC_PWRR register.

Below the auto-off mode operating sequence:

  1. 1. When AUTOFF is set to 1, the ADC is always powered off when no conversion is ongoing.
  2. 2. It then automatically wakes up when a conversion is triggered by software or by hardware, and a startup time is inserted between the trigger event and the ADC sampling time.
  3. 3. The ADC is then automatically disabled once the conversion or sequence of conversions is complete.
  4. 4. When consecutive hardware or software triggers occur, the ADC is automatically enabled and the conversion is processed.

Refer to Figure 294 for a description of auto-off mode state diagram.

The auto-off mode dramatically reduces power consumption in applications requiring a limited number of conversions or conversion requests far between enough (for example with a low-frequency hardware trigger) to justify the extra power and time used for switching the ADC on and off.

Auto-off mode can be combined with wait mode (WAIT = 1) for applications clocked at low frequency. This combination can achieve significant power saving if the ADC is automatically powered off during the wait phase and restarted as soon as the ADC_DR register is read by the application (see Figure 295: ADC behavior with WAIT = 0 and AUTOFF = 1 and Figure 296: ADC behavior with WAIT = 1 and AUTOFF = 1 ).

The auto-off mode is compatible with the low-power background autonomous mode (LPBAM).

Note: Refer to the Section Reset and clock control (RCC) for the description of how to manage the dedicated internal oscillators. The ADC interface can automatically switch on/off these internal oscillators to save power.

Figure 294. Auto-off mode state diagram

State diagram for ADC4 auto-off mode showing transitions between ADC in Deep-Power-Down, Voltage regulator ON ADC disabled, ADC enable, and Conversion states.
stateDiagram-v2
    direction LR
    DPD: ADC in Deep-Power-Down
    VREG: Voltage regulator ON
ADC disabled ENABLE: ADC enable CONV: Conversion DPD --> VREG: ADVREGEN = 1
and LDORDY = 1 VREG --> DPD: ADVREGEN=0 VREG --> VREG: Calibration VREG --> ENABLE: ADEN = 1 ENABLE --> VREG: ADDIS = 1 ENABLE --> CONV: 1st SW or HW
trigger CONV --> CONV: SCAN
conversion CONV --> ENABLE: Consecutive
SW or HW
trigger CONV --> VREG: EOS and
AUTOFF = 1
State diagram for ADC4 auto-off mode showing transitions between ADC in Deep-Power-Down, Voltage regulator ON ADC disabled, ADC enable, and Conversion states.

Figure 295. ADC behavior with WAIT = 0 and AUTOFF = 1

Timing diagram showing the relationship between TRGx, EOC, EOS, ADC_DR Read access, ADC state, and ADC_DR signals during a conversion sequence.

The timing diagram illustrates the ADC behavior with specific settings. The signals shown are:

A legend at the bottom left clarifies the trigger types: a step-up symbol for "by S/W" and a step-down symbol for "by H/W".

Timing diagram showing the relationship between TRGx, EOC, EOS, ADC_DR Read access, ADC state, and ADC_DR signals during a conversion sequence.
  1. EXTSEL = TRGx, EXTEN = 01 (rising edge), CONT = x, ADSTART = 1, CHSEL = 0xF, SCANDIR = 0, WAIT = 0, AUTOFF = 1.

Figure 296. ADC behavior with WAIT = 1 and AUTOFF = 1

Timing diagram showing ADC behavior with WAIT = 1 and AUTOFF = 1. It includes signals for TRGx (hardware trigger), EOC (End of Conversion), EOS (End of Sequence), ADC_DR Read access, ADC state (RDY, Startup, CH1, OFF, CH2, CH3), and ADC_DR (data registers D1, D2, D3, D4). The diagram shows the sequence of events from a hardware trigger to the final data read, including startup phases and automatic shutdown (OFF) when no conversions are ongoing. A legend indicates that rising edges are software triggered and falling edges are hardware triggered.
Timing diagram showing ADC behavior with WAIT = 1 and AUTOFF = 1. It includes signals for TRGx (hardware trigger), EOC (End of Conversion), EOS (End of Sequence), ADC_DR Read access, ADC state (RDY, Startup, CH1, OFF, CH2, CH3), and ADC_DR (data registers D1, D2, D3, D4). The diagram shows the sequence of events from a hardware trigger to the final data read, including startup phases and automatic shutdown (OFF) when no conversions are ongoing. A legend indicates that rising edges are software triggered and falling edges are hardware triggered.
  1. 1. EXTSEL = TRGx, EXTEN = 01 (rising edge), CONT = x, ADSTART = 1, CHSEL = 0xF, SCANDIR = 0, WAIT = 1, AUTOFF = 1.

Autonomous mode (AUTOFF, DPD)

The autonomous mode is enabled by setting both AUTOFF and DPD bits to 1 in ADC_PWR register. In addition, the autonomous mode must be enabled in the RCC.

Below the autonomous mode operating sequence:

  1. 1. When AUTOFF and DPD are both set to 1, the ADC is powered off when no conversion is ongoing.
  2. 2. Upon hardware trigger reception, the ADC requests the adc_ker_ck and adc_hclk clocks to the RCC, the ADC voltage regulator is enabled, the calibration factor is loaded, the ADC is enabled and the conversion starts.
  3. 3. Once the ADC conversion is complete, the ADC can either generate an AWDx interrupt or a DMA request, depending on peripheral configuration:
    • – When DMA mode is enabled, the ADC generates a DMA request to transfer data to memory or to another peripherals.
    • – When an analog watchdog is enabled, ADC data do not need to be transferred. The analog watchdog compares the data to the threshold value and generates an AWDx interrupt to wake up the device if the data is under or over the programmed threshold.
  4. 4. When the ADC conversion/sequence or conversion is complete, the ADC and the ADC voltage regulator are automatically disabled as well as V REFINT buffer and the temperature sensor, and further clock requests are deasserted. This allows the minimization of current consumption.
  5. 5. When consecutive hardware triggers occur, the ADC is automatically enabled and the conversion is processed.

Refer to Figure 297 for a description of autonomous mode state diagram.

The autonomous mode enables the ADC peripheral to operate when the device is in Stop mode. However it can also be used in Run or Sleep mode.

It is compatible with the low-power background autonomous mode (LPBAM).

Figure 297. Autonomous mode state diagram

Figure 297. Autonomous mode state diagram. The diagram shows four states: 'ADC in Deep-Power-Down', 'Voltage regulator ON Wait LDORDY ADC enabled Wait ADRDY', 'Conversion (DMA mode or analog watchdog)', and 'ADDIS Wait ADEN = 0 Voltage regulator disabled'. Transitions are labeled with 'Consecutive HW trigger', '1st HW trigger', 'SCAN conversion', 'EOS', and 'HW event'. A legend indicates solid arrows for HW events and dashed arrows for automatic state changes.
stateDiagram-v2
    [*] --> ADC_in_Deep_Power_Down: Consecutive HW trigger
    ADC_in_Deep_Power_Down --> Voltage_regulator_ON: 1st HW trigger
    Voltage_regulator_ON --> Conversion: SCAN conversion
    Conversion --> ADDIS: EOS
    ADDIS --> ADC_in_Deep_Power_Down: HW event
    ADDIS --> Voltage_regulator_ON: Automatic state change
  

Legend:
—————> HW event
- - - - -> Automatic state change

MSv62487V2

Figure 297. Autonomous mode state diagram. The diagram shows four states: 'ADC in Deep-Power-Down', 'Voltage regulator ON Wait LDORDY ADC enabled Wait ADRDY', 'Conversion (DMA mode or analog watchdog)', and 'ADDIS Wait ADEN = 0 Voltage regulator disabled'. Transitions are labeled with 'Consecutive HW trigger', '1st HW trigger', 'SCAN conversion', 'EOS', and 'HW event'. A legend indicates solid arrows for HW events and dashed arrows for automatic state changes.

34.4.25 Analog window watchdog

The three AWD analog watchdogs monitor whether some channels remain within a configured voltage range (window).

Description of analog watchdog 1

AWD1 analog watchdog is enabled by setting the AWD1EN bit in the ADC_CFGR1 register. It is used to monitor that either one selected channel or all enabled channels (see Table 334: Analog watchdog 1 channel selection ) remain within a configured voltage range (window) as shown in Figure 298 .

The AWD1 analog watchdog status bit is set if the analog voltage converted by the ADC is below a lower threshold or above a higher threshold. These thresholds are programmed in HT1[11:0] and LT1[11:0] bits of ADC_AWD1TR register. An interrupt can be enabled by setting the AWD1IE bit in the ADC_IER register.

The AWD1 flag is cleared by software by programming it to 1.

When converting data with a resolution of less than 12-bit (according to bits DRES[1:0]), the LSB of the programmed thresholds must be kept cleared because the internal comparison is always performed on the full 12-bit raw converted data (left aligned).

Table 333 describes how the comparison is performed for all the possible resolutions.

Table 333. Analog watchdog comparison

Resolution bits RES[1:0]Analog Watchdog comparison between:Comments
Raw converted data, left aligned (1)Thresholds
00: 12-bitDATA[11:0]LTx[11:0] and HTx[11:0]-
01: 10-bitDATA[11:2],00LTx[11:0] and HTx[11:0]The user must configure LTx[1:0] and HTx[1:0] to “00”
10: 8-bitDATA[11:4],0000LTx[11:0] and HTx[11:0]The user must configure LTx[3:0] and HTx[3:0] to “0000”
11: 6-bitDATA[11:6],000000LTx[11:0] and HTx[11:0]The user must configure LTx[5:0] and HTx[5:0] to “000000”

1. The watchdog comparison is performed on the raw converted data before any alignment calculation.

Table 334 shows how to configure the AWD1SGL and AWD1EN bits in the ADC_CFG1 register to enable the analog watchdog on one or more channels.

Figure 298. Analog watchdog guarded area

Figure 298. Analog watchdog guarded area. A graph showing Analog voltage on the y-axis. Two horizontal lines represent the Higher threshold (HTx) and Lower threshold (LTx). The area between these two thresholds is shaded and labeled 'Guarded area'. The graph is labeled MS45396V1.
Figure 298. Analog watchdog guarded area. A graph showing Analog voltage on the y-axis. Two horizontal lines represent the Higher threshold (HTx) and Lower threshold (LTx). The area between these two thresholds is shaded and labeled 'Guarded area'. The graph is labeled MS45396V1.

Table 334. Analog watchdog 1 channel selection

Channels guarded by the analog watchdogAWD1SGL bitAWD1EN bit
Nonex0
All channels01
Single (1) channel11

1. Selected by the AWD1CH[4:0] bits

Description of analog watchdog 2 and 3

The second and third analog watchdogs are more flexible and can guard several selected channels by programming the AWDxCHy in ADC_AWDxCR (x = 2, 3).

The corresponding watchdog is enabled when any AWDxCHy bit (x = 2,3) is set in ADC_AWDxCR register.

When converting data with a resolution of less than 12 bits (configured through DRES[1:0] bits), the LSB of the programmed thresholds must be kept cleared because the internal comparison is always performed on the full 12-bit raw converted data (left aligned).

Table 333 describes how the comparison is performed for all the possible resolutions.

The AWD2/3 analog watchdog status bit is set if the analog voltage converted by the ADC is below a low threshold or above a high threshold. These thresholds are programmed in

HTx[11:0] and LTx[11:0] of ADC_AWDxTR registers (x = 2 or 3). An interrupt can be enabled by setting the AWDxIE bit in the ADC_IER register.

The AWD2 and AWD3 flags are cleared by software by programming them to 1.

ADC_AWDx_OUT signal output generation

Each analog watchdog is associated to an internal hardware signal, ADC_AWDx_OUT (x being the watchdog number) that is directly connected to the ETR input (external trigger) of some on-chip timers (refer to the timers section for details on how to select the ADC_AWDx_OUT signal as ETR).

ADC_AWDx_OUT is activated when the associated analog watchdog is enabled:

AWDx flag is set by hardware and reset by software: AWDx flag has no influence on the generation of ADC_AWDx_OUT (as an example, ADC_AWDx_OUT can toggle while AWDx flag remains at 1 if the software has not cleared the flag).

The ADC_AWDx_OUT signal is generated by the ADC_CLK domain. This signal can be generated even the bus clock is stopped.

The AWD comparison is performed at the end of each ADC conversion. The ADC_AWDx_OUT rising edge and falling edge occurs two ADC_CLK clock cycles after the comparison.

As ADC_AWDx_OUT is generated by the ADC_CLK domain and AWD flag is generated by the bus clock domain, the rising edges of these signals are not synchronized.

Figure 299. ADC_AWDx_OUT signal generation

Timing diagram showing ADC STATE, EOC FLAG, AWDx FLAG, and ADC_AWDx_OUT signals over a sequence of conversions. The diagram shows 7 conversions. Conversions 1, 3, and 7 are 'inside' thresholds, while 2, 4, 5, and 6 are 'outside'. The EOC FLAG pulses at the end of each conversion. The AWDx FLAG is set when a conversion is outside and cleared by software when a conversion is inside. The ADC_AWDx_OUT signal is high when a conversion is outside and low when a conversion is inside, with a 2-cycle delay from the EOC pulse.

Legend:

MSv45362V1

Timing diagram showing ADC STATE, EOC FLAG, AWDx FLAG, and ADC_AWDx_OUT signals over a sequence of conversions. The diagram shows 7 conversions. Conversions 1, 3, and 7 are 'inside' thresholds, while 2, 4, 5, and 6 are 'outside'. The EOC FLAG pulses at the end of each conversion. The AWDx FLAG is set when a conversion is outside and cleared by software when a conversion is inside. The ADC_AWDx_OUT signal is high when a conversion is outside and low when a conversion is inside, with a 2-cycle delay from the EOC pulse.

Figure 300. ADC_AWDx_OUT signal generation (AWDx flag not cleared by software)

Timing diagram for Figure 300 showing ADC STATE, EOC FLAG, AWDx FLAG, and ADC_AWDx_OUT signals over seven conversions. The AWDx FLAG is set at the end of Conversion 2 and remains high because it is not cleared by software. The ADC_AWDx_OUT signal goes high at the end of Conversion 2 and stays high until the end of Conversion 7.

ADC STATE: RDY | Conversion1 (inside) | Conversion2 (outside) | Conversion3 (inside) | Conversion4 (outside) | Conversion5 (outside) | Conversion6 (outside) | Conversion7 (inside)

EOC FLAG: Pulses at the end of each conversion.

AWDx FLAG: Goes high at the end of Conversion 2 and remains high (not cleared by SW).

ADC_AWDx_OUT: Goes high at the end of Conversion 2 and stays high until the end of Conversion 7.

Legend:
- Converted channels: 1,2,3,4,5,6,7
- Guarded converted channels: 1,2,3,4,5,6,7

MSV45363V1

Timing diagram for Figure 300 showing ADC STATE, EOC FLAG, AWDx FLAG, and ADC_AWDx_OUT signals over seven conversions. The AWDx FLAG is set at the end of Conversion 2 and remains high because it is not cleared by software. The ADC_AWDx_OUT signal goes high at the end of Conversion 2 and stays high until the end of Conversion 7.

Figure 301. ADC_AWDx_OUT signal generation (on a single channel)

Timing diagram for Figure 301 showing ADC STATE, EOC FLAG, EOS FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals over multiple conversions of channels 1 and 2. Only channel 1 is guarded. The AWDx FLAG is cleared by software. The ADCy_AWDx_OUT signal is high when channel 1 is 'inside' and low when it is 'outside'.

ADC STATE: Conversion1 (outside) | Conversion2 | Conversion1 (inside) | Conversion2 | Conversion1 (outside) | Conversion2 | Conversion1 (outside) | Conversion2

EOC FLAG: Pulses at the end of each conversion.

EOS FLAG: Pulses at the end of each pair of conversions (Conversion 2).

AWDx FLAG: Pulses when Conversion 1 is 'inside' and is cleared by software when it is 'outside'.

ADCy_AWDx_OUT: High when Conversion 1 is 'inside', low otherwise.

Legend:
- Converted channels: 1 and 2
- Only channel 1 is guarded

MSV45364V1

Timing diagram for Figure 301 showing ADC STATE, EOC FLAG, EOS FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals over multiple conversions of channels 1 and 2. Only channel 1 is guarded. The AWDx FLAG is cleared by software. The ADCy_AWDx_OUT signal is high when channel 1 is 'inside' and low when it is 'outside'.

Analog watchdog threshold control

LTx[11:0] and HTx[11:0] can be changed during an analog-to-digital conversion (that is between the start of the conversion and the end of conversion of the ADC internal state). If HTx and LTx bits are programmed during the ADC guarded channel conversion, the watchdog function is masked for this conversion. This mask is cleared when starting a new conversion, and the resulting new AWD threshold is applied starting the next ADC conversion result. AWD comparison is performed at each end of conversion. If the current ADC data are out of the new threshold interval, this does not generate any interrupt or an ADC_AWDx_OUT signal. The Interrupt and the ADC_AWDx_OUT generation only occurs at the end of the ADC conversion that started after the threshold update. If ADC_AWDx_OUT is already asserted, programming the new threshold does not deactivate the ADC_AWDx_OUT signal.

Figure 302. Analog watchdog threshold update

Figure 302: Analog watchdog threshold update diagram. The diagram shows a sequence of four 'Conversion' blocks in the 'ADC state' row. Below this, the 'LTx, HTx' row shows three segments labeled 'XXXX', 'XXXY', and 'XXXZ'. An arrow labeled 'Threshold updated' points from the 'Conversion' blocks to the 'XXXY' segment. The 'Comparison' row at the bottom shows three states: 'Active' (under the first 'XXXX' segment), 'Masked' (under the 'XXXY' segment), and 'Active' (under the 'XXXZ' segment). The diagram is labeled MSv45365V1 in the bottom right corner.
Figure 302: Analog watchdog threshold update diagram. The diagram shows a sequence of four 'Conversion' blocks in the 'ADC state' row. Below this, the 'LTx, HTx' row shows three segments labeled 'XXXX', 'XXXY', and 'XXXZ'. An arrow labeled 'Threshold updated' points from the 'Conversion' blocks to the 'XXXY' segment. The 'Comparison' row at the bottom shows three states: 'Active' (under the first 'XXXX' segment), 'Masked' (under the 'XXXY' segment), and 'Active' (under the 'XXXZ' segment). The diagram is labeled MSv45365V1 in the bottom right corner.

34.4.26 Oversampler

The oversampling unit performs data preprocessing to offload the CPU. It can handle multiple conversions and average them into a single data with increased data width, up to 16-bit.

It provides a result with the following form, where N and M can be adjusted:

\[ \text{Result} = \frac{1}{M} \times \sum_{n=0}^{n=N-1} \text{Conversion}(t_n) \]

It allows the following functions to be performed by hardware: averaging, data rate reduction, SNR improvement, basic filtering.

The oversampling ratio N is defined using the OVSR[2:0] bits in the ADC_CFGR2 register. It can range from 2x to 256x. The division coefficient M consists of a right bit shift up to 8 bits. It is configured through the OVSS[3:0] bits in the ADC_CFGR2 register.

The summation unit can yield a result up to 20 bits (256 x 12-bit), which is first shifted right. The lower bits of the result are then truncated, keeping only the 16 least significant bits rounded to the nearest value using the least significant bits left apart by the shifting, before being finally transferred into the ADC_DR data register.

Note: If the intermediate result after the shifting exceeds 16 bits, the upper bits of the result are simply truncated.

Figure 303. 20-bit to 16-bit result truncation

Figure 303: 20-bit to 16-bit result truncation diagram. The diagram shows three rows: 'Raw 20-bit data', 'Shifting', and 'Truncation and rounding'. The 'Raw 20-bit data' row has 20 bits, with bit 19 on the left and bit 0 on the right. The 'Shifting' row shows a right arrow indicating a shift. The 'Truncation and rounding' row shows the result, which is 16 bits long, with bit 15 on the left and bit 0 on the right. The diagram is labeled MS31928V2 in the bottom right corner.
Figure 303: 20-bit to 16-bit result truncation diagram. The diagram shows three rows: 'Raw 20-bit data', 'Shifting', and 'Truncation and rounding'. The 'Raw 20-bit data' row has 20 bits, with bit 19 on the left and bit 0 on the right. The 'Shifting' row shows a right arrow indicating a shift. The 'Truncation and rounding' row shows the result, which is 16 bits long, with bit 15 on the left and bit 0 on the right. The diagram is labeled MS31928V2 in the bottom right corner.

The Figure 304 gives a numerical example of the processing, from a raw 20-bit accumulated data to the final 16-bit result.

Diagram showing the conversion of a 20-bit raw data (0x3B7D7) to a 16-bit final result (0x1DBF) after a 5-bit shift and rounding to the nearest value. The raw data is partitioned into bits 19-16 (3), 15-12 (B), 11-8 (7), 7-4 (D), and 3-0 (7). The final result is partitioned into bits 15-12 (1), 11-8 (D), 7-4 (B), and 3-0 (F).

Figure 304. Numerical example with 5-bits shift and rounding

MS31929V1

Diagram showing the conversion of a 20-bit raw data (0x3B7D7) to a 16-bit final result (0x1DBF) after a 5-bit shift and rounding to the nearest value. The raw data is partitioned into bits 19-16 (3), 15-12 (B), 11-8 (7), 7-4 (D), and 3-0 (7). The final result is partitioned into bits 15-12 (1), 11-8 (D), 7-4 (B), and 3-0 (F).

The Table 335 below gives the data format for the various N and M combination, for a raw conversion data equal to 0xFFF.

Table 335. Maximum output results vs N and M. Grayed values indicates truncation

Oversampling ratioMax Raw dataNo-shift
OVSS = 0000
1-bit shift
OVSS = 0001
2-bit shift
OVSS = 0010
3-bit shift
OVSS = 0011
4-bit shift
OVSS = 0100
5-bit shift
OVSS = 0101
6-bit shift
OVSS = 0110
7-bit shift
OVSS = 0111
8-bit shift
OVSS = 1000
2x0x1FFE0x1FFE0x0FFF0x08000x04000x02000x01000x00800x00400x0020
4x0x3FFC0x3FFC0x1FFE0x0FFF0x08000x04000x02000x01000x00800x0040
8x0x7FF80x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x02000x01000x0080
16x0xFFF00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x02000x0100
32x0x1FFE00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x0200
64x0x3FFC00xFFC00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x0400
128x0x7FF800xFF800xFFC00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x0800
256x0xFFF000xFF000xFF800xFFC00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF

The conversion timings in oversampler mode do not change compared to standard conversion mode: the sample time is maintained equal during the whole oversampling sequence. New data are provided every N conversion, with an equivalent delay equal to \( N \times t_{CONV} = N \times (t_{SMPL} + t_{SAR}) \) . The flags features are raised as following:

ADC operating modes supported when oversampling

In oversampling mode, most of the ADC operating modes are available:

Note: The alignment mode is not available when working with oversampled data. The ALIGN bit in ADC_CFGR1 is ignored and the data are always provided right-aligned.

Analog watchdog

The analog watchdog functionality is available, with the following differences:

Note: Care must be taken when using high shifting values. This reduces the comparison range. For instance, if the oversampled result is shifted by 4 bits thus yielding a 12-bit data right-aligned, the effective analog watchdog comparison can only be performed on 8 bits. The comparison is done between ADC_DR[11:4] and HTx[7:0] / LTx[7:0], and HTx[11:8] / LTx[11:8] must be kept reset.

Triggered mode

The averager can also be used for basic filtering purposes. Although not a very efficient filter (slow roll-off and limited stop band attenuation), it can be used as a notch filter to reject constant parasitic frequencies (typically coming from the mains or from a switched mode power supply). For this purpose, a specific discontinuous mode can be enabled with TOVS bit in ADC_CFGR2, to be able to have an oversampling frequency defined by a user and independent from the conversion time itself.

Figure 305 below shows how conversions are started in response to triggers in discontinuous mode.

If the TOVS bit is set, the content of the DISCEN bit is ignored and considered as 1.

Figure 305. Triggered oversampling mode (TOVS bit = 1)

Figure 305: Triggered oversampling mode (TOVS bit = 1). The diagram compares two ADC conversion modes. Top: CONT = 0, (DISCEN = 1)*, TOVS = 0. A single trigger initiates a sequence of four conversions on channels Ch(N) 0, 1, 2, and 3. An EOC flag is set after the fourth conversion. Bottom: CONT = 0, (DISCEN = 1)*, TOVS = 1. Seven individual triggers are shown. The first four triggers initiate conversions on channels Ch(N) 0, 1, 2, and 3 respectively. An EOC flag is set after the fourth conversion (Ch(N) 3). Subsequent triggers continue the sequence with Ch(N) 0, 1, and 2. A note at the bottom states: (DISCEN = 1)*: DISCEN bit is forced to 1 by software when TOVS bit is set. Labeled MS33700V1.

CONT = 0
(DISCEN = 1)*
TOVS = 0

Trigger

Ch(N) 0 | Ch(N) 1 | Ch(N) 2 | Ch(N) 3

EOC flag set

CONT = 0
(DISCEN = 1)*
TOVS = 1

Trigger Trigger Trigger Trigger Trigger Trigger Trigger

Ch(N) 0 | Ch(N) 1 | Ch(N) 2 | Ch(N) 3 | Ch(N) 0 | Ch(N) 1 | Ch(N) 2

EOC flag set

(DISCEN = 1)*: DISCEN bit is forced to 1 by software when TOVS bit is set

MS33700V1

Figure 305: Triggered oversampling mode (TOVS bit = 1). The diagram compares two ADC conversion modes. Top: CONT = 0, (DISCEN = 1)*, TOVS = 0. A single trigger initiates a sequence of four conversions on channels Ch(N) 0, 1, 2, and 3. An EOC flag is set after the fourth conversion. Bottom: CONT = 0, (DISCEN = 1)*, TOVS = 1. Seven individual triggers are shown. The first four triggers initiate conversions on channels Ch(N) 0, 1, 2, and 3 respectively. An EOC flag is set after the fourth conversion (Ch(N) 3). Subsequent triggers continue the sequence with Ch(N) 0, 1, and 2. A note at the bottom states: (DISCEN = 1)*: DISCEN bit is forced to 1 by software when TOVS bit is set. Labeled MS33700V1.

34.4.27 Temperature sensor and internal reference voltage

The temperature sensor can be used to measure the junction temperature ( \( T_J \) ) of the device. The temperature sensor is internally connected an ADC internal input channel which is used to convert the sensor's output voltage to a digital value. The sampling time for the temperature sensor analog pin must be greater than the minimum \( T_{S\_temp} \) value specified in the datasheet. When not in use, the sensor can be put in Power-down mode.

The internal voltage reference ( \( V_{REFINT} \) ) provides a stable (bandgap) voltage output for the ADC and the comparators.

Refer to Table ADC interconnection in Section 34.4.2: ADC pins and internal signals for details on the ADC internal input channel to which the above voltages are connected.

Figure 306 shows the block diagram of connections between the temperature sensor, the internal voltage reference and the ADC.

The VSENSESEL bit must be set to enable the conversion of \( V_{SENSE} \) while VREFEN bit must be set to enable the conversion of \( V_{REFINT} \) .

When the ADC operates in autonomous mode, these signals are controlled automatically to reduce power consumption (VSENSESEL and VREFEN must be set to measure the voltage in autonomous mode).

The temperature sensor output voltage linearly changes with the temperature. The offset of this line varies from chip to chip due to process variation (up to 45 °C from one chip to another).

The uncalibrated internal temperature sensor is more suited for applications that detect temperature variations instead of absolute temperatures. To improve the accuracy of the temperature sensor measurement, calibration values are stored in system memory for each device by STMicroelectronics during production.

During the manufacturing process, the calibration data of the temperature sensor and the internal voltage reference are stored in the system memory area. The user application can then read them and use them to improve the accuracy of the temperature sensor or the internal reference. Refer to the datasheet for additional information.

Main features

Figure 306. Temperature sensor and \( V_{\text{REFINT}} \) channel block diagram

Figure 306. Temperature sensor and V_REFINT channel block diagram. The diagram shows two input channels connected to an ADC. The top channel uses an internal power block to generate V_REFINT, which is connected to the non-inverting input of an op-amp. The op-amp's output is connected to the V_IN[0] input of the ADC. The bottom channel uses a temperature sensor to generate V_SENSE, which is connected to the non-inverting input of another op-amp. The op-amp's output is connected to the V_IN[13] input of the ADC. Both op-amps have control bits: VREFEN for the top one and VSENSESEL for the bottom one. The ADC outputs converted data to an address/data bus. The diagram is labeled MSV62488V5.
Figure 306. Temperature sensor and V_REFINT channel block diagram. The diagram shows two input channels connected to an ADC. The top channel uses an internal power block to generate V_REFINT, which is connected to the non-inverting input of an op-amp. The op-amp's output is connected to the V_IN[0] input of the ADC. The bottom channel uses a temperature sensor to generate V_SENSE, which is connected to the non-inverting input of another op-amp. The op-amp's output is connected to the V_IN[13] input of the ADC. Both op-amps have control bits: VREFEN for the top one and VSENSESEL for the bottom one. The ADC outputs converted data to an address/data bus. The diagram is labeled MSV62488V5.

Reading the temperature

  1. 1. Select the input channel connected to \( V_{\text{SENSE}} \) (refer to Table ADC interconnection in Section 34.4.2: ADC pins and internal signals ).
  2. 2. Select an appropriate sampling time specified in the device datasheet ( \( T_{\text{S\_temp}} \) ).
  3. 3. Set the VSENSESEL bit in the ADC_CCR register to wake up the temperature sensor from power-down mode and wait for its stabilization time ( \( t_{\text{START}} \) ).
  4. 4. Start the ADC conversion by setting the ADSTART bit in the ADC_CR register (or by external trigger)
  5. 5. Read the resulting \( V_{\text{SENSE}} \) data in the ADC_DR register
  6. 6. Calculate the temperature using the following formula

\[ \text{Temperature (in }^{\circ}\text{C)} = \frac{\text{TS\_CAL2\_TEMP} - \text{TS\_CAL1\_TEMP}}{\text{TS\_CAL2} - \text{TS\_CAL1}} \times (\text{TS\_DATA} - \text{TS\_CAL1}) + \text{TS\_CAL1\_TEMP} \]

Where:

Refer to Section 34.3: ADC implementation for more information on TS_CAL1 and TS_CAL2 calibration points.

Note: The sensor has a startup time after waking up from power-down mode before it can output \( V_{\text{SENSE}} \) at the correct level. The ADC also has a startup time after power-on, so to minimize the delay, the ADEN and VSENSESEL bits must be set at the same time.

Calculating the actual \( V_{REF+} \) voltage using the internal reference voltage

The \( V_{DDA} \) power supply voltage applied to the microcontroller may be subject to variation or not precisely known. The embedded internal voltage reference (VREFINT) and its calibration data acquired by the ADC during the manufacturing process at \( V_{REF+} = 3.0\text{ V} \) can be used to evaluate the actual \( V_{REF+} \) voltage level, if VREF+ pin is connected to a variable \( V_{DDA} \) power supply.

The following formula gives the actual \( V_{REF+} \) voltage supplying the device:

\[ V_{REF+} = 3.0\text{ V} \times VREFINT\_CAL / VREFINT\_DATA \]

Where:

Converting a supply-relative ADC measurement to an absolute voltage value

The ADC is designed to deliver a digital value corresponding to the ratio between the voltage reference \( V_{REF+} \) and the voltage applied on the converted channel. For most application use cases, it is necessary to convert this ratio into a voltage independent from \( V_{REF+} \) . For applications where \( V_{REF+} \) is known and ADC converted values are right-aligned, the following formula can be used to calculate this absolute value:

\[ V_{CHANNELx} = \frac{V_{REF+}}{FULL\_SCALE} \times ADC\_DATA_x \]

For applications where \( V_{REF+} \) value is not known, the internal voltage reference and \( V_{REF+} \) can be replaced by the expression provided in Section : Calculating the actual \( V_{REF+} \) voltage using the internal reference voltage , resulting in the following formula:

\[ V_{CHANNELx} = \frac{3.0\text{ V} \times VREFINT\_CAL \times ADC\_DATA_x}{VREFINT\_DATA \times FULL\_SCALE} \]

Where:

Note: If ADC measurements are done using an output format other than 12 bit right-aligned, all the parameters must first be converted to a compatible format before the calculation is done.

34.4.28 Battery voltage monitoring

The VBATEN bit in the ADC_CCR register allows the application to measure the battery voltage on the VBAT pin. As the \( V_{BAT} \) voltage may be higher than \( V_{DDA} \) , to ensure the correct operation of the ADC, the VBAT pin is internally connected to a bridge divider by 4. This bridge is automatically enabled when VBATEN is set, to connect \( V_{BAT}/4 \) to the corresponding ADC input channel (refer to Table ADC interconnection in Section 34.4.2: ADC pins and internal signals ). As a consequence, the converted digital value is \( V_{BAT}/4 \) . To

prevent any unwanted consumption on the battery, it is recommended to enable the bridge divider only during ADC conversion.

Figure 307. \( V_{BAT} \) channel block diagram

Figure 307. VBAT channel block diagram. The diagram shows a switch connected to VBAT, which is controlled by the VBATEN control bit. The switch is connected to a bridge divider consisting of two resistors in series, with the midpoint connected to the non-inverting input (+) of an operational amplifier (op-amp). The op-amp is configured as a unity-gain buffer, with its output connected to the inverting input (-) and to the ADC VIN[14] input. The output voltage is labeled VBAT/4. The ADC is connected to an Address/data bus. The diagram is labeled MSV62489V3 in the bottom right corner.
Figure 307. VBAT channel block diagram. The diagram shows a switch connected to VBAT, which is controlled by the VBATEN control bit. The switch is connected to a bridge divider consisting of two resistors in series, with the midpoint connected to the non-inverting input (+) of an operational amplifier (op-amp). The op-amp is configured as a unity-gain buffer, with its output connected to the inverting input (-) and to the ADC VIN[14] input. The output voltage is labeled VBAT/4. The ADC is connected to an Address/data bus. The diagram is labeled MSV62489V3 in the bottom right corner.

34.4.29 Concurrent operation with another ADC

When ADC4 is used simultaneously with another ADC (let us call it ADCx, x being different from 4), ADCx operation might generate noise on \( V_{REF+} \) voltage. Since \( V_{REF+} \) is also ADC4 reference voltage, this might cause conversion errors. To prevent this issue from happening, set VREFPROTEN bit in ADC_PWR register. As soon as ADCx sampling phase starts, ADC4 is put on hold during one ADC4 clock cycle, thus resulting in ADC4 conversion time to be longer of one clock cycle.

In addition, ADCx might have two sampling phases during ADC4 conversion. This is due to the injected conversion function of ADCx. By setting VREFSECSMP to 1 in ADC_PWR, ADC4 operation can be held twice during the conversion phase. When VREFSECSMP bit is set, ADC4 conversion time is longer of two clock cycles.

VREFSECSMP and VREFPROTEN bits must be set simultaneously.

ADCx and ADC4 must use the same clock source to be able to use the concurrent operation feature.

34.5 ADC in low-power modes

Table 336. Effect of low-power modes on the ADC

ModeDescription
SleepNo effect, DMA requests are functional. ADC interrupts cause the device to exit Sleep mode.

Table 336. Effect of low-power modes on the ADC

ModeDescription
StopThe content of the ADC register is kept.
ADC can be functional. DMA request are functional, and the interrupt cause the device to exit Stop mode.
StandbyThe ADC peripheral is powered down and must be reinitialized after exiting Standby mode.

34.6 ADC interrupts

An interrupt can be generated by any of the following events:

Separate interrupt enable bits are available for flexibility.

Table 337. ADC wake-up and interrupt requests

Interrupt vectorInterrupt eventEvent flagEnable Control bitInterrupt clear methodExit from Sleep modeExit from Stop mode (1)Exit from Standby mode
ADCLDO readyLDORDYLDORDYIEProgram LDORDY to 1YesYesNo
End of calibrationEOCALEOCALIEProgram EOCAL to 1Yes
ADC readyADRDYADRDYIEProgram ADRDY to 1Yes
End of conversionEOCEOCIEProgram EOC to 1 OR read ADC_DRYes
End of sequence of conversionsEOSEOSIEProgram EOS to 1Yes
Analog watchdog 1 status bit is setAWD1AWD1IEProgram AWD1 to 1Yes
Analog watchdog 2 status bit is setAWD2AWD2IEProgram AWD2 to 1Yes
Analog watchdog 3 status bit is setAWD3AWD3IEProgram AWD2 to 1Yes
End of sampling phaseEOSMPEOSMPIEProgram EOSMP to 1No
OverrunOVROVRIEProgram OVR to 1Yes
  1. 1. The ADC can wake up the device from Stop mode only if the peripheral instance supports the wake-up from Stop mode feature. Refer to Section 34.3: ADC implementation for the list of supported Stop modes.

34.7 ADC registers

Refer to Section 1.2 for a list of abbreviations used in register descriptions.

34.7.1 ADC interrupt and status register (ADC_ISR)

Address offset: 0x00

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.LDO
RDY
EOCALRes.AWD3AWD2AWD1Res.Res.OVREOSEOCEOSMPADRDY
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

Bits 31:13 Reserved, must be kept at reset value.

Bit 12 LDORDY : LDO ready

This bit is set by hardware. It indicates that the ADC internal LDO output is ready.

It is cleared by software by writing 1 to it.

0: ADC voltage regulator disabled

1: ADC voltage regulator enabled and stabilized

Bit 11 EOCAL : End of calibration flag

This bit is set by hardware when calibration is complete. It is cleared by software writing 1 to it.

0: Calibration is not complete

1: Calibration is complete

Bit 10 Reserved, must be kept at reset value.

Bit 9 AWD3 : Analog watchdog 3 flag

This bit is set by hardware when the converted voltage crosses the values programmed in ADC_AWD3TR and ADC_AWD3TR registers. It is cleared by software by writing 1 to it.

0: No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software)

1: Analog watchdog event occurred

Bit 8 AWD2 : Analog watchdog 2 flag

This bit is set by hardware when the converted voltage crosses the values programmed in ADC_AWD2TR and ADC_AWD2TR registers. It is cleared by software writing 1 to it.

0: No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software)

1: Analog watchdog event occurred

Bit 7 AWD1 : Analog watchdog 1 flag

This bit is set by hardware when the converted voltage crosses the values programmed in ADC_TR1 and ADC_HR1 registers. It is cleared by software by writing 1 to it.

0: No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software)

1: Analog watchdog event occurred

Bits 6:5 Reserved, must be kept at reset value.

Bit 4 OVR : ADC overrun

This bit is set by hardware when an overrun occurs, meaning that a new conversion has complete while the EOC flag was already set. It is cleared by software writing 1 to it.

0: No overrun occurred (or the flag event was already acknowledged and cleared by software)

1: Overrun has occurred

Bit 3 EOS : End of sequence flag

This bit is set by hardware at the end of the conversion of a sequence of channels selected by the CHSEL bits. It is cleared by software writing 1 to it.

0: Conversion sequence not complete (or the flag event was already acknowledged and cleared by software)

1: Conversion sequence complete

Bit 2 EOC : End of conversion flag

This bit is set by hardware at the end of each conversion of a channel when a new data result is available in the ADC_DR register. It is cleared by software writing 1 to it or by reading the ADC_DR register.

0: Channel conversion not complete (or the flag event was already acknowledged and cleared by software)

1: Channel conversion complete

Bit 1 EOSMP : End of sampling flag

This bit is set by hardware during the conversion, at the end of the sampling phase. It is cleared by software by writing 1 to it.

0: Not at the end of the sampling phase (or the flag event was already acknowledged and cleared by software)

1: End of sampling phase reached

Bit 0 ADDRDY : ADC ready

This bit is set by hardware after the ADC has been enabled (ADEN = 1) and when the ADC reaches a state where it is ready to accept conversion requests.

It is cleared by software writing 1 to it.

0: ADC not yet ready to start conversion (or the flag event was already acknowledged and cleared by software)

1: ADC is ready to start conversion

34.7.2 ADC interrupt enable register (ADC_IER)

Address offset: 0x04

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.LDORD
YIE
EOCAL
IE
Res.AWD3
IE
AWD2
IE
AWD1
IE
Res.Res.OVR
IE
EOS
IE
EOC
IE
EOSMP
IE
ADDR
DY
IE
rwrwrwrwrwrwrwrwrwrw

Bits 31:13 Reserved, must be kept at reset value.

Bit 12 LDORDYIE : LDO ready interrupt enable

This bit is set and cleared by software. It is used to enable/disable the LDORDY interrupt.

0: LDO ready interrupt disabled

1: LDO ready interrupt enabled. An interrupt is generated when the LDO output is ready.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensure that no conversion is ongoing).

Bit 11 EOCALIE : End of calibration interrupt enable

This bit is set and cleared by software to enable/disable the end of calibration interrupt.

0: End of calibration interrupt disabled

1: End of calibration interrupt enabled

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 10 Reserved, must be kept at reset value.

Bit 9 AWD3IE : Analog watchdog 3 interrupt enable

This bit is set and cleared by software to enable/disable the analog watchdog interrupt.

0: Analog watchdog interrupt disabled

1: Analog watchdog interrupt enabled

Note: The Software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 8 AWD2IE : Analog watchdog 2 interrupt enable

This bit is set and cleared by software to enable/disable the analog watchdog interrupt.

0: Analog watchdog interrupt disabled

1: Analog watchdog interrupt enabled

Note: The Software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 7 AWD1IE : Analog watchdog 1 interrupt enable

This bit is set and cleared by software to enable/disable the analog watchdog interrupt.

0: Analog watchdog interrupt disabled

1: Analog watchdog interrupt enabled

Note: The Software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bits 6:5 Reserved, must be kept at reset value.

Bit 4 OVRIE : Overrun interrupt enable

This bit is set and cleared by software to enable/disable the overrun interrupt.

0: Overrun interrupt disabled

1: Overrun interrupt enabled. An interrupt is generated when the OVR bit is set.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 3 EOSIE : End of conversion sequence interrupt enable

This bit is set and cleared by software to enable/disable the end of sequence of conversions interrupt.

0: EOS interrupt disabled

1: EOS interrupt enabled. An interrupt is generated when the EOS bit is set.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 2 EOCIE: End of conversion interrupt enable

This bit is set and cleared by software to enable/disable the end of conversion interrupt.

0: EOC interrupt disabled

1: EOC interrupt enabled. An interrupt is generated when the EOC bit is set.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 1 EOSMPIE: End of sampling flag interrupt enable

This bit is set and cleared by software to enable/disable the end of the sampling phase interrupt.

0: EOSMP interrupt disabled.

1: EOSMP interrupt enabled. An interrupt is generated when the EOSMP bit is set.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 0 ADRDYIE: ADC ready interrupt enable

This bit is set and cleared by software to enable/disable the ADC Ready interrupt.

0: ADRDY interrupt disabled.

1: ADRDY interrupt enabled. An interrupt is generated when the ADRDY bit is set.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

34.7.3 ADC control register (ADC_CR)

Address offset: 0x08

Reset value: 0x0000 0000

31302928272625242322212019181716
ADCALRes.Res.ADVREGENRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rsrw

1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.ADSTPRes.ADSTARTADDISADEN
rsrsrsrs

Bit 31 ADCAL: ADC calibration

This bit is set by software to start the calibration of the ADC.
It is cleared by hardware after calibration is complete.
0: Calibration complete
1: Write 1 to calibrate the ADC. Read at 1 means that a calibration is in progress.

Note: The software is allowed to set ADCAL only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0, AUTOFF = 0, and ADEN = 0).

The software is allowed to update the calibration factor by writing ADC_CALFACT only when ADEN is set to 1 and ADSTART is cleared to 0 by writing ADSTP to 1 (ADC enabled and no conversion is ongoing).

Bits 30:29 Reserved, must be kept at reset value.

Bit 28 ADVREGEN: ADC voltage regulator enable

This bit is set by software, to enable the ADC internal voltage regulator. The voltage regulator output is available after \( t_{ADCVREG\_SETUP} \) .
It is cleared by software to disable the voltage regulator. It can be cleared only if ADEN is set to 0.
0: ADC voltage regulator disabled
1: ADC voltage regulator enabled

Note: The software is allowed to program this bit field only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).

Bits 27:5 Reserved, must be kept at reset value.

Bit 4 ADSTP: ADC stop conversion command

This bit is set by software to stop and discard an ongoing conversion (ADSTP Command).
It is cleared by hardware when the conversion is effectively discarded and the ADC is ready to accept a new start conversion command.
0: No ADC stop conversion command ongoing
1: Write 1 to stop the ADC. Read 1 means that an ADSTP command is in progress.

Note: To clear the A/D converter state, ADSTP must be set to 1 even if ADSTART is cleared to 0 after the software trigger A/D conversion. It is recommended to set ADSTP to 1 whenever the configuration needs to be modified.

Bit 3 Reserved, must be kept at reset value.

Bit 2 ADSTART: ADC start conversion command

This bit is set by software to start ADC conversion. Depending on the EXTEN [1:0] configuration bits, a conversion either starts immediately (software trigger configuration) or once a hardware trigger event occurs (hardware trigger configuration).

It is cleared by hardware:

0: No ADC conversion is ongoing.

1: Write 1 to start the ADC. Read 1 means that the ADC is operating and may be converting.

Note: The software is allowed to set ADSTART only when ADEN = 1 and ADDIS = 0 (ADC is enabled and there is no pending request to disable the ADC).

Bit 1 ADDIS: ADC disable command

This bit is set by software to disable the ADC (ADDIS command) and put it into power-down state (OFF state).

It is cleared by hardware once the ADC is effectively disabled (ADEN is also cleared by hardware at this time).

0: No ADDIS command ongoing

1: Write 1 to disable the ADC. Read 1 means that an ADDIS command is in progress.

Note: Setting ADDIS to 1 is only effective when ADEN = 1 and ADSTART = 0 (which ensures that no conversion is ongoing)

Bit 0 ADEN: ADC enable command

This bit is set by software to enable the ADC. The ADC is effectively ready to operate once the ADRDY flag has been set.

It is cleared by hardware when the ADC is disabled, after the execution of the ADDIS command.

0: ADC is disabled (OFF state)

1: Write 1 to enable the ADC.

Note: The software is allowed to set ADEN only when all bits of ADC_CR registers are 0 (ADCAL = 0, ADSTP = 0, ADSTART = 0, ADDIS = 0 and ADEN = 0)

34.7.4 ADC configuration register 1 (ADC_CFGR1)

Address offset: 0x0C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.AWD1CH[4:0]Res.Res.AWD1ENAWD1SGLCHSEL
RMOD
Res.Res.Res.Res.DISCEN
rwrwrwrwrwrwrwrwrw

1514131211109876543210
Res.WAITCONTOVRMODEXTEN[1:0]Res.EXTSEL[2:0]ALIGNSCAN
DIR
RES[1:0]DMAC
FG
DMAEN
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bit 31 Reserved, must be kept at reset value.

Bits 30:26 AWD1CH[4:0] : Analog watchdog channel selection

These bits are set and cleared by software. They select the input channel to be guarded by the analog watchdog.

00000: ADC analog input Channel 0 monitored by AWD

00001: ADC analog input Channel 1 monitored by AWD

.....

10001: ADC analog input Channel 17 monitored by AWD

10110: ADC analog input Channel 22 monitored by AWD

10111: ADC analog input Channel 23 monitored by AWD

Others: Reserved

Note: The channel selected by the AWDCH[4:0] bits must be also set into the CHSELR register. The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bits 25:24 Reserved, must be kept at reset value.

Bit 23 AWD1EN : Analog watchdog enable

This bit is set and cleared by software.

0: Analog watchdog 1 disabled

1: Analog watchdog 1 enabled

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 22 AWD1SGL : Enable the watchdog on a single channel or on all channels

This bit is set and cleared by software to enable the analog watchdog on the channel identified by the AWDCH[4:0] bits or on all the channels

0: Analog watchdog 1 enabled on all channels

1: Analog watchdog 1 enabled on a single channel

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 21 CHSELRMOD : Mode selection of the ADC_CHSELR register

This bit is set and cleared by software to control the ADC_CHSELR feature:

0: Each bit of the ADC_CHSELR register enables an input

1: ADC_CHSELR register is able to sequence up to 8 channels

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bits 20:17 Reserved, must be kept at reset value.

Bit 16 DISCEN : Discontinuous mode

This bit is set and cleared by software to enable/disable discontinuous mode.

0: Discontinuous mode disabled

1: Discontinuous mode enabled

Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1.

The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 15 Reserved, must be kept at reset value.

Bit 14 WAIT : Wait conversion mode

This bit is set and cleared by software to enable/disable wait conversion mode.

0: Wait conversion mode off

1: Wait conversion mode on

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 13 CONT : Single / continuous conversion mode

This bit is set and cleared by software. If it is set, conversion takes place continuously until it is cleared.

0: Single conversion mode

1: Continuous conversion mode

Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1.

The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 12 OVRMOD : Overrun management mode

This bit is set and cleared by software and configure the way data overruns are managed.

0: ADC_DR register is preserved with the old data when an overrun is detected.

1: ADC_DR register is overwritten with the last conversion result when an overrun is detected.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bits 11:10 EXTEN[1:0] : External trigger enable and polarity selection

These bits are set and cleared by software to select the external trigger polarity and enable the trigger.

00: Hardware trigger detection disabled (conversions can be started by software)

01: Hardware trigger detection on the rising edge

10: Hardware trigger detection on the falling edge

11: Hardware trigger detection on both the rising and falling edges

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 9 Reserved, must be kept at reset value.

Bits 8:6 EXTSEL[2:0] : External trigger selection

These bits select the external event used to trigger the start of conversion (refer to table ADC interconnection in Section 34.4.2: ADC pins and internal signals for details):

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 5 ALIGN : Data alignment

This bit is set and cleared by software to select right or left alignment. Refer to Figure 291: Data alignment and resolution (oversampling disabled: OVSE = 0)

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 4 SCANDIR : Scan sequence direction

This bit is set and cleared by software to select the direction in which the channels is scanned in the sequence. It is effective only if CHSELRMOD bit is cleared to 0.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bits 3:2 RES[1:0] : Data resolution

These bits are written by software to select the resolution of the conversion.

Note: The software is allowed to write these bits only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 1 DMACFG : Direct memory access configuration

This bit is set and cleared by software to select between two DMA modes of operation and is effective only when DMAEN = 1.

0: DMA one-shot mode selected

1: DMA circular mode selected

For more details, refer to Managing converted data using the DMA .

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bit 0 DMAEN : Direct memory access enable

This bit is set and cleared by software to enable the generation of DMA requests. This allows the automatic management of the converted data by the DMA controller. For more details, refer to Managing converted data using the DMA .

0: DMA disabled

1: DMA enabled

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

34.7.5 ADC configuration register 2 (ADC_CFGR2)

Address offset: 0x10

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.LFTRIGRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rw
1514131211109876543210
Res.Res.Res.Res.Res.Res.TOVSOVSS[3:0]OVS[2:0]Res.OVSE
rwrwrwrwrwrwrwrwrw

Bits 31:30 Reserved, must be kept at reset value.

Bit 29 LFTRIG : Low-frequency trigger mode enable

This bit must be set by software.

0: Reserved

1: Low-frequency trigger mode enabled.

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 (this ensures that no conversion is ongoing).

Bits 28:10 Reserved, must be kept at reset value.

Bit 9 TOVS : Triggered Oversampling

This bit is set and cleared by software.

0: All oversampled conversions for a channel are done consecutively after a trigger

1: Each oversampled conversion for a channel needs a trigger

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 8:5 OVSS[3:0] : Oversampling shift

This bit is set and cleared by software.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 4:2 OVSR[2:0] : Oversampling ratio

This bit field defines the number of oversampling ratio.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bit 1 Reserved, must be kept at reset value.

Bit 0 OVSE : Oversampler Enable

This bit is set and cleared by software.

Note: Software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

34.7.6 ADC sampling time register (ADC_SMPR)

Address offset: 0x14

Reset value: 0x0000 0000

31302928272625242322212019181716
SMPSE L23SMPSE L22SMPSE L21SMPSE L20SMPSE L19SMPSE L18SMPSE L17SMPSE L16SMPSE L15SMPSE L14SMPSE L13SMPSE L12SMPSE L11SMPSE L10SMPSE L9SMPSE L8
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SMPSE L7SMPSE L6SMPSE L5SMPSE L4SMPSE L3SMPSE L2SMPSE L1SMPSE L0Res.SMP2[2:0]Res.SMP1[2:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:8 SMPSELx : Channel-x sampling time selection (x = 23 to 0)

These bits are written by software to define which sampling time is used.

0: Sampling time of CHANNELx use the setting of SMP1[2:0] register.

1: Sampling time of CHANNELx use the setting of SMP2[2:0] register.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bit 7 Reserved, must be kept at reset value.

Bits 6:4 SMP2[2:0] : Sampling time selection 2

These bits are written by software to select the sampling time that applies to all channels.

000: 1.5 ADC clock cycles

001: 3.5 ADC clock cycles

010: 7.5 ADC clock cycles

011: 12.5 ADC clock cycles

100: 19.5 ADC clock cycles

101: 39.5 ADC clock cycles

110: 79.5 ADC clock cycles

111: 814.5 ADC clock cycles

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bit 3 Reserved, must be kept at reset value.

Bits 2:0 SMP1[2:0] : Sampling time selection 1

These bits are written by software to select the sampling time that applies to all channels.

000: 1.5 ADC clock cycles

001: 3.5 ADC clock cycles

010: 7.5 ADC clock cycles

011: 12.5 ADC clock cycles

100: 19.5 ADC clock cycles

101: 39.5 ADC clock cycles

110: 79.5 ADC clock cycles

111: 814.5 ADC clock cycles

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

34.7.7 ADC watchdog threshold register (ADC_AWD1TR)

Address offset: 0x20

Reset value: 0x0FFF 0000

31302928272625242322212019181716
Res.Res.Res.Res.HT1[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.LT1[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:28 Reserved, must be kept at reset value.

Bits 27:16 HT1[11:0] : Analog watchdog 1 higher threshold

These bits are written by software to define the higher threshold for the analog watchdog.

Refer to Section 34.4.25: Analog window watchdog .

Bits 15:12 Reserved, must be kept at reset value.

Bits 11:0 LT1[11:0] : Analog watchdog 1 lower threshold

These bits are written by software to define the lower threshold for the analog watchdog.

Refer to Section 34.4.25: Analog window watchdog .

34.7.8 ADC watchdog threshold register (ADC_AWD2TR)

Address offset: 0x24

Reset value: 0x0FFF 0000

31302928272625242322212019181716
Res.Res.Res.Res.HT2[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

1514131211109876543210
Res.Res.Res.Res.LT2[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:28 Reserved, must be kept at reset value.

Bits 27:16 HT2[11:0] : Analog watchdog 2 higher threshold

These bits are written by software to define the higher threshold for the analog watchdog.

Refer to Section 34.4.25: Analog window watchdog .

Bits 15:12 Reserved, must be kept at reset value.

Bits 11:0 LT2[11:0] : Analog watchdog 2 lower threshold

These bits are written by software to define the lower threshold for the analog watchdog.

Refer to Section 34.4.25: Analog window watchdog .

34.7.9 ADC channel selection register [alternate] (ADC_CHSELR)

Address offset: 0x28

Reset value: 0x0000 0000

The same register can be used in two different modes:

CHSELRMOD = 0 in ADC_CFGR1

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.CHSEL 23CHSEL 22CHSEL 21CHSEL 20CHSEL 19CHSEL 18CHSEL 17CHSEL 16
rwrwrwrwrwrwrwrw
1514131211109876543210
CHSEL 15CHSEL 14CHSEL 13CHSEL 12CHSEL 11CHSEL 10CHSEL 9CHSEL 8CHSEL 7CHSEL 6CHSEL 5CHSEL 4CHSEL 3CHSEL 2CHSEL 1CHSEL 0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:0 CHSELx : Channel x selection (x = 23 to 0)

These bits are written by software and define which channels are part of the sequence of channels to be converted.

0: Input Channel-x is not selected for conversion

1: Input Channel-x is selected for conversion

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

34.7.10 ADC channel selection register [alternate] (ADC_CHSELR)

Address offset: 0x28

Reset value: 0x0000 0000

The same register can be used in two different modes:

CHSELRMOD = 1 in ADC_CFGR1

31302928272625242322212019181716
SQ8[3:0]SQ7[3:0]SQ6[3:0]SQ5[3:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ4[3:0]SQ3[3:0]SQ2[3:0]SQ1[3:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
Bits 31:28 SQ8[3:0] : 8th conversion of the sequence

These bits are programmed by software with the channel number assigned to the 8th conversion of the sequence. 0b1111 indicates the end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

0000: CH0

0001: CH1

...

1101: CH13

1110: CH14

1111: No channel selected (End of sequence)

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 27:24 SQ7[3:0] : 7th conversion of the sequence

These bits are programmed by software with the channel number assigned to the 7th conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 23:20 SQ6[3:0] : 6th conversion of the sequence

These bits are programmed by software with the channel number assigned to the 6th conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 19:16 SQ5[3:0] : 5th conversion of the sequence

These bits are programmed by software with the channel number assigned to the 5th conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 15:12 SQ4[3:0] : 4th conversion of the sequence

These bits are programmed by software with the channel number assigned to the 4th conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 11:8 SQ3[3:0] : 3rd conversion of the sequence

These bits are programmed by software with the channel number assigned to the 3rd conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 7:4 SQ2[3:0] : 2nd conversion of the sequence

These bits are programmed by software with the channel number assigned to the 2nd conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 3:0 SQ1[3:0] : 1st conversion of the sequence

These bits are programmed by software with the channel number assigned to the 1st conversion of the sequence. 0b1111 indicates end of the sequence.

When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.

Refer to SQ8[3:0] for a definition of channel selection.

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

34.7.11 ADC watchdog threshold register (ADC_AWD3TR)

Address offset: 0x2C

Reset value: 0x0FFF 0000

31302928272625242322212019181716
Res.Res.Res.Res.HT3[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.LT3[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:28 Reserved, must be kept at reset value.

Bits 27:16 HT3[11:0] : Analog watchdog 3 higher threshold

These bits are written by software to define the higher threshold for the analog watchdog.

Refer to Section 34.4.25: Analog window watchdog .

Bits 15:12 Reserved, must be kept at reset value.

Bits 11:0 LT3[11:0] : Analog watchdog 3 lower threshold

These bits are written by software to define the lower threshold for the analog watchdog.

Refer to Section 34.4.25: Analog window watchdog .

34.7.12 ADC data register (ADC_DR)

Address offset: 0x40

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
DATA[15:0]
rrrrrrrrrrrrrrrr

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:0 DATA[15:0] : Converted data

These bits are read-only. They contain the conversion result from the last converted channel. The data are left- or right-aligned as shown in Figure 291: Data alignment and resolution (oversampling disabled: OVSE = 0) .

Just after a calibration is complete, DATA[6:0] contains the calibration factor.

34.7.13 ADC power register (ADC_PWR)

Address offset: 0x44

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.VREFS
ECSM
P
VREFP
ROT
DPDAUTOF
F
rwrwrwrw

Bits 31:4 Reserved, must be kept at reset value.

Bit 3 VREFSECSMP : V REF+ second sample bit

This bit is set and cleared by software. It is used to enable/disable the second V REF+ protection when multiple ADCs are working simultaneously and a clock divider of 1 is used.

0: V REF+ second sample disabled

1: V REF+ second sample enabled

Note: The software is allowed to write this bit only when ADEN bit is cleared to 0 (this ensures that no conversion is ongoing).

Bit 2 VREFPROT : V REF+ protection bit

This bit is set and cleared by software. It is used to enable/disable V REF+ protection when multiple ADCs are working simultaneously and a clock divider is used.

0: V REF+ protection disabled

1: V REF+ protection enabled

Note: The software is allowed to write this bit only when ADEN bit is cleared to 0 (this ensures that no conversion is ongoing).

Bit 1 DPD : Deep-power-down mode bit

This bit is set and cleared by software. It is used to enable/disable Deep-power-down mode in autonomous mode when the ADC is not used.

0: Deep-power-down mode disabled

1: Deep-power-down mode enabled

Note: The software is allowed to write this bit only when ADEN bit is cleared to 0 (this ensures that no conversion is ongoing).

Setting DPD in auto-off mode automatically disables the LDO.

Bit 0 AUTOOFF : Auto-off mode bit

This bit is set and cleared by software. it is used to enable/disable the auto-off mode.

0: Auto-off mode disabled

1: Auto-off mode enabled

Note: The software is allowed to write this bit only when ADEN bit is cleared to 0 (this ensures that no conversion is ongoing).

34.7.14 ADC Analog Watchdog 2 Configuration register (ADC_AWD2CR)

Address offset: 0xA0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.AWD2
CH23
AWD2
CH22
AWD2
CH21
AWD2
CH20
AWD2
CH19
AWD2
CH18
AWD2
CH17
AWD2
CH16
rwrwrwrwrwrwrwrw
1514131211109876543210
AWD2
CH15
AWD2
CH14
AWD2
CH13
AWD2
CH12
AWD2
CH11
AWD2
CH10
AWD2
CH9
AWD2
CH8
AWD2
CH7
AWD2
CH6
AWD2
CH5
AWD2
CH4
AWD2
CH3
AWD2
CH2
AWD2
CH1
AWD2
CH0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:0 AWD2CHx : Analog watchdog channel selection (x = 23 to 0)

These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2).

0: ADC analog channel-x is not monitored by AWD2

1: ADC analog channel-x is monitored by AWD2

Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

34.7.15 ADC Analog Watchdog 3 Configuration register (ADC_AWD3CR)

Address offset: 0xA4

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.AWD3
CH23
AWD3
CH22
AWD3
CH21
AWD3
CH20
AWD3
CH19
AWD3
CH18
AWD3
CH17
AWD3
CH16
rwrwrwrwrwrwrwrw
1514131211109876543210
AWD3
CH15
AWD3
CH14
AWD3
CH13
AWD3
CH12
AWD3
CH11
AWD3
CH10
AWD3
CH9
AWD3
CH8
AWD3
CH7
AWD3
CH6
AWD3
CH5
AWD3
CH4
AWD3
CH3
AWD3
CH2
AWD3
CH1
AWD3
CH0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:0 AWD3CHx : Analog watchdog channel selection (x = 23 to 0)

These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3).

0: ADC analog channel-x is not monitored by AWD3

1: ADC analog channel-x is monitored by AWD3

Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

34.7.16 ADC Calibration factor (ADC_CALFACT)

Address offset: 0xC4

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT[6:0]
rwrwrwrwrwrwrw

Bits 31:7 Reserved, must be kept at reset value.

Bits 6:0 CALFACT[6:0] : Calibration factor

These bits are written by hardware or by software.

Note: Software can write these bits only when ADEN = 1 (ADC is enabled and no calibration is ongoing and no conversion is ongoing).

34.7.17 ADC option register (ADC_OR)

Address offset: 0xD0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CHN21
SEL
rw

Bits 31:1 Reserved, must be kept at reset value.

Bit 0 CHN21SEL : Channel 21 selection bit

This bit is set and cleared by software. It is used to select the internal source connected to ADC input channel 21:

0: dac1_out1 selected

1: dac1_out2 selected

Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 by writing ADSTP to 1 = 0 (which ensures that no conversion is ongoing).

34.7.18 ADC common configuration register (ADC_CCR)

Address offset: 0x308

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.VBAT
EN
VSENSE
SEL
VREF
EN
PRESC[3:0]Res.Res.
rwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.

Bits 31:25 Reserved, must be kept at reset value.

Bit 24 VBATEN : V BAT enable

This bit is set and cleared by software to enable/disable the V BAT channel.

0: V BAT channel disabled

1: V BAT channel enabled

Note: The software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing)

Bit 23 VSENSESEL : Temperature sensor selection

This bit is set and cleared by software to enable/disable the temperature sensor.

0: Temperature sensor disabled

1: Temperature sensor enabled

Note: Software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bit 22 VREFEN : V REFINT enable

This bit is set and cleared by software to enable/disable the V REFINT buffer.

0: V REFINT disabled

1: V REFINT enabled

Note: Software is allowed to write this bit only when ADSTART is cleared to 0 by writing ADSTP to 1 (which ensures that no conversion is ongoing).

Bits 21:18 PRESC[3:0] : ADC prescaler

Set and cleared by software to select the frequency of the clock to the ADC.

0000: input ADC clock not divided

0001: input ADC clock divided by 2

0010: input ADC clock divided by 4

0011: input ADC clock divided by 6

0100: input ADC clock divided by 8

0101: input ADC clock divided by 10

0110: input ADC clock divided by 12

0111: input ADC clock divided by 16

1000: input ADC clock divided by 32

1001: input ADC clock divided by 64

1010: input ADC clock divided by 128

1011: input ADC clock divided by 256

Other: Reserved

Note: Software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).

Bits 17:0 Reserved, must be kept at reset value.

34.7.19 ADC register map

The following table summarizes the ADC registers.

Table 338. ADC register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x00ADC_ISRResResResResResResResResResResResResResResResResResResResLDORDYEOCALResAWD3AWD2AWD1ResResOVREOSEOCEOSMPADRDY
Reset value0000000000

Table 338. ADC register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x04ADC_IERRes.LDORDYIEEOCALIERes.AWD3IEAWD2IEAWD1IERes.OVRIEEOSIEEOCIEEOSMPIEADRDYIE
Reset value0000000000
0x08ADC_CRADCALRes.ADVREGENRes.ADSTPRes.ADSTARTADDISADEN
Reset value000000
0x0CADC_CFGR1Res.AWDCH[4:0]Res.AWD1ENAWD1SGLCHSELRMODRes.DISCENRes.WAITCONTOVRMODEXTEN[1:0]Res.EXTSEL[2:0]ALIGNSCANDIRRES[1:0]DMACFGDMAEN
Reset value00000000000000000000000
0x10ADC_CFGR2Res.LFTRIGRes.Res.TOVSOVSS[3:0]OVSR[2:0]Res.OVSE
Reset value0000000000
0x14ADC_SMPRSMPSEL23SMPSEL22SMPSEL21SMPSEL20SMPSEL19SMPSEL18SMPSEL17SMPSEL16SMPSEL15SMPSEL14SMPSEL13SMPSEL12SMPSEL11SMPSEL10SMPSEL9SMPSEL8SMPSEL7SMPSEL6SMPSEL5SMPSEL4SMPSEL3SMPSEL2SMPSEL1SMPSEL0Res.SMP2[2:0]Res.SMP1[2:0]
Reset value000000000000000000000000000000
0x18-0x1CReservedReserved
0x20ADC_AWD1TRRes.HT1[11:0]Res.LT1[11:0]
Reset value111111111111000000000000
0x24ADC_AWD2TRRes.HT2[11:0]Res.LT2[11:0]
Reset value111111111111000000000000
0x28ADC_CHSELR (CHSELRMOD = 0)Res.CHSEL23CHSEL22CHSEL21CHSEL20CHSEL19CHSEL18CHSEL17CHSEL16CHSEL15CHSEL14CHSEL13CHSEL12CHSEL11CHSEL10CHSEL9CHSEL8CHSEL7CHSEL6CHSEL5CHSEL4CHSEL3CHSEL2CHSEL1CHSEL0
Reset value000000000000000000000000
0x28ADC_CHSELR (CHSELRMOD = 1)SQ8[3:0]SQ7[3:0]SQ6[3:0]SQ5[3:0]SQ4[3:0]SQ3[3:0]SQ2[3:0]SQ1[3:0]
Reset value00000000000000000000000000000000
0x2CADC_AWD3TRRes.HT3[11:0]Res.LT3[11:0]
Reset value111111111111000000000000
0x30 - 0x3CReservedReserved
0x40ADC_DRRes.DATA[15:0]
Reset value0000000000000000
0x44ADC_PWRRRes.VREFSEC SMPVREFPROTDPDAUTOFF
Reset value0000
0x48 - 0xBFReservedReserved

Table 338. ADC register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0xA0ADC_AWD2CRRes.Res.Res.Res.Res.Res.Res.Res.o AWD2CH23o AWD2CH22o AWD2CH21o AWD2CH20o AWD2CH19o AWD2CH18o AWD2CH17o AWD2CH16o AWD2CH15o AWD2CH14o AWD2CH13o AWD2CH12o AWD2CH11o AWD2CH10o AWD2CH9o AWD2CH8o AWD2CH7o AWD2CH6o AWD2CH5o AWD2CH4o AWD2CH3o AWD2CH2o AWD2CH1o AWD2CH0
Reset valueoooooooooooooooooooooooo
0xA4ADC_AWD3CRRes.Res.Res.Res.Res.Res.Res.Res.o AWD3CH23o AWD3CH22o AWD3CH21o AWD3CH20o AWD3CH19o AWD3CH18o AWD3CH17o AWD3CH16o AWD3CH15o AWD3CH14o AWD3CH13o AWD3CH12o AWD3CH11o AWD3CH10o AWD3CH9o AWD3CH8o AWD3CH7o AWD3CH6o AWD3CH5o AWD3CH4o AWD3CH3o AWD3CH2o AWD3CH1o AWD3CH0
Reset valueooooooooooooooooooooooo
0xA4 - 0xC0ReservedReserved
0xC4ADC_CALFACTRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT[6:0]
Reset value0000000
0xB8 - 0xCFReservedReserved
0xD0ADC_ORRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.o CHIN21SEL
Reset valueo
0x308ADC_CCRRes.Res.Res.Res.Res.Res.Res.VBATENo VSENSESELo VREFENo PRESC3o PRESC2o PRESC1o PRESC0Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset valueooooooo

Refer to Section 2.3: Memory organization for the register boundary addresses.