29. Analog-to-digital converters (ADC3)

29.1 Introduction

The ADC consists of a 12-bit successive approximation analog-to-digital converter.

The ADC has up to 19 multiplexed channels. 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 ADC is mapped on the AHB bus to allow fast data handling.

The analog watchdog features allow the application to detect if the input voltage goes outside the user-defined high or low thresholds.

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

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

29.2 ADC main features

Figure 229 shows the block diagram of one ADC.

29.3 ADC implementation

Table 239. ADC features

ADC modes/featuresADC1, ADC2ADC3
Resolution16bit12 bit
Maximum sampling speed3.6 Msps
(16-bit resolution)
5 Msps
(12-bit resolution)
Dual mode operationX-
Hardware offset calibrationXX

Table 239. ADC features (continued)

ADC modes/featuresADC1, ADC2ADC3
Hardware linearity calibrationX-
Single-end inputXX
Differential inputXX
Injected channel conversionXX
Oversamplingup to x1024up to x256
Data register32 bits16 bits
Data register FIFO depth3 stages
DMA supportXX
Parallel data output to DFSDMXX
Offset compensationXX
Gain compensation--
Number of Analog watchdog33
Option register--

29.4 ADC functional description

29.4.1 ADC block diagram

Figure 229 shows the ADC block diagram and Table 240 gives the ADC pin description.

Figure 229. ADC block diagram

Figure 229. ADC block diagram. This is a detailed functional block diagram of the ADC3. The central component is the SAR ADC, which receives analog inputs from 'Input selection & scan control' and produces 'CONVERTED DATA'. The diagram shows various control signals, triggers (SW, EXT, JEXT), and interfaces (AHB, DMA). It also includes sections for Bias & Ref, Oversampler/offset, and Analog watchdog. Pins are labeled on the left and right, with internal signals and registers also shown.

The block diagram illustrates the internal architecture of the ADC3. At the core is the SAR ADC block, which receives analog signals from the Input selection & scan control block. This control block is connected to ADC_INP1 , ADC_INN1 , and VREF- pins. The SAR ADC outputs CONVERTED DATA to the AHB interface and Oversampler/offset blocks. The AHB interface provides signals like READY , EOSMP , EOC , EOS , OVR , JEOS , JOQVF , and AWDx to the adc_it pin and a slave interface. It also connects to adc_dma , adc_dat , adc_ker_ck_input , and adc_hclk pins. The Oversampler/offset block is connected to DMACFG , DMAEN , and various oversampling options ( ROVSM , TROVS , OVSS , OVS , JOVSE , ROVSE , OFFSETY , OFFSETPOS , SATEN , OFFSETY_CH , OFFSETY_EN ). The Bias & Ref block is connected to DEEPPWD , ADVREGEN (with REG ), ADEN/ADDIS , CALFACT_D/S , ADCALDIF , and ADCAL signals. It also connects to Analog supply (VDDA) , VREF+ , and VREF- pins. The Start & Stop Control block is connected to SWTRIG , BULB , SMPTRIG , SMPPLUS , JAUTO , JL , JSQ , L , CONT , and DIFSELI signals. It also connects to adc_ext0_trg through adc_ext31_trg pins and EXTI mapped at product level . The EXTI mapped at product level block is connected to adc_jext0_trg through adc_jext31_trg pins and JEXTI mapped at product level . The Analog watchdog 1,2,3 block is connected to AWD1 , AWD2 , and AWD3 pins and control signals like AWD1EN , JAWD1EN , AWD1SGL , AWD1CH , LT1 , HT1 , AWDFILT , AWD2CH , LT2 , HT2 , AWD3CH , HT3 , and LT3 . The REG block is connected to ADVREGEN and DEEPPWD . The DISCEN , DISCNUM , and DISCONTINUOUS mode signals are connected to the SAR ADC. The EXTEN , EXTSEL , and JEXTEN , JEXTSEL signals are connected to the Start & Stop Control block. The SW trigger and J SW trigger are also connected to the Start & Stop Control block. The ADSTP and auto delayed ADSTP stop conversion signals are connected to the Start & Stop Control block. The ADCAL signal is connected to the Bias & Ref block. The ADCALDIF signal is connected to the Bias & Ref block. The CALFACT_D/S signal is connected to the Bias & Ref block. The ADEN/ADDIS signal is connected to the Bias & Ref block. The DEEPPWD signal is connected to the Bias & Ref block. The ADVREGEN signal is connected to the Bias & Ref block. The REG block is connected to the Bias & Ref block. The ADEN/ADDIS signal is connected to the Bias & Ref block. The DEEPPWD signal is connected to the Bias & Ref block. The ADVREGEN signal is connected to the Bias & Ref block. The REG block is connected to the Bias & Ref block.

Figure 229. ADC block diagram. This is a detailed functional block diagram of the ADC3. The central component is the SAR ADC, which receives analog inputs from 'Input selection & scan control' and produces 'CONVERTED DATA'. The diagram shows various control signals, triggers (SW, EXT, JEXT), and interfaces (AHB, DMA). It also includes sections for Bias & Ref, Oversampler/offset, and Analog watchdog. Pins are labeled on the left and right, with internal signals and registers also shown.

MSv63820V3

29.4.2 ADC pins and internal signals

Table 240. ADC input/output pins

Pin nameSignal typeDescription
VDDAInput, analog supplyAnalog power supply and positive reference voltage for the ADC
VSSAInput, analog supply groundGround for analog power supply, equal to V SS .
VREF+Input, analog reference positiveThe higher/positive reference voltage for the ADC.
VREF-Input, analog reference negativeThe lower/negative reference voltage for the ADC. V REF- is internally connected to V SSA
ADC3_INNi/INPiNegative/positive external analog input signals19 negative/positive external analog input channels (refer to Section 29.4.4: ADC connectivity for details)

Table 241. ADC internal input/output signals

Internal signal nameSignal typeDescription
V INPiPositive analog input channelsPositive internal analog input channels connected either to ADC3_INPi external channels or to internal channels.
V INNiNegative analog input channelsNegative internal analog input channels connected either to ADC3_INNi external channels or to internal channels
adc_ext_trgiInputsADC external trigger inputs for regular conversions.
adc_jext_trgiInputsADC external trigger inputs for the injected conversions.
adc_awdxOutputInternal analog watchdog output signal connected to on-chip timers. (x = Analog watchdog number 1,2,3)
adc_ker_ck_inputOutputADC kernel clock
adc_hclkInputADC peripheral clock
adc_itOutputADC interrupt
adc_dmaOutputADC DMA request
adc_dat[15:0]OutputADC data outputs

Table 242. ADC interconnection

Signal nameSource/destination
ADC3 V INP [17]V SENSE (internal temperature sensor output voltage).
ADC3 V INP [18]V REFINT (output voltage from internal reference voltage).
ADC3 V INP [16]V BAT /4 (VBAT pin input voltage divided by 4).
adc_dat[15:0]dfsdm_adc3_dat[15:0]
adc_ext_trg0tim1_oc1
adc_ext_trg1tim1_oc2
adc_ext_trg2tim1_oc3

Table 242. ADC interconnection (continued)

Signal nameSource/destination
adc_ext_trg3tim2_oc2
adc_ext_trg4tim3_trgo
adc_ext_trg5tim4_oc4
adc_ext_trg6exti11
adc_ext_trg7tim8_trgo
adc_ext_trg8tim8_trgo2
adc_ext_trg9tim1_trgo
adc_ext_trg10tim1_trgo2
adc_ext_trg11tim2_trgo
adc_ext_trg12tim4_trgo
adc_ext_trg13tim6_trgo
adc_ext_trg14tim15_trgo
adc_ext_trg15tim3_oc4
adc_ext_trg16reserved
adc_ext_trg17reserved
adc_ext_trg18lptim1_out
adc_ext_trg19lptim2_out
adc_ext_trg20lptim3_out
adc_ext_trg21tim23_trgo
adc_ext_trg22tim24_trgo
adc_ext_trg23reserved
adc_ext_trg24reserved
adc_ext_trg25reserved
adc_ext_trg26reserved
adc_ext_trg27reserved
adc_ext_trg28reserved
adc_ext_trg29reserved
adc_ext_trg30reserved
adc_ext_trg31reserved
adc_jext_trg0tim1_trgo
adc_jext_trg1tim1_oc4
adc_jext_trg2tim2_trgo
adc_jext_trg3tim2_oc1
adc_jext_trg4tim3_oc4
adc_jext_trg5tim4_trgo

Table 242. ADC interconnection (continued)

Signal nameSource/destination
adc_jext_trg6exti15
adc_jext_trg7tim8_oc4
adc_jext_trg8tim1_trgo2
adc_jext_trg9tim8_trgo
adc_jext_trg10tim8_trgo2
adc_jext_trg11tim3_oc3
adc_jext_trg12tim3_trgo
adc_jext_trg13tim3_oc1
adc_jext_trg14tim6_trgo
adc_jext_trg15tim15_trgo
adc_jext_trg16reserved
adc_jext_trg17reserved
adc_jext_trg18lptim1_out
adc_jext_trg19lptim2_out
adc_jext_trg20lptim3_out
adc_jext_trg21tim23_trgo
adc_jext_trg22tim24_trgo
adc_jext_trg23reserved
adc_jext_trg24reserved
adc_jext_trg25reserved
adc_jext_trg26reserved
adc_jext_trg27reserved
adc_jext_trg28reserved
adc_jext_trg29reserved
adc_jext_trg30reserved
adc_jext_trg31reserved

29.4.3 ADC clocks

Dual clock domain architecture

The dual clock-domain architecture means that the ADC clock is independent from the AHB bus clock.

The ADC input clock can be selected between two different clock sources (see Figure 230: ADC clock scheme ):

  1. 1. The ADC clock can be a specific clock source (adc_ker_ck_input), independent and asynchronous with the AHB clock.

Refer to section Reset and clock control (RCC) for more information on how to generate the ADC dedicated clock. To select this scheme, CKMODE[1:0] bits of ADC_CCR register must be set to 00.

  1. 2. The ADC clock can be derived from the AHB clock interface divided by a programmable factor of 1, 2 or 4. To select this scheme, CKMODE[1:0] bits of ADC_CCR must be different from 00. The programmable divider factor can be configured through to CKMODE[1:0] bits of ADC_CCR.

The prescaling factor of 1 (CKMODE[1:0] = 01) can be used only if the AHB prescaler is set to 1 (HPRE[3:0] = 0xxx in the RCC_CFGR register).

Option 1 has the advantage of achieving the maximum ADC clock frequency whatever the AHB clock scheme selected. The ADC clock can eventually be divided by the following ratio: 1, 2, 4, 6, 8, 12, 16, 32, 64, 128, 256, using the prescaler configured with bits PRESC[3:0] in the ADC_CCR register.

Option 2 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).

The clock is configured through CKMODE[1:0] bits must be compliant with the operating frequency specified in the device datasheet.

Figure 230. ADC clock scheme

Figure 230. ADC clock scheme diagram showing the clock flow from the RCC block to the ADC3 block and then to the Analog ADC3. The RCC block provides adc_hclk and adc_ker_ck_input. The ADC3 block contains an AHB interface, a prescaler (/1 or /2 or /4), and a prescaler (/1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256). The prescalers are controlled by Bits CKMODE[1:0] and Bits PREC[3:0] of ADC3_CCR. The output of the prescalers is adc_ker_ck, which is connected to the Analog ADC3. The diagram also shows a multiplexer with inputs from the prescalers and a '00' input, controlled by Bits CKMODE[1:0] of ADC3_CCR. The output of the multiplexer is adc_ker_ck.

The diagram illustrates the clock scheme for the ADC3. On the left, the RCC (Reset and clock controller) block provides two clock signals: adc_hclk and adc_ker_ck_input . The adc_hclk signal is connected to the AHB interface within the ADC3 block. The adc_ker_ck_input signal is connected to a prescaler block. Inside the ADC3 block, there are two prescaler options. The first prescaler, labeled /1 or /2 or /4 , is controlled by Bits CKMODE[1:0] of ADC3_CCR . The second prescaler, labeled /1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256 , is controlled by Bits PREC[3:0] of ADC3_CCR . Both prescalers feed into a multiplexer. The multiplexer is controlled by Bits CKMODE[1:0] of ADC3_CCR and has a 00 input. The output of the multiplexer is adc_ker_ck , which is then connected to the Analog ADC3 block. The diagram is labeled with the code MSv63821V2 in the bottom right corner.

Figure 230. ADC clock scheme diagram showing the clock flow from the RCC block to the ADC3 block and then to the Analog ADC3. The RCC block provides adc_hclk and adc_ker_ck_input. The ADC3 block contains an AHB interface, a prescaler (/1 or /2 or /4), and a prescaler (/1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256). The prescalers are controlled by Bits CKMODE[1:0] and Bits PREC[3:0] of ADC3_CCR. The output of the prescalers is adc_ker_ck, which is connected to the Analog ADC3. The diagram also shows a multiplexer with inputs from the prescalers and a '00' input, controlled by Bits CKMODE[1:0] of ADC3_CCR. The output of the multiplexer is adc_ker_ck.

Clock ratio constraint between ADC clock and AHB clock

There are generally no constraints to be respected for the ratio between the ADC clock and the AHB clock except if some injected channels are programmed. In this case, it is mandatory to respect the following ratio:

Constraints between ADC clocks

When several ADC interfaces are used simultaneously, it is mandatory to use the same clock source from the RCC block without prescaler ratio for all ADC interfaces.

29.4.4 ADC connectivity

ADC inputs are connected to the external channels as well as internal sources as described below.

Figure 231. ADC3 connectivity

Schematic diagram of ADC3 connectivity showing 19 channels (VINP[0] to VINP[18]) connected to a SAR ADC3 block. The diagram shows external pins (ADC3_INP0 to ADC3_INP15) and internal sources (VSSA, VBAT/4, VSENSE, VREFINT) connected to these channels. Channels are categorized as 'Fast channel' or 'Slow channel'. VINP[0] to VINP[5] are fast channels; VINP[6] to VINP[18] are slow channels. VINP[0] to VINP[5] are connected to VSSA and external pins ADC3_INP0 to ADC3_INP5. VINP[6] to VINP[18] are connected to VSSA and external pins ADC3_INP6 to ADC3_INP15. VINP[16] to VINP[18] are also connected to internal sources VBAT/4, VSENSE, and VREFINT respectively. The SAR ADC3 block has inputs VINP, VSSA, VREF+, and VREF-.

The diagram illustrates the connectivity of the ADC3 module. It features a central SAR ADC3 block with multiple input channels labeled VINP[0] through VINP[18]. These channels are categorized into 'Fast channel' (VINP[0] to VINP[5]) and 'Slow channel' (VINP[6] to VINP[18]).

External pins are connected to the ADC3 channels as follows:

Internal sources are connected to the ADC3 channels as follows:

The SAR ADC3 block itself has inputs for VINP, V SSA , V REF+ , and V REF- . A 'Channel selection' block is shown between the channels and the ADC3 block.

MSV63824V2

Schematic diagram of ADC3 connectivity showing 19 channels (VINP[0] to VINP[18]) connected to a SAR ADC3 block. The diagram shows external pins (ADC3_INP0 to ADC3_INP15) and internal sources (VSSA, VBAT/4, VSENSE, VREFINT) connected to these channels. Channels are categorized as 'Fast channel' or 'Slow channel'. VINP[0] to VINP[5] are fast channels; VINP[6] to VINP[18] are slow channels. VINP[0] to VINP[5] are connected to VSSA and external pins ADC3_INP0 to ADC3_INP5. VINP[6] to VINP[18] are connected to VSSA and external pins ADC3_INP6 to ADC3_INP15. VINP[16] to VINP[18] are also connected to internal sources VBAT/4, VSENSE, and VREFINT respectively. The SAR ADC3 block has inputs VINP, VSSA, VREF+, and VREF-.

29.4.5 Slave AHB interface

The ADC implements an AHB slave port for control/status register and data access. The features of the AHB interface are listed below:

The AHB slave interface does not support split/retry requests, and never generates AHB errors.

29.4.6 ADC Deep-power-down mode (DEEPPWD) and ADC voltage regulator (ADVREGEN)

By default, the ADC is in Deep-power-down mode where its supply is internally switched off to reduce the leakage currents (the reset state of bit DEEPPWD is 1 in the ADC_CR register).

To start ADC operations, it is first needed to exit Deep-power-down mode by setting bit DEEPPWD = 0.

Then, it is mandatory to enable the ADC internal voltage regulator by setting the bit ADVREGEN = 1 into ADC_CR register. The software must wait for the startup time of the ADC voltage regulator ( \( T_{ADCVREG\_STUP} \) ) before launching a calibration or enabling the ADC. This delay must be implemented by software.

For the startup time of the ADC voltage regulator, refer to device datasheet for \( T_{ADCVREG\_STUP} \) parameter.

When ADC operations are complete, the ADC can be disabled (ADEN = 0). It is possible to save power by also disabling the ADC voltage regulator. This is done by writing bit ADVREGEN = 0.

Then, to save more power by reducing the leakage currents, it is also possible to re-enter in ADC Deep-power-down mode by setting bit DEEPPWD = 1 into ADC_CR register. This is particularly interesting before entering Stop mode.

Note: Writing DEEPPWD = 1 automatically disables the ADC voltage regulator and bit ADVREGEN is automatically cleared.

When the internal voltage regulator is disabled (ADVREGEN = 0), the internal analog calibration is kept.

In ADC Deep-power-down mode (DEEPPWD = 1), the internal analog calibration is lost and it is necessary to either relaunch a calibration or re-apply the calibration factor which was previously saved (refer to Section 29.4.8: Calibration (ADCAL, ADCALDIF, ADC_CALFACT) ).

29.4.7 Single-ended and differential input channels

Channels can be configured to be either single-ended input or differential input by programming DIFSEL[i] bits in the ADC_DIFSEL register. This configuration must be written while the ADC is disabled (ADEN = 0). Note that the DIFSEL[i] bits corresponding to single-ended channels are always programmed at 0.

In single-ended input mode, the analog voltage to be converted for channel “i” is the difference between the external voltage \( V_{INP[i]} \) (positive input) and \( V_{REF-} \) (negative input).

In differential input mode, the analog voltage to be converted for channel “i” is the difference between the external voltage \( V_{INP[i]} \) (positive input) and \( V_{INN[i]} \) (negative input).

The output data for the differential mode is an unsigned data. When \( V_{INP[i]} \) equals \( V_{REF-} \) , \( V_{INN[i]} \) equals \( V_{REF+} \) and the output data is 0x000 (12-bit resolution mode). When \( V_{INP[i]} \) equals \( V_{REF+} \) , \( V_{INN[i]} \) equals \( V_{REF-} \) and the output data is 0xFFF.

\[ \text{Converted value} = \frac{\text{ADC\_Full\_Scale}}{2} \times \left[ 1 + \frac{V_{INP} - V_{INN}}{V_{REF+}} \right] \]

When ADC is configured as differential mode, both inputs should be biased at \( (V_{REF+})/2 \) voltage.

The input signals are supposed to be differential (common mode voltage should be fixed).

Internal channels (such as \( V_{REFINT} \) and \( V_{SENSE} \) ) are used in single-ended mode only.

For a complete description of how the input channels are connected, refer to Section 29.4.4: ADC connectivity .

Caution: When configuring the channel “i” in differential input mode, its negative input voltage \( V_{INN[i]} \) is connected to another channel. As a consequence, this channel is no longer usable in Single-ended mode or in differential mode and must never be configured to be converted.

29.4.8 Calibration (ADCAL, ADCALDIF, ADC_CALFACT)

The ADC provides an automatic calibration procedure which drives all the calibration sequence including the power-on/off sequence of the ADC. During the procedure, the ADC calculates a calibration factor which is 7-bit wide and which is applied internally to the ADC until the next ADC power-off. During the calibration procedure, the application must not use the ADC and must wait until calibration is complete.

Calibration is preliminary to any ADC operation. It removes the offset error which may vary from chip to chip due to process or bandgap variation.

The calibration factor to be applied for single-ended input conversions is different from the factor to be applied for differential input conversions:

The calibration is then initiated by software by setting bit ADCAL = 1. Calibration can only be initiated when the ADC is disabled (when ADEN = 0). ADCAL bit stays at 1 during all the calibration sequence. It is then cleared by hardware as soon the calibration completes. At this time, the associated calibration factor is stored internally in the analog ADC and also in

the bits CALFACT_S[6:0] or CALFACT_D[6:0] of ADC_CALFACT register (depending on single-ended or differential input calibration)

The internal analog calibration is kept if the ADC is disabled (ADEN = 0). However, if the ADC is disabled for extended periods, then it is recommended that a new calibration cycle is run before re-enabling the ADC.

The internal analog calibration is lost each time the power of the ADC is removed (example, when the product enters in STANDBY or VBAT mode). In this case, to avoid spending time recalibrating the ADC, it is possible to re-write the calibration factor into the ADC_CALFACT register without recalibrating, supposing that the software has previously saved the calibration factor delivered during the previous calibration.

The calibration factor can be written if the ADC is enabled but not converting (ADEN = 1 and ADSTART = 0 and JADSTART = 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. It is recommended to recalibrate when V REF+ voltage changed more than 10%.

Software procedure to calibrate the ADC

  1. 1. Ensure DEEPPWD = 0, ADVREGEN = 1 and that ADC voltage regulator startup time has elapsed.
  2. 2. Ensure that ADEN = 0.
  3. 3. Select the input mode for this calibration by setting ADCALDIF = 0 (single-ended input) or ADCALDIF = 1 (differential input).
  4. 4. Set ADCAL = 1.
  5. 5. Wait until ADCAL = 0.
  6. 6. The calibration factor can be read from ADC_CALFACT register.

Figure 232. ADC calibration

Timing diagram for ADC calibration showing signal transitions for ADCALDIF, ADCAL, ADC State, and CALFACT_x[6:0] over time. It includes a legend for software (S/W) and hardware (H/W) triggers, and a note about indicative timings.

The figure is a timing diagram illustrating the ADC calibration process. It consists of four horizontal signal lines and a legend at the bottom.

Legend: 'by S/W' (software trigger), 'by H/W' (hardware trigger), 'Indicative timings'.

Reference code: MSv30263V2.

Timing diagram for ADC calibration showing signal transitions for ADCALDIF, ADCAL, ADC State, and CALFACT_x[6:0] over time. It includes a legend for software (S/W) and hardware (H/W) triggers, and a note about indicative timings.

Software procedure to re-inject a calibration factor into the ADC

  1. 1. Ensure ADEN = 1 and ADSTART = 0 and JADSTART = 0 (ADC enabled and no conversion is ongoing).
  2. 2. Write CALFACT_S and CALFACT_D with the new calibration factors.
  3. 3. When a conversion is launched, the calibration factor is injected into the analog ADC only if the internal analog calibration factor differs from the one stored in bits

CALFACT_S for single-ended input channel or bits CALFACT_D for differential input channel.

Figure 233. Updating the ADC calibration factor

Timing diagram showing the process of updating the ADC calibration factor. It includes signals for ADC state (Ready, Converting), Internal calibration factor [6:0] (F1, F2), Start conversion, WRITE ADC_CALFACT, and CALFACT_S[6:0].

The diagram illustrates the timing for updating the ADC calibration factor. It shows five signal lines over time:

Legend:
by s/w (Software trigger)
by h/w (Hardware trigger)

MSV30529V2

Timing diagram showing the process of updating the ADC calibration factor. It includes signals for ADC state (Ready, Converting), Internal calibration factor [6:0] (F1, F2), Start conversion, WRITE ADC_CALFACT, and CALFACT_S[6:0].

Converting single-ended and differential analog inputs with a single ADC

If the ADC is supposed to convert both differential and single-ended inputs, two calibrations must be performed, one with ADCALDIF = 0 and one with ADCALDIF = 1. The procedure is the following:

  1. 1. Disable the ADC.
  2. 2. Calibrate the ADC in single-ended input mode (with ADCALDIF = 0). This updates the register CALFACT_S[6:0].
  3. 3. Calibrate the ADC in differential input modes (with ADCALDIF = 1). This updates the register CALFACT_D[6:0].
  4. 4. Enable the ADC, configure the channels and launch the conversions. Each time there is a switch from a single-ended to a differential inputs channel (and vice-versa), the calibration is automatically injected into the analog ADC.

Figure 234. Mixing single-ended and differential channels

Timing diagram showing the sequence of ADC conversions triggered by a 'Trigger event'. The sequence consists of four conversions: CONV CH 1 (Single ended inputs channel), CONV CH 2 (Differential inputs channel), CONV CH 3 (Differential inputs channel), and CONV CH 4 (Single inputs channel). Between each conversion, the ADC state returns to 'RDY'. The 'Internal calibration factor[6:0]' is shown as F2 for single-ended channels and F3 for differential channels. The 'CALFACT_S[6:0]' register is set to F2, and the 'CALFACT_D[6:0]' register is set to F3. The diagram is labeled MSV30530V2.
Timing diagram showing the sequence of ADC conversions triggered by a 'Trigger event'. The sequence consists of four conversions: CONV CH 1 (Single ended inputs channel), CONV CH 2 (Differential inputs channel), CONV CH 3 (Differential inputs channel), and CONV CH 4 (Single inputs channel). Between each conversion, the ADC state returns to 'RDY'. The 'Internal calibration factor[6:0]' is shown as F2 for single-ended channels and F3 for differential channels. The 'CALFACT_S[6:0]' register is set to F2, and the 'CALFACT_D[6:0]' register is set to F3. The diagram is labeled MSV30530V2.

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

First of all, follow the procedure explained in Section 29.4.6: ADC Deep-power-down mode (DEEPPWD) and ADC voltage regulator (ADVREGEN) .

Once DEEPPWD = 0 and ADVREGEN = 1, the ADC can be enabled and the ADC needs a stabilization time of \( t_{STAB} \) before it starts converting accurately, as shown in Figure 235 . Two control bits enable or disable the ADC:

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

Injected conversions start by setting JADSTART = 1 or when an external injected trigger event occurs, if injected triggers are enabled.

Software procedure to enable the ADC

  1. 1. Clear the ADRDY bit in the ADC_ISR register by writing ‘1’.
  2. 2. Set ADEN = 1.
  3. 3. Wait until ADRDY = 1 (ADRDY is set after the ADC startup time). This can be done using the associated interrupt (setting ADRDYIE = 1).
  4. 4. Clear the ADRDY bit in the ADC_ISR register by writing ‘1’ (optional).

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

Software procedure to disable the ADC

  1. 1. Check that both ADSTART = 0 and JADSTART = 0 to ensure that no conversion is ongoing. If required, stop any regular and injected conversion ongoing by setting ADSTP = 1 and JADSTP = 1 and then wait until ADSTP = 0 and JADSTP = 0.
  2. 2. Set ADDIS = 1.
  3. 3. If required by the application, wait until ADEN = 0, until the analog ADC is effectively disabled (ADDIS is automatically reset once ADEN = 0).

Figure 235. Enabling / disabling the ADC

Timing diagram showing the sequence of signals for enabling and disabling the ADC. The diagram includes four horizontal lines: ADEN, ADRDY, ADDIS, and ADC state. The sequence starts with ADEN going high (by software), followed by a stabilization time tSTAB, then ADRDY going high. The ADC state transitions from OFF to Startup, then RDY. When ADRDY is high, the ADC state is RDY. Then, ADDIS goes high (by software), and the ADC state transitions to REQ-OF. Finally, ADEN goes low (by hardware), and the ADC state returns to OFF. A legend at the bottom indicates that rising arrows represent 'by S/W' (software) and falling arrows represent 'by H/W' (hardware). The diagram is labeled MSv30264V2.
Timing diagram showing the sequence of signals for enabling and disabling the ADC. The diagram includes four horizontal lines: ADEN, ADRDY, ADDIS, and ADC state. The sequence starts with ADEN going high (by software), followed by a stabilization time tSTAB, then ADRDY going high. The ADC state transitions from OFF to Startup, then RDY. When ADRDY is high, the ADC state is RDY. Then, ADDIS goes high (by software), and the ADC state transitions to REQ-OF. Finally, ADEN goes low (by hardware), and the ADC state returns to OFF. A legend at the bottom indicates that rising arrows represent 'by S/W' (software) and falling arrows represent 'by H/W' (hardware). The diagram is labeled MSv30264V2.

29.4.10 Constraints when writing the ADC control bits

The software is allowed to write the RCC control bits to configure and enable the ADC clock (refer to RCC Section), the DIFSEL[i] control bits in the ADC_DIFSEL register and the control bits ADCAL and ADEN in the ADC_CR register, only if the ADC is disabled (ADEN must be equal to 0).

The software is then allowed to write the control bits ADSTART, JADSTART and ADDIS of the ADC_CR register only if the ADC is enabled and there is no pending request to disable the ADC (ADEN must be equal to 1 and ADDIS to 0).

For all the other control bits of the ADC_CFGR, ADC_SMPRx, ADC_TRy, ADC_SQRy, ADC_JDRy, ADC_OFRy, ADC_OFCHRY and ADC_IER registers:

The software is allowed to write the ADSTP or JADSTP control bits of the ADC_CR register only if the ADC is enabled, possibly converting, and if there is no pending request to disable the ADC (ADSTART or JADSTART must be equal to 1 and ADDIS to 0).

The software can write the register ADC_JSQR at any time, when the ADC is enabled (ADEN = 1). Refer to Section 29.6.16: ADC injected sequence register (ADC_JSQR) for additional details.

Note: There is no hardware protection to prevent these forbidden write accesses and ADC behavior may become in an unknown state. To recover from this situation, the ADC must be disabled (clear ADEN = 0 as well as all the bits of ADC_CR register).

29.4.11 Channel selection (SQRx, JSQRx)

The ADC features up to 19 multiplexed channels, out of which:

To convert one of the internal analog channels, the corresponding analog sources must first be enabled by programming bits VREFEN, VBATEN or TSEN in the ADC_CCR registers.

Refer to Table ADC interconnection in Section 29.4.2: ADC pins and internal signals for the connection of the above internal analog inputs to external ADC pins or internal signals.

The conversions can be organized in two groups: regular and injected. A group consists of a sequence of conversions that can be done on any channel and in any order. For instance, it is possible to implement the conversion sequence in the following order: ADC3_INP/INN3, ADC3_INP/INN8, ADC3_INP/INN2, ADC3_INN/INP2, ADC3_INP/INN0, ADC3_INP/INN2, ADC3_INP/INN2, ADC3_INP/INN15.

ADC_SQRy registers must not be modified while regular conversions can occur. For this, the ADC regular conversions must be first stopped by writing ADSTP = 1 (refer to Section 29.4.17: Stopping an ongoing conversion (ADSTP, JADSTP) ).

The software is allowed to modify on-the-fly the ADC_JSQR register when JADSTART is set to 1 (injected conversions ongoing) only when the context queue is enabled (JQDIS = 0 in ADC_CFGR register). Refer to Section 29.4.21: Queue of context for injected conversions

29.4.12 Channel-wise programmable sampling time (SMPR1, SMPR2)

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

Each channel can be sampled with a different sampling time which is programmable using the SMP[2:0] bits in the ADC_SMPR1 and ADC registers. It is therefore possible to select among the following sampling time values:

The total conversion time is calculated as follows:

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

Example:

With \( F_{\text{adc\_ker\_ck}} = 30 \text{ MHz} \) and a sampling time of 2.5 ADC clock cycles:

\[ T_{\text{CONV}} = (2.5 + 12.5) \text{ ADC clock cycles} = 15 \text{ ADC clock cycles} = 500 \text{ ns} \]

The ADC notifies the end of the sampling phase by setting the status bit EOSMP (only for regular conversion).

Constraints on the sampling time

For each channel, SMP[2:0] bits must be programmed to respect a minimum sampling time as specified in the ADC characteristics section of the datasheets.

Bulb sampling mode

When the BULB bit is set in ADC register, the sampling period starts immediately after the last ADC conversion. A hardware or software trigger starts the conversion after the sampling time has been programmed in ADC_SMPR1 register. The very first ADC conversion, after the ADC is enabled, is performed with the sampling time programmed in SMP bits. The Bulb mode is effective starting from the second conversion.

The maximum sampling time is limited (refer to the ADC characteristics section of the datasheet).

The Bulb mode is neither compatible with the Continuous conversion mode nor with the injected channel conversion.

When the BULB bit is set, it is not allowed to set SMPTRIG bit in ADC_CFGR2.

Figure 236. Bulb mode timing diagram

Timing diagram comparing Normal (discontinuous) mode and BULB (continuous) mode for an ADC. In Normal mode, the ADC state transitions from idle to sample to conversion, then back to idle before repeating. In BULB mode, the ADC state transitions from idle to sample to conversion, then immediately back to sample and conversion without an idle state. A trigger signal initiates the sampling. A double-headed arrow indicates the 'Sampling time programmed in SMP bits' during the BULB mode sample phase.

MSV46157V2

Timing diagram comparing Normal (discontinuous) mode and BULB (continuous) mode for an ADC. In Normal mode, the ADC state transitions from idle to sample to conversion, then back to idle before repeating. In BULB mode, the ADC state transitions from idle to sample to conversion, then immediately back to sample and conversion without an idle state. A trigger signal initiates the sampling. A double-headed arrow indicates the 'Sampling time programmed in SMP bits' during the BULB mode sample phase.

Sampling time control trigger mode

When the SMPTRIG bit is set, the sampling time programmed through SMPx bits is not applicable. The sampling time is controlled by the trigger signal edge.

When a hardware trigger is selected, each rising edge of the trigger signal starts the sampling period. A falling edge ends the sampling period and starts the conversion.

When a software trigger is selected, the software trigger is not the ADSTART bit in ADC_CR but the SWTRIG bit. SWTRIG bit has to be set to start the sampling period, and the SWTRIG bit has to be cleared to end the sampling period and start the conversion.

The maximum sampling time is limited (refer to the ADC characteristics section of the datasheet).

This mode is neither compatible with the Continuous conversion mode, nor with the injected channel conversion.

When SMPTRIG bit is set, it is not allowed to set BULB bit.

I/O analog switches voltage booster

The I/O analog switches resistance increases when the \( V_{DDA} \) voltage is too low. This requires to have the sampling time adapted accordingly (cf datasheet for electrical characteristics). This resistance can be minimized at low \( V_{DDA} \) by enabling an internal voltage booster with BOOSTEN bit in the SYSCFG_CFGR1 register.

SMPPLUS control bit

The SMPPLUS bit can be used to change the sampling time from 2.5 ADC clock cycles to 3.5 ADC clock cycles.

29.4.13 Single conversion mode (CONT = 0)

In Single conversion mode, the ADC performs once all the conversions of the channels. This mode is started with the CONT bit at 0 by either:

Inside the regular sequence, after each conversion is complete:

Inside the injected sequence, after each conversion is complete:

After the regular sequence is complete:

After the injected sequence is complete:

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

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

29.4.14 Continuous conversion mode (CONT = 1)

This mode applies to regular channels only.

In Continuous conversion mode, when a software or hardware regular trigger event occurs, the ADC performs once all the regular conversions of the channels and then automatically restarts and continuously converts each conversions of the sequence. This mode is started with the CONT bit at 1 either by external trigger or by setting the ADSTART bit in the ADC_CR register.

Inside the regular 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 DISCEN = 1 and CONT = 1.

Injected channels cannot be converted continuously. The only exception is when an injected channel is configured to be converted automatically after regular channels in Continuous mode (using JAUTO bit), refer to Auto-injection mode section).

29.4.15 Starting conversions (ADSTART, JADSTART)

Software starts ADC regular conversions by setting ADSTART = 1.

When ADSTART is set, the conversion starts:

Software starts ADC injected conversions by setting JADSTART = 1.

When JADSTART is set, the conversion starts:

Note: In auto-injection mode (JAUTO = 1), use ADSTART bit to start the regular conversions followed by the auto-injected conversions (JADSTART must be kept cleared).

ADSTART and JADSTART also provide information on whether any ADC operation is currently ongoing. It is possible to re-configure the ADC while ADSTART = 0 and JADSTART = 0 are both true, indicating that the ADC is idle.

ADSTART is cleared by hardware:

Note: In Continuous mode (CONT = 1), ADSTART is not cleared by hardware with the assertion of EOS because the sequence is automatically relaunched.

When a hardware trigger is selected in Single mode (CONT = 0 and EXTSEL # 0x00), ADSTART is not cleared by hardware with the assertion of EOS to help the software which does not need to reset ADSTART again for the next hardware trigger event. This ensures that no further hardware triggers are missed.

JADSTART is cleared by hardware:

Note: When the software trigger is selected, ADSTART bit should not be set if the EOC flag is still high.

29.4.16 ADC timing

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_{\text{CONV}} = T_{\text{SMPL}} + T_{\text{SAR}} = [2.5]_{\text{jmin}} + 12.5]_{\text{j12bit}} \times T_{\text{ADC\_CLK}} \]
\[ T_{\text{CONV}} = T_{\text{SMPL}} + T_{\text{SAR}} = 83.33 \text{ ns}_{\text{jmin}} + 416.67 \text{ ns}_{\text{j12bit}} = 500.0 \text{ ns (for } F_{\text{ADC\_CLK}} = 30 \text{ MHz)} \]

Figure 237. Analog to digital conversion time

Timing diagram for ADC conversion showing ADC state, Analog channel, Internal S/H, ADSTART, EOSMP, EOC, and ADC_DR signals over time. The diagram illustrates the sequence of events: RDY state, Sampling Ch(N) with t_SMP, Converting Ch(N) with t_SAR, and Sampling Ch(N+1). Signal levels for ADSTART, EOSMP, EOC, and ADC_DR are shown relative to these phases.

The diagram shows the timing of an ADC conversion across several signals:

Indicative timings \( t_{\text{SMP}}^{(1)} \) and \( t_{\text{SAR}}^{(2)} \) are shown for the sampling and conversion phases respectively.

Timing diagram for ADC conversion showing ADC state, Analog channel, Internal S/H, ADSTART, EOSMP, EOC, and ADC_DR signals over time. The diagram illustrates the sequence of events: RDY state, Sampling Ch(N) with t_SMP, Converting Ch(N) with t_SAR, and Sampling Ch(N+1). Signal levels for ADSTART, EOSMP, EOC, and ADC_DR are shown relative to these phases.

1. \( T_{\text{SMP}} \) depends on SMP[2:0].

2. \( T_{\text{SAR}} \) depends on RES[2:0].

29.4.17 Stopping an ongoing conversion (ADSTP, JADSTP)

The software can decide to stop regular conversions ongoing by setting ADSTP = 1 and injected conversions ongoing by setting JADSTP = 1.

Stopping conversions resets the ongoing ADC operation. Then the ADC can be reconfigured (ex: changing the channel selection or the trigger) ready for a new operation.

Note that it is possible to stop injected conversions while regular conversions are still operating and vice-versa. This allows, for instance, re-configuration of the injected conversion sequence and triggers while regular conversions are still operating (and vice-versa).

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

When the JADSTP bit is set by software, any ongoing injected conversion is aborted with partial result discarded (ADC_JDRy register is not updated with the current conversion). The scan sequence is also aborted and reset (meaning that relaunching the ADC would restart a new sequence).

Once this procedure is complete, bits ADSTP/ADSTART (in case of regular conversion), or JADSTP/JADSTART (in case of injected conversion) are cleared by hardware and the software must poll ADSTART (or JADSTART) until the bit is reset before assuming the ADC is completely stopped.

Note: In auto-injection mode (JAUTO = 1), setting ADSTP bit aborts both regular and injected conversions (JADSTP must not be used).

Figure 238. Stopping ongoing regular conversions

Timing diagram for Figure 238 showing the sequence of events to stop ongoing regular conversions. It includes signals for ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(N), C, RDY), JADSTART, ADSTART, ADSTP, and ADC_DR. The diagram shows that setting ADSTP while regular conversions are ongoing stops them, and the data register is updated with the last converted value.

The diagram illustrates the timing for stopping ongoing regular conversions. The ADC state starts in RDY, then a trigger initiates a conversion sequence: Sample Ch(N-1) → Convert Ch(N-1) → RDY. Another trigger initiates a second sequence: Sample Ch(N) → C → RDY. The ADSTART signal is set by software and cleared by hardware when the first conversion starts. The JADSTART signal is not used. The ADSTP signal is set by software after the second conversion starts and is cleared by hardware when the second conversion completes. The ADC_DR register contains Data N-2 during the first conversion and Data N-1 during the second conversion. A note indicates that software is not allowed to configure regular conversions selection and triggers.

Timing diagram for Figure 238 showing the sequence of events to stop ongoing regular conversions. It includes signals for ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(N), C, RDY), JADSTART, ADSTART, ADSTP, and ADC_DR. The diagram shows that setting ADSTP while regular conversions are ongoing stops them, and the data register is updated with the last converted value.

Figure 239. Stopping ongoing regular and injected conversions

Timing diagram for Figure 239 showing the sequence of events to stop ongoing regular and injected conversions. It includes signals for ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(M), C, RDY, Sample, RDY), JADSTART, JADSTP, ADC_JDR, ADSTART, ADSTP, and ADC_DR. The diagram shows that setting JADSTP stops injected conversions, and setting ADSTP stops regular conversions. The data registers are updated with the last converted values.

The diagram illustrates the timing for stopping ongoing regular and injected conversions. The ADC state starts in RDY. A regular trigger initiates a conversion: Sample Ch(N-1) → Convert Ch(N-1) → RDY. An injected trigger initiates an injected conversion: Sample Ch(M) → C → RDY. The JADSTART signal is set by software and cleared by hardware when the injected conversion starts. The JADSTP signal is set by software after the injected conversion starts and is cleared by hardware when the injected conversion completes. The ADC_JDR register contains DATA M-1 during the injected conversion. The ADSTART signal is set by software and cleared by hardware when the regular conversion starts. The ADSTP signal is set by software after the regular conversion starts and is cleared by hardware when the regular conversion completes. The ADC_DR register contains DATA N-2 during the regular conversion and DATA N-1 during the injected conversion. Notes indicate that software is not allowed to configure injected conversions selection and triggers, and software is not allowed to configure regular conversions selection and triggers.

Timing diagram for Figure 239 showing the sequence of events to stop ongoing regular and injected conversions. It includes signals for ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(M), C, RDY, Sample, RDY), JADSTART, JADSTP, ADC_JDR, ADSTART, ADSTP, and ADC_DR. The diagram shows that setting JADSTP stops injected conversions, and setting ADSTP stops regular conversions. The data registers are updated with the last converted values.

29.4.18 Conversion on external trigger and trigger polarity (EXTSEL, EXTEN, JEXTSEL, JEXTEN)

A conversion or a sequence of conversions can be triggered either by software or by an external event (such as timer capture, input pins). If the EXTEN[1:0] control bits (for a regular conversion) or JEXTEN[1:0] bits (for an injected conversion) are different from 0b00, then external events are able to trigger a conversion with the selected polarity.

When the Injected Queue is enabled (bit JQDIS = 0), injected software triggers are not possible.

The regular trigger selection is effective once software has set bit ADSTART = 1 and the injected trigger selection is effective once software has set bit JADSTART = 1.

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

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

Table 243. Configuring the trigger polarity for regular external triggers

EXTEN[1:0]Source
00Hardware Trigger detection disabled, software trigger detection enabled
01Hardware Trigger with detection on the rising edge
10Hardware Trigger with detection on the falling edge
11Hardware Trigger with detection on both the rising and falling edges

Note: The polarity of the regular trigger cannot be changed on-the-fly.

Table 244. Configuring the trigger polarity for injected external triggers

JEXTEN[1:0]Source
00
  • – If JQDIS = 1 (Queue disabled): Hardware trigger detection disabled, software trigger detection enabled
  • – If JQDIS = 0 (Queue enabled), Hardware and software trigger detection disabled
01Hardware Trigger with detection on the rising edge
10Hardware Trigger with detection on the falling edge
11Hardware Trigger with detection on both the rising and falling edges

Note: The polarity of the injected trigger can be anticipated and changed on-the-fly when the queue is enabled (JQDIS = 0). Refer to Section 29.4.21: Queue of context for injected conversions .

The EXTSEL and JEXTSEL control bits select which out of 32 possible events can trigger conversion for the regular and injected groups.

A regular group conversion can be interrupted by an injected trigger.

Note: The regular trigger selection cannot be changed on-the-fly. The injected trigger selection can be anticipated and changed on-the-fly. Refer to Section 29.4.21: Queue of context for injected conversions on page 1127 .

Figure 240. Trigger selection

Figure 240. Trigger selection diagram showing the internal connections of the ADC MASTER. On the left, there are two groups of external triggers. The first group, labeled 'EXTI mapped at product level', includes adc_ext_trg0, adc_ext_trg1, a dashed line, and adc_ext_trg31. These are connected to a multiplexer labeled 'EXTSEL[4:0]'. The second group, labeled 'JEXTI mapped at product level', includes adc_jext_trg0, adc_jext_trg1, a dashed line, and adc_jext_trg31. These are connected to another multiplexer labeled 'JEXTSEL[4:0]'. Both multiplexers have outputs connected to the 'ADC MASTER' block. The diagram is labeled MSv62474V2 in the bottom right corner.
Figure 240. Trigger selection diagram showing the internal connections of the ADC MASTER. On the left, there are two groups of external triggers. The first group, labeled 'EXTI mapped at product level', includes adc_ext_trg0, adc_ext_trg1, a dashed line, and adc_ext_trg31. These are connected to a multiplexer labeled 'EXTSEL[4:0]'. The second group, labeled 'JEXTI mapped at product level', includes adc_jext_trg0, adc_jext_trg1, a dashed line, and adc_jext_trg31. These are connected to another multiplexer labeled 'JEXTSEL[4:0]'. Both multiplexers have outputs connected to the 'ADC MASTER' block. The diagram is labeled MSv62474V2 in the bottom right corner.

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

29.4.19 Injected channel management

Triggered injection mode

To use triggered injection, the JAUTO bit in the ADC_CFGR register must be cleared.

  1. 1. Start the conversion of a group of regular channels either by an external trigger or by setting the ADSTART bit in the ADC_CR register.
  2. 2. If an external injected trigger occurs, or if the JADSTART bit in the ADC_CR register is set during the conversion of a regular group of channels, the current conversion is reset and the injected channel sequence switches are launched (all the injected channels are converted once).
  3. 3. Then, the regular conversion of the regular group of channels is resumed from the last interrupted regular conversion.
  4. 4. If a regular event occurs during an injected conversion, the injected conversion is not interrupted but the regular sequence is executed at the end of the injected sequence. Figure 241 shows the corresponding timing diagram.

Note: When using triggered injection, one must ensure that the interval between trigger events is longer than the injection sequence. For instance, if the sequence length is 30 ADC clock cycles (that is two conversions with a sampling time of 2.5 clock periods), the minimum interval between triggers must be 31 ADC clock cycles.

Auto-injection mode

If the JAUTO bit in the ADC_CFGR register is set, then the channels in the injected group are automatically converted after the regular group of channels. This can be used to convert a sequence of up to 20 conversions programmed in the ADC_SQRy and ADC_JSQR registers.

In this mode, the ADSTART bit in the ADC_CR register must be set to start regular conversions, followed by injected conversions (JADSTART must be kept cleared). Setting the ADSTP bit aborts both regular and injected conversions (JADSTP bit must not be used).

In this mode, external trigger on injected channels must be disabled.

If the CONT bit is also set in addition to the JAUTO bit, regular channels followed by injected channels are continuously converted.

Note: It is not possible to use both the auto-injected and Discontinuous modes simultaneously.

When the DMA is used for exporting regular sequencer's data in JAUTO mode, it is necessary to program it in circular mode (CIRC bit set in DMA_CCRx register). If the CIRC bit is reset (Single-shot mode), the JAUTO sequence is stopped upon DMA Transfer Complete event.

Figure 241. Injected conversion latency

Timing diagram showing injected conversion latency. The diagram plots four signals over time: adc_ker_ck (a periodic clock signal), Injection event (a pulse), Reset ADC (a pulse), and SOC (Start of Conversion). The SOC signal is shown as a series of pulses. The maximum latency (max. latency (1)) is indicated by a double-headed arrow between the rising edge of the Injection event and the rising edge of the SOC signal. The diagram is labeled MSV43771V1 in the bottom right corner.
Timing diagram showing injected conversion latency. The diagram plots four signals over time: adc_ker_ck (a periodic clock signal), Injection event (a pulse), Reset ADC (a pulse), and SOC (Start of Conversion). The SOC signal is shown as a series of pulses. The maximum latency (max. latency (1)) is indicated by a double-headed arrow between the rising edge of the Injection event and the rising edge of the SOC signal. The diagram is labeled MSV43771V1 in the bottom right corner.

1. The maximum latency value can be found in the electrical characteristics of the device datasheet.

29.4.20 Discontinuous mode (DISCEN, DISCNUM, JDISCEN)

Regular group mode

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

It is used to convert a short sequence (subgroup) of n conversions ( \( n \leq 8 \) ) that is part of the sequence of conversions selected in the ADC_SQRy registers. The value of n is specified by writing to the DISCNUM[2:0] bits in the ADC_CFGR register.

When an external trigger occurs, it starts the next n conversions selected in the ADC_SQRy registers until all the conversions in the sequence are done. The total sequence length is defined by the L[3:0] bits in the ADC_SQR1 register.

Example:

Note: The channel numbers referred to in the above example might not be available on all microcontrollers.

When a regular group is converted in Discontinuous mode, no rollover occurs (the last subgroup of the sequence can have less than n conversions).

When all subgroups are converted, the next trigger starts the conversion of the first subgroup. In the example above, the 4th trigger reconverts the channels 1, 2 and 3 in the 1st subgroup.

It is not possible to have both Discontinuous mode and Continuous mode enabled. In this case (if DISCEN = 1, CONT = 1), the ADC behaves as if Continuous mode was disabled.

Injected group mode

This mode is enabled by setting the JDISCEN bit in the ADC_CFGR register. It converts the sequence selected in the ADC_JSQR register, channel by channel, after an external injected trigger event. This is equivalent to Discontinuous mode for regular channels where 'n' is fixed to 1.

When an external trigger occurs, it starts the next channel conversions selected in the ADC_JSQR registers until all the conversions in the sequence are done. The total sequence length is defined by the JL[1:0] bits in the ADC_JSQR register.

Example:

Note: The channel numbers referred to in the above example might not be available on all microcontrollers.

When all injected channels have been converted, the next trigger starts the conversion of the first injected channel. In the example above, the 4th trigger reconverts the 1st injected channel 1.

It is not possible to use both auto-injected mode and Discontinuous mode simultaneously: the bits DISCEN and JDISCEN must be kept cleared by software when JAUTO is set.

29.4.21 Queue of context for injected conversions

A queue of context is implemented to anticipate up to 2 contexts for the next injected sequence of conversions. JQDIS bit of ADC_CFGR register must be reset to enable this feature. Only hardware-triggered conversions are possible when the context queue is enabled.

This context consists of:

All the parameters of the context are defined into a single register ADC_JSQR and this register implements a queue of 2 buffers, allowing the bufferization of up to 2 sets of parameters:

Note: When configured in Discontinuous mode (bit JDISCEN = 1), only the last trigger of the injected sequence changes the context and consumes the Queue. The 1 st trigger only

consumes the queue but others are still valid triggers as shown by the Discontinuous mode example below (length = 3 for both contexts):

Behavior when changing the trigger or sequence context

Figure 242 and Figure 243 show the behavior of the context Queue when changing the sequence or the triggers.

Figure 242. Example of JSQR queue of context (sequence change)

Timing diagram for Figure 242 showing JSQR queue and ADC state changes when sequences are updated.

This timing diagram illustrates the behavior of the JSQR queue and ADC state when sequences are updated. The diagram shows five horizontal signal lines: 'Write JSQR', 'JSQR queue', 'Trigger 1', 'ADC J context (returned by reading JQSR)', and 'ADC state'.
1. Write JSQR: Shows pulses for P1, P2, and P3. P1 and P2 are written in quick succession, then P3 is written much later.
2. JSQR queue: Starts as EMPTY. Becomes P1 after the P1 write, then P1,P2 after the P2 write. It transitions to P2 once P1 starts processing. After the P3 write, it becomes P2,P3, then P3 once P2 finishes.
3. Trigger 1: A hardware trigger signal. The first pulse triggers the P1 sequence. The second pulse triggers the P2 sequence. The third pulse triggers the P3 sequence.
4. ADC J context: Initially EMPTY. It shows P1 during the first conversion sequence, P2 during the second, and P3 during the third.
5. ADC state: Initially RDY. Upon the first trigger, it performs Conversion1, Conversion2, and Conversion3 (for P1), then returns to RDY. Upon the second trigger, it performs Conversion1 (for P2) and returns to RDY. Upon the third trigger, it performs Conversion1 (for P3) and returns to RDY.

Timing diagram for Figure 242 showing JSQR queue and ADC state changes when sequences are updated.
  1. 1. Parameters:
    P1: sequence of 3 conversions, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 4 conversions, hardware trigger 1

Figure 243. Example of JSQR queue of context (trigger change)

Timing diagram for Figure 243 showing JSQR queue and ADC state changes when triggers are updated.

This timing diagram illustrates the behavior of the JSQR queue and ADC state when triggers are updated. It shows six horizontal signal lines: 'Write JSQR', 'JSQR queue', 'Trigger 1', 'Trigger 2', 'ADC J context (returned by reading JQSR)', and 'ADC state'.
1. Write JSQR: Shows pulses for P1, P2, and P3. P1 and P2 are written first, then P3 is written later.
2. JSQR queue: Starts as EMPTY. Becomes P1, then P1,P2. Transitions to P2 after P1 finishes. Becomes P2,P3 after P3 write, then P3 after P2 finishes.
3. Trigger 1: Triggers the P1 sequence. A second pulse occurs while P1 is converting and is labeled 'Ignored'. A third pulse triggers the P2 sequence.
4. Trigger 2: A pulse occurs during the P1 sequence and is labeled 'Ignored'. A later pulse triggers the P3 sequence.
5. ADC J context: Initially EMPTY. Shows P1 during the first sequence, P2 during the second, and P3 during the third.
6. ADC state: Initially RDY. Triggers lead to Conversion1 and Conversion2 for P1, Conversion1 for P2, and Conversion1 for P3, each followed by a return to RDY.

Timing diagram for Figure 243 showing JSQR queue and ADC state changes when triggers are updated.
  1. 1. Parameters:
    P1: sequence of 2 conversions, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 2
    P3: sequence of 4 conversions, hardware trigger 1

Queue of context: Behavior when a queue overflow occurs

The Figure 244 and Figure 245 show the behavior of the context Queue if an overflow occurs before or during a conversion.

Figure 244. Example of JSQR queue of context with overflow before conversion

Timing diagram for Figure 244 showing JSQR queue behavior with overflow before conversion. The diagram illustrates the state of the JSQR queue, JQOVF flag, and ADC state over time. When P3 is written, the queue overflows and is ignored. The JQOVF flag is set and cleared by software. The ADC state shows Conversion1 and Conversion2 occurring while the queue contains P1 and P2.

The diagram shows the following signals and states over time:

MS30538V2

Timing diagram for Figure 244 showing JSQR queue behavior with overflow before conversion. The diagram illustrates the state of the JSQR queue, JQOVF flag, and ADC state over time. When P3 is written, the queue overflows and is ignored. The JQOVF flag is set and cleared by software. The ADC state shows Conversion1 and Conversion2 occurring while the queue contains P1 and P2.
  1. Parameters:
    P1: sequence of 2 conversions, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 2
    P3: sequence of 3 conversions, hardware trigger 1
    P4: sequence of 4 conversions, hardware trigger 1

Figure 245. Example of JSQR queue of context with overflow during conversion

Timing diagram for Figure 245 showing JSQR queue behavior with overflow during conversion. The diagram illustrates the state of the JSQR queue, JQOVF flag, and ADC state over time. When P3 is written while Conversion2 is ongoing, the queue overflows and is ignored. The JQOVF flag is set and cleared by software. The ADC state shows Conversion1 and Conversion2 occurring while the queue contains P1 and P2.

The diagram shows the following signals and states over time:

MS30539V2

Timing diagram for Figure 245 showing JSQR queue behavior with overflow during conversion. The diagram illustrates the state of the JSQR queue, JQOVF flag, and ADC state over time. When P3 is written while Conversion2 is ongoing, the queue overflows and is ignored. The JQOVF flag is set and cleared by software. The ADC state shows Conversion1 and Conversion2 occurring while the queue contains P1 and P2.
  1. Parameters:
    P1: sequence of 2 conversions, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 2
    P3: sequence of 3 conversions, hardware trigger 1
    P4: sequence of 4 conversions, hardware trigger 1

It is recommended to manage the queue overflows as described below:

Queue of context: Behavior when the queue becomes empty

Figure 246 and Figure 247 show the behavior of the context Queue when the Queue becomes empty in both cases JQM = 0 or 1.

Figure 246. Example of JSQR queue of context with empty queue (case JQM = 0)

Timing diagram showing the behavior of the JSQR queue when it becomes empty (case JQM = 0). The diagram tracks four signals over time: 'Write JSQR', 'JSQR queue', 'Trigger 1', and 'ADC J context (returned by reading JQSR)'. 
- 'Write JSQR': Shows pulses for contexts P1, P2, and P3.
- 'JSQR queue': Starts as 'EMPTY'. After P1 is written, it contains 'P1'. After P2 is written, it contains 'P1, P2'. When P1 is consumed, it contains 'P2'. When P2 is consumed, it becomes 'EMPTY' again. When P3 is written, it contains 'P3'.
- 'Trigger 1': A periodic hardware trigger signal.
- 'ADC J context': Starts as 'EMPTY'. It follows the queue contents: 'P1', then 'P2', then 'P3'.
- 'ADC state': Shows states 'RDY' and 'Conversion1'. Conversions are launched when the queue is not empty and a trigger occurs.
Annotations: 
- 'The queue is not empty and maintains P2 because JQM=0' points to the queue containing P2.
- 'Queue not empty (P3 maintained)' points to the queue containing P3.
Timing diagram showing the behavior of the JSQR queue when it becomes empty (case JQM = 0). The diagram tracks four signals over time: 'Write JSQR', 'JSQR queue', 'Trigger 1', and 'ADC J context (returned by reading JQSR)'. - 'Write JSQR': Shows pulses for contexts P1, P2, and P3. - 'JSQR queue': Starts as 'EMPTY'. After P1 is written, it contains 'P1'. After P2 is written, it contains 'P1, P2'. When P1 is consumed, it contains 'P2'. When P2 is consumed, it becomes 'EMPTY' again. When P3 is written, it contains 'P3'. - 'Trigger 1': A periodic hardware trigger signal. - 'ADC J context': Starts as 'EMPTY'. It follows the queue contents: 'P1', then 'P2', then 'P3'. - 'ADC state': Shows states 'RDY' and 'Conversion1'. Conversions are launched when the queue is not empty and a trigger occurs. Annotations: - 'The queue is not empty and maintains P2 because JQM=0' points to the queue containing P2. - 'Queue not empty (P3 maintained)' points to the queue containing P3.
  1. 1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Note: When writing P3, the context changes immediately. However, because of internal resynchronization, there is a latency and if a trigger occurs just after or before writing P3, it can happen that the conversion is launched considering the context P2. To avoid this situation, the user must ensure that there is no ADC trigger happening when writing a new context that applies immediately.

Figure 247. Example of JSQR queue of context with empty queue (JQM = 1)

Timing diagram for Figure 247 showing the JSQR queue behavior when JQM=1. The diagram includes signals for Write JSQR, JSQR queue, Trigger 1, ADC J context, and ADC state. It shows sequences P1, P2, and P3 being added to the queue, and how the queue becomes empty after reading the context when JQM=1.

The diagram illustrates the following sequence of events:

MS30541V1

Timing diagram for Figure 247 showing the JSQR queue behavior when JQM=1. The diagram includes signals for Write JSQR, JSQR queue, Trigger 1, ADC J context, and ADC state. It shows sequences P1, P2, and P3 being added to the queue, and how the queue becomes empty after reading the context when JQM=1.
  1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Flushing the queue of context

The figures below show the behavior of the context Queue in various situations when the queue is flushed.

Figure 248. Flushing JSQR queue of context by setting JADSTP = 1 (JQM = 0) - JADSTP occurs during an ongoing conversion.

Timing diagram for Figure 248 showing the JSQR queue behavior when JADSTP=1 and JQM=0. It shows how setting JADSTP=1 while a conversion is ongoing flushes the queue, losing the current context (P2) and maintaining the last active context (P1).

The diagram illustrates the following sequence of events:

MS30544V2

Timing diagram for Figure 248 showing the JSQR queue behavior when JADSTP=1 and JQM=0. It shows how setting JADSTP=1 while a conversion is ongoing flushes the queue, losing the current context (P2) and maintaining the last active context (P1).
  1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Figure 249. Flushing JSQR queue of context by setting JADSTP = 1 (JQM = 0) - JADSTP occurs during an ongoing conversion and a new trigger occurs

Timing diagram for Figure 249 showing the effect of setting JADSTP=1 during an ongoing conversion. The diagram tracks Write JSQR, JSQR queue, JADSTP, JADSTART, Trigger 1, ADC J context, and ADC state over time. It shows that when JADSTP is set while a conversion is active, the queue is flushed and the last active context (P2) is lost.

The diagram illustrates the following sequence of events:

Text annotation: "Queue is flushed and maintains the last active context (P2 is lost)".
Reference: MS30543V1

Timing diagram for Figure 249 showing the effect of setting JADSTP=1 during an ongoing conversion. The diagram tracks Write JSQR, JSQR queue, JADSTP, JADSTART, Trigger 1, ADC J context, and ADC state over time. It shows that when JADSTP is set while a conversion is active, the queue is flushed and the last active context (P2) is lost.
  1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Figure 250. Flushing JSQR queue of context by setting JADSTP = 1 (JQM = 0) - JADSTP occurs outside an ongoing conversion

Timing diagram for Figure 250 showing the effect of setting JADSTP=1 outside an ongoing conversion. The diagram tracks Write JSQR, JSQR queue, JADSTP, JADSTART, Trigger 1, ADC J context, and ADC state over time. It shows that when JADSTP is set while the ADC is in the STOP state, the queue is flushed and the last active context (P2) is lost.

The diagram illustrates the following sequence of events:

Text annotation: "the last active context (P2 is lost)".
Reference: MS30544V1

Timing diagram for Figure 250 showing the effect of setting JADSTP=1 outside an ongoing conversion. The diagram tracks Write JSQR, JSQR queue, JADSTP, JADSTART, Trigger 1, ADC J context, and ADC state over time. It shows that when JADSTP is set while the ADC is in the STOP state, the queue is flushed and the last active context (P2) is lost.
  1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Figure 251. Flushing JSQR queue of context by setting JADSTP = 1 (JQM = 1)

Timing diagram for Figure 251 showing the effect of setting JADSTP = 1. It illustrates the JSQR queue, JADSTP/JADSTART signals, Trigger 1, ADC J context, and ADC state over time. When JADSTP is set to 1, the queue is flushed and becomes empty, losing context P2.

The diagram shows the following signal transitions and states:

MS30545V1

Timing diagram for Figure 251 showing the effect of setting JADSTP = 1. It illustrates the JSQR queue, JADSTP/JADSTART signals, Trigger 1, ADC J context, and ADC state over time. When JADSTP is set to 1, the queue is flushed and becomes empty, losing context P2.
  1. 1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Figure 252. Flushing JSQR queue of context by setting ADDIS = 1 (JQM = 0)

Timing diagram for Figure 252 showing the effect of setting ADDIS = 1. It illustrates the JSQR queue, ADDIS signal, ADC J context, and ADC state over time. When ADDIS is set to 1, the queue is flushed but maintains the last active context (P1), losing context P2.

The diagram shows the following signal transitions and states:

MS30546V1

Timing diagram for Figure 252 showing the effect of setting ADDIS = 1. It illustrates the JSQR queue, ADDIS signal, ADC J context, and ADC state over time. When ADDIS is set to 1, the queue is flushed but maintains the last active context (P1), losing context P2.
  1. 1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Figure 253. Flushing JSQR queue of context by setting ADDIS = 1 (JQM = 1)

Timing diagram showing the effect of setting ADDIS = 1 on the JSQR queue and ADC state. The diagram illustrates the transition from a queue containing parameters P1 and P2 to an empty state, and the corresponding change in ADC state from READY to OFF.

The diagram illustrates the timing of flushing the JSQR queue. It shows four horizontal timelines:

A note above the diagram states: "Queue is flushed and becomes empty (JSQR is read as 0x0000)". The diagram is labeled with MS30547V1.

Timing diagram showing the effect of setting ADDIS = 1 on the JSQR queue and ADC state. The diagram illustrates the transition from a queue containing parameters P1 and P2 to an empty state, and the corresponding change in ADC state from READY to OFF.
  1. 1. Parameters:
    P1: sequence of 1 conversion, hardware trigger 1
    P2: sequence of 1 conversion, hardware trigger 1
    P3: sequence of 1 conversion, hardware trigger 1

Queue of context: Starting the ADC with an empty queue

The following procedure must be followed to start ADC operation with an empty queue, in case the first context is not known at the time the ADC is initialized. This procedure is only applicable when JQM bit is reset:

  1. 5. Write a dummy JSQR with JEXTEN not equal to 0 (otherwise triggering a software conversion)
  2. 6. Set JADSTART
  3. 7. Set JADSTP
  4. 8. Wait until JADSTART is reset
  5. 9. Set JADSTART.

Disabling the queue

It is possible to disable the queue by setting bit JQDIS = 1 into the ADC_CFGR register.

29.4.22 Programmable resolution (RES) - fast conversion mode

It is possible to perform faster conversion by reducing the ADC resolution.

The resolution can be configured to be either 12, 10, 8, or 6 bits by programming the control bits RES[1:0]. Figure 258 , Figure 259 , Figure 260 and Figure 261 show the conversion result format with respect to the resolution as well as to the data alignment.

Lower resolution allows faster conversion time for applications where high-data precision is not required. It reduces the conversion time spent by the successive approximation steps according to Table 245 .

Table 245. \( T_{SAR} \) timings depending on resolution
RES (bits)\( T_{SAR} \) (ADC clock cycles)\( T_{SAR} \) (ns) at \( F_{ADC} = 30 \) MHz\( T_{CONV} \) (ADC clock cycles) (with Sampling Time = 2.5 ADC clock cycles)\( T_{CONV} \) (ns) at \( F_{ADC} = 30 \) MHz
1212.5 ADC clock cycles416.67 ns15 ADC clock cycles500.0 ns
1010.5 ADC clock cycles350.0 ns13 ADC clock cycles433.33 ns
88.5 ADC clock cycles283.33 ns11 ADC clock cycles366.67 ns
66.5 ADC clock cycles216.67 ns9 ADC clock cycles300.0 ns

29.4.23 End of conversion, end of sampling phase (EOC, JEOC, EOSMP)

The ADC notifies the application for each end of regular conversion (EOC) event and each injected conversion (JEOC) event.

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

The ADC sets the JEOC flag as soon as a new injected conversion data is available in one of the ADC_JDRy register. An interrupt can be generated if bit JEOCIE is set. JEOC flag is cleared by the software either by writing 1 to it or by reading the corresponding ADC_JDRy register.

The ADC also notifies the end of Sampling phase by setting the status bit EOSMP (for regular conversions only). EOSMP flag is cleared by software by writing 1 to it. An interrupt can be generated if bit EOSMPIE is set.

29.4.24 End of conversion sequence (EOS, JEOS)

The ADC notifies the application for each end of regular sequence (EOS) and for each end of injected sequence (JEOS) event.

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

The ADC sets the JEOS flag as soon as the last data of the injected conversion sequence is complete. An interrupt can be generated if bit JEOSIE is set. JEOS flag is cleared by the software either by writing 1 to it.

29.4.25 Timing diagrams example (Single/Continuous modes, hardware/software triggers)

Figure 254. Single conversions of a sequence, software trigger

Timing diagram for single conversions of a sequence with software trigger. It shows four waveforms: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), and ADC state. The sequence consists of channels CH1, CH9, CH10, and CH17. Data values D1, D9, D10, and D17 are shown. The diagram indicates two sequences initiated by software (SW) and hardware (HW) triggers. The first sequence starts with a rising edge on ADSTART, followed by conversions of CH1, CH9, CH10, and CH17, with EOC pulses after each conversion and EOS after the last one. The ADC state transitions from RDY to CH1, CH9, CH10, CH17, and back to RDY. The second sequence follows a similar pattern. A legend indicates 'by SW' with a rising edge symbol and 'by HW' with a falling edge symbol. A box labeled 'Indicative timings' is present. The identifier MS30549V1 is in the bottom right corner.
Timing diagram for single conversions of a sequence with software trigger. It shows four waveforms: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), and ADC state. The sequence consists of channels CH1, CH9, CH10, and CH17. Data values D1, D9, D10, and D17 are shown. The diagram indicates two sequences initiated by software (SW) and hardware (HW) triggers. The first sequence starts with a rising edge on ADSTART, followed by conversions of CH1, CH9, CH10, and CH17, with EOC pulses after each conversion and EOS after the last one. The ADC state transitions from RDY to CH1, CH9, CH10, CH17, and back to RDY. The second sequence follows a similar pattern. A legend indicates 'by SW' with a rising edge symbol and 'by HW' with a falling edge symbol. A box labeled 'Indicative timings' is present. The identifier MS30549V1 is in the bottom right corner.

Figure 255. Continuous conversion of a sequence, software trigger

Timing diagram for continuous conversion of a sequence with software trigger. It shows five waveforms: ADCSTART (software trigger), EOC (end of conversion), EOS (end of sequence), ADSTP (stop), and ADC state. The sequence consists of channels CH1, CH9, CH10, and CH17. Data values D1, D9, D10, and D17 are shown. The diagram shows a continuous sequence initiated by a software (SW) trigger. The ADC state transitions from READY to CH1, CH9, CH10, CH17, CH1, CH9, CH10, STP, READY, CH1, CH9, and then back to READY. EOC pulses occur after each conversion. The ADSTP signal is shown going high after the second sequence of four conversions. A legend indicates 'by SW' with a rising edge symbol and 'by HW' with a falling edge symbol. A box labeled 'Indicative timings' is present. The identifier MS30550V1 is in the bottom right corner.
Timing diagram for continuous conversion of a sequence with software trigger. It shows five waveforms: ADCSTART (software trigger), EOC (end of conversion), EOS (end of sequence), ADSTP (stop), and ADC state. The sequence consists of channels CH1, CH9, CH10, and CH17. Data values D1, D9, D10, and D17 are shown. The diagram shows a continuous sequence initiated by a software (SW) trigger. The ADC state transitions from READY to CH1, CH9, CH10, CH17, CH1, CH9, CH10, STP, READY, CH1, CH9, and then back to READY. EOC pulses occur after each conversion. The ADSTP signal is shown going high after the second sequence of four conversions. A legend indicates 'by SW' with a rising edge symbol and 'by HW' with a falling edge symbol. A box labeled 'Indicative timings' is present. The identifier MS30550V1 is in the bottom right corner.

Figure 256. Single conversions of a sequence, hardware trigger

Timing diagram for single conversions of a sequence with hardware trigger. It shows the relationship between ADSTART, EOC, EOS, TRGX, ADC state, and ADC_DR signals over time. The diagram illustrates the flow from a hardware trigger to the conversion of four channels (CH1, CH2, CH3, CH4) and the resulting data (D1, D2, D3, D4).

The diagram shows the following signal transitions and states:

Legend:

MS31013V2

Timing diagram for single conversions of a sequence with hardware trigger. It shows the relationship between ADSTART, EOC, EOS, TRGX, ADC state, and ADC_DR signals over time. The diagram illustrates the flow from a hardware trigger to the conversion of four channels (CH1, CH2, CH3, CH4) and the resulting data (D1, D2, D3, D4).
  1. 1. TRGX (over-frequency) is selected as trigger source, EXTEN = 01, CONT = 0
  2. 2. Channels selected = 1, 2, 3, 4; AUTDLY = 0.

Figure 257. Continuous conversions of a sequence, hardware trigger

Timing diagram for continuous conversions of a sequence with hardware trigger. It shows the relationship between ADSTART, EOC, EOS, ADSTP, TRGX, ADC, and ADC_DR signals. The diagram illustrates continuous conversion of four channels (CH1, CH2, CH3, CH4) until a stop condition is met.

The diagram shows the following signal transitions and states:

Legend:

MS31014V2

Timing diagram for continuous conversions of a sequence with hardware trigger. It shows the relationship between ADSTART, EOC, EOS, ADSTP, TRGX, ADC, and ADC_DR signals. The diagram illustrates continuous conversion of four channels (CH1, CH2, CH3, CH4) until a stop condition is met.
  1. 1. TRGX is selected as trigger source, EXTEN = 10, CONT = 1
  2. 2. Channels selected = 1, 2, 3, 4; AUTDLY = 0.

29.4.26 Data management

Data register, data alignment and offset (ADC_DR, OFFSET, OFFSET_CH, ALIGN)

Data and alignment

At the end of each regular conversion channel (when EOC event occurs), the result of the converted data is stored into the ADC_DR data register which is 16 bits wide.

At the end of each injected conversion channel (when JEOC event occurs), the result of the converted data is stored into the corresponding ADC_JDRy data register which is 16 bits wide.

The ALIGN bit in the ADC_CFGR register selects the alignment of the data stored after conversion. Data can be right- or left-aligned as shown in Figure 258 , Figure 259 , Figure 260 and Figure 261 .

Special case: when left-aligned, the data are aligned on a half-word basis except when the resolution is set to 6-bit. In that case, the data are aligned on a byte basis as shown in Figure 260 and Figure 261 .

Note: Left-alignment is not supported in oversampling mode. When ROVSE and/or JOVSE bit is set, the ALIGN bit value is ignored and the ADC only provides right-aligned data.

Offset

An offset y (y = 1,2,3,4) can be applied to a channel by setting the bit OFFSET_EN = 1 into ADC_OFRy register. The channel to which the offset will be applied is programmed into the bits OFFSET_CH[4:0] of ADC_OFRy register. In this case, the converted value is decreased by the user-defined offset written in the bits OFFSET[11:0]. The result may be a negative value so the read data is signed and the SEXT bit represents the extended sign value.

Note: Offset correction is not supported in oversampling mode. When ROVSE and/or JOVSE bit is set, the value of the OFFSET_EN bit in ADC_OFRy register is ignored (considered as reset).

Table 248 describes how the comparison is performed for all the possible resolutions for analog watchdog 1.

Table 246. Offset computation versus data resolution

Resolution
(bits
RES[1:0])
Subtraction between raw
converted data and offset
ResultComments
Raw
converted
Data, left
aligned
Offset
00: 12-bitDATA[11:0]OFFSET[11:0]Signed
12-bit data
-
01: 10-bitDATA[11:2],00OFFSET[11:0]Signed
10-bit data
The user must configure OFFSET[1:0] to “00”

Table 246. Offset computation versus data resolution (continued)

Resolution
(bits
RES[1:0])
Subtraction between raw
converted data and offset
ResultComments
Raw
converted
Data, left
aligned
Offset
10: 8-bitDATA[11:4],00
00
OFFSET[11:0]Signed
8-bit data
The user must configure OFFSET[3:0]
to "0000"
11: 6-bitDATA[11:6],00
0000
OFFSET[11:0]Signed
6-bit data
The user must configure OFFSET[5:0]
to "000000"

When reading data from ADC_DR (regular channel) or from ADC_JDRy (injected channel, y = 1,2,3,4) corresponding to the channel "i":

Figure 258, Figure 259, Figure 260 and Figure 261 show alignments for signed and unsigned data.

Figure 258. Right alignment (offset disabled, unsigned value)

12-bit data
bit15bit7bit0
0000D11D10D9D8D7D6D5D4D3D2D1D0
10-bit data
bit15bit7bit0
000000D9D8D7D6D5D4D3D2D1D0
8-bit data
bit15bit7bit0
00000000D7D6D5D4D3D2D1D0
6-bit data
bit15bit7bit0
0000000000D5D4D3D2D1D0

MS31015V1

Figure 259. Right alignment (offset enabled, signed value)

Diagram showing right alignment for 12-bit, 10-bit, 8-bit, and 6-bit data. Each section shows a 16-bit register layout with sign extension (SEXT) and data bits (D11-D0) aligned to the right. Bit 15 is the sign bit, bit 7 is the middle bit, and bit 0 is the least significant bit.

12-bit data

bit15bit7bit0
SEXTSEXTSEXTSEXTD11D10D9D8D7D6D5D4D3D2D1D0

10-bit data

bit15bit7bit0
SEXTSEXTSEXTSEXTSEXTSEXTD9D8D7D6D5D4D3D2D1D0

8-bit data

bit15bit7bit0
SEXTSEXTSEXTSEXTSEXTSEXTSEXTSEXTD7D6D5D4D3D2D1D0

6-bit data

bit15bit7bit0
SEXTSEXTSEXTSEXTSEXTSEXTSEXTSEXTSEXTSEXTD5D4D3D2D1D0

MS31016V1

Diagram showing right alignment for 12-bit, 10-bit, 8-bit, and 6-bit data. Each section shows a 16-bit register layout with sign extension (SEXT) and data bits (D11-D0) aligned to the right. Bit 15 is the sign bit, bit 7 is the middle bit, and bit 0 is the least significant bit.

Figure 260. Left alignment (offset disabled, unsigned value)

Diagram showing left alignment for 12-bit, 10-bit, 8-bit, and 6-bit data. Each section shows a 16-bit register layout with data bits (D11-D0) aligned to the left and the lower bits filled with zeros. Bit 15 is the most significant bit, bit 7 is the middle bit, and bit 0 is the least significant bit.

12-bit data

bit15bit7bit0
D11D10D9D8D7D6D5D4D3D2D1D00000

10-bit data

bit15bit7bit0
D9D8D7D6D5D4D3D2D1D0000000

8-bit data

bit15bit7bit0
D7D6D5D4D3D2D1D000000000

6-bit data

bit15bit7bit0
00000000D5D4D3D2D1D000

MS31017V1

Diagram showing left alignment for 12-bit, 10-bit, 8-bit, and 6-bit data. Each section shows a 16-bit register layout with data bits (D11-D0) aligned to the left and the lower bits filled with zeros. Bit 15 is the most significant bit, bit 7 is the middle bit, and bit 0 is the least significant bit.

Figure 261. Left alignment (offset enabled, signed value)

Figure 261. Left alignment (offset enabled, signed value). The diagram shows four data formats: 12-bit, 10-bit, 8-bit, and 6-bit. Each format is represented by a 16-bit word. The 12-bit format has SEXT, D11-D0, and three zeros. The 10-bit format has SEXT, D9-D0, and five zeros. The 8-bit format has SEXT, D7-D0, and seven zeros. The 6-bit format has eight SEXT bits, D5-D0, and one zero. Bit positions bit15, bit7, and bit0 are indicated above each format.

12-bit data
bit15 bit7 bit0

SEXTD11D10D9D8D7D6D5D4D3D2D1D0000

10-bit data
bit15 bit7 bit0

SEXTD9D8D7D6D5D4D3D2D1D000000

8-bit data
bit15 bit7 bit0

SEXTD7D6D5D4D3D2D1D00000000

6-bit data
bit15 bit7 bit0

SEXTSEXTSEXTSEXTSEXTSEXTSEXTSEXTSEXTD5D4D3D2D1D00

MS31018V1

Figure 261. Left alignment (offset enabled, signed value). The diagram shows four data formats: 12-bit, 10-bit, 8-bit, and 6-bit. Each format is represented by a 16-bit word. The 12-bit format has SEXT, D11-D0, and three zeros. The 10-bit format has SEXT, D9-D0, and five zeros. The 8-bit format has SEXT, D7-D0, and seven zeros. The 6-bit format has eight SEXT bits, D5-D0, and one zero. Bit positions bit15, bit7, and bit0 are indicated above each format.

Offset compensation

When SATEN bit is set in ADC_OFRy register during offset operation, data are unsigned. All the offset data saturate at 0x000 (in 12-bit mode). When OFFSETPOS bit is set, the offset direction is positive and the data saturate at 0xFFF (in 12-bit mode). In 8-bit mode, data saturate at 0x00 and 0xFF, respectively.

The analog watchdog comparison is performed before the offset compensation.

ADC overrun (OVR, OVRMOD)

The overrun flag (OVR) notifies when the regular converted data has not been read (by the CPU or the DMA) before ADC_DR FIFO (three stages) is overflowed.

The OVR flag is set when a new conversion completes while ADC_CR register FIFO was full. An interrupt is generated if OVRIE bit is set to 1.

When an overrun condition occurs, the ADC is still operating and can continue converting unless the software decides to stop and reset the sequence by setting ADSTP to 1. Since ADC_DR FIFO features three stages, up to three data are stored in the FIFO.

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

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

is cleared by reading ADC_DR register. However, the FIFO can still contain previously converted data.

Figure 262. Example of overrun (OVRMOD = 0)

Timing diagram showing an overrun condition in ADC3. It displays signals ADSTART, EOC, OVR, ADSTP, TRGx, ADC state, ADC_DR, and ADC_DR (FIFO_DATA) over time. The diagram shows that when a new conversion starts before the previous one is read, the OVR flag is set and the previous data is lost in the DR register but remains in the FIFO.

The timing diagram illustrates an overrun scenario in the ADC3. The signals shown are:

Legend:

Indicative timings

MSv65305V1

Timing diagram showing an overrun condition in ADC3. It displays signals ADSTART, EOC, OVR, ADSTP, TRGx, ADC state, ADC_DR, and ADC_DR (FIFO_DATA) over time. The diagram shows that when a new conversion starts before the previous one is read, the OVR flag is set and the previous data is lost in the DR register but remains in the FIFO.

Figure 263. Example of overrun (OVRMOD = 1)

Timing diagram for ADC3 overrun example (OVRMOD = 1). The diagram shows the relationship between ADSTART, EOC, EOS, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, and ADC_DR (OVRMOD=1) signals. The ADC state sequence is RDY, CH1, CH2, CH3, CH4, CH5, CH6, CH7, STOP, RDY. The ADC_DR (OVRMOD=1) sequence is D1, D2, D3, D4, D5, D6. An overrun event is indicated at CH5. The legend indicates: by s/w (software trigger), by h/w (hardware trigger), triggered (external trigger), and Indicative timings.

The diagram illustrates the timing of an ADC conversion sequence with an overrun event. The signals shown are:

Legend:

MSV31019V2

Timing diagram for ADC3 overrun example (OVRMOD = 1). The diagram shows the relationship between ADSTART, EOC, EOS, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, and ADC_DR (OVRMOD=1) signals. The ADC state sequence is RDY, CH1, CH2, CH3, CH4, CH5, CH6, CH7, STOP, RDY. The ADC_DR (OVRMOD=1) sequence is D1, D2, D3, D4, D5, D6. An overrun event is indicated at CH5. The legend indicates: by s/w (software trigger), by h/w (hardware trigger), triggered (external trigger), and Indicative timings.

Note: There is no overrun detection on the injected channels since there is a dedicated data register for each of the four injected channels.

Managing a sequence of conversions without using the DMA

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

Managing conversions without using the DMA and without overrun

It may be useful to let the ADC convert one or more channels without reading the data each time (if there is an analog watchdog for instance). In this case, the OVRMOD bit must be configured to 1 and OVR flag should be ignored by the software. An overrun event does not prevent the ADC from continuing to convert and the ADC_DR register always contains the latest conversion.

Managing conversions using the DMA

Since converted channel values are stored into a unique data register, it is useful to use DMA for conversion of more than one channel. This avoids the loss of the data already stored in the ADC_DR register.

When the DMA mode is enabled (DMAEN bit set to 1 in the ADC_CFGR register), a DMA request is generated after each conversion of a channel. This allows the transfer of the converted data from the ADC_DR register to the destination location selected by the software.

Despite this, if an overrun occurs (OVR = 1) because the DMA could 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 Section : 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 of the ADC_CFGR register:

DMA one shot mode (DMACFG = 0)

In this mode, the ADC generates a DMA transfer request each time a new conversion data is available and stops generating DMA requests once the DMA has reached the last DMA transfer (when DMA_EOT interrupt occurs - refer to DMA paragraph) 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 is available in the data register, even if the DMA has reached the last DMA transfer. This allows configuring the DMA in circular mode to handle a continuous analog input data stream.

29.4.27 Managing conversions using the DFSDM

The ADC conversion results can be transferred directly to the digital filter for sigma delta modulators (DFSDM).

In this case, the DFSDMCFG bit must be set to 1 and DMAEN bit must be cleared to 0.

The ADC transfers all the 16 bits of the regular data register to the DFSDM and resets the EOC flag once the transfer is complete.

The data format must be 16-bit signed:

ADC_DR[15:12] = sign extended
ADC_DR[11] = sign
ADC_DR[11:0] = data

To obtain 16-bit signed format in 12-bit ADC mode, the software needs to configure the OFFSET[11:0] to 0x800 after having set OFFSET_EN to 1.

Only right aligned data format is available for the DFSDM interface (see Figure 259: Right alignment (offset enabled, signed value) ).

29.4.28 Dynamic low-power features

Auto-delayed conversion mode (AUTDLY)

The ADC implements an auto-delayed conversion mode controlled by the AUTDLY configuration bit. Auto-delayed conversions are useful to simplify the software as well as to optimize performance of an application clocked at low frequency where there would be risk of encountering an ADC overrun.

When AUTDLY = 1, a new conversion can start only if all the previous data of the same group has been treated:

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

The delay is inserted after each regular conversion (whatever DISCEN = 0 or 1) and after each sequence of injected conversions (whatever JDISCEN = 0 or 1).

Note: There is no delay inserted between each conversions of the injected sequence, except after the last one.

During a conversion, a hardware trigger event (for the same group of conversions) occurring during this delay is ignored.

Note: This is not true for software triggers where it remains possible during this delay to set the bits ADSTART or JADSTART to restart a conversion: it is up to the software to read the data before launching a new conversion.

No delay is inserted between conversions of different groups (a regular conversion followed by an injected conversion or conversely):

The behavior is slightly different in auto-injected mode (JAUTO = 1) where a new regular conversion can start only when the automatic delay of the previous injected sequence of conversion has ended (when JEOS has been cleared). This is to ensure that the software can read all the data of a given sequence before starting a new sequence (see Figure 268 ).

To stop a conversion in Continuous auto-injection mode combined with autodelay mode (JAUTO = 1, CONT = 1 and AUTDLY = 1), follow the following procedure:

  1. 1. Wait until JEOS = 1 (no more conversions are restarted)
  2. 2. Clear JEOS,
  3. 3. Set ADSTP = 1
  4. 4. Read the regular data.

If this procedure is not respected, a new regular sequence can restart if JEOS is cleared after ADSTP has been set.

In AUTDLY mode, a hardware regular trigger event is ignored if it occurs during an already ongoing regular sequence or during the delay that follows the last regular conversion of the sequence. It is however considered pending if it occurs after this delay, even if it occurs during an injected sequence of the delay that follows it. The conversion then starts at the end of the delay of the injected sequence.

In AUTDLY mode, a hardware injected trigger event is ignored if it occurs during an already ongoing injected sequence or during the delay that follows the last injected conversion of the sequence.

Figure 264. AUTDLY = 1, regular conversion in Continuous mode, software trigger

Timing diagram showing the sequence of events for a software-triggered ADC conversion in continuous mode with autodelay. The diagram includes signals for ADSTART(1), EOC, EOS, ADSTP, ADC_DR read access, ADC state, and ADC_DR. The ADC state shows a sequence of RDY, CH1, DLY, CH2, DLY, CH3, DLY, CH1, DLY, STOP, RDY. The ADC_DR shows data points D1, D2, D3, and D1. Triggers are indicated by 'by SW' (software) and 'by HW' (hardware) labels.

The timing diagram illustrates the operation of the ADC in continuous mode with autodelay (AUTDLY = 1) and software triggering. The signals shown are:

Triggers are indicated by 'by SW' (software) and 'by HW' (hardware) labels. The diagram is labeled 'Indicative timings' and 'MS31020V1'.

Timing diagram showing the sequence of events for a software-triggered ADC conversion in continuous mode with autodelay. The diagram includes signals for ADSTART(1), EOC, EOS, ADSTP, ADC_DR read access, ADC state, and ADC_DR. The ADC state shows a sequence of RDY, CH1, DLY, CH2, DLY, CH3, DLY, CH1, DLY, STOP, RDY. The ADC_DR shows data points D1, D2, D3, and D1. Triggers are indicated by 'by SW' (software) and 'by HW' (hardware) labels.
  1. 1. AUTDLY = 1
  2. 2. Regular configuration: EXTEN=0x0 (SW trigger), CONT = 1, CHANNELS = 1,2,3
  3. 3. Injected configuration DISABLED

Figure 265. AUTODLY = 1, regular HW conversions interrupted by injected conversions (DISCEN = 0; JDISCEN = 0)

Timing diagram for ADC3 showing regular and injected conversions with AUTODLY=1. The diagram illustrates the sequence of events starting from a regular trigger, through various channel conversions (CH1, CH2, CH3, CH5, CH6) with delays (DLY), and an injected sequence (CH5, CH6) that interrupts the regular sequence. Data registers (ADC_DR, ADC_JDR1, ADC_JDR2) and status flags (EOC, EOS, JEOS) are shown over time. A legend indicates 'by s/w' (software) and 'by h/w' (hardware) triggers.

The timing diagram illustrates the operation of the ADC3 with the following signals and states over time:

Timing diagram for ADC3 showing regular and injected conversions with AUTODLY=1. The diagram illustrates the sequence of events starting from a regular trigger, through various channel conversions (CH1, CH2, CH3, CH5, CH6) with delays (DLY), and an injected sequence (CH5, CH6) that interrupts the regular sequence. Data registers (ADC_DR, ADC_JDR1, ADC_JDR2) and status flags (EOC, EOS, JEOS) are shown over time. A legend indicates 'by s/w' (software) and 'by h/w' (hardware) triggers.
  1. 1. AUTODLY = 1
  2. 2. Regular configuration: EXTEN=0x1 (HW trigger), CONT = 0, DISCEN = 0, CHANNELS = 1, 2, 3
  3. 3. Injected configuration: JEXTEN = 0x1 (HW Trigger), JDISCEN = 0, CHANNELS = 5,6

Figure 266. AUTODLY = 1, regular HW conversions interrupted by injected conversions (DISCEN = 1, JDISCEN = 1)

Timing diagram showing regular and injected ADC conversions with delays and triggers. The diagram illustrates the sequence of events for regular conversions (CH1, CH2, CH3) and injected conversions (CH5, CH6) triggered by hardware signals. It shows states like RDY, DLY, and data outputs D1, D2, D3, D5, D6. A legend indicates 'by SW' (software) and 'by HW' (hardware) triggers.

The timing diagram illustrates the operation of ADC3 with AUTODLY=1, DISCEN=1, and JDISCEN=1. The 'Regular trigger' line shows a hardware trigger (HW) followed by a software trigger (SW). The 'ADC state' line shows the sequence of conversions: CH1 (regular), DLY (CH1), CH2 (regular), DLY (CH2), CH5 (injected), CH6 (injected), CH3 (regular), DLY (CH3), CH1 (regular), DLY (CH1), CH2 (regular). The 'EOC' (End of Conversion) signal is shown for regular conversions. The 'read access' line shows the data outputs: D1, D2, D3, D1. The 'Injected trigger' line shows a hardware trigger for the injected sequence. The 'JEOS' (End of Injected Sequence) signal is shown. The 'ADC_JDR1' and 'ADC_JDR2' lines show the data outputs for the injected conversions: D5, D6. The diagram also indicates that some triggers are 'Ignored' or 'Not ignored (occurs during injected sequence)'. A legend at the bottom indicates 'by SW' (software) and 'by HW' (hardware) triggers.

Timing diagram showing regular and injected ADC conversions with delays and triggers. The diagram illustrates the sequence of events for regular conversions (CH1, CH2, CH3) and injected conversions (CH5, CH6) triggered by hardware signals. It shows states like RDY, DLY, and data outputs D1, D2, D3, D5, D6. A legend indicates 'by SW' (software) and 'by HW' (hardware) triggers.

MS31022V1

  1. 1. AUTODLY = 1
  2. 2. Regular configuration: EXTEN = 0x1 (HW trigger), CONT = 0, DISCEN = 1, DISCNUM = 1, CHANNELS = 1, 2, 3.
  3. 3. Injected configuration: JEXTEN = 0x1 (HW Trigger), JDISCEN = 1, CHANNELS = 5, 6

Figure 267. AUTODLY = 1, regular continuous conversions interrupted by injected conversions

Timing diagram for Figure 267 showing regular continuous conversions (CH1, CH2, CH3) with delays (DLY) and injected conversions (CH5, CH6) interrupting the sequence. The diagram includes signals for ADSTART, ADC state (RDY, CH1, CH2, CH5, CH6, CH3), EOC, EOS, ADC_DR read access, ADC_DR (D1, D2, D3), Injected trigger, JEOS, ADC_JDR1 (D5), and ADC_JDR2 (D6).

Timing diagram for Figure 267. The diagram shows the sequence of conversions and associated signals. ADSTART (1) is a rising edge. The ADC state shows RDY, followed by CH1 (regular), DLY (CH1), CH2 (regular), DLY (CH2), CH5 (injected), CH6 (injected), DLY, CH3 (regular), DLY (CH3), and CH1 (regular). EOC pulses occur after each regular conversion. EOS is a rising edge after CH3. ADC_DR read access is shown as a series of pulses. ADC_DR contains data D1, D2, and D3. An injected trigger is shown as a rising edge. JEOS is a rising edge after CH6. ADC_JDR1 contains data D5. ADC_JDR2 contains data D6. A legend indicates 'by s/w' (software trigger) and 'by h/w' (hardware trigger) for ADSTART. A box labeled 'Indicative timings' is present. The code MS31023V3 is in the bottom right.

Timing diagram for Figure 267 showing regular continuous conversions (CH1, CH2, CH3) with delays (DLY) and injected conversions (CH5, CH6) interrupting the sequence. The diagram includes signals for ADSTART, ADC state (RDY, CH1, CH2, CH5, CH6, CH3), EOC, EOS, ADC_DR read access, ADC_DR (D1, D2, D3), Injected trigger, JEOS, ADC_JDR1 (D5), and ADC_JDR2 (D6).
  1. 1. AUTODLY = 1
  2. 2. Regular configuration: EXTEN = 0x0 (SW trigger), CONT = 1, DISCEN = 0, CHANNELS = 1, 2, 3
  3. 3. Injected configuration: JEXTEN = 0x1 (HW Trigger), JDISCEN = 0, CHANNELS = 5,6

Figure 268. AUTODLY = 1 in auto- injected mode (JAUTO = 1)

Timing diagram for Figure 268 showing auto-injected mode where injected conversions (CH5, CH6) are automatically triggered after regular conversions (CH1, CH2, CH3). The diagram includes signals for ADSTART, ADC state (RDY, CH1, CH2, CH5, CH6, CH3), EOC, EOS, ADC_DR read access, ADC_DR (D1, D2, D3), JEOS, ADC_JDR1 (D5), and ADC_JDR2 (D6).

Timing diagram for Figure 268. The diagram shows the sequence of conversions and associated signals. ADSTART (1) is a rising edge. The ADC state shows RDY, followed by CH1 (regular), DLY (CH1), CH2 (regular), CH5 (injected), CH6 (injected), DLY (inj), CH3 (regular), DLY, and CH1 (regular). A 'No delay' label is above the start. EOC pulses occur after each regular conversion. EOS is a rising edge after CH3. ADC_DR read access is shown as a series of pulses. ADC_DR contains data D1, D2, and D3. JEOS is a rising edge after CH6. ADC_JDR1 contains data D5. ADC_JDR2 contains data D6. A legend indicates 'by s/w' (software trigger) and 'by h/w' (hardware trigger) for ADSTART. A box labeled 'Indicative timings' is present. The code MS31024V4 is in the bottom right.

Timing diagram for Figure 268 showing auto-injected mode where injected conversions (CH5, CH6) are automatically triggered after regular conversions (CH1, CH2, CH3). The diagram includes signals for ADSTART, ADC state (RDY, CH1, CH2, CH5, CH6, CH3), EOC, EOS, ADC_DR read access, ADC_DR (D1, D2, D3), JEOS, ADC_JDR1 (D5), and ADC_JDR2 (D6).
  1. 1. AUTODLY = 1
  2. 2. Regular configuration: EXTEN = 0x0 (SW trigger), CONT = 1, DISCEN = 0, CHANNELS = 1, 2
  3. 3. Injected configuration: JAUTO = 1, CHANNELS = 5,6

29.4.29 Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx)

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

Figure 269. Analog watchdog guarded area

Figure 269. Analog watchdog guarded area. A graph showing the guarded area between a lower threshold (LTX) and a higher threshold (HTX) for analog voltage. The y-axis is labeled 'Analog voltage' and has tick marks for 'Higher threshold' and 'Lower threshold'. The area between the thresholds is shaded and labeled 'Guarded area'. The labels HTx and LTx are on the right side of the graph. A small code 'MS45396V1' is in the bottom right corner.
Figure 269. Analog watchdog guarded area. A graph showing the guarded area between a lower threshold (LTX) and a higher threshold (HTX) for analog voltage. The y-axis is labeled 'Analog voltage' and has tick marks for 'Higher threshold' and 'Lower threshold'. The area between the thresholds is shaded and labeled 'Guarded area'. The labels HTx and LTx are on the right side of the graph. A small code 'MS45396V1' is in the bottom right corner.

AWDx flag and interrupt

An interrupt can be enabled for each of the 3 analog watchdogs by setting AWDxIE in the ADC_IER register (x = 1,2,3).

AWDx (x = 1,2,3) flag is cleared by software by writing 1 to it.

The ADC conversion result is compared to the lower and higher thresholds before alignment.

Description of analog watchdog 1

The AWD analog watchdog 1 is enabled by setting the AWD1EN bit in the ADC_CFGR register. This watchdog monitors whether either one selected channel or all enabled channels (1) remain within a configured voltage range (window).

Table 247 shows how the ADC_CFGR registers should be configured to enable the analog watchdog on one or more channels.

Table 247. Analog watchdog channel selection

Channels guarded by the analog watchdogAWD1SGL bitAWD1EN bitJAWD1EN bit
Nonex00
All injected channels001
All regular channels010
All regular and injected channels011
Single (1) injected channel101
Single (1) regular channel110
Single (1) regular or injected channel111

1. Selected by the AWD1CH[4:0] bits. The channels must also be programmed to be converted in the appropriate regular or injected sequence.

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 bits HT1[11:0] and LT1[11:0] of the ADC_TR1 register for the analog watchdog 1. When converting data with a resolution of less than 12 bits (according to bits RES[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) before the offset compensation stage.

Table 248 describes how the comparison is performed for all the possible resolutions for analog watchdog 1.

Table 248. Analog watchdog 1 comparison

Resolution(
bit
RES[1:0])
Analog watchdog comparison
between:
Comments
Raw converted data,
left aligned
Thresholds
00: 12-bitDATA[11:0]LT1[11:0] and
HT1[11:0]
-
01: 10-bitDATA[11:2],00LT1[11:0] and
HT1[11:0]
User must configure LT1[1:0] and HT1[1:0]
to 00
10: 8-bitDATA[11:4],0000LT1[11:0] and
HT1[11:0]
User must configure LT1[3:0] and HT1[3:0]
to 0000
11: 6-bitDATA[11:6],000000LT1[11:0] and
HT1[11:0]
User must configure LT1[5:0] and HT1[5:0]
to 000000

Analog watchdog filter for watchdog 1

When an ADC is configured with only one input channel (selecting several channels in Scan mode not allowed), a valid ADC conversion data interval can be configured through the ADC_TR1 register:

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 corresponding bits in AWDxCH[18:0] (x = 2,3).

The corresponding watchdog is enabled when any bit of AWDxCH[18:0] (x = 2,3) is set.

They are limited to a resolution of 8 bits and only the 8 MSBs of the thresholds can be programmed into HTx[7:0] and LTx[7:0]. Table 249 describes how the comparison is performed for all the possible resolutions.

Table 249. Analog watchdog 2 and 3 comparison

Resolution
(bits RES[1:0])
Analog watchdog comparison between:Comments
Raw converted data,
left aligned
Thresholds
00: 12-bitDATA[11:4]LTx[7:0] and HTx[7:0]DATA[3:0] are not relevant for the comparison
01: 10-bitDATA[11:4]LTx[7:0] and HTx[7:0]DATA[3:2] are not relevant for the comparison
10: 8-bitDATA[11:4]LTx[7:0] and HTx[7:0]-
11: 6-bitDATA[11:6],00LTx[7:0] and HTx[7:0]User must configure LTx[1:0] and HTx[1:0] to 00

ADC y _AWD x _OUT signal output generation

Each analog watchdog is associated to an internal hardware signal ADC y _AWD x _OUT (y = ADC number, x = watchdog number) which is directly connected to the ETR input (external trigger) of some on-chip timers. Refer to the on-chip timers section to understand how to select the ADC y _AWD x _OUT signal as ETR.

ADC y _AWD x _OUT is activated when the associated analog watchdog is enabled:

Note: AWD x flag is set by hardware and reset by software: AWD x flag has no influence on the generation of ADC y _AWD x _OUT (ex: ADC y _AWD x _OUT can toggle while AWD x flag remains at 1 if the software did not clear the flag).

Figure 270. ADC y _AWD x _OUT signal generation (on all regular channels)

Timing diagram showing ADC STATE, EOC FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals over a sequence of conversions (Conversion1 to Conversion7).

The timing diagram illustrates the relationship between ADC conversions and the AWDx flag and output signal. The 'ADC STATE' row shows a sequence of conversions: Conversion1 (inside), Conversion2 (outside), Conversion3 (inside), Conversion4 (outside), Conversion5 (outside), Conversion6 (outside), and Conversion7 (inside). The 'EOC FLAG' (End of Conversion) pulses at the completion of each conversion. The 'AWDx FLAG' is set by hardware when a conversion is outside the thresholds (Conversions 2, 4, 5, and 6) and is cleared by software ('cleared by S/W') when the conversion is inside the thresholds (Conversions 3, 7). The 'ADC y _AWD x _OUT' signal is set when the AWDx flag is set and remains set until a conversion is inside the thresholds, at which point it is reset.

  • - Converting regular channels 1,2,3,4,5,6,7
  • - Regular channels 1,2,3,4,5,6,7 are all guarded

MS31025V1

Timing diagram showing ADC STATE, EOC FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals over a sequence of conversions (Conversion1 to Conversion7).

Figure 271. ADC y _AWD x _OUT signal generation (AWD x flag not cleared by software)

Timing diagram for Figure 271 showing ADC STATE, EOC FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals for regular channels 1-7. The AWDx FLAG is set by Conversion2 and remains high because it is not cleared by software. The ADCy_AWDx_OUT signal is high from Conversion2 to Conversion7.

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: Set high at Conversion2, remains high (not cleared by S/W).

ADC y _AWD x _OUT: High from Conversion2 to Conversion7.

MS31026V1

Timing diagram for Figure 271 showing ADC STATE, EOC FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals for regular channels 1-7. The AWDx FLAG is set by Conversion2 and remains high because it is not cleared by software. The ADCy_AWDx_OUT signal is high from Conversion2 to Conversion7.

Figure 272. ADC y _AWD x _OUT signal generation (on a single regular channel)

Timing diagram for Figure 272 showing ADC STATE, EOC FLAG, EOS FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals for regular channels 1 and 2. Only channel 1 is guarded. The AWDx FLAG is cleared by software when Conversion2 is 'inside'.

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 sequence.

AWDx FLAG: Set at Conversion1 (outside), cleared by S/W at Conversion2 (inside).

ADC y _AWD x _OUT: High during Conversion1 (inside), low otherwise.

MS31027V1

Timing diagram for Figure 272 showing ADC STATE, EOC FLAG, EOS FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals for regular channels 1 and 2. Only channel 1 is guarded. The AWDx FLAG is cleared by software when Conversion2 is 'inside'.

Figure 273. ADC y _AWD x _OUT signal generation (on all injected channels)

Timing diagram for Figure 273 showing ADC STATE, JEOS FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals for injected channels 1-4. All injected channels are guarded. The AWDx FLAG is cleared by software after each 'inside' conversion.

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

JEOS FLAG: Pulses at the end of the injected sequence.

AWDx FLAG: Set at Conversion1 (inside), cleared by S/W at Conversion2 (outside).

ADC y _AWD x _OUT: High during Conversion1 (inside), low otherwise.

MS31028V1

Timing diagram for Figure 273 showing ADC STATE, JEOS FLAG, AWDx FLAG, and ADCy_AWDx_OUT signals for injected channels 1-4. All injected channels are guarded. The AWDx FLAG is cleared by software after each 'inside' conversion.

Analog watchdog threshold control

LTx[11:0] and HTx[11:0] can be changed when an analog-to-digital conversion is ongoing (that is between the start of conversion and the end of conversion of the ADC internal state). If LTx[11:0] and HTx[11:0] are updated during the ADC conversion of the ADC guarded channel, the watchdog function is masked for this conversion. This masking is removed at the next start of conversion, resulting in a analog watchdog thresholds to be applied from the next ADC conversion. The analog watchdog comparison is performed at each end of conversion. If the current ADC data is out of the new interval, no interrupt and AWDx_OUT signal are issued. The Interrupt and the AWD generation only happen at the end of the conversion which started after the threshold update. If AWD_xOUT is already asserted, programming the new thresholds does not deactivate the AWDx_OUT signal.

Analog watchdog with offset compensation

When the offset compensation is enabled, the analog watchdog compares the threshold before the data compensation.

29.4.30 Oversampler

The oversampling unit performs data pre-processing to offload the CPU. It is able to 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 to perform by hardware the following functions: averaging, data rate reduction, SNR improvement, basic filtering.

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

The summation unit can yield a result up to 20 bits (256x 12-bit results), which is first shifted right. It is then truncated to 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 intermediary result after the shifting exceeds 16-bit, the result is truncated as is, without saturation.

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

Diagram illustrating 20-bit to 16-bit result truncation. It shows three horizontal bars representing data. The top bar is 'Raw 20-bit data' with bits 19 to 0. The middle bar is 'Shifting', showing a rightward arrow indicating a shift. The bottom bar is 'Truncation and rounding', showing the result after shifting and rounding, with bits 15 to 0. A dashed vertical line at bit 15 separates the raw data from the shifted and truncated result. The identifier MS34453V1 is in the bottom right corner.
Diagram illustrating 20-bit to 16-bit result truncation. It shows three horizontal bars representing data. The top bar is 'Raw 20-bit data' with bits 19 to 0. The middle bar is 'Shifting', showing a rightward arrow indicating a shift. The bottom bar is 'Truncation and rounding', showing the result after shifting and rounding, with bits 15 to 0. A dashed vertical line at bit 15 separates the raw data from the shifted and truncated result. The identifier MS34453V1 is in the bottom right corner.

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

Figure 275. Numerical example with 5-bit shift and rounding

Diagram illustrating a numerical example with a 5-bit shift and rounding. It shows two horizontal bars. The top bar is 'Raw 20-bit data' with values: bit 19 is 3, bits 15-11 are B, bits 10-7 are 7, bits 6-3 are D, and bits 2-0 are 7. The bottom bar is 'Final result after 5-bit shift and rounding to nearest', with values: bits 15-12 are 1, bits 11-8 are D, bits 7-4 are B, and bits 3-0 are F. A dashed vertical line at bit 15 separates the raw data from the shifted and rounded result. The identifier MS34454V1 is in the bottom right corner.
Diagram illustrating a numerical example with a 5-bit shift and rounding. It shows two horizontal bars. The top bar is 'Raw 20-bit data' with values: bit 19 is 3, bits 15-11 are B, bits 10-7 are 7, bits 6-3 are D, and bits 2-0 are 7. The bottom bar is 'Final result after 5-bit shift and rounding to nearest', with values: bits 15-12 are 1, bits 11-8 are D, bits 7-4 are B, and bits 3-0 are F. A dashed vertical line at bit 15 separates the raw data from the shifted and rounded result. The identifier MS34454V1 is in the bottom right corner.

Table 250 gives the data format for the various N and M combinations, for a raw conversion data equal to 0xFFF.

Table 250. Maximum output results versus N and M (gray cells indicate truncation)

Over sampling ratioMax Raw dataNo-shift1-bit shift2-bit shift3-bit shift4-bit shift5-bit shift6-bit shift7-bit shift8-bit shift
OVSS = 0000OVSS = 0001OVSS = 0010OVSS = 0011OVSS = 0100OVSS = 0101OVSS = 0110OVSS = 0111OVSS = 1000
2x0x1FFE0x1FFE0x0FFF0x08000x04000x02000x01000x00800x00400x020
4x0x3FFC0x3FFC0x1FFE0x0FFF0x08000x04000x02000x01000x00800x0040
8x0x7FF80x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x02000x01000x0080
16x0xFFF00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x02000x0100
32x0x1FFE00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x0200
64x0x3FFC00xFFC00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x0400
128x0x7FF800xFF800xFFC00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x0800
256x0xFFF000xFF000xFF800xFFC00xFFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF

There are no changes for conversion timings in oversampled mode: the sample time is maintained equal during the whole oversampling sequence. A new data is provided every N

conversions, with an equivalent delay equal to \( N \times T_{\text{CONV}} = N \times (t_{\text{SAMPL}} + t_{\text{SAR}}) \) . The flags are set as follow:

ADC operating modes supported when oversampling

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

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.

Offset correction is not supported in oversampling mode. When ROVSE and/or JOVSE bit is set, the value of the OFFSET_EN bit in ADC_OFRy register is ignored (considered as reset).

Analog watchdog

The analog watchdog functionality is maintained (AWDSGL and AWDEN bits), with the following difference:

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 HT[0:7] / LT[0:7], and HT[11:8] / LT[11:8] must be kept reset.

Triggered mode

The averager can also be used for basic filtering purpose. Although not a very powerful 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 TROVS bit in ADC_CFGR2, to be able to have an oversampling frequency defined by a user and independent from the conversion time itself.

The Figure 276 below shows how conversions are started in response to triggers during Discontinuous mode.

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

Figure 276. Triggered regular oversampling mode (TROVS bit = 1)

Figure 276: Triggered regular oversampling mode (TROVS bit = 1). The diagram illustrates two scenarios for regular oversampling. In the top scenario, with CONT=0, DISCEN=1, and TROVS=0, a 'Trigger' initiates a sequence of four conversions: Ch(N)0, Ch(N)1, Ch(N)2, and Ch(N)3. An 'EOC flag set' is indicated after the fourth conversion. In the bottom scenario, with CONT=0, DISCEN=1, and TROVS=1, a 'Trigger' initiates a sequence of seven conversions: Ch(N)0, Ch(N)1, Ch(N)2, Ch(N)3, Ch(N)0, Ch(N)1, and Ch(N)2. An 'EOC flag set' is indicated after the seventh conversion. The diagram shows that in the TROVS=1 mode, the sequence continues until the EOC flag is set, regardless of the CONT bit setting.
Figure 276: Triggered regular oversampling mode (TROVS bit = 1). The diagram illustrates two scenarios for regular oversampling. In the top scenario, with CONT=0, DISCEN=1, and TROVS=0, a 'Trigger' initiates a sequence of four conversions: Ch(N)0, Ch(N)1, Ch(N)2, and Ch(N)3. An 'EOC flag set' is indicated after the fourth conversion. In the bottom scenario, with CONT=0, DISCEN=1, and TROVS=1, a 'Trigger' initiates a sequence of seven conversions: Ch(N)0, Ch(N)1, Ch(N)2, Ch(N)3, Ch(N)0, Ch(N)1, and Ch(N)2. An 'EOC flag set' is indicated after the seventh conversion. The diagram shows that in the TROVS=1 mode, the sequence continues until the EOC flag is set, regardless of the CONT bit setting.

Injected and regular sequencer management when oversampling

In oversampling mode, it is possible to have differentiated behavior for injected and regular sequencers. The oversampling can be enabled for both sequencers with some limitations if they have to be used simultaneously (this is related to a unique accumulation unit).

Oversampling regular channels only

The regular oversampling mode bit ROVSM defines how the regular oversampling sequence is resumed if it is interrupted by injected conversion:

The Figure 277 gives examples for a 4x oversampling ratio.

Figure 277. Regular oversampling modes (4x ratio)

Timing diagram showing regular oversampling modes (4x ratio) for ADC3. It is divided into two sections: 'Continued mode' and 'Resumed mode'. Each section shows a sequence of regular channels (Ch(N)0 to Ch(N)3, Ch(M)0 to Ch(M)3) and injected channels (Ch(J), Ch(K)). In 'Continued mode', oversampling is stopped and then continued. In 'Resumed mode', oversampling is aborted and then resumed. Both modes show the effect of an 'Abort' signal and a 'Trigger' signal. The diagram also includes the JEOC (End of Injected Sequence) signal and the ROVSE, JOVSE, ROVSM, and TROVS configuration bits.

Continued mode: ROVSE = 1, JOVSE = 0, ROVSM = 0, TROVS = X

Resumed mode: ROVSE = 1, JOVSE = 0, ROVSM = 1, TROVS = X

MS34456V1

Timing diagram showing regular oversampling modes (4x ratio) for ADC3. It is divided into two sections: 'Continued mode' and 'Resumed mode'. Each section shows a sequence of regular channels (Ch(N)0 to Ch(N)3, Ch(M)0 to Ch(M)3) and injected channels (Ch(J), Ch(K)). In 'Continued mode', oversampling is stopped and then continued. In 'Resumed mode', oversampling is aborted and then resumed. Both modes show the effect of an 'Abort' signal and a 'Trigger' signal. The diagram also includes the JEOC (End of Injected Sequence) signal and the ROVSE, JOVSE, ROVSM, and TROVS configuration bits.

Oversampling Injected channels only

The Injected oversampling mode bit JOVSE enables oversampling solely for conversions in the injected sequencer.

Oversampling regular and Injected channels

It is possible to have both ROVSE and JOVSE bits set. In this case, the regular oversampling mode is forced to resumed mode (ROVSM bit ignored), as represented on Figure 278 below.

Figure 278. Regular and injected oversampling modes used simultaneously

Timing diagram for Figure 278 showing regular and injected oversampling modes. Regular channels: Ch(N)0, Ch(N)1, Ch(N)2, Ch(N)3, Ch(M)0, Ch(M)1. Injected channels: Ch(J)0, Ch(J)1, Ch(J)2, Ch(J)3. A trigger starts the sequence. An 'Abort' occurs after Ch(N)3. Oversampling is aborted and then resumed for the regular channels. The diagram shows Ch(M)0 and Ch(M)1 being sampled again. JEOC (Injected End of Conversion) is marked at the end of the injected channels. Configuration: ROVSE = 1, JOVSE = 1, ROVSM = 1, TROVS = 0.

Regular channels: Ch(N) 0 | Ch(N) 1 | Ch(N) 2 | Ch(N) 3 | Ch(M) 0 | Ch(M) 1

Injected channels: Ch(J) 0 | Ch(J) 1 | Ch(J) 2 | Ch(J) 3

Trigger → Abort

Oversampling aborted

Oversampling resumed

Ch(M) 0 | Ch(M) 1

JEOC

ROVSE = 1, JOVSE = 1, ROVSM = 1, TROVS = 0

MS34457V2

Timing diagram for Figure 278 showing regular and injected oversampling modes. Regular channels: Ch(N)0, Ch(N)1, Ch(N)2, Ch(N)3, Ch(M)0, Ch(M)1. Injected channels: Ch(J)0, Ch(J)1, Ch(J)2, Ch(J)3. A trigger starts the sequence. An 'Abort' occurs after Ch(N)3. Oversampling is aborted and then resumed for the regular channels. The diagram shows Ch(M)0 and Ch(M)1 being sampled again. JEOC (Injected End of Conversion) is marked at the end of the injected channels. Configuration: ROVSE = 1, JOVSE = 1, ROVSM = 1, TROVS = 0.

Triggered regular oversampling with injected conversions

It is possible to have triggered regular mode with injected conversions. In this case, the injected mode oversampling mode must be disabled, and the ROVSM bit is ignored (resumed mode is forced). The JOVSE bit must be reset. The behavior is represented on Figure 279 below.

Figure 279. Triggered regular oversampling with injection

Timing diagram for Figure 279 showing triggered regular oversampling with injected conversions. Regular channels: Ch(N)0, Ch(N)1, Ch(N)2, Ch(N)0, Ch(N)1. Injected channels: Ch(J), Ch(K). Triggers start each regular channel sequence. An 'Abort' occurs after Ch(N)2. Oversampling is aborted and then resumed for the regular channels. The diagram shows Ch(N)0 and Ch(N)1 being sampled again. Configuration: ROVSE = 1, JOVSE = 0, ROVSM = 1, TROVS = 1.

Regular channels: Ch(N) 0 | Ch(N) 1 | Ch(N) 2 | Ch(N) 0 | Ch(N) 1

Injected channels: Ch(J) | Ch(K)

Trigger → Abort

Oversampling aborted

Oversampling resumed

Ch(N) 0 | Ch(N) 1

ROVSE = 1, JOVSE = 0, ROVSM = 1, TROVS = 1

MS34458V4

Timing diagram for Figure 279 showing triggered regular oversampling with injected conversions. Regular channels: Ch(N)0, Ch(N)1, Ch(N)2, Ch(N)0, Ch(N)1. Injected channels: Ch(J), Ch(K). Triggers start each regular channel sequence. An 'Abort' occurs after Ch(N)2. Oversampling is aborted and then resumed for the regular channels. The diagram shows Ch(N)0 and Ch(N)1 being sampled again. Configuration: ROVSE = 1, JOVSE = 0, ROVSM = 1, TROVS = 1.

Auto-injected mode

It is possible to oversample auto-injected sequences and have all conversions results stored in registers to save a DMA resource. This mode is available only with both regular and injected oversampling active: JAUTO = 1, ROVSE = 1 and JOVSE = 1, other combinations are not supported. The ROVSM bit is ignored in auto-injected mode. The Figure 280 below shows how the conversions are sequenced.

Diagram illustrating oversampling in auto-injected mode. It shows two rows of conversion slots. The top row, labeled 'Regular channels', contains four slots labeled N0, N1, N2, N3. The bottom row, labeled 'Injected channels', contains 16 slots labeled I0, I1, I2, I3, J0, J1, J2, J3, K0, K1, K2, K3, L0, L1, L2, L3. Arrows point from the N slots to the I slots, indicating that each injected channel is sampled four times. Below the slots, the configuration is given as JAUTO = 1, ROVSE = 1, JOVSE = 1, ROVSM = X, TROVS = 0. The diagram is labeled MS34459V1 in the bottom right corner.

Figure 280. Oversampling in auto-injected mode

JAUTO = 1, ROVSE = 1, JOVSE = 1, ROVSM = X, TROVS = 0

MS34459V1

Diagram illustrating oversampling in auto-injected mode. It shows two rows of conversion slots. The top row, labeled 'Regular channels', contains four slots labeled N0, N1, N2, N3. The bottom row, labeled 'Injected channels', contains 16 slots labeled I0, I1, I2, I3, J0, J1, J2, J3, K0, K1, K2, K3, L0, L1, L2, L3. Arrows point from the N slots to the I slots, indicating that each injected channel is sampled four times. Below the slots, the configuration is given as JAUTO = 1, ROVSE = 1, JOVSE = 1, ROVSM = X, TROVS = 0. The diagram is labeled MS34459V1 in the bottom right corner.

It is possible to have also the triggered mode enabled, using the TROVS bit. In this case, the ADC must be configured as following: JAUTO = 1, DISCEN = 0, JDISCEN = 0, ROVSE = 1, JOVSE = 1 and TROVSE = 1.

29.4.31 Temperature sensor

The temperature sensor can be used to measure the junction temperature (Tj) of the device.

The temperature sensor is internally connected to the ADC input channels which are used to convert the sensor output voltage to a digital value (see Table: ADC interconnection in Section 29.4.2: ADC pins and internal signals for more details). When not in use, the sensor can be put in power down mode. It support the temperature range –40 to 125 °C.

Figure 281 shows the block diagram of connections between the temperature sensor and the ADC.

The temperature sensor output voltage changes linearly with 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 ST 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).

The temperature sensor is internally connected to the ADC input channel which is used to convert the sensor's output voltage to a digital value. Refer to the electrical characteristics section of the device datasheet for the sampling time value to be applied when converting the internal temperature sensor.

When not in use, the sensor can be put in power-down mode.

Figure 281 shows the block diagram of the temperature sensor.

Figure 281. Temperature sensor channel block diagram

Figure 281. Temperature sensor channel block diagram. The diagram shows a 'Temperature sensor' block connected to a multiplexer. The multiplexer is controlled by a 'TSEN control bit' and its output is labeled 'VSENSE'. This output is connected to the 'ADC input' of an 'ADCx' block. The 'ADCx' block outputs 'Converted data' to an 'Address/data bus' block. The diagram is labeled 'MSV62477V1' in the bottom right corner.
Figure 281. Temperature sensor channel block diagram. The diagram shows a 'Temperature sensor' block connected to a multiplexer. The multiplexer is controlled by a 'TSEN control bit' and its output is labeled 'VSENSE'. This output is connected to the 'ADC input' of an 'ADCx' block. The 'ADCx' block outputs 'Converted data' to an 'Address/data bus' block. The diagram is labeled 'MSV62477V1' in the bottom right corner.

Reading the temperature

To use the sensor:

  1. 1. Select the ADC input channels that is connected to \( V_{SENSE} \) .
  2. 2. Program with the appropriate sampling time (refer to electrical characteristics section of the device datasheet).
  3. 3. Set the bit in the \( ADC\_CCR \) register to wake up the temperature sensor from power-down mode.
  4. 4. Start the ADC conversion.
  5. 5. Read the resulting \( V_{SENSE} \) data in the ADC data register.
  6. 6. Calculate the actual 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}) + 30 ^\circ\text{C} \]

where:

Refer to the device datasheet for more information about \( \text{TS\_CAL1} \) and \( \text{TS\_CAL2} \) calibration points.

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

29.4.32 \( V_{BAT} \) supply monitoring

The VBATEN bit in the ADC_CCR register is used to switch to the battery voltage. As the \( V_{BAT} \) voltage could be higher than \( V_{DDA} \) , to ensure the correct operation of the ADC, the \( V_{BAT} \) 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 ADC input channels (see Table: ADC interconnection in Section 29.4.2: ADC pins and internal signals for more details). As a consequence, the converted digital value is one third of the \( V_{BAT} \) voltage. To prevent any unwanted consumption on the battery, it is recommended to enable the bridge divider only when needed, for ADC conversion.

Refer to the electrical characteristics of the device datasheet for the sampling time value to be applied when converting the \( V_{BAT}/4 \) voltage.

Figure 282 shows the block diagram of the \( V_{BAT} \) sensing feature.

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

Figure 282. VBAT channel block diagram. The diagram shows a VBAT pin connected to a switch controlled by the VBATEN control bit. The switch is connected to a bridge divider consisting of two resistors in series, with the output of the divider labeled VBAT/4. This VBAT/4 signal is connected to an ADC input. The ADC input is part of an ADCx block, which is connected to an Address/data bus. The bottom of the bridge divider is connected to ground.
Figure 282. VBAT channel block diagram. The diagram shows a VBAT pin connected to a switch controlled by the VBATEN control bit. The switch is connected to a bridge divider consisting of two resistors in series, with the output of the divider labeled VBAT/4. This VBAT/4 signal is connected to an ADC input. The ADC input is part of an ADCx block, which is connected to an Address/data bus. The bottom of the bridge divider is connected to ground.
  1. 1. The VBATEN bit must be set to enable the conversion of internal channel for \( V_{BAT}/4 \) .

29.4.33 Monitoring the internal voltage reference

It is possible to monitor the internal voltage reference ( \( V_{REFINT} \) ) to have a reference point for evaluating the ADC \( V_{REF+} \) voltage level.

Refer to Table: ADC interconnection in Section 29.4.2: ADC pins and internal signals for details on the ADC input channels to which the internal voltage reference is internally connected.

Refer to the electrical characteristics section of the product datasheet for the sampling time value to be applied when converting the internal voltage reference voltage.

Figure 283 shows the block diagram of the \( V_{REFINT} \) sensing feature.

Figure 283. V REFINT channel block diagram Figure 283. VREFINT channel block diagram. The diagram shows an 'Internal power block' on the left connected to a multiplexer. The output of the power block is labeled VREFINT. The multiplexer has a 'VREFEN control bit' input from above. The output of the multiplexer is connected to the 'ADC input' of an 'ADCx' block on the right. The diagram is labeled MSV34467V5 in the bottom right corner.
Figure 283. VREFINT channel block diagram. The diagram shows an 'Internal power block' on the left connected to a multiplexer. The output of the power block is labeled VREFINT. The multiplexer has a 'VREFEN control bit' input from above. The output of the multiplexer is connected to the 'ADC input' of an 'ADCx' block on the right. The diagram is labeled MSV34467V5 in the bottom right corner.
  1. 1. The VREFEN bit into ADC_CCR register must be set to enable the conversion of internal channels (V REFINT ).

Calculating the actual V REF+ voltage using the internal reference voltage

V REF+ voltage may be subject to variations or not precisely known. The embedded internal reference voltage V REFINT and its calibration data acquired by the ADC during the manufacturing process at V REF+_charac can be used to evaluate the actual V REF+ voltage level.

The following formula gives the actual V REF+ voltage supplying the device:

\[ V_{REF+} = V_{REF+\_Charac} \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 V REF+ and the voltage applied on the converted channel.

For applications where V REF+ value is unknown and ADC converted values are right-aligned. In this case, it is necessary to convert this ratio into a voltage independent from V REF+ :

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

By replacing \( V_{REF+} \) by the formula provided above, the absolute voltage value is given by the following formula

\[ V_{CHANNELx} = \frac{V_{REF+\_Charac} \times VREFINT\_CAL \times ADC\_DATA}{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.

29.5 ADC interrupts

An interrupt can be generated:

Separate interrupt enable bits are available for flexibility.

Table 251. ADC interrupts

Interrupt vectorInterrupt eventEvent flagEnable Control bitInterrupt clear methodExit from Sleep modeExit from Stop, Standby mode
ADCADC readyADRDYADRDYIESet by hardware and cleared by softwareYesNo
End of conversion of a regular groupEOCEOCIE
End of conversion sequence of a regular groupEOSEOSIE
End of conversion of an injected groupJEOCJEOCIE
End of conversion sequence of an injected groupJEOSJEOSIE
Analog watchdog 1 status bit is setAWD1AWD1IE
Analog watchdog 2 status bit is setAWD2AWD2IE
Analog watchdog 3 status bit is setAWD3AWD3IE
End of sampling phaseEOSMPEOSMPIE
OverrunOVROVRIE
Injected context queue overflowsJQOVFJQOVFIE

29.6 ADC registers

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

29.6.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.Res.Res.JQOVFAWD3AWD2AWD1JEOSJEOCOVREOSEOCEOSMPADRDY
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

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

Bit 10 JQOVF: Injected context queue overflow

This bit is set by hardware when an Overflow of the Injected Queue of Context occurs. It is cleared by software writing 1 to it. Refer to Section 29.4.21: Queue of context for injected conversions for more information.

0: No injected context queue overflow occurred (or the flag event was already acknowledged and cleared by software)

1: Injected context queue overflow has occurred

Bit 9 AWD3: Analog watchdog 3 flag

This bit is set by hardware when the converted voltage crosses the values programmed in the fields LT3[7:0] and HT3[7:0] of ADC_TR3 register. It is cleared by software writing 1 to it.

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

1: Analog watchdog 3 event occurred

Bit 8 AWD2: Analog watchdog 2 flag

This bit is set by hardware when the converted voltage crosses the values programmed in the fields LT2[7:0] and HT2[7:0] of ADC_TR2 register. It is cleared by software writing 1 to it.

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

1: Analog watchdog 2 event occurred

Bit 7 AWD1: Analog watchdog 1 flag

This bit is set by hardware when the converted voltage crosses the values programmed in the fields LT1[11:0] and HT1[11:0] of ADC_TR1 register. It is cleared by software writing 1 to it.

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

1: Analog watchdog 1 event occurred

Bit 6 JEOS: Injected channel end of sequence flag

This bit is set by hardware at the end of the conversions of all injected channels in the group. It is cleared by software writing 1 to it.

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

1: Injected conversions complete

Bit 5 JEOC: Injected channel end of conversion flag

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

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

1: Injected channel conversion complete

Bit 4 OVR: ADC overrun

This bit is set by hardware when an overrun occurs on a regular channel, meaning that a new conversion has completed 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 regular sequence flag

This bit is set by hardware at the end of the conversions of a regular sequence of channels. It is cleared by software writing 1 to it.

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

1: Regular Conversions sequence complete

Bit 2 EOC: End of conversion flag

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

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

1: Regular channel conversion complete

Bit 1 EOSMP: End of sampling flag

This bit is set by hardware during the conversion of any channel (only for regular channels), at the end of the sampling phase.

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

29.6.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.Res.Res.JQOVFIEAWD3IEAWD2IEAWD1IEJEOSIEJEOCIEOVRIEEOSIEEOCIEEOSMP
IE
ADRDI
IE
rwrwrwrwrwrwrwrwrwrwrw

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

Bit 10 JQOVFIE: Injected context queue overflow interrupt enable

This bit is set and cleared by software to enable/disable the Injected Context Queue Overflow interrupt.

0: Injected Context Queue Overflow interrupt disabled

1: Injected Context Queue Overflow interrupt enabled. An interrupt is generated when the JQOVF bit is set.

Note: The software is allowed to write this bit only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 9 AWD3IE: Analog watchdog 3 interrupt enable

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

0: Analog watchdog 3 interrupt disabled

1: Analog watchdog 3 interrupt enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which 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 2 interrupt.

0: Analog watchdog 2 interrupt disabled

1: Analog watchdog 2 interrupt enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which 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 1 interrupt.

0: Analog watchdog 1 interrupt disabled

1: Analog watchdog 1 interrupt enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 6 JEOSIE: End of injected sequence of conversions interrupt enable

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

0: JEOS interrupt disabled

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

Note: The software is allowed to write this bit only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 5 JEOCIE: End of injected conversion interrupt enable

This bit is set and cleared by software to enable/disable the end of an injected conversion interrupt.
0: JEOC interrupt disabled.

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

Note: The software is allowed to write this bit only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 4 OVRIE: Overrun interrupt enable

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

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 = 0 (which ensures that no regular conversion is ongoing).

Bit 3 EOSIE: End of regular sequence of conversions interrupt enable

This bit is set and cleared by software to enable/disable the end of regular 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 = 0 (which ensures that no regular conversion is ongoing).

Bit 2 EOCIE: End of regular conversion interrupt enable

This bit is set and cleared by software to enable/disable the end of a regular 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 = 0 (which ensures that no regular conversion is ongoing).

Bit 1 EOSMPIE: End of sampling flag interrupt enable for regular conversions

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

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 = 0 (which ensures that no regular 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 = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

29.6.3 ADC control register (ADC_CR)

Address offset: 0x08

Reset value: 0x2000 0000

31302928272625242322212019181716
ADCALADCALDIFDEEPPWDADVPREGENRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rsrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JADSTPADSTPJADSTARTADSTARTADDISADEN
rsrsrsrsrsrs

Bit 31 ADCAL: ADC calibration

This bit is set by software to start the calibration of the ADC. Program first the bit ADCALDIF to determine if this calibration applies for Single-ended or Differential inputs mode. 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 in progress.

Note: The software is allowed to launch a calibration by setting ADCAL only when ADEN = 0. The software is allowed to update the calibration factor by writing ADC_CALFACT only when ADEN = 1 and ADSTART = 0 and JADSTART = 0 (ADC enabled and no conversion is ongoing)

Bit 30 ADCALDIF: Differential mode for calibration

This bit is set and cleared by software to configure the Single-ended or Differential inputs mode for the calibration.

0: Writing ADCAL launches a calibration in Single-ended inputs mode.

1: Writing ADCAL launches a calibration in Differential inputs mode.

Note: The software is allowed to write this bit only when the ADC is disabled and is not calibrating (ADCAL = 0, JADSTART = 0, JADSTP = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).

Bit 29 DEEPPWD: Deep-power-down enable

This bit is set and cleared by software to put the ADC in Deep-power-down mode.

0: ADC not in Deep-power down

1: ADC in Deep-power-down (default reset state)

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

Bit 28 ADVREGEN: ADC voltage regulator enable

This bit is set by software to enable the ADC voltage regulator.

Before performing any operation such as launching a calibration or enabling the ADC, the ADC voltage regulator must first be enabled and the software must wait for the regulator start-up time.

0: ADC Voltage regulator disabled

1: ADC Voltage regulator enabled.

For more details about the ADC voltage regulator enable and disable sequences, refer to Section 29.4.6: ADC Deep-power-down mode (DEEPPWD) and ADC voltage regulator (ADVREGEN) .

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

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

Bit 5 JADSTP: ADC stop of injected conversion command

This bit is set by software to stop and discard an ongoing injected conversion (JADSTP Command).

It is cleared by hardware when the conversion is effectively discarded and the ADC injected sequence and triggers can be re-configured. The ADC is then ready to accept a new start of injected conversions (JADSTART command).

0: No ADC stop injected conversion command ongoing

1: Write 1 to stop injected conversions ongoing. Read 1 means that an ADSTP command is in progress.

Note: The software is allowed to set JADSTP only when JADSTART = 1 and ADDIS = 0 (ADC is enabled and eventually converting an injected conversion and there is no pending request to disable the ADC)

In Auto-injection mode (JAUTO = 1), setting ADSTP bit aborts both regular and injected conversions (do not use JADSTP)

Bit 4 ADSTP: ADC stop of regular conversion command

This bit is set by software to stop and discard an ongoing regular conversion (ADSTP Command).

It is cleared by hardware when the conversion is effectively discarded and the ADC regular sequence and triggers can be re-configured. The ADC is then ready to accept a new start of regular conversions (ADSTART command).

0: No ADC stop regular conversion command ongoing

1: Write 1 to stop regular conversions ongoing. Read 1 means that an ADSTP command is in progress.

Note: The software is allowed to set ADSTP only when ADSTART = 1 and ADDIS = 0 (ADC is enabled and eventually converting a regular conversion and there is no pending request to disable the ADC).

In auto-injection mode (JAUTO = 1), setting ADSTP bit aborts both regular and injected conversions (do not use JADSTP).

Bit 3 JADSTART : ADC start of injected conversion

This bit is set by software to start ADC conversion of injected channels. Depending on the configuration bits JEXTEN, a conversion immediately starts (software trigger configuration) or once an injected hardware trigger event occurs (hardware trigger configuration).

It is cleared by hardware:

0: No ADC injected conversion is ongoing.

1: Write 1 to start injected conversions. Read 1 means that the ADC is operating and eventually converting an injected channel.

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

In auto-injection mode (JAUTO = 1), regular and auto-injected conversions are started by setting bit ADSTART (JADSTART must be kept cleared)

Bit 2 ADSTART: ADC start of regular conversion

This bit is set by software to start ADC conversion of regular channels. Depending on the configuration bits EXTEN, a conversion immediately starts (software trigger configuration) or once a regular hardware trigger event occurs (hardware trigger configuration).

It is cleared by hardware:

0: No ADC regular conversion is ongoing.

1: Write 1 to start regular conversions. Read 1 means that the ADC is operating and eventually converting a regular channel.

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)

In auto-injection mode (JAUTO = 1), regular and auto-injected conversions are started by setting bit ADSTART (JADSTART must be kept cleared)

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: The software is allowed to set ADDIS only when ADEN = 1 and both ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing)

Bit 0 ADEN: ADC enable control

This bit is set by software to enable the ADC. The ADC is effectively ready to operate once the flag ADRDY 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, JADSTART = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0) except for bit ADVREGEN which must be 1 (and the software must have wait for the startup time of the voltage regulator)

29.6.4 ADC configuration register (ADC_CFGR)

Address offset: 0x0C

Reset value: 0x8000 0000

31302928272625242322212019181716
JQDISAWD1CH[4:0]JAUTOJAWD1ENAWD1ENAWD1SGLJQMJDISCENDISCNUM[2:0]DISCEN
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

1514131211109876543210
ALIGNAUTDLYCONTOVRMODEXTEN[1:0]EXTSEL4EXTSEL3EXTSEL2EXTSEL1EXTSEL0RES[1:0]DFSDMCFGDMACFGDMAEN
rwrwrwrwrwrwrwrwrwrwrwrwrwrrwrw

Bit 31 JQDIS : Injected Queue disable

These bits are set and cleared by software to disable the Injected Queue mechanism :

0: Injected Queue enabled

1: Injected Queue disabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no regular nor injected conversion is ongoing).

A set or reset of JQDIS bit causes the injected queue to be flushed and the JSQR register is cleared.

Bits 30:26 AWD1CH[4:0] : Analog watchdog 1 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 AWD1

00001: ADC analog input channel 1 monitored by AWD1

.....

10010: ADC analog input channel 18 monitored by AWD1

others: reserved, must not be used

Note: Some channels are not connected physically. Keep the corresponding AWD1CH[4:0] setting to the reset value.

The channel selected by AWD1CH must be also selected into the SQRi or JSQRi registers.

The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 25 JAUTO : Automatic injected group conversion

This bit is set and cleared by software to enable/disable automatic injected group conversion after regular group conversion.

0: Automatic injected group conversion disabled

1: Automatic injected group conversion enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no regular nor injected conversion is ongoing).

Bit 24 JAWD1EN: Analog watchdog 1 enable on injected channels

This bit is set and cleared by software

0: Analog watchdog 1 disabled on injected channels

1: Analog watchdog 1 enabled on injected channels

Note: The software is allowed to write this bit only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 23 AWD1EN: Analog watchdog 1 enable on regular channels

This bit is set and cleared by software

0: Analog watchdog 1 disabled on regular channels

1: Analog watchdog 1 enabled on regular channels

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

Bit 22 AWD1SGL: Enable the watchdog 1 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 AWD1CH[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 these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 21 JQM: JSQR queue mode

This bit is set and cleared by software.

It defines how an empty Queue is managed.

0: JSQR mode 0: The Queue is never empty and maintains the last written configuration into JSQR.

1: JSQR mode 1: The Queue can be empty and when this occurs, the software and hardware triggers of the injected sequence are both internally disabled just after the completion of the last valid injected sequence.

Refer to Section 29.4.21: Queue of context for injected conversions for more information.

Note: The software is allowed to write this bit only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 20 JDISCEN: Discontinuous mode on injected channels

This bit is set and cleared by software to enable/disable Discontinuous mode on the injected channels of a group.

0: Discontinuous mode on injected channels disabled

1: Discontinuous mode on injected channels enabled

Note: The software is allowed to write this bit only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

It is not possible to use both auto-injected mode and Discontinuous mode simultaneously: the bits DISCEN and JDISCEN must be kept cleared by software when JAUTO is set.

Bits 19:17 DISCNUM[2:0]: Discontinuous mode channel count

These bits are written by software to define the number of regular channels to be converted in Discontinuous mode, after receiving an external trigger.

000: 1 channel

001: 2 channels

...

111: 8 channels

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 16 DISCEN: Discontinuous mode for regular channels

This bit is set and cleared by software to enable/disable Discontinuous mode for regular channels.

0: Discontinuous mode for regular channels disabled

1: Discontinuous mode for regular channels enabled

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

It is not possible to use both auto-injected mode and Discontinuous mode simultaneously: the bits DISCEN and JDISCEN must be kept cleared by software when JAUTO is set.

The software is allowed to write this bit only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 15 ALIGN: Data alignment

This bit is set and cleared by software to select right or left alignment. Refer to Section : Data register, data alignment and offset (ADC_DR, OFFSET, OFFSET_CH, ALIGN) .

0: Right alignment

1: Left alignment

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 14 AUTDLY: Delayed conversion mode

This bit is set and cleared by software to enable/disable the Auto Delayed Conversion mode.

0: Auto-delayed conversion mode off

1: Auto-delayed conversion mode on

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 13 CONT: Single / Continuous conversion mode for regular conversions

This bit is set and cleared by software. If it is set, regular 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 DISCEN = 1 and CONT = 1.

The software is allowed to write this bit only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 12 OVRMOD: Overrun mode

This bit is set and cleared by software and configure the way data overrun is 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 = 0 (which ensures that no regular conversion is ongoing).

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

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

00: Hardware trigger detection disabled (conversions can be launched 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 these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bits 9:5 EXTSEL[4:0]: External trigger selection for regular group

These bits select the external event used to trigger the start of conversion of a regular group:

00000: adc_ext_trg0

00001: adc_ext_trg1

00010: adc_ext_trg2

00011: adc_ext_trg3

00100: adc_ext_trg4

00101: adc_ext_trg5

00110: adc_ext_trg6

00111: adc_ext_trg7

...

11111: adc_ext_trg31

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

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

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

00: 12-bit

01: 10-bit

10: 8-bit

11: 6-bit

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 2 DFSDMCFG : DFSDM mode configuration

This bit is set and cleared by software to enable the DFSDM mode. It is effective only when DMAEN = 0.

0: DFSDM mode disabled

1: DFSDM mode enabled

Note: To make sure no conversion is ongoing, the software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0.

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 Section : Managing conversions using the DMA

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which 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 to use the DMA to manage automatically the converted data. For more details, refer to Section : Managing conversions using the DMA .

0: DMA disabled

1: DMA enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

29.6.5 ADC configuration register 2 (ADC_CFGR2)

Address offset: 0x10

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.SMPTRIGBULBSWTRIGRes.Res.Res.Res.Res.Res.Res.Res.Res.
rwrwrw

1514131211109876543210
Res.Res.Res.Res.Res.ROVSMTROVSOVSSR[3:0]OVSSR[2:0]ROVSE
rwrwrwrwrw

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

Bit 27 SMPTRIG : Sampling time control trigger mode

This bit is set and cleared by software to enable the sampling time control trigger mode.

0: Sampling time control trigger mode disabled

1: Sampling time control trigger mode enabled

The sampling time starts on the trigger rising edge, and the conversion on the trigger falling edge.

EXTEN bit should be set to 01. BULB bit must not be set when the SMPTRIG bit is set.

When EXTEN bit is set to 00, set SWTRIG to start the sampling and clear SWTRIG bit to start the conversion.

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

Bit 26 BULB : Bulb sampling mode

This bit is set and cleared by software to enable the bulb sampling mode.

0: Bulb sampling mode disabled

1: Bulb sampling mode enabled. The sampling period starts just after the previous end of conversion.

SAMPTRIG bit must not be set when the BULB bit is set.

The very first ADC conversion is performed with the sampling time specified in SMPx bits.

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

Bit 25 SWTRIG : Software trigger bit for sampling time control trigger mode

This bit is set and cleared by software to enable the bulb sampling mode.

0: Software trigger starts the conversion for sampling time control trigger mode

1: Software trigger starts the sampling for sampling time control trigger mode

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

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

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

Bit 10 ROVSM : Regular Oversampling mode

This bit is set and cleared by software to select the regular oversampling mode.

0: Continued mode: When injected conversions are triggered, the oversampling is temporary stopped and continued after the injection sequence (oversampling buffer is maintained during injected sequence)

1: Resumed mode: When injected conversions are triggered, the current oversampling is aborted and resumed from start after the injection sequence (oversampling buffer is zeroed by injected sequence start)

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

Bit 9 TROVS : Triggered Regular Oversampling

This bit is set and cleared by software to enable triggered oversampling

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

1: Each oversampled conversion for a channel needs a new trigger

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

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

This bitfield is set and cleared by software to define the right shifting applied to the raw oversampling result.

0000: No shift

0001: Shift 1-bit

0010: Shift 2-bits

0011: Shift 3-bits

0100: Shift 4-bits

0101: Shift 5-bits

0110: Shift 6-bits

0111: Shift 7-bits

1000: Shift 8-bits

Other codes reserved

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no conversion is ongoing).

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

This bitfield is set and cleared by software to define the oversampling ratio.

000: 2x

001: 4x

010: 8x

011: 16x

100: 32x

101: 64x

110: 128x

111: 256x

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no conversion is ongoing).

Bit 1 JOVSE : Injected Oversampling Enable

This bit is set and cleared by software to enable injected oversampling.

0: Injected Oversampling disabled

1: Injected Oversampling enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing)

Bit 0 ROVSE : Regular Oversampling Enable

This bit is set and cleared by software to enable regular oversampling.

0: Regular Oversampling disabled

1: Regular Oversampling enabled

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing)

29.6.6 ADC sample time register 1 (ADC_SMPR1)

Address offset: 0x14

Reset value: 0x0000 0000

31302928272625242322212019181716
SMPPLUSRes.SMP9[2:0]SMP8[2:0]SMP7[2:0]SMP6[2:0]SMP5[2:1]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SMP5[0]SMP4[2:0]SMP3[2:0]SMP2[2:0]SMP1[2:0]SMP0[2:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bit 31 SMPPLUS : Addition of one clock cycle to the sampling time.

1: 2.5 ADC clock cycle sampling time becomes 3.5 ADC clock cycles for the ADC_SMPR1 and ADC_SMPR2 registers.

0: The sampling time remains set to 2.5 ADC clock cycles remains

To make sure no conversion is ongoing, the software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0.

Bit 30 Reserved, must be kept at reset value.

Bits 29:0 SMP[9:0][2:0] : Channel x sampling time selection

These bits are written by software to select the sampling time individually for each channel. During sample cycles, the channel selection bits must remain unchanged.

000: 2.5 ADC clock cycles

001: 6.5 ADC clock cycles

010: 12.5 ADC clock cycles

011: 24.5 ADC clock cycles

100: 47.5 ADC clock cycles

101: 92.5 ADC clock cycles

110: 247.5 ADC clock cycles

111: 640.5 ADC clock cycles

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Some channels are not connected physically. Keep the corresponding SMPx[2:0] setting to the reset value.

29.6.7 ADC sample time register 2 (ADC_SMPR2)

Address offset: 0x18

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.SMP18[2:0]SMP17[2:0]SMP16[2:0]SMP15[2:1]
rwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SMP15[0]SMP14[2:0]SMP13[2:0]SMP12[2:0]SMP11[2:0]SMP10[2:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 26:0 SMP[18:10][2:0] : Channel x sampling time selection

These bits are written by software to select the sampling time individually for each channel. During sampling cycles, the channel selection bits must remain unchanged.

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Some channels are not connected physically. Keep the corresponding SMPx[2:0] setting to the reset value.

29.6.8 ADC watchdog threshold register 1 (ADC_TR1)

Address offset: 0x20

Reset value: 0x0FFF 0000

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

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 1.

Refer to Section 29.4.29: Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx)

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 15 Reserved, must be kept at reset value.

Bits 14:12 AWDFILT[2:0] : Analog watchdog filtering parameter

This bit is set and cleared by software.

000: No filtering

001: two consecutive detection generates an AWDx flag or an interrupt

...

111: Eight consecutive detection generates an AWDx flag or an interrupt

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

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 1.

Refer to Section 29.4.29: Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx)

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

29.6.9 ADC watchdog threshold register 2 (ADC_TR2)

Address offset: 0x24

Reset value: 0x00FF 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.HT2[7:0]
rwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.LT2[7:0]
rwrwrwrwrwrwrwrw

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

Bits 23:16 HT2[7:0] : Analog watchdog 2 higher threshold

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

Refer to Section 29.4.29: Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx)

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

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

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

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

Refer to Section 29.4.29: Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx)

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

29.6.10 ADC watchdog threshold register 3 (ADC_TR3)

Address offset: 0x28

Reset value: 0x00FF 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.HT3[7:0]
rwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.LT3[7:0]
rwrwrwrwrwrwrwrw

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

Bits 23:16 HT3[7:0] : Analog watchdog 3 higher threshold

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

Refer to Section 29.4.29: Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx)

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

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

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

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

This watchdog compares the 8-bit of LT3 with the 8 MSB of the converted data.

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

29.6.11 ADC regular sequence register 1 (ADC_SQR1)

Address offset: 0x30

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.SQ4[4:0]Res.SQ3[4:0]Res.SQ2[4]
rwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ2[3:0]Res.SQ1[4:0]Res.Res.L[3:0]
rwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 28:24 SQ4[4:0] : 4th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 4th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 23 Reserved, must be kept at reset value.

Bits 22:18 SQ3[4:0] : 3rd conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 3rd in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 17 Reserved, must be kept at reset value.

Bits 16:12 SQ2[4:0] : 2nd conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 2nd in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 11 Reserved, must be kept at reset value.

Bits 10:6 SQ1[4:0] : 1st conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 1st in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

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

Bits 3:0 L[3:0] : Regular channel sequence length

These bits are written by software to define the total number of conversions in the regular channel conversion sequence.

0000: 1 conversion

0001: 2 conversions

...

1111: 16 conversions

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Note: Some channels are not connected physically and must not be selected for conversion.

29.6.12 ADC regular sequence register 2 (ADC_SQR2)

Address offset: 0x34

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.SQ9[4:0]Res.SQ8[4:0]Res.SQ7[4]
rwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ7[3:0]Res.SQ6[4:0]Res.SQ5[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 28:24 SQ9[4:0] : 9th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 9th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 23 Reserved, must be kept at reset value.

Bits 22:18 SQ8[4:0] : 8th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 8th in the regular conversion sequence

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 17 Reserved, must be kept at reset value.

Bits 16:12 SQ7[4:0] : 7th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 7th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 11 Reserved, must be kept at reset value.

Bits 10:6 SQ6[4:0] : 6th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 6th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 5 Reserved, must be kept at reset value.

Bits 4:0 SQ5[4:0] : 5th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 5th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Note: Some channels are not connected physically and must not be selected for conversion.

29.6.13 ADC regular sequence register 3 (ADC_SQR3)

Address offset: 0x38

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.SQ14[4:0]Res.SQ13[4:0]Res.SQ12[4]
rwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ12[3:0]Res.SQ11[4:0]Res.SQ10[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 28:24 SQ14[4:0] : 14th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 14th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 23 Reserved, must be kept at reset value.

Bits 22:18 SQ13[4:0] : 13th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 13th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 17 Reserved, must be kept at reset value.

Bits 16:12 SQ12[4:0] : 12th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 12th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 11 Reserved, must be kept at reset value.

Bits 10:6 SQ11[4:0] : 11th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 11th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 5 Reserved, must be kept at reset value.

Bits 4:0 SQ10[4:0] : 10th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 10th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Note: Some channels are not connected physically and must not be selected for conversion.

29.6.14 ADC regular sequence register 4 (ADC_SQR4)

Address offset: 0x3C

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.SQ16[4:0]Res.SQ15[4:0]
rwrwrwrwrwrwrwrwrwrw

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

Bits 10:6 SQ16[4:0] : 16th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 16th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Bit 5 Reserved, must be kept at reset value.

Bits 4:0 SQ15[4:0] : 15th conversion in regular sequence

These bits are written by software with the channel number (0 to 18) assigned as the 15th in the regular conversion sequence.

Note: The software is allowed to write these bits only when ADSTART = 0 (which ensures that no regular conversion is ongoing).

Note: Some channels are not connected physically and must not be selected for conversion.

29.6.15 ADC regular 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.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RDATA[15:0]
1514131211109876543210
rrrrrrrrrrrrrrrr

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

Bits 15:0 RDATA[15:0] : Regular data converted

These bits are read-only. They contain the conversion result from the last converted regular channel. The data are left- or right-aligned as described in Section 29.4.26: Data management .

29.6.16 ADC injected sequence register (ADC_JSQR)

Address offset: 0x4C

Reset value: 0x0000 0000

31302928272625242322212019181716
JSQ4[4:0]Res.JSQ3[4:0]Res.JSQ2[4:1]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
JSQ2[0]Res.JSQ1[4:0]JEXTEN[1:0]JEXTSEL[4:0]JL[1:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:27 JSQ4[4:0] : 4th conversion in the injected sequence

These bits are written by software with the channel number (0 to 18) assigned as the 4th in the injected conversion sequence.

Note: The software is allowed to write these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 26 Reserved, must be kept at reset value.

Bits 25:21 JSQ3[4:0] : 3rd conversion in the injected sequence

These bits are written by software with the channel number (0 to 18) assigned as the 3rd in the injected conversion sequence.

Note: The software is allowed to write these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 20 Reserved, must be kept at reset value.

Bits 19:15 JSQ2[4:0] : 2nd conversion in the injected sequence

These bits are written by software with the channel number (0 to 18) assigned as the 2nd in the injected conversion sequence.

Note: The software is allowed to write these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bit 14 Reserved, must be kept at reset value.

Bits 13:9 JSQ1[4:0] : 1st conversion in the injected sequence

These bits are written by software with the channel number (0 to 18) assigned as the 1st in the injected conversion sequence.

Note: The software is allowed to write these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bits 8:7 JEXTEN[1:0]: External trigger enable and polarity selection for injected channels

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

00: If JQDIS = 0 (queue enabled), hardware and software trigger detection disabled.

Otherwise, the queue is disabled as well as hardware trigger detection (conversions can be launched 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 these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

If JQM = 1 and if the Queue of Context becomes empty, the software and hardware triggers of the injected sequence are both internally disabled (refer to Section 29.4.21: Queue of context for injected conversions )

Bits 6:2 JEXTSEL[4:0]: External Trigger Selection for injected group

These bits select the external event used to trigger the start of conversion of an injected group:

00000: adc_jext_trg0

00001: adc_jext_trg1

00010: adc_jext_trg2

00011: adc_jext_trg3

00100: adc_jext_trg4

00101: adc_jext_trg5

00110: adc_jext_trg6

00111: adc_jext_trg7

...

11111: adc_jext_trg31

Note: The software is allowed to write these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Bits 1:0 JL[1:0]: Injected channel sequence length

These bits are written by software to define the total number of conversions in the injected channel conversion sequence.

00: 1 conversion

01: 2 conversions

10: 3 conversions

11: 4 conversions

Note: The software is allowed to write these bits only when JADSTART = 0 (which ensures that no injected conversion is ongoing).

Note: Some channels are not connected physically and must not be selected for conversion.

29.6.17 ADC offset y register (ADC_OFRy)

Address offset: \( 0x60 + 0x04 \times (y - 1) \) , ( \( y = 1 \) to \( 4 \) )

Reset value: 0x0000 0000

31302928272625242322212019181716
OFFSET_ENOFFSET_CH[4:0]SATENOFFSE_TPOSRes.Res.Res.Res.Res.Res.Res.Res.
rwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.OFFSET[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

Bit 31 OFFSET_EN : Offset y enable

This bit is written by software to enable or disable the offset programmed into bits OFFSET[11:0].

Note: The software is allowed to write this bit only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bits 30:26 OFFSET_CH[4:0] : Channel selection for the data offset y

These bits are written by software to define the channel to which the offset programmed into bits OFFSET[11:0] applies.

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Some channels are not connected physically and must not be selected for the data offset y.

If OFFSET_EN is set, it is not allowed to select the same channel for different ADC_OFRy registers.

Bit 25 SATEN : Saturation enable

This bit is set and cleared by software to enable the saturation at 0x000 and 0xFFF for the offset function.

0: No saturation control, offset result can be signed

1: Saturation enabled, offset result unsigned and saturated at 0x000 and 0xFFF

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Bit 24 OFFSETPOS : Positive offset

This bit is set and cleared by software to enable the positive offset.

0: Negative offset

1: Positive offset

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

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

Bits 11:0 OFFSET[11:0] : Data offset y for the channel programmed into bits OFFSET_CH[4:0]

These bits are written by software to define the offset to be subtracted from the raw converted data when converting a channel (can be regular or injected). The channel to which applies the data offset must be programmed in the bits OFFSET_CH[4:0]. The conversion result can be read from in the ADC_DR (regular conversion) or from in the ADC_JDRyi registers (injected conversion).

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

If several offset (OFFSET) point to the same channel, only the offset with the lowest x value is considered for the subtraction.

Ex: if OFFSET1_CH[4:0] = 4 and OFFSET2_CH[4:0] = 4, this is OFFSET1[11:0] which is subtracted when converting channel 4.

29.6.18 ADC injected channel y data register (ADC_JDRy)

Address offset: 0x80 + 0x04 * (y - 1), (y = 1 to 4)

Reset value: 0x0000 0000

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

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

Bits 15:0 JDATA[15:0] : Injected data

These bits are read-only. They contain the conversion result from injected channel y. The data are left -or right-aligned as described in Section 29.4.26: Data management .

29.6.19 ADC Analog Watchdog 2 Configuration Register (ADC_AWD2CR)

Address offset: 0xA0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWD2CH[18:16]
rwrwrw
1514131211109876543210
AWD2CH[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 18:0 AWD2CH[18:0] : Analog watchdog 2 channel selection

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

AWD2CH[i] = 0: ADC analog input channel i is not monitored by AWD2

AWD2CH[i] = 1: ADC analog input channel i is monitored by AWD2

When AWD2CH[18:0] = 000..0, the analog Watchdog 2 is disabled

Note: The channels selected by AWD2CH must be also selected into the SQRi or JSQRi registers.

The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Some channels are not connected physically and must not be selected for the analog watchdog.

29.6.20 ADC Analog Watchdog 3 Configuration Register (ADC_AWD3CR)

Address offset: 0xA4

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWD3CH[18:16]
rwrwrw
1514131211109876543210
AWD3CH[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 18:0 AWD3CH[18:0] : Analog watchdog 3 channel selection

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

AWD3CH[i] = 0: ADC analog input channel i is not monitored by AWD3

AWD3CH[i] = 1: ADC analog input channel i is monitored by AWD3

When AWD3CH[18:0] = 000..0, the analog Watchdog 3 is disabled

Note: The channels selected by AWD3CH must be also selected into the SQRI or JSQRI registers.

The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (which ensures that no conversion is ongoing).

Some channels are not connected physically and must not be selected for the analog watchdog.

29.6.21 ADC Differential mode Selection Register (ADC_DIFSEL)

Address offset: 0xB0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DIFSEL[18:16]
rwrwrw
1514131211109876543210
DIFSEL[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwr

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

Bits 18:0 DIFSEL[18:0] : Differential mode for channels 18 to 0.

These bits are set and cleared by software. They allow to select if a channel is configured as Single-ended or Differential mode.

DIFSEL[i] = 0: ADC analog input channel is configured in Single-ended mode

DIFSEL[i] = 1: ADC analog input channel i is configured in Differential mode

Note: The DIFSEL bits corresponding to channels that are either connected to a single-ended I/O port or to an internal channel must be kept their reset value (Single-ended input mode).

The software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, JADSTART = 0, JADSTP = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).

29.6.22 ADC Calibration Factors (ADC_CALFACT)

Address offset: 0xB4

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT_D[6:0]
rwrwrwrwrwrwrw

1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT_S[6:0]
rwrwrwrwrwrwrw

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

Bits 22:16 CALFACT_D[6:0] : Calibration Factors in differential mode

These bits are written by hardware or by software.

Once a differential inputs calibration is complete, they are updated by hardware with the calibration factors.

Software can write these bits with a new calibration factor. If the new calibration factor is different from the current one stored into the analog ADC, it is then applied once a new differential calibration is launched.

Note: The software is allowed to write these bits only when ADEN = 1, ADSTART = 0 and JADSTART = 0 (ADC is enabled and no calibration is ongoing and no conversion is ongoing).

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

Bits 6:0 CALFACT_S[6:0] : Calibration Factors In Single-ended mode

These bits are written by hardware or by software.

Once a single-ended inputs calibration is complete, they are updated by hardware with the calibration factors.

Software can write these bits with a new calibration factor. If the new calibration factor is different from the current one stored into the analog ADC, it is then applied once a new single-ended calibration is launched.

Note: The software is allowed to write these bits only when ADEN = 1, ADSTART = 0 and JADSTART = 0 (ADC is enabled and no calibration is ongoing and no conversion is ongoing).

29.7 ADC common registers

29.7.1 ADC common control register (ADC_CCR)

Address offset: 0x308

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.VBATENTSENVREFENPRESC[3:0]CKMODE[1:0]
rwrwrwrwrwrwrwrwrw

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 : VBAT enable

This bit is set and cleared by software to control.

0: V BAT channel disabled

1: V BAT channel enabled

Bit 23 TSEN : V SENSE enable

This bit is set and cleared by software to control V SENSE .

0: Temperature sensor channel disabled

1: Temperature sensor channel enabled

Bit 22 VREFEN : V REFINT enable

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

0: V REFINT channel disabled

1: V REFINT channel enabled

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

These bits are set and cleared by software to select the frequency of the clock to the ADC.

The clock is common for all the ADCs.

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: The software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, JADSTART = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0). The ADC prescaler value is applied only when CKMODE[1:0] = 0b00.

Bits 17:16 CKMODE[1:0] : ADC clock mode

These bits are set and cleared by software to define the ADC clock scheme (which is common to both master and slave ADCs):

00: adc_ker_ck (x = 3) (Asynchronous clock mode), generated at product level (refer to Section 6: Reset and clock control (RCC) )

01: adc_hclk/1 (Synchronous clock mode). This configuration must be enabled only if the AHB clock prescaler is set to 1 (HPRE[3:0] = 0XXX in RCC_CFGR register) and if the system clock has a 50% duty cycle.

10: adc_hclk/2 (Synchronous clock mode)

11: adc_hclk/4 (Synchronous clock mode)

In all synchronous clock modes, there is no jitter in the delay from a timer trigger to the start of a conversion.

Note: The software is allowed to write these bits only when the ADCs are disabled (ADCAL = 0, JADSTART = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).

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

29.8 ADC register map

Table 252. ADC global register map

OffsetRegister
0x000 - 0x0B4Master ADC3/2
0x0B8 - 0x2FCReserved
0x300 - 0x30CMaster and slave ADCs common registers

Table 253. ADC register map and reset values

OffsetRegister313029282726252423222120191817161514131211109876543210
0x00ADC_ISRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JQOVFAWD3AWD2AWD1JEOSJEOCOVREOSEOCEOSMP
Reset value0000000000
0x04ADC_IERRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JQOVFIEAWD3IEAWD2IEAWD1IEJEOSIEJEOCIEOVRIEEOSIEEOCIEEOSMPIE
Reset value0000000000
0x08ADC_CRADCALADCALDIFDEEPPWDADVRGENRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JADSTPADSTPJADSTARTADSTARTADDISADEN
Reset value0010000000
0x0CADC_CFGRJQDISAWD1CH[4:0]JAUTOJAWD1ENAWD1ENAWD1SGLJQMJDISCENDISCNUM[2:0]DISCENALIGNAUTDLYCONTOVRMODEXTEN[1:0]EXTSEL4EXTSEL3EXTSEL2EXTSEL1EXTSEL0RES[1:0]DFSDMCFGDMACFGDMAEN
Reset value10000000000000000000000000000000
0x0CADC_CFGR2Res.Res.Res.Res.SMPTRIGBULBSWTRIGRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.ROVSMTROVSOVSS[3:0]OVS[2:0]JOVSEROVSE
Reset value0000000000000
0x14ADC_SMPR1SMPPLLSRes.SMP9 [2:0]SMP8 [2:0]SMP7 [2:0]SMP6 [2:0]SMP5 [2:0]SMP4 [2:0]SMP3 [2:0]SMP2 [2:0]SMP1 [2:0]SMP0 [2:0]
Reset value0000000000000000000000000000000
0x18ADC_SMPR2Res.Res.Res.Res.Res.SMP18 [2:0]SMP17 [2:0]SMP16 [2:0]SMP15 [2:0]SMP14 [2:0]SMP13 [2:0]SMP12 [2:0]SMP11 [2:0]SMP10 [2:0]
Reset value00000000000000000000000000
0x1CReservedRes.
0x20ADC_TR1Res.Res.Res.Res.HT1[11:0]Res.AWDFILT [2:0]LT1[11:0]
Reset value11111111111000000000000000
0x24ADC_TR2Res.Res.Res.Res.Res.Res.Res.Res.HT2[7:0]Res.Res.Res.Res.Res.Res.Res.Res.LT2[7:0]
Reset value111111100000000
0x28ADC_TR3Res.Res.Res.Res.Res.Res.Res.Res.HT3[7:0]Res.Res.Res.Res.Res.Res.Res.Res.LT3[7:0]
Reset value111111100000000

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

OffsetRegister313029282726252423222120191817161514131211109876543210
0x2CReservedRes.
0x30ADC_SQR1Res.Res.Res.SQ4[4:0]Res.SQ3[4:0]Res.SQ2[4:0]Res.SQ1[4:0]Res.L[3:0]
Reset value000000000000000000000000
0x34ADC_SQR2Res.Res.Res.SQ9[4:0]Res.SQ8[4:0]Res.SQ7[4:0]Res.SQ6[4:0]Res.SQ5[4:0]
Reset value0000000000000000000000000
0x38ADC_SQR3Res.Res.Res.SQ14[4:0]Res.SQ13[4:0]Res.SQ12[4:0]Res.SQ11[4:0]Res.SQ10[4:0]
Reset value0000000000000000000000000
0x3CADC_SQR4Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.SQ16[4:0]Res.Res.Res.Res.SQ15[4:0]Res.Res.Res.Res.
Reset value0000000000
0x40ADC_DRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.regular RDATA[15:0]
Reset value0000000000000000
0x44-0x48ReservedRes.
0x4CADC_JSQRJSQ4[4:0]Res.JSQ3[4:0]Res.JSQ2[4:0]Res.JSQ1[4:0]JEXTEN[1:0]JEXTSEL[4:0]JL[1:0]
Reset value00000000000000000000000000000
0x50-0x5CReservedRes.
0x60ADC_OFR1OFFSET_ENOFFSET_CH[4:0]SATENOFFSETPOSRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[11:0]
Reset value00000000000000000000
0x64ADC_OFR2OFFSET_ENOFFSET_CH[4:0]SATENOFFSETPOSRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[11:0]
Reset value00000000000000000000
0x68ADC_OFR3OFFSET_ENOFFSET_CH[4:0]SATENOFFSETPOSRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[11:0]
Reset value00000000000000000000
0x6CADC_OFR4OFFSET_ENOFFSET_CH[4:0]SATENOFFSETPOSRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[11:0]
Reset value00000000000000000000
0x70-0x7CReservedRes.
0x80ADC_JDR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JDATA1[15:0]
Reset value0000000000000000
0x84ADC_JDR2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JDATA2[15:0]
Reset value0000000000000000

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

OffsetRegister313029282726252423222120191817161514131211109876543210
0x88ADC_JDR3Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JDATA3[15:0]
Reset value0000000000000000
0x8CADC_JDR4Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JDATA4[15:0]
Reset value0000000000000000
0x90-0x9CReservedRes.
0xA0ADC_AWD2CRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWD2CH[18:0]
Reset value0000000000000000
0xA4ADC_AWD3CRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWD3CH[18:0]
Reset value0000000000000000
0xA8-0xACReservedRes.
0xB0ADC_DIFSELRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DIFSEL[18:0]
Reset value0000000000000000
0xB4ADC_CALFACTRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT_D[6:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value0000000000000000
0xB8-0xC4ReservedRes.
0xCC-0xFCReservedRes.

Table 254. ADC register map and reset values (master and slave ADC common registers)

OffsetRegister313029282726252423222120191817161514131211109876543210
0x304ReservedRes.
0x308ADC_CCRRes.Res.Res.Res.Res.Res.Res.VBATENTSENVREFENPRESC[3:0]CKMODE[1:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value000000000
x30C-0x3ECReservedRes.
Refer to Section 2.3 on page 131 for the register boundary addresses.