32. Analog-to-digital converters (ADC)

32.1 ADC introduction

This section describes the implementation of up to 2 ADCs:

Each ADC consists of one 12-bit successive approximation analog-to-digital converter.

Each ADC has up to 20 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 (default configuration) 32-bit data register.

The ADCs are 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 improving 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.

32.2 ADC main features

Figure 261 shows the block diagram of one ADC.

32.3 ADC implementation

Table 238. ADC features
ADC modes/featuresADC1, ADC2
Resolution12 bits
Maximum sampling speed5 Msps
(12-bit resolution)
Dual mode operationX
Offset calibrationX
Single-end inputX
Differential inputX
Injected channel conversionX
Oversamplingup to x1024
Data register32 bits
DMA supportX
Parallel data output to MDFX
Offset compensationX
Gain compensationX
Number of analog watchdog3

32.4 ADC functional description

32.4.1 ADC block diagram

Figure 261 shows the ADC block diagram and Table 239 gives the ADC pin description.

Figure 261. ADC block diagram

Figure 261. ADC block diagram. This is a detailed functional block diagram of the ADC. At the center is the 'SAR ADC' block, which receives analog input from 'Input selection & scan control' and produces 'CONVERTED DATA start'. The 'Input selection & scan control' block is connected to 'ADC_INPI', 'ADC_INNI', and 'VREF-' pins, and receives control signals like 'SWTRIG', 'BULB', 'SMPTRIG', 'JAUTO', 'JLEN[1:0]', 'JSQx[4:0]', 'LEN[3:0]', 'SQx[4:0]', 'CONT', and 'DIFSELI'. The 'SAR ADC' is also connected to 'Bias & Ref' (with pins 'VREF+' and 'VDDA'), 'Oversampler / Offset/Gain', and 'AHB interface'. The 'AHB interface' includes signals like 'ADRDY', 'EOSMP', 'EOC', 'EOS', 'OVR', 'JEOS', 'JEOC', 'AWDx', 'adc_it', 'adc_dma', 'adc_dat [15:0]', 'adc_ker_ck', and 'adc_hclk'. The 'Oversampler / Offset/Gain' block has 'OVRMOD' and 'RES[1:0]' (12, 10, 8, 6 bits) settings, and 'Oversampling options' including 'ROVSM', 'TROVS', 'OVSS[3:0]', 'OVSR[9:0]', 'JOVSE', 'ROVSE', 'OFFSET[21:0]', 'POSOFF', 'USAT', 'SSAT', 'OFFSETy_CH[4:0]', 'GCOMP', and 'GCOMPCOEFF[13:0]'. The 'Start & Stop Control' block includes 'AUTDLY', 'ADSTP', 'ADSTART', 'JADSTART', and 'JADSTP' pins, and is connected to 'SW trigger', 'EXTEN[1:0]' (trigger enable and edge selection), and 'DISCEN' (Discontinuous mode). External triggers are provided via 'adc_ext0_trg' through 'adc_ext31_trg' (EXTI mapped at product level) and 'adc_jext0_trg' through 'adc_jext31_trg' (JEXTI mapped at product level), with 'EXTSEL[4:0]' and 'JEXTSEL[4:0]' trigger selection. The 'Analog watchdog 1,2,3' block includes 'AWD1', 'AWD2', and 'AWD3' pins, and configuration registers like 'AWD1EN', 'JAWD1EN', 'AWD1SGL', 'AWD1CH[4:0]', 'AWD1_LTR.LTR[22:0]', 'AWD1_HTR.HTR[22:0]', 'AWDFILT[2:0]', 'AWD2CH[19:0]', 'AWD2_LTR.LTR[22:0]', 'AWD2_HTR.HTR[22:0]', 'AWD3CH[19:0]', 'AWD3_LTR.LTR[22:0]', and 'AWD3_HTR.HTR[22:0]'. The diagram also shows internal data paths for 'RDATA[31:0]', 'JDATA1[31:0]', 'JDATA2[31:0]', 'JDATA3[31:0]', and 'JDATA4[31:0]'. Other control signals include 'DEEPPWD', 'ADEN/ADDIS', 'CALFACT_D/S[8:0]', 'ADCALDIF', 'ADCAL', and 'CALADDOS'. The 'VREF-' pin is shown at the bottom.
Figure 261. ADC block diagram. This is a detailed functional block diagram of the ADC. At the center is the 'SAR ADC' block, which receives analog input from 'Input selection & scan control' and produces 'CONVERTED DATA start'. The 'Input selection & scan control' block is connected to 'ADC_INPI', 'ADC_INNI', and 'VREF-' pins, and receives control signals like 'SWTRIG', 'BULB', 'SMPTRIG', 'JAUTO', 'JLEN[1:0]', 'JSQx[4:0]', 'LEN[3:0]', 'SQx[4:0]', 'CONT', and 'DIFSELI'. The 'SAR ADC' is also connected to 'Bias & Ref' (with pins 'VREF+' and 'VDDA'), 'Oversampler / Offset/Gain', and 'AHB interface'. The 'AHB interface' includes signals like 'ADRDY', 'EOSMP', 'EOC', 'EOS', 'OVR', 'JEOS', 'JEOC', 'AWDx', 'adc_it', 'adc_dma', 'adc_dat [15:0]', 'adc_ker_ck', and 'adc_hclk'. The 'Oversampler / Offset/Gain' block has 'OVRMOD' and 'RES[1:0]' (12, 10, 8, 6 bits) settings, and 'Oversampling options' including 'ROVSM', 'TROVS', 'OVSS[3:0]', 'OVSR[9:0]', 'JOVSE', 'ROVSE', 'OFFSET[21:0]', 'POSOFF', 'USAT', 'SSAT', 'OFFSETy_CH[4:0]', 'GCOMP', and 'GCOMPCOEFF[13:0]'. The 'Start & Stop Control' block includes 'AUTDLY', 'ADSTP', 'ADSTART', 'JADSTART', and 'JADSTP' pins, and is connected to 'SW trigger', 'EXTEN[1:0]' (trigger enable and edge selection), and 'DISCEN' (Discontinuous mode). External triggers are provided via 'adc_ext0_trg' through 'adc_ext31_trg' (EXTI mapped at product level) and 'adc_jext0_trg' through 'adc_jext31_trg' (JEXTI mapped at product level), with 'EXTSEL[4:0]' and 'JEXTSEL[4:0]' trigger selection. The 'Analog watchdog 1,2,3' block includes 'AWD1', 'AWD2', and 'AWD3' pins, and configuration registers like 'AWD1EN', 'JAWD1EN', 'AWD1SGL', 'AWD1CH[4:0]', 'AWD1_LTR.LTR[22:0]', 'AWD1_HTR.HTR[22:0]', 'AWDFILT[2:0]', 'AWD2CH[19:0]', 'AWD2_LTR.LTR[22:0]', 'AWD2_HTR.HTR[22:0]', 'AWD3CH[19:0]', 'AWD3_LTR.LTR[22:0]', and 'AWD3_HTR.HTR[22:0]'. The diagram also shows internal data paths for 'RDATA[31:0]', 'JDATA1[31:0]', 'JDATA2[31:0]', 'JDATA3[31:0]', and 'JDATA4[31:0]'. Other control signals include 'DEEPPWD', 'ADEN/ADDIS', 'CALFACT_D/S[8:0]', 'ADCALDIF', 'ADCAL', and 'CALADDOS'. The 'VREF-' pin is shown at the bottom.

MSV69572V5

32.4.2 ADC pins and internal signals

Table 239. ADC input/output pins

Pin nameSignal typeDescription
VDDAInput, analog supplyAnalog power supply
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.
ADCx_INNi/INPiNegative/positive external analog input signals20 negative/positive external analog input channels (refer to Section 32.4.4: ADC connectivity for details)

Table 240. ADC internal input/output signals

Internal signal nameSignal typeDescription
V INPiPositive analog input channelsPositive internal analog input channels connected either to ADCx_INPi external channels or to internal channels.
V INNiNegative analog input channelsNegative internal analog input channels connected either to ADCx_INNi external channels or to internal channels
adc_ext_trgiInputsADC external trigger inputs for regular conversions. These inputs are shared between the ADC master and the ADC slave.
adc_jext_trgiInputsADC external trigger inputs for the injected conversions. These inputs are shared between the ADC master and the ADC slave.
adc_awdyOutputInternal analog watchdog output signal connected to on-chip timers. (y = Analog watchdog number 1,2,3)
adc_ker_ckInputADC kernel clock
adc_hclkInputADC peripheral clock
adc_itOutputADC interrupt
adc_dmaOutputADC DMA request
adc_dat[15:0]OutputADC data outputs

Table 241. ADC1/2 interconnection

Signal nameSource/destination
ADC1 V INP [17]V REFINT (output voltage from internal reference voltage)
ADC2 V INP [16]V BAT /4 (VBAT pin input voltage divided by 4)
ADC2 V INP [17]V DDCORE (internal logic core voltage)
ADC1 V INP [19], ADC2 V INP [19]V REF+ (higher positive reference voltage)
adc_dat1[15:0]mdf_adc1_dat[15:0]

Table 241. ADC1/2 interconnection

Signal nameSource/destination
adc_dat2[15:0]mdf_adc2_dat[15:0]
adc_ext_trg0exti11
adc_ext_trg1tim1_oc1
adc_ext_trg2tim1_oc2
adc_ext_trg3tim1_oc3
adc_ext_trg4tim1_trgo_cktim
adc_ext_trg5tim1_trgo2_cktim
adc_ext_trg6tim2_oc2
adc_ext_trg7tim2_trgo_cktim
adc_ext_trg8Reserved
adc_ext_trg9Reserved
adc_ext_trg10tim3_oc4
adc_ext_trg11tim3_trgo_cktim
adc_ext_trg12tim4_oc4
adc_ext_trg13tim4_trgo_cktim
adc_ext_trg14tim5_trgo_cktim
adc_ext_trg15tim6_trgo_cktim
adc_ext_trg16tim7_trgo_cktim
adc_ext_trg17tim8_trgo_cktim
adc_ext_trg18tim8_trgo2_cktim
adc_ext_trg19tim9_oc1
adc_ext_trg20tim9_trgo_cktim
adc_ext_trg21tim12_trgo_cktim
adc_ext_trg22tim15_trgo_cktim
adc_ext_trg23tim18_trgo_cktim
adc_ext_trg24lptim1_ch1
adc_ext_trg25lptim2_ch1
adc_ext_trg26lptim3_ch1
adc_ext_trg27Reserved
adc_ext_trg28Reserved
adc_ext_trg29Reserved
adc_ext_trg30Reserved
adc_ext_trg31Reserved
adc_jext_trg0exti15
adc_jext_trg1tim1_oc4

Table 241. ADC1/2 interconnection

Signal nameSource/destination
adc_jext_trg2Reserved
adc_jext_trg3Reserved
adc_jext_trg4tim1_trgo_cktim
adc_jext_trg5tim1_trgo2_cktim
adc_jext_trg6tim2_oc1
adc_jext_trg7tim2_trgo_cktim
adc_jext_trg8tim3_oc1
adc_jext_trg9tim3_oc3
adc_jext_trg10tim3_oc4
adc_jext_trg11tim3_trgo_cktim
adc_jext_trg12Reserved
adc_jext_trg13tim4_trgo_cktim
adc_jext_trg14tim5_trgo_cktim
adc_jext_trg15tim6_trgo_cktim
adc_jext_trg16tim7_trgo_cktim
adc_jext_trg17tim8_trgo_cktim
adc_jext_trg18tim8_trgo2_cktim
adc_jext_trg19tim9_oc2
adc_jext_trg20tim9_trgo_cktim
adc_jext_trg21tim12_trgo_cktim
adc_jext_trg22tim15_trgo_cktim
adc_jext_trg23tim18_trgo_cktim
adc_jext_trg24lptim1_ch2
adc_jext_trg25lptim2_ch2
adc_jext_trg26lptim3_ch2
adc_jext_trg27Reserved
adc_jext_trg28Reserved
adc_jext_trg29Reserved
adc_jext_trg30Reserved
adc_jext_trg31Reserved

32.4.3 ADC clocks

Dual clock domain architecture

The dual clock-domain architecture means that the ADC kernel clock is independent from the AHB bus clock that is used to access ADC registers.

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

  1. 1. The ADC clock can be provided by an internal or external clock source, which is independent and asynchronous from the AHB clock.
  2. 2. The ADC clock can be derived from AHB clock (selected in RCC).

Option 1 has the advantage of achieving the maximum ADC clock frequency whatever the AHB clock scheme selected.

Option 2 corresponds to a pseudosynchronous clock. This can be useful when the ADC is triggered by a timer and the application requires that the ADC is accurately triggered without any uncertainty (otherwise, an uncertainty of the trigger instant time is added by the resynchronizations between the two clock domains). This accurate trigger is supported only by trgo or trgo2 timer triggers.

For further details on the synchronization between ADC and timers, refer to section ADC synchronization in each timer section, and to section Peripheral clock distribution in the RCC section.

The clock is configured through the RCC and must be compliant with the operating frequency specified in the device datasheet.

Figure 262. ADC clock scheme

Figure 262. ADC clock scheme diagram showing the RCC (Reset and clock controller) connected to the ADC12 block. The RCC provides two clocks: adc_hclk to the AHB interface and adc_ker_ck to the Analog ADC1, 2 block.
graph LR; subgraph RCC [RCC (Reset and clock controller)]; end; subgraph ADC12 [ADC12]; AHB[AHB interface]; ADC[Analog ADC1, 2]; end; RCC -- adc_hclk --> AHB; RCC -- adc_ker_ck --> ADC;

The diagram illustrates the clock connections for the ADC. On the left, a box labeled 'RCC (Reset and clock controller)' has two output lines. The top line, labeled 'adc_hclk', connects to a box labeled 'AHB interface' inside a larger box labeled 'ADC12'. The bottom line, labeled 'adc_ker_ck', connects to a box labeled 'Analog ADC1, 2' inside the same 'ADC12' box. The 'ADC12' box contains both the 'AHB interface' and the 'Analog ADC1, 2' blocks. In the bottom right corner of the diagram, the text 'MSv69562V1' is present.

Figure 262. ADC clock scheme diagram showing the RCC (Reset and clock controller) connected to the ADC12 block. The RCC provides two clocks: adc_hclk to the AHB interface and adc_ker_ck to the Analog ADC1, 2 block.

Clock ratio constraint between ADC clock and AHB clock

There are no constraints to respect for the ratio between the ADC clock and the AHB clock. However, the ratio must be carefully chosen to avoid any overrun especially if the clock AHB is much slower than the ADC clock.

When adc_hclk operates at a higher frequency than adc_ker_ck, writing to the AHB register does not immediately update the ADC configuration due to clock domain crossing delays. To guarantee that the configuration is properly applied within the adc_ker_ck domain, it is necessary to wait for four adc_ker_ck clock cycles after the AHB register update.

32.4.4 ADC connectivity

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

Figure 263. ADC1 connectivity

Schematic diagram of ADC1 connectivity showing 20 channels (INP0 to INP19) with internal and external connections to a SAR ADC block.

The diagram illustrates the internal connectivity of the ADC1 block. On the left, external pins are listed: ADC1_INP0, ADC1_INN1, ADC1_INP1, ADC1_INP2, ADC1_INP3, ADC1_INP4, ADC1_INP5, ADC1_INP6, ADC1_INN2, ADC1_INP7, ADC1_INN3, ADC1_INP8, ADC1_INN4, ADC1_INP9, ADC1_INN5, ADC1_INP10, ADC1_INP11, ADC1_INP10, ADC1_INP12, ADC1_INN11, ADC1_INP13, ADC1_INN12, ADC1_INP14, ADC1_INP15, ADC1_INP16, and ADC1_INP18. These pins are connected to internal signal lines. The internal lines are organized into two columns: V_INP[0] through V_INP[19] and V_INN[0] through V_INN[19]. A 'Channel selection' block, represented by a grid of switches, connects these internal lines to the inputs of a 'SAR ADC1' block on the right. The SAR ADC1 block also receives V_REF+ and V_REF- signals. Various internal reference voltage sources are shown, including VREF- (connected to V_INN lines), VREFINT (connected to V_INP17), and VREF+ (connected to V_INP19). The diagram is labeled MSV69560V4 at the bottom right.

Schematic diagram of ADC1 connectivity showing 20 channels (INP0 to INP19) with internal and external connections to a SAR ADC block.

Figure 264. ADC2 connectivity

Figure 264. ADC2 connectivity diagram showing the mapping of external pins and internal signals to the SAR ADC2 module via a channel selection switch matrix.

The diagram illustrates the internal connectivity of the ADC2 module. On the left, external pins are listed: ADC2_INP0, ADC2_INN1, ADC2_INP1, ADC2_INP2, ADC2_INP3, ADC2_INP4, ADC2_INP5, ADC2_INP6, ADC2_INN2, ADC2_INP7, ADC2_INN3, ADC2_INP8, ADC2_INN4, ADC2_INP9, ADC2_INN5, ADC2_INP10, ADC2_INP11, ADC2_INN10, ADC2_INP12, ADC2_INN11, ADC2_INP13, ADC2_INN12, ADC2_INP14, ADC2_INP15, and ADC2_INP18. These pins are connected to internal signal lines. A central column of pins is labeled with V INP [0] through V INP [19] and V INN [0] through V INN [19]. These internal pins are connected to a SAR ADC2 block on the right through a 'Channel selection' switch matrix. The SAR ADC2 block has inputs for V INP , V INN , V REF+ , and V REF- . Several internal negative pins are connected to V REF- (V INN [0] through V INN [19]). Other internal pins are connected to specific sources: V INP [19] is connected to V REF+ , V INN [19] is connected to V REF- . Two additional internal pins, V INP [16] and V INP [17], are connected to V BAT /4 and V DDCORE respectively. The diagram is identified by the code MSV69561V4 at the bottom right.

Figure 264. ADC2 connectivity diagram showing the mapping of external pins and internal signals to the SAR ADC2 module via a channel selection switch matrix.

32.4.5 Slave AHB interface

The ADCs implement 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 it can generate AHB error in case of wrong HSIZE.

32.4.6 ADC Deep-power-down mode (DEEPPWD)

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

To activate the ADC, first exit the Deep-power-down mode by clearing the DEEPPWD bit.

When ADC operations are complete, the ADC can be disabled by clearing the ADEN bit of the ADC_CR register.

Power can be saved by entering ADC Deep-power-down mode again (by setting DEEPPWD of ADC_CR register). This is particularly interesting before entering Stop mode.

32.4.7 Single-ended and differential input channels

ADC channels can be configured to be either single-ended inputs or differential inputs by programming DIFSEL[i] bits in the ADC_DIFSEL register. This configuration must be programmed when no ADC conversion is ongoing. Note that the DIFSEL[i] bits corresponding to single-ended channels must be 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]} \) and \( V_{REF-} \) .

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

In differential mode, the output data are 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 the ADC is configured in differential mode, the input signals are supposed to be differential (the common-mode voltage must be fixed at \( V_{REF+}/2 \) voltage).

Internal channels are used in single-ended mode only.

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

Caution: When configuring 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 or differential mode, and must never be configured to be converted. Some channels

are shared between ADCs: this can make the channel on the other ADCs unusable. The only exception is interleaved mode for ADC master and the slave.

32.4.8 Calibration (ADCAL, CALADDOS, ADC_CALFACT)

A software calibration is required before launching the application. During the calibration sequence, the ADC calculates a 9-bit calibration factor, which is then internally applied to the ADC. Each ADC must follow the calibration procedure to calibrate the zero offset.

The calibration removes the offset error that may vary from chip to chip due to process or bandgap variation. It is a prerequisite to any ADC operation.

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 needs to be run by combinations of hardware and software. When the calibration procedure is complete, the calibration factor must be written to the CALFACT_S[8:0] bits for the single-ended calibration factor and CALFACT_D[8:0] for the differential calibration factor.

The calibration factor can be written only if the ADC is enabled and no conversion is ongoing (ADEN = 1, ADSTART = 0 and JADSTART = 0). It is recommended to calibrate again the ADC if \( V_{REF+} \) voltage changes of more than 10% (see Section 32.4.33: Monitoring the internal voltage reference ).

Software procedure to calibrate the ADC

  1. 1. Ensure DEEPPWD = 0, ADEN = 1 and wait until the ADRDY bit is set.
  2. 2. Set ADCAL and ensure CALADDOS = 0.
  3. 3. Select the calibration input mode by clearing ADCALDIF (single-ended input).
  4. 4. Set the ADSTART bit in the ADC_CR register.
  5. 5. Wait until the ADSTART bit is cleared or the EOC flag is set.
  6. 6. Read the ADC_DR register, then copy the converted data to the memory.
  7. 7. Repeat from step 4 several times (for example eight times).
  8. 8. Average the data stored in memory by dividing the accumulated data by the number of the conversions
  9. 9. If the averaged data is zero, set CALADDOS. Repeat all steps from step 4.
  10. 10. Store the averaged data to CALFACT_S[8:0].
  11. 11. Select the calibration input mode by setting ADCALDIF (differential input).
  12. 12. Keep the same CALADDOS setting as the one obtained during the single-end calibration.
  13. 13. Repeat steps 4 to 8.
  14. 14. Subtract 0x7FF from the averaged data. If the result is positive, store it in the CALFACT_D[8:0] bitfield. If it is negative, set CALADDOS, then repeat steps from 4 to 8.
  15. 15. Subtract again 0x7FF from the new averaged data. The resulting value is positive. Store it in CALFACT_D[8:0].
  16. 16. CALADDOS is now set, so clear ADCALDIF, and repeat steps 4 to 8.
  17. 17. Store the averaged data in CALFACT_S[8:0].
  18. 18. Clear ADCAL bit.

Software procedure to reinject a calibration factor into the ADC

  1. 1. Ensure ADSTART = 0 and JADSTART = 0 (no conversion ongoing).
  2. 2. Set ADCAL.
  3. 3. Program CALADDOS, CALFACT_S and CALFACT_D with the new calibration factors.
  4. 4. Clear ADCAL.

Note: CALFACT_S and CALFACT_D limit the maximum value of the ADC digital output. For example, in single-ended mode, if CALFACT_S = 100, the maximum ADC data output is 4095 - 100 = 3995. When the CALADDOS bit is set, an analog positive offset of about 256 is internally added to the ADC input to allow the calibration of negative offset devices. The resulting calibration factor is approximately 256. The maximum ADC output is around 4095 - 256 = 3839.

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

If the ADC has to convert both differential and single-ended inputs, two calibrations must be performed, one with ADCALDIF = 0 and one with ADCALDIF = 1.

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

First, follow the procedure described in Section 32.4.6: ADC Deep-power-down mode (DEEPPWD) .

Once DEEPPWD is cleared, the ADC can be enabled. It requires a \( t_{\text{STAB}} \) stabilization time before starting converting accurately (see Figure 265 ).

Two control bits enable or disable the ADC:

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

Injected conversions start by setting JADSTART 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 programming it to 1.
  2. 2. Set ADEN.
  3. 3. Wait until ADRDY = 1 (ADRDY is set after the ADC startup time). This can be done by using the associated interrupt (ADRDYIE must be set).
  4. 4. Clear the ADRDY bit in the ADC_ISR register by programming it to 1 (optional).

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 all regular and injected ongoing conversions by setting ADSTP and JADSTP. Then wait until ADSTP = 0 and JADSTP = 0.
  2. 2. Set ADDIS.
  3. 3. If required by the application, wait for ADEN = 0, until the analog ADC is effectively disabled (ADDIS is automatically reset once ADEN = 0).

Figure 265. Enabling/disabling the ADC

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

The diagram illustrates the timing for enabling and disabling the ADC. The ADEN signal is set high by software (S/W). After a stabilization time \( t_{STAB} \) , the hardware (H/W) sets the ADRDY signal high. The ADC state transitions from OFF to Startup during \( t_{STAB} \) , then to RDY. When a conversion is requested, it moves to Converting CH, then back to RDY. To disable, software sets ADDIS high, the state moves to REQ-OFF, and then hardware clears ADEN and ADDIS, returning the state to OFF. A legend indicates that rising arrows represent software (S/W) and falling arrows represent hardware (H/W).

MSv62472V1

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

32.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) and configure the ADEN bit in the ADC_CR register, only if the ADC is disabled (ADEN must be cleared).

The software can write the ADSTART, JADSTART and ADDIS control bits in 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).

The following constraints apply to all the other control bits of the ADC_CFGRx, 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 in the ADC_CR register only if the ADC is enabled and if there is no pending request to disable the ADC.

Note: Not all forbidden write accesses to ADC control bits are protected by hardware. In some cases, the ADC state may become unknown. To recover from this situation, the ADC must be disabled (ADEN = 0 as well as all the bits of the ADC_CR register).

32.4.11 Channel selection (ADC_SQRy, ADC_JSQR)

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

To convert one of the internal analog channels, the corresponding analog sources must first be enabled by programming VREFEN, VBATEN in the ADCC_CCR registers, or by enabling the corresponding bit in the ADC option register (ADC_OR) .

Refer to ADC interconnection tables in Section 32.4.2: ADC pins and internal signals for the connection of the above internal analog inputs to ADC pins.

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: ADCx_INN/INP3, ADCx_INN/INP8, ADCx_INN/INP2, ADCx_INN/INP2, ADCx_INN/INP0, ADCx_INN/INP2, and ADCx_INN/INP2.

ADC_SQRy registers must not be modified while a regular conversion is ongoing. ADC regular conversions must consequently be stopped by setting ADSTP (refer to Section 32.4.19: Stopping an ongoing conversion (ADSTP, JADSTP) ).

32.4.12 Channel preselection register (ADC_PCSEL)

The PCSEL bit of the ADC_PCSEL register controls the analog switch integrated in the I/O.

For each channel selected through SQRx or JSQRx bits, the corresponding PCSEL bit must be configured in advance in the ADC_PCSEL register. The ADC input multiplexer selects the ADC input according to SQRx and JSQRx configuration with very high speed. The analog switch integrated in the I/O cannot react as fast as the ADC multiplexer. To avoid the delay due to the analog switch control on the I/O, it is necessary to preselect the input channels that are selected through the SQRx and JSQRx. The selection is based on the \( V_{INP} \) of each ADC input. For example, if the ADC converts ADCx_INN/INP1, PCSEL1 bit must also be set in ADC_PCSEL register. If ADCx_INN/INP1 is configured as a differential channel, both PCSEL1 and PCSEL0 must be set, which corresponds to ADC1_INN1 and ADC2_INN1.

Note: Configuring the PCSEL bit is not necessary for the internal channels (such as \( V_{REFINT} \) ).

32.4.13 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 sufficient 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 through the SMP[2:0] bits of the ADC_SMPR1 and ADC_SMPR2 registers. It is therefore possible to select among the following sampling time values:

The total conversion time is calculated as follows (12-bit mode):

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

Example

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

\[ T_{\text{CONV}} = (1.5 + 13.5) \times \text{ADC clock cycles} = 15 \text{ ADC clock cycles} = 500 \text{ ns} \]

The ADC notifies the end of the sampling phase by asserting the EOSMP flag (only for regular conversion).

Constraints on the sampling time

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

Bulb sampling mode

The bulb sampling mode enables to obtain longer sampling time.

When the BULB bit is set in the ADC_CFGR2 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_SMPRx registers. 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).

Bulb mode is supported exclusively in regular conversion; dual mode is not supported.

The BULB bit can be modified only when the ADEN bit of the ADC_CR register is cleared.

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

Figure 266. Bulb mode timing diagram

Timing diagram for Bulb mode showing ADC state (idle, sample, conversion) and Trigger signal. It compares Normal (discontinuous) mode with Bulb (discontinuous) mode, highlighting the sampling time programmed in SMP bits.

The figure shows two timing diagrams for ADC operation. The top diagram, 'Normal (discontinuous) mode', shows a sequence of ADC states: idle, sample, conversion, idle, sample, conversion, idle. The bottom diagram, 'Bulb (discontinuous) mode', shows a sequence: idle, sample, conversion, sample, conversion, sample. In both modes, a rising edge of the Trigger signal starts a sampling period, and a falling edge ends it and starts a conversion. In Bulb mode, the sampling time is programmed in the SMP bits, as indicated by the double-headed arrow between the falling and rising edges of the trigger signal.

Timing diagram for Bulb mode showing ADC state (idle, sample, conversion) and Trigger signal. It compares Normal (discontinuous) mode with Bulb (discontinuous) mode, highlighting the sampling time programmed in SMP bits.

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 (EXTEN[1:0] = 01), each rising edge of the trigger signal starts the sampling period. A falling edge ends the sampling period and starts the conversion.

Due to the synchronization mechanism, the minimum allowed pulse width is seven adc_ker_ck periods.

When a software trigger is selected (EXTEN[1:0] = 00), the software trigger is not the ADSTART bit of ADC_CR but the SWTRIG bit. The SWTRIG bit has to be set to start the sampling period, and it has to be cleared to end the sampling period and start the conversion. In this mode, the minimum sampling time is limited to seven ADC clock cycles.

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

This mode is only compatible with the discontinuous mode. DISCNUM must be cleared for regular conversion mode. It is not supported for injected conversion mode and autoinjection mode.

When the SMPTRIG bit is set, setting the BULB bit is not allowed and only regular conversion is supported.

The sampling time control trigger mode is not compatible with the following dual modes: DUAL[4:0] = 0b00010, 0b00011, 0b00101, 0b00110, 0b00111, and 0b01001.

32.4.14 Single conversion mode

To enable the single conversion mode for regular channels, clear both CONT and DISCEN bits in ADC_CFGR1 register. To enable it on injected channel, clear JDISCEN bit.

In single conversion mode, the ADC performs once all the regular conversions of the programmed channels. This mode is started by one of the following events:

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:

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

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

32.4.15 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 all the conversions of the sequence. This mode is started by setting the CONT bit of the ADC_CFGR1 register, either by an 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, this means that it is forbidden to set both DISCEN and CONT bits.

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 Section : Autoinjection mode ).

32.4.16 Discontinuous mode (DISCEN, DISCNUM, JDISCEN)

Regular group mode

This mode is enabled by setting the DISCEN and CONT = 0 bit in the ADC_CFGR1 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_SQ \( \text{R}_y \) registers. The value of n is specified by writing to the DISCNUM[2:0] bits in the ADC_CFGR1 register.

When an external trigger occurs, it starts the next n conversions selected in the ADC_SQ \( \text{R}_y \) registers until all the conversions in the sequence are done. The total sequence length is defined by the LEN[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 devices.

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 fourth trigger reconverts the channels 1, 2 and 3 in the first 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_CFGR1 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 with DISCNUM = 0.

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 JLEN[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 devices.

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

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

32.4.17 Starting conversions (ADSTART, JADSTART)

ADC regular conversions can be started by setting ADSTART.

When ADSTART is set, the conversion starts:

The application software starts ADC injected conversions by setting JADSTART.

When JADSTART is set, the conversion starts:

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

When the hardware trigger is enabled, ADSTART and JADSTART also indicate whether an ADC operation is ongoing. The ADC can be reconfigured while ADSTART and JADSTART are both cleared, indicating that the ADC is idle.

In the case of software triggering, ADSTART and/or JADSTART must be set before ADC reconfiguration.

ADSTART is deasserted by hardware:

Note: In continuous mode (CONT = 1), ADSTART is not deasserted by hardware when EOS is asserted because the sequence is automatically relaunched.

When a hardware trigger is selected in single mode (CONT = 0 and EXTEN ≠ 0x00), ADSTART is not deasserted by hardware when EOS is asserted to help the software that does not need to reset ADSTART again for the next hardware trigger event. This ensures that no further hardware triggers are missed.

JADSTART is deasserted by hardware:

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

In bulb mode (BULB = 1), the previous end-of-conversion automatically starts the sampling, then setting ADSTART starts the conversion including the programmed sampling time.

In sampling time control trigger mode (SMPTRIG = 1), SWTRIG bit must be set to start the conversion.

32.4.18 Timing

The elapsed time between the start of a conversion and the end of a 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}} = [1.5 \text{ } t_{\text{min}} + 13.5 \text{ } t_{12\text{bit}}] \times T_{\text{ADC\_CLK}} \]

\[ T_{\text{CONV}} = T_{\text{SMPL}} + T_{\text{SAR}} = 50 \text{ ns } t_{\text{min}} + 450 \text{ ns } t_{12\text{bit}} = 500 \text{ ns (for } F_{\text{adc\_ker\_ck}} = 30 \text{ MHz)} \]

Figure 267. Analog-to-digital conversion time

Figure 267: Analog-to-digital conversion time diagram. It shows the sequence of ADC states: RDY, Sampling Ch(N), Converting Ch(N), and Sampling Ch(N+1). Signals include Analog channel (Ch(N), Ch(N+1)), Internal S/H (Sample AIN(N), Hold AIN(N), Sample AIN(N+1)), ADSTART (set by SW), EOSMP (set by HW, cleared by SW), EOC (set by HW, cleared by HW/SW), and ADC_DR (Data N-1, Data N). Timing intervals t_SMP and t_SAR are marked.

ADC state: RDY | Sampling Ch(N) | Converting Ch(N) | Sampling Ch(N+1)

Analog channel: Ch(N) | Ch(N+1)

Internal S/H: Sample AIN(N) (1) | Hold AIN(N) (1) | Sample AIN(N+1) (1)

ADSTART: Set by SW

EOSMP: Set by HW | Cleared by SW

EOC: Set by HW | Cleared by HW/SW

ADC_DR: Data N-1 | Data N

Indicative timings: \( t_{SMP}^{(2)} \) | \( t_{SAR}^{(3)} \)

MSV30532V3

Figure 267: Analog-to-digital conversion time diagram. It shows the sequence of ADC states: RDY, Sampling Ch(N), Converting Ch(N), and Sampling Ch(N+1). Signals include Analog channel (Ch(N), Ch(N+1)), Internal S/H (Sample AIN(N), Hold AIN(N), Sample AIN(N+1)), ADSTART (set by SW), EOSMP (set by HW, cleared by SW), EOC (set by HW, cleared by HW/SW), and ADC_DR (Data N-1, Data N). Timing intervals t_SMP and t_SAR are marked.
  1. 1. AIN represents the input voltage captured by the internal Sample and Hold (S/H) capacitor.
  2. 2. \( t_{SMP} \) depends on SMP[2:0].
  3. 3. \( t_{SAR} \) depends on RES[2:0].

Note: The bulb and the sampling time control trigger modes are not described in Figure 267: Analog-to-digital conversion time.

32.4.19 Stopping an ongoing conversion (ADSTP, JADSTP)

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

Stopping conversions resets the ongoing ADC operation. The ADC can then be reconfigured (for example by changing the channel selection or the trigger). It is then ready for a new operation.

Injected conversions can be stopped while regular conversions are still ongoing and vice versa. This allows, for instance, the reconfiguration of the injected conversion sequence and triggers while regular conversions are still ongoing (and vice versa).

When the ADSTP bit is set by software, any ongoing regular conversion is aborted with the partial result discarded (the 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 (the ADC_JDRy register is not updated with the current conversion). The scan sequence is also aborted and reset (meaning that relaunching the ADC restarts a new sequence).

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

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

Figure 268. Stopping ongoing regular conversions

Timing diagram for stopping ongoing regular conversions. It shows the ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(N), C, RDY) triggered by a 'Trigger' signal. The JADSTART signal is shown as a constant low. The ADSTART signal is set by software (SW) to start 'REGULAR CONVERSIONS ongoing' and is cleared by hardware (HW) when the ADC returns to the RDY state. The ADSTP signal is set by SW and cleared by HW. The ADC_DR register shows data N-2 and Data N-1 being updated.

ADC state: RDY → Sample Ch(N-1) → Convert Ch(N-1) → RDY → Sample Ch(N) → C → RDY

Trigger: ↓ (at start of Sample Ch(N-1)), ↓ (at start of Sample Ch(N))

JADSTART: (constant low)

ADSTART: Set by SW → REGULAR CONVERSIONS ongoing (software is not allowed to configure regular conversions selection and triggers) → Cleared by HW

ADSTP: Set by SW → Cleared by HW

ADC_DR: Data N-2 → Data N-1

MS30533V2

Timing diagram for stopping ongoing regular conversions. It shows the ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(N), C, RDY) triggered by a 'Trigger' signal. The JADSTART signal is shown as a constant low. The ADSTART signal is set by software (SW) to start 'REGULAR CONVERSIONS ongoing' and is cleared by hardware (HW) when the ADC returns to the RDY state. The ADSTP signal is set by SW and cleared by HW. The ADC_DR register shows data N-2 and Data N-1 being updated.

Figure 269. Stopping ongoing regular and injected conversions

Timing diagram for stopping ongoing regular and injected conversions. It shows the ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(M), C, RDY, Sample, RDY) triggered by 'Regular trigger', 'Injected trigger', and 'Regular trigger' signals. The JADSTART signal is set by SW to start 'INJECTED CONVERSIONS ongoing' and is cleared by HW. The JADSTP signal is set by SW and cleared by HW. The ADSTART signal is set by SW to start 'REGULAR CONVERSIONS ongoing' and is cleared by HW. The ADSTP signal is set by SW and cleared by HW. The ADC_JDR register shows DATA M-1 being updated. The ADC_DR register shows DATA N-2 and DATA N-1 being updated.

ADC state: RDY → Sample Ch(N-1) → Convert Ch(N-1) → RDY → Sample Ch(M) → C → RDY → Sample → RDY

Regular trigger: ↓ (at start of Sample Ch(N-1)), ↓ (at start of Sample)

Injected trigger: ↓ (at start of Sample Ch(M))

JADSTART: Set by SW → INJECTED CONVERSIONS ongoing (software is not allowed to configure injected conversions selection and triggers) → Cleared by HW

JADSTP: Set by SW → Cleared by HW

ADC_JDR: DATA M-1

ADSTART: Set by SW → REGULAR CONVERSIONS ongoing (software is not allowed to configure regular conversions selection and triggers) → Cleared by HW

ADSTP: Set by SW → Cleared by HW

ADC_DR: DATA N-2 → DATA N-1

MS30534V2

Timing diagram for stopping ongoing regular and injected conversions. It shows the ADC state (RDY, Sample Ch(N-1), Convert Ch(N-1), RDY, Sample Ch(M), C, RDY, Sample, RDY) triggered by 'Regular trigger', 'Injected trigger', and 'Regular trigger' signals. The JADSTART signal is set by SW to start 'INJECTED CONVERSIONS ongoing' and is cleared by HW. The JADSTP signal is set by SW and cleared by HW. The ADSTART signal is set by SW to start 'REGULAR CONVERSIONS ongoing' and is cleared by HW. The ADSTP signal is set by SW and cleared by HW. The ADC_JDR register shows DATA M-1 being updated. The ADC_DR register shows DATA N-2 and DATA N-1 being updated.

32.4.20 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 (for example 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.

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

All hardware triggers that occur while a conversion is ongoing are ignored:

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

Table 242. 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 (sampling time controlled in SMPTRIG mode)
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 243. Configuring the trigger polarity for injected external triggers

JEXTEN[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

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

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

Figure 270. Triggers shared between ADC master and slave

Figure 270: Triggers shared between ADC master and slave. The diagram shows two ADC blocks, 'ADC MASTER' and 'ADC SLAVE', sharing external trigger signals. On the left, 'Regular sequencer triggers' include adc_ext_trg0, adc_ext_trg1, ..., adc_ext_trg31. 'Injected sequencer triggers' include adc_jext_trg0, adc_jext_trg1, ..., adc_jext_trg31. These signals are connected to multiplexers within the ADC blocks. The 'ADC MASTER' has 'External regular trigger' and 'External injected trigger' outputs, controlled by 'EXTSEL[3:0]' and 'JEXTSEL[4:0]' registers. The 'ADC SLAVE' has similar 'External regular trigger' and 'External injected trigger' outputs, also controlled by 'EXTSEL[3:0]' and 'JEXTSEL[4:0]' registers. The diagram illustrates how the same external trigger signals can be used by both the master and slave ADCs.
Figure 270: Triggers shared between ADC master and slave. The diagram shows two ADC blocks, 'ADC MASTER' and 'ADC SLAVE', sharing external trigger signals. On the left, 'Regular sequencer triggers' include adc_ext_trg0, adc_ext_trg1, ..., adc_ext_trg31. 'Injected sequencer triggers' include adc_jext_trg0, adc_jext_trg1, ..., adc_jext_trg31. These signals are connected to multiplexers within the ADC blocks. The 'ADC MASTER' has 'External regular trigger' and 'External injected trigger' outputs, controlled by 'EXTSEL[3:0]' and 'JEXTSEL[4:0]' registers. The 'ADC SLAVE' has similar 'External regular trigger' and 'External injected trigger' outputs, also controlled by 'EXTSEL[3:0]' and 'JEXTSEL[4:0]' registers. The diagram illustrates how the same external trigger signals can be used by both the master and slave ADCs.

Refer to ADC interconnection tables in Section 32.4.2: ADC pins and internal signals for the list of the external triggers.

32.4.21 Injected channel management

Triggered injection mode

To use triggered injection, the JAUTO bit in the ADC_CFGR1 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 if JDISCEN = 0).
  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 271 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.

Timing diagram showing the relationship between adc_ker_ck, Injection event, Reset ADC, and Start of sampling. The diagram illustrates the maximum latency (max. latency(1)) between the start of sampling and the injection event. The adc_ker_ck signal is a periodic square wave. The Injection event is a pulse that occurs after the start of sampling. The Reset ADC signal is a pulse that occurs after the injection event. The Start of sampling signal is a pulse that occurs before the injection event. The maximum latency is indicated by a double-headed arrow between the start of sampling and the injection event.

Figure 271. Injected conversion latency during ongoing regular conversion

Timing diagram showing the relationship between adc_ker_ck , Injection event , Reset ADC , and Start of sampling . The diagram illustrates the maximum latency ( max. latency (1) ) between the start of sampling and the injection event. The adc_ker_ck signal is a periodic square wave. The Injection event is a pulse that occurs after the start of sampling. The Reset ADC signal is a pulse that occurs after the injection event. The Start of sampling signal is a pulse that occurs before the injection event. The maximum latency is indicated by a double-headed arrow between the start of sampling and the injection event.

MSV69546V2

Timing diagram showing the relationship between adc_ker_ck, Injection event, Reset ADC, and Start of sampling. The diagram illustrates the maximum latency (max. latency(1)) between the start of sampling and the injection event. The adc_ker_ck signal is a periodic square wave. The Injection event is a pulse that occurs after the start of sampling. The Reset ADC signal is a pulse that occurs after the injection event. The Start of sampling signal is a pulse that occurs before the injection event. The maximum latency is indicated by a double-headed arrow between the start of sampling and the injection event.
  1. 1. The maximum latency value can be found in the electrical characteristics of the device datasheet.

Autoinjection mode

If the JAUTO bit in the ADC_CFGR1 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.

Note: Autoinjection mode is compatible with discontinuous mode.

32.4.22 Programmable resolution (RES) - fast conversion mode

Faster conversions can be performed by reducing the ADC resolution.

The resolution can be configured to be either 12, 10, 8, or 6 bits by programming the RES[1:0] control bits. Figure 276 , Figure 277 , Figure 278 and Figure 279 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 244 .

Table 244. T SAR timings depending on resolution
RES (bits)T SAR (ADC clock cycles)T SAR (ns) at F adc_ker_ck = 30 MHzT CONV (ADC clock cycles) (with Sampling time= 1.5 ADC clock cycles)T CONV (ns) at F adc_ker_ck = 30 MHz
1213.5 ADC clock cycles450 ns15 ADC clock cycles500.0 ns
1011.5 ADC clock cycles383.33 ns13 ADC clock cycles433.33 ns
88.5 ADC clock cycles203.33 ns10 ADC clock cycles333.33 ns
66.5 ADC clock cycles216.67 ns8 ADC clock cycles266.66 ns

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

The ADC notifies the application at the end of each regular conversion (EOC) event and 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 the EOCIE bit is set. The software can clear the EOC flag either by programming it to 1 or by reading ADC_DR. If ADC_DR FIFO is not emptied, the EOC flag is set again and an interrupt can be generated again.

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

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

32.4.24 End of conversion sequence (EOS, JEOS)

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

The ADC sets the EOS flag as soon as the conversion of the last data of the regular sequence is complete. An interrupt can be generated if the EOSIE bit is set. The EOS flag is cleared by the software by programming it to 1.

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

32.4.25 Timing diagram examples (single/continuous modes, hardware/software triggers)

Figure 272. Single conversions of a sequence, software trigger

Timing diagram for single conversions of a sequence with software trigger. The diagram shows four signal lines over time: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), and ADC state. The ADC state is divided into segments: RDY, CH1, CH9, CH10, CH17, RDY, CH1, CH9, CH10, CH17, RDY. The ADC_DR register shows data for each channel: D1, D9, D10, D17, X, D1, D9, D10, D17. The first sequence is triggered by a software (SW) rising edge on ADSTART. The second sequence is triggered by a hardware (HW) rising edge on ADSTART. The EOC signal pulses for each conversion. The EOS signal goes high after the last conversion of the first sequence and low after the last conversion of the second sequence. A dashed vertical line separates the two sequences. A legend indicates 'by SW' with a rising edge and 'by HW' with a rising edge. A box labeled 'Indicative timings' is present. The code MSv30549V2 is in the bottom right corner.
Timing diagram for single conversions of a sequence with software trigger. The diagram shows four signal lines over time: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), and ADC state. The ADC state is divided into segments: RDY, CH1, CH9, CH10, CH17, RDY, CH1, CH9, CH10, CH17, RDY. The ADC_DR register shows data for each channel: D1, D9, D10, D17, X, D1, D9, D10, D17. The first sequence is triggered by a software (SW) rising edge on ADSTART. The second sequence is triggered by a hardware (HW) rising edge on ADSTART. The EOC signal pulses for each conversion. The EOS signal goes high after the last conversion of the first sequence and low after the last conversion of the second sequence. A dashed vertical line separates the two sequences. A legend indicates 'by SW' with a rising edge and 'by HW' with a rising edge. A box labeled 'Indicative timings' is present. The code MSv30549V2 is in the bottom right corner.
  1. 1. EXTEN[1:0] = 00, CONT = 0
  2. 2. Channels selected = 1, 9, 10, 17; AUTDLY = 0.

Figure 273. Continuous conversion of a sequence, software trigger

Timing diagram for continuous conversion of a sequence with software trigger. The diagram shows five signal lines over time: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), ADSTP (stop), and ADC state. The ADC state is divided into segments: READY, CH1, CH9, CH10, CH17, CH1, CH9, CH10, STP, READY, CH1, CH9. The ADC_DR register shows data for each channel: D1, D9, D10, D17, D1, D9, X, D1. The first sequence is triggered by a software (SW) rising edge on ADSTART and runs continuously until a stop (STP) is signaled. The second sequence is triggered by a hardware (HW) rising edge on ADSTART and runs until the ADSTP signal goes high. The EOC signal pulses for each conversion. The EOS signal goes high after the last conversion of the first sequence and low after the last conversion of the second sequence. A dashed vertical line separates the two sequences. A legend indicates 'by SW' with a rising edge and 'by HW' with a rising edge. A box labeled 'Indicative timings' is present. The code MSv30550V2 is in the bottom right corner.
Timing diagram for continuous conversion of a sequence with software trigger. The diagram shows five signal lines over time: ADSTART (software trigger), EOC (end of conversion), EOS (end of sequence), ADSTP (stop), and ADC state. The ADC state is divided into segments: READY, CH1, CH9, CH10, CH17, CH1, CH9, CH10, STP, READY, CH1, CH9. The ADC_DR register shows data for each channel: D1, D9, D10, D17, D1, D9, X, D1. The first sequence is triggered by a software (SW) rising edge on ADSTART and runs continuously until a stop (STP) is signaled. The second sequence is triggered by a hardware (HW) rising edge on ADSTART and runs until the ADSTP signal goes high. The EOC signal pulses for each conversion. The EOS signal goes high after the last conversion of the first sequence and low after the last conversion of the second sequence. A dashed vertical line separates the two sequences. A legend indicates 'by SW' with a rising edge and 'by HW' with a rising edge. A box labeled 'Indicative timings' is present. The code MSv30550V2 is in the bottom right corner.
  1. 1. EXTEN[1:0] = 00, CONT = 1
  2. 2. Channels selected = 1, 9, 10, 17; AUTDLY = 0.

Figure 274. Single conversions of a sequence, hardware trigger

Timing diagram for single conversions of a sequence with hardware trigger. It shows signals ADSTART, EOC, EOS, TRGX(1), ADC state(2), and ADC_DR over time. ADSTART is a rising edge. EOC pulses for each conversion. EOS is a rising edge after the last conversion. TRGX(1) shows a rising edge that triggers a conversion, while falling edges are ignored. ADC state shows RDY, CH1, CH2, CH3, CH4, READ, CH1, CH2, CH3, CH4, RDY. ADC_DR shows data D1, D2, D3, D4, D1, D2, D3, D4. Legend: by s/w (rising edge), by h/w (rising edge), triggered (rising edge), ignored (crossed out rising edge), Indicative timings.
Timing diagram for single conversions of a sequence with hardware trigger. It shows signals ADSTART, EOC, EOS, TRGX(1), ADC state(2), and ADC_DR over time. ADSTART is a rising edge. EOC pulses for each conversion. EOS is a rising edge after the last conversion. TRGX(1) shows a rising edge that triggers a conversion, while falling edges are ignored. ADC state shows RDY, CH1, CH2, CH3, CH4, READ, CH1, CH2, CH3, CH4, RDY. ADC_DR shows data D1, D2, D3, D4, D1, D2, D3, D4. Legend: by s/w (rising edge), by h/w (rising edge), triggered (rising edge), ignored (crossed out rising edge), Indicative timings.

Figure 275. Continuous conversions of a sequence, hardware trigger

Timing diagram for continuous conversions of a sequence with hardware trigger. It shows signals ADSTART, EOC, EOS, ADSTP, TRGX(1), ADC(2), and ADC_DR over time. ADSTART is a rising edge. EOC pulses for each conversion. EOS is a rising edge. ADSTP is a rising edge that stops conversions. TRGX(1) shows a rising edge that triggers conversions, while falling edges are ignored. ADC(2) shows RDY, CH1, CH2, CH3, CH4, CH1, CH2, CH3, CH4, CH1, STOP, RDY. ADC_DR shows data D1, D2, D3, D4, D1, D2, D3, D4. Legend: by s/w (rising edge), by h/w (rising edge), triggered (rising edge), ignored (crossed out rising edge), Not in scale timings.
Timing diagram for continuous conversions of a sequence with hardware trigger. It shows signals ADSTART, EOC, EOS, ADSTP, TRGX(1), ADC(2), and ADC_DR over time. ADSTART is a rising edge. EOC pulses for each conversion. EOS is a rising edge. ADSTP is a rising edge that stops conversions. TRGX(1) shows a rising edge that triggers conversions, while falling edges are ignored. ADC(2) shows RDY, CH1, CH2, CH3, CH4, CH1, CH2, CH3, CH4, CH1, STOP, RDY. ADC_DR shows data D1, D2, D3, D4, D1, D2, D3, D4. Legend: by s/w (rising edge), by h/w (rising edge), triggered (rising edge), ignored (crossed out rising edge), Not in scale timings.

32.4.26 Data management

Data register, data alignment and offset (ADC_DR, ADC_JDRy, OFFSETy, OFFSETy_CH, OVSS, LSHIFT, JOVSS (a) , JLSHIFT (a) , USAT, SSAT, POSOFF)

Data and alignment

At the end of each regular channel conversion (when an EOC event occurs), the result of the converted data is stored in the 32-bit wide ADC_DR data register with FIFO (when OVRMOD = 0). Since the data register has eight levels of FIFO, the EOC flag is raised again as far as the FIFO is not emptied.

At the end of each injected channel conversion (when a JEOC event occurs), the result of the converted data is stored in the 32-bit wide corresponding ADC_JDRy data register.

The OVSS[3:0], LSHIFT[3:0], JOVSS[3:0], and JLSHIFT[3:0] bitfields in the ADC_CFGR2 register select the alignment of the data stored after the conversion. By default, data are right-aligned. Refer to Figure 276 , Figure 277 , Figure 278 , and Figure 279 for examples of data alignment.

Note: The data can be aligned in normal and oversampling mode. The OVSS[3:0] bitfield is only effective in oversampling mode.
JOVSS[3:0] and JLSHIFT[3:0] is reserved for injected conversions. Their usage is the same as OVSS[3:0] and LSHIFT[3:0], unless otherwise specifically described.

Offset

An unsigned offset value y (y = 1, 2, 3, 4) can be applied to a channel by programming a value different from 0 in the OFFSET[21:0] bitfield of the ADC_OFRy register. The channel to which the offset is applied is programmed to the OFFSETy_CH[4:0] bits of ADC_OFCFGRy register. The offset can be positive or negative depending on the value of POSOFF bit. When POSOFF is cleared, the converted value is subtracted by the user-defined offset written in OFFSET[21:0] bits. The result can be a negative value. The read data is consequently signed and the SEXT bit represents the extended sign value.

The offset value must be lower than the maximum conversion value (for example the maximum offset value is 0xFFF in 12-bit mode).

The offset can be used to convert unsigned data to signed data (for example the offset value is equal to 0x800 in 12-bit mode).

The offset correction is also supported in oversampling mode. In this mode, the offset is subtracted when all the oversampling operations are complete.

Note: If the OFFSET channel is selected but the offset value is 0x0000, this offset programming is ignored. If the same OFFSET channel is programmed in different registers multiple times, the first programmed register takes priority.

Table 250 describes how the computation is performed for all the possible ADC resolutions and offset settings.

a. Only for products that include this bit.

Table 245. Offset computation versus data resolution

Resolution (RES[1:0] bits)Subtraction between raw converted data and offsetResultComments
Raw converted Data, left alignedOffset
00: 12-bitDATA[11:0]OFFSET[11:0]Signed or unsigned 24-bit data, right aligned to [11:0]-
01: 10-bitDATA[11:2],00OFFSET[11:2]Signed or unsigned 24-bit data, right aligned to [9:0]The user must configure OFFSET[1:0] to 0b00.
10: 8-bitDATA[11:4],0000OFFSET[11:4]Signed or unsigned 24 bit data right aligned to [7:0]The user must configure OFFSET[3:0] to 0b0000.
11: 6-bitDATA[11:6],000000OFFSET[11:6]Signed or unsigned 24 bit data right aligned to [5:0]The user must configure OFFSET[5:0] to 0b000000.

Figure 276, Figure 277, Figure 278 and Figure 279 show alignments for signed and unsigned data. JOVSS and JLSHIFT are not described here, but they behave the same as OVSS and LSHIFT.

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

Diagram showing right alignment of ADC data for various resolutions (12-bit, 10-bit, 8-bit) and offset settings (OVSR = 1024).

The diagram illustrates the right alignment of ADC data for different resolutions and offset settings. It shows the mapping of data bits (D11..D0, D9..D0, D7..D0) into a 32-bit register, considering the offset (OVSR) and the right alignment shift (JLSHIFT).

Bit positions are indicated at the top of each alignment diagram: 31, 15, 11, 0 for 12-bit; 31, 15, 9, 0 for 10-bit; 31, 15, 7, 0 for 8-bit; 31, 21, 15, 0 for 12-bit with OVSR=1024 and OVSS=0000; and 31, 15, 11, 0 for 12-bit with OVSR=1024 and OVSS=1010.

MSV66828V3

Diagram showing right alignment of ADC data for various resolutions (12-bit, 10-bit, 8-bit) and offset settings (OVSR = 1024).

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

Diagram showing right alignment of ADC data for various bit widths (12-bit, 10-bit, 8-bit) with sign extension (SEXT) and offset enabled. Bit positions 31, 15, 11, 9, 7, 0 are marked. Formats include signed 32-bit or 16-bit, and signed 8-bit with SSAT=1. OVSR=1024 and OVSS=0000 are also indicated.

Figure 277 illustrates the right alignment of ADC data when offset is enabled and the value is signed. The diagram shows five examples of data alignment within a 32-bit register:

MSv66829V3

Diagram showing right alignment of ADC data for various bit widths (12-bit, 10-bit, 8-bit) with sign extension (SEXT) and offset enabled. Bit positions 31, 15, 11, 9, 7, 0 are marked. Formats include signed 32-bit or 16-bit, and signed 8-bit with SSAT=1. OVSR=1024 and OVSS=0000 are also indicated.

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

Diagram showing left alignment of ADC data for various bit widths (12-bit, 10-bit, 8-bit) with zero padding and offset disabled. Bit positions 31, 23, 15, 3, 5, 7, 9, 0 are marked. LSHIFT values are 4, 6, 0, 10 respectively. OVSR=1024 is also indicated.

Figure 278 illustrates the left alignment of ADC data when offset is disabled and the value is unsigned. The diagram shows four examples of data alignment within a 32-bit register:

MSv66830V3

Diagram showing left alignment of ADC data for various bit widths (12-bit, 10-bit, 8-bit) with zero padding and offset disabled. Bit positions 31, 23, 15, 3, 5, 7, 9, 0 are marked. LSHIFT values are 4, 6, 0, 10 respectively. OVSR=1024 is also indicated.

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

Diagram showing various data alignment formats for 12-bit, 10-bit, and 8-bit ADC data. It includes bit positions (31, 15, 0), shift values (LSHIFT), and saturation settings (SSAT).

The diagram illustrates the internal bit representation of ADC data for different resolutions and settings:

MSv66831V3

Diagram showing various data alignment formats for 12-bit, 10-bit, and 8-bit ADC data. It includes bit positions (31, 15, 0), shift values (LSHIFT), and saturation settings (SSAT).

Management of signed and unsigned saturation format (SSAT, USAT)

The offset correction might result in the data width to be wider than the original data.

To limit the original data width, the data saturation can be enabled through the SSAT and USAT bits of the ADC_OFCFGRy register.

Unsigned 12-bit data can be extended to 13-bit signed data by using an offset value different from 0x800.

The original data width can be preserved by setting SSAT bit to limit the data width to 12 bits.

Unsigned data can be saturated to the original data width by setting the USAT bit.

Table 246 shows the sign-extended data format corresponding to different resolutions.

Table 246.12-bit data formats

SSATUSATFormatData range (offset =0x800)
00Sign-extended 13-bit significant data:
SEXT[31:13]
DATA[12:0]
0x0000 07FF - 0xFFFF F800
10Sign-extended 12-bit significant data:
SEXT[31:12]
DATA[11:0]
0x7FF - 0x800

Table 246.12-bit data formats

SSATUSATFormatData range (offset =0x800)
01Unsigned saturation 12-bit signification data: DATA[11:0]0xFFF - 0x000
11Reserved-

Table 247 provides numerical examples for four different offset values.

Table 247. Numerical examples for 32-bit or 16-bit format (POSSPFF = 0)

Raw conversion resultOffset valueResult
SSAT = 0
USAT = 0
Result
SSAT = 0
USAT = 1
Result
SSAT = 1
USAT = 0
0xFFF0x8000x0000 07FF0x07FF0x07FF
0x8000x0000 00000x00000x0000
0x0000xFFFF F8000x00000xF800
0xFFF0x8200x0000 07DF0x07DF0x07DF
0x8000xFFFF FFE00x00000xFFE0
0x0000xFFFF F7E00x00000xF7E0
0xFFF0x7E00x0000 081F0x081F0x07FF
0x8000x0000 00200x00200x0020
0x0000xFFFF F8200x00000xF820
0xFFF0x0200x0000 0FDF0x0FDF0x0FDF
0x8000x0000 07E00x07E00x07E0
0x0000xFFFF FFE00x00000xFFE0

Caution: SSAT must not be used in conjunction with USAT. No hardware check is performed to ensure that this condition is respected.

Gain compensation

When the GCOMP bit is set in the ADC_GCOMP register, the gain compensation is activated on all the converted data. After each conversion, data is calculated using the following formula.

\[ \text{DATA} = \text{DATA}(\text{adc result}) \times (\text{GCOMPCOEFF}) / 4096 \]

As GCOMPCOEFF can be programmed from 0 to 16383, the actual gain compensation factor can range from 0 to 3.999756.

Before storing the resulting data in RDATAx or JDATAx bitfields, the LSB - 1 value is evaluated to round up the data and minimize the error.

The gain compensation is also effective for the oversampling. When the gain compensation is used in oversampling mode, the gain calculation is performed after the accumulation and

right-shift operations to minimize the power consumption (the gain calculation is done only once and not at each conversion).

The internal multiplier width is 32 bits and the input data width for the gain compensation must be less than 18 bits. When using oversampling with injected and regular conversion mode, the ROVSM bit of the ADC_CFGR2 register must be set to resume the pending conversion with the correct value.

When the gain compensation is activated, the ADC data latency is increased by one clock cycle. In continuous and scan conversion modes, the ADC conversion rate does not change.

ADC overrun (OVR, OVRMOD)

The overrun flag (OVR) issues a notification that the regular converted data has not been read (by the CPU or the DMA) before the ADC_DR FIFO (eight stages) is overflowed, or adc_hclk clock is too slow to manage the data.

The OVR flag is set when a new conversion completes while ADC_DR as single register or FIFO output is full. An interrupt is generated if the OVRIE bit is set.

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. The OVR flag is cleared by software by programming it to 1.

Data can be configured to be preserved or overwritten when an overrun event occurs by programming the control bit OVRMOD:

The overrun event preserves the data register from being overwritten: the old data are maintained up to ADC_DR FIFO depth (eight data) and the new conversion is discarded and lost. If OVR remains at 1, further conversions occur but the result data is also discarded. The FIFO can be emptied through ADC_DR read access by the CPU while the OVR flag is set.

The data register is overwritten with the last conversion result and the previous unread data is lost. In this mode, ADC_DR FIFO is disabled. If OVR remains at 1, any further conversion is performed normally and the ADC_DR register always contains the latest converted data. In this mode, DMA burst mode nor MDF output mode cannot be supported.

Figure 280. Example of overrun (OVRMOD = 0)

Timing diagram for Figure 280 showing an overrun condition when OVRMOD = 0. The diagram illustrates the relationship between ADSTART, EOC, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, ADC_DR, and ADC_DR (FIFO_DATA) signals. It shows that when a new conversion starts before the previous one is read, data is lost in the FIFO. software trigger symbol hardware trigger symbol triggered symbol

This timing diagram illustrates an overrun condition when OVRMOD = 0. The signals shown are:

Legend:
by s/w by h/w triggered
Indicative timings

MSv69549V1

Timing diagram for Figure 280 showing an overrun condition when OVRMOD = 0. The diagram illustrates the relationship between ADSTART, EOC, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, ADC_DR, and ADC_DR (FIFO_DATA) signals. It shows that when a new conversion starts before the previous one is read, data is lost in the FIFO. software trigger symbol hardware trigger symbol triggered symbol

Figure 281. Example of overrun (OVRMOD = 1)

Timing diagram for Figure 281 showing an overrun condition when OVRMOD = 1. The diagram illustrates the relationship between ADSTART, EOC, EOS, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, and ADC_DR (OVRMOD=1) signals. It shows that when OVRMOD = 1, the overrun is detected and the current conversion result is preserved. software trigger symbol hardware trigger symbol triggered symbol

This timing diagram illustrates an overrun condition when OVRMOD = 1. The signals shown are:

Legend:
by s/w by h/w triggered
Indicative timings

MSv31019V2

Timing diagram for Figure 281 showing an overrun condition when OVRMOD = 1. The diagram illustrates the relationship between ADSTART, EOC, EOS, OVR, ADSTP, TRGx, ADC state, ADC_DR read access, and ADC_DR (OVRMOD=1) signals. It shows that when OVRMOD = 1, the overrun is detected and the current conversion result is preserved. software trigger symbol hardware trigger symbol triggered symbol

Note: Even if overrun may occur for injected channels, there is no overrun detection on these 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 errors.

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 the OVR flag must 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

When the DMA mode is enabled (DMNGT[1:0] = 01 or 11 in the ADC_CFGR1 register in single ADC mode), a DMA request is generated after each channel conversion. This allows the transfer of the converted data from the ADC_DR register to the destination location configured in the DMA.

Despite this, if an overrun occurs (OVR = 1) because the DMA cannot 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. (OVRMOD = 0).

When OVRMOD = 1, even if DMA does not transfer the data immediately, new data overwrite ADC_DR, causing DMA to potentially skip data. As a result, some conversion results may be missed in the data transferred to RAM.

Depending on the configuration of the OVRMOD bit, the data are either preserved or overwritten (refer to Section : ADC overrun (OVR, OVRMOD) ). If OVRMOD = 0 (data preserved), DMA transfer requests are blocked.

DMA can be configured through the DMNGT[1:0] bitfield of the ADC_CFGR1 register. Refer to Section 32.4.31: Dual ADC modes for information on DMA usage with dual ADC mode.

DMA one-shot mode (DMNGT[1:0] = 01)

In one-shot 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 (that is when DMA_LACK interrupt occurs, see Direct-memory controller section) even if a new conversion has been started.

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

DMA circular mode (DMNGT[1:0] = 11)

In circular mode, the ADC generates a DMA transfer request each time a new conversion data is available in the data register. This allows the configuration of the DMA in circular mode to handle a continuous analog input data stream.

DMA single-transfer or burst mode with FIFO (OVRMOD = 0)

The output data register features an eight-stage FIFO. Two different DMA requests are generated in parallel. When a data is available, an “SREQ single request” is generated. When four data are available, a “BREQ burst request” is generated. The DMA can be programmed either in single-transfer mode or in burst mode (four beats). The appropriate request line is selected by the DMA according to the mode selected. Refer to Section Direct memory access controller for further information.

Due to the existence of FIFO, DMA requests are generated until the FIFO is emptied. To stop DMA requests even when the FIFO is not emptied, set the ADSTP bit.

DMA for dual mode

Refer to Section 32.4.31: Dual ADC modes .

32.4.27 Managing conversions using the MDF

The ADC conversion results can be transferred directly to the MDF.

In this case, the DMNGT[1:0] bits must be set to 10.

The ADC transfers the 16 least significant bits of the regular data register to the MDF through adcx_dat[15:0] bus, which in turn resets the EOC flag once the transfer is effective.

The data format must be in 16-bit signed format:

ADC_DR[31:16] = Don't care

ADC_DR[15] = Sign

ADC_DR[14:0] = Data

Any value above the 16-bit signed format is truncated.

To obtain a 16-bit signed format, the OFFSET function needs to be activated.

In this mode, OVRMOD = 1 is not supported.

32.4.28 Dynamic low-power features

Autodelayed conversion mode (AUTDLY)

The ADC implements an autodelayed conversion mode controlled by the AUTDLY configuration bit in ADC_CFGR1. Autodelayed conversions are useful to simplify the software as well as to optimize performance of an application clocked at low frequency where there must be risk of encountering an ADC overrun.

Regular conversion mode

When AUTDLY is set, a new conversion can start if the following conditions are met:

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

The delay is inserted after each regular conversion.

Injected conversion mode

When AUTDLY is set, a new conversion can start only if the JEOS bit has been cleared (see Figure 283 ). Since there are four ADC_JDRy registers, the autodelay is performed at the end on the injected conversion sequence.

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

A hardware trigger event occurring during this delay is ignored.

No delay is inserted between regular and injected conversions. The autodelay for regular and injected modes is managed separately.

Caution: The behavior is slightly different in autoinjection 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 286 ).

In autoinjection mode, there is no delay between the last regular conversion and the first injected conversion. The user must clear the last EOC flag before clearing the JEOS flag, otherwise the next sequence might start before EOC flag is cleared.

In autodelay 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 autodelay mode with JAUTO = 0, 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.

Note: AUTDLY mode is not supported with SMPTRIG or BULB mode.

Figure 282. AUTDLY = 1, regular conversion in continuous mode, software trigger

Timing diagram for Figure 282 showing ADC operation in continuous mode with software trigger and AUTDLY=1. The diagram shows the relationship between ADSTART(1), EOC, EOS, ADSTP, ADC_DR read access, ADC state, and ADC_DR values over time. The ADC state sequence is RDY -> CH1 -> DLY -> CH2 -> DLY -> CH3 -> DLY -> CH1 -> DLY -> STOP -> RDY. Data values D1, D2, D3, and D1 are shown in the ADC_DR register. Triggers are indicated as 'by SW' (software) and 'by HW' (hardware).

MS31020V1

Timing diagram for Figure 282 showing ADC operation in continuous mode with software trigger and AUTDLY=1. The diagram shows the relationship between ADSTART(1), EOC, EOS, ADSTP, ADC_DR read access, ADC state, and ADC_DR values over time. The ADC state sequence is RDY -> CH1 -> DLY -> CH2 -> DLY -> CH3 -> DLY -> CH1 -> DLY -> STOP -> RDY. Data values D1, D2, D3, and D1 are shown in the ADC_DR register. Triggers are indicated as 'by SW' (software) and 'by HW' (hardware).
  1. 1. AUTDLY = 1, JAUTO = 0.
  2. 2. Regular configuration: EXTEN[1:0] = 00 (software trigger), CONT = 1, CHANNELS = 1, 2, 3.
  3. 3. Injected configuration DISABLED.

Figure 283. AUTDLY = 1, regular hardware conversions interrupted by injected conversions (DISCEN = 0; JDISCEN = 0)

Timing diagram for Figure 283 showing ADC operation with regular hardware conversions interrupted by injected conversions. The diagram shows the relationship between Regular trigger, ADC state, EOC, EOS, ADC_DR read access, ADC_DR values, Injected trigger, JEOS, ADC_JDR1, and ADC_JDR2 over time. The ADC state sequence includes regular conversions (CH1, CH2, CH3) and injected conversions (CH5, CH6). Data values D1, D2, D3, D5, and D6 are shown. Triggers are indicated as 'by s/w' (software) and 'by h/w' (hardware).

MS31021V2

Timing diagram for Figure 283 showing ADC operation with regular hardware conversions interrupted by injected conversions. The diagram shows the relationship between Regular trigger, ADC state, EOC, EOS, ADC_DR read access, ADC_DR values, Injected trigger, JEOS, ADC_JDR1, and ADC_JDR2 over time. The ADC state sequence includes regular conversions (CH1, CH2, CH3) and injected conversions (CH5, CH6). Data values D1, D2, D3, D5, and D6 are shown. Triggers are indicated as 'by s/w' (software) and 'by h/w' (hardware).
  1. 1. AUTDLY = 1, JAUTO = 0.
  2. 2. Regular configuration: EXTEN[1:0] = 01 (hardware trigger), CONT = 0, DISCEN = 0, CHANNELS = 1, 2, 3.
  3. 3. Injected configuration: JEXTEN[1:0] = 01 (hardware trigger), JDISCEN = 0, CHANNELS = 5, 6.

Figure 284. AUTDLY = 1, regular hardware conversions interrupted by injected conversions (DISCEN = 1, JDISCEN = 1)

Timing diagram for Figure 284 showing regular and injected ADC conversions with delays and triggers.

This timing diagram illustrates the ADC operation when AUTDLY = 1 , DISCEN = 1 , and JDISCEN = 1 . The diagram shows the sequence of regular and injected conversions, triggered by hardware (HW) and software (SW) signals. The ADC state transitions between RDY (Ready) and active conversion phases for channels CH1 , CH2 , CH3 (regular) and CH5 , CH6 (injected). Delays ( DLY ) are applied between conversions. The EOC (End of Conversion) signal is generated at the end of each regular sequence. The ADC_DR (Data Register) is updated with conversion results D1 , D2 , D3 for regular conversions and D5 , D6 for injected conversions. Some triggers are Ignored or Not ignored based on the current ADC state and configuration. The legend indicates that solid arrows represent software (SW) triggers and dashed arrows represent hardware (HW) triggers.

Timing diagram for Figure 284 showing regular and injected ADC conversions with delays and triggers.

MS31022V1

  1. 1. AUTDLY = 1, JAUTO = 0.
  2. 2. Regular configuration: EXTEN[1:0] = 01 (hardware trigger), CONT = 0, DISCEN = 1, DISCNUM = 1, CHANNELS = 1, 2, 3.
  3. 3. Injected configuration: JEXTEN[1:0] = 01 (hardware trigger), JDISCEN = 1, CHANNELS = 5, 6.

Figure 285. AUTDLY = 1, regular continuous conversions interrupted by injected conversions

Timing diagram for Figure 285 showing continuous regular conversions interrupted by injected conversions.

This timing diagram illustrates the ADC operation when AUTDLY = 1 and continuous regular conversions are enabled. The diagram shows the sequence of regular conversions ( CH1 , CH2 , CH3 ) and injected conversions ( CH5 , CH6 ). The ADC state transitions between RDY and active conversion phases. Delays ( DLY ) are applied between conversions. The EOC signal is generated at the end of each regular sequence. The ADC_DR is updated with conversion results D1 , D2 , D3 for regular conversions and D5 , D6 for injected conversions. The ADSTART signal is used to start the regular conversions. The legend indicates that solid arrows represent software (SW) triggers and dashed arrows represent hardware (HW) triggers.

Timing diagram for Figure 285 showing continuous regular conversions interrupted by injected conversions.

MS31023V3

  1. 1. AUTDLY = 1, JAUTO = 0.
  2. 2. Regular configuration: EXTEN[1:0] = 00 (software trigger), CONT = 1, DISCEN = 0, CHANNELS = 1, 2, 3.
  3. 3. Injected configuration: JEXTEN[1:0] = 01 (hardware trigger), JDISCEN = 0, CHANNELS = 5, 6.

Figure 286. AUTDLY = 1 in autoinjection mode (JAUTO = 1)

Timing diagram for ADC in autoinjection mode with AUTDLY = 1. The diagram shows the sequence of events starting from ADSTART(1) (software trigger). The ADC state transitions from RDY to CH1 (regular), then DLY (CH1), then CH2 (regular), CH5 (injected), CH6 (injected), DLY (inj), CH3 (regular), DLY, and finally CH1 (regular). The 'No delay' label indicates the start of the sequence. The EOC (End of Conversion) signal is shown for each conversion. The ADC_DR read access is shown as a series of pulses. The ADC_DR register contains data D1, D2, D3, D5, and D6. The JEOS (End of Injected Sequence) signal is shown. The ADC_JDR1 and ADC_JDR2 registers are shown. The legend indicates 'by s/w' (software) and 'by h/w' (hardware) triggers. The diagram is labeled 'Indicative timings' and 'MS31024V4'.
Timing diagram for ADC in autoinjection mode with AUTDLY = 1. The diagram shows the sequence of events starting from ADSTART(1) (software trigger). The ADC state transitions from RDY to CH1 (regular), then DLY (CH1), then CH2 (regular), CH5 (injected), CH6 (injected), DLY (inj), CH3 (regular), DLY, and finally CH1 (regular). The 'No delay' label indicates the start of the sequence. The EOC (End of Conversion) signal is shown for each conversion. The ADC_DR read access is shown as a series of pulses. The ADC_DR register contains data D1, D2, D3, D5, and D6. The JEOS (End of Injected Sequence) signal is shown. The ADC_JDR1 and ADC_JDR2 registers are shown. The legend indicates 'by s/w' (software) and 'by h/w' (hardware) triggers. The diagram is labeled 'Indicative timings' and 'MS31024V4'.
  1. 1. AUTDLY = 1.
  2. 2. Regular configuration: EXTEN[1:0] = 00 (software trigger), CONT = 1, DISCEN = 0, CHANNELS = 1, 2.
  3. 3. Injected configuration: JAUTO = 1, CHANNELS = 5, 6.

32.4.29 Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWDCH of ADC_AWD2CR and ADC_AWD3CR, HTR, LTR, AWDFILT)

Table 248. Analog window watchdog features

FeatureAWD1AWD2AWD3
Enable controlAWD1EN or JAWD1ENADC_AWD2CRADC_AWD3CR
Channel selectionAWD1CH[4:0]/AWD1SGLADC_AWD2CRADC_AWD3CR
Channel selection limitationOne or all channelsAny number of channels
Regular or injected--
Threshold controlADC_AWD1LTR /
ADC_AWD1HTR
ADC_AWD2LTR /
ADC_AWD2HTR
ADC_AWD3LTR /
ADC_AWD3HTR
Filter configurationAWDFILT[2:0] in ADC_AWDyHTR
InterruptAWDy in ADC_ISR

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

Figure 287. Analog watchdog guarded area

Figure 287. Analog watchdog guarded area. A diagram showing a vertical axis for 'Analog voltage' with two horizontal lines representing 'Higher threshold' (HTR) and 'Lower threshold' (LTR). The region between these thresholds is shaded and labeled 'Guarded area'. The diagram is labeled ai16048 in the bottom right corner.
Figure 287. Analog watchdog guarded area. A diagram showing a vertical axis for 'Analog voltage' with two horizontal lines representing 'Higher threshold' (HTR) and 'Lower threshold' (LTR). The region between these thresholds is shaded and labeled 'Guarded area'. The diagram is labeled ai16048 in the bottom right corner.

AWDy flag and interrupt

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

AWDy ( \( y = 1, 2, 3 \) ) flag is cleared by software by writing 1 to it, or by setting ADDIS.

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 or JAWD1EN bit in the ADC_CFGR1 register. This watchdog monitors whether either one selected channel or all enabled channels remain within a configured voltage range (window).

Table 249 shows how the ADC_CFGR1 registers must be configured to enable the analog watchdog on one or more channels.

Table 249. Analog watchdog 1 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. 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 flag is set if the analog voltage converted by the ADC is below a lower threshold or above a higher threshold.

These thresholds are programmed through HTR[22:0] bits of the ADC_AWD1HTR register and LTR[22:0] bits of the ADC_AWD1LTR register for the analog watchdog 1.

The threshold can be up to 23 bits (12-bit resolution with oversampling, OVSR = 1024, offset and gain compensation)

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

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

Table 250. Analog watchdog 1, 2, 3 comparison

Resolution
(RES[1:0]
bits)
Analog watchdog comparison between:Comments
Raw converted data,
left aligned (1)
Thresholds
00: 12-bitDATA[11:0]LTR[22:0] and
HTR[22:0]
-
01: 10-bitDATA[11:2],00LTR[22:0] and
HTR[22:0]
The user must configure LTR[1:0] to 0b00 and HTR[1:0] to 0b00.
10: 8-bitDATA[11:4],0000LTR[22:0] and
HTR[22:0]
The user must configure LTR[3:0] to 0b0000 and HTR[3:0] to 0b0000.
11: 6-bitDATA[11:6],000000LTR[22:0] and
HTR[22:0]
The user must configure LTR[5:0] to 0b000000 and HTR[5:0] to 0b000000.

1. Refer to Section : Gain compensation for additional details on analog watchdog comparison.

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 AWDCH[19:0] (of ADC_AWD2CR and ADC_AWD3CR).

The corresponding watchdog is enabled when any bit of AWDCH[19:0] (of ADC_AWD2CR and ADC_AWD3CR) is set.

The threshold can be up to 23 bits (12-bit resolution with oversampling, OVSR = 1024 and offset compensation in signed format with gain compensation) and is programmed through the ADC_AWD2HTR, ADC_AWD2LTR, ADC_AWD3HTR and ADC_AWD3LTR registers.

When converting data with a resolution of less than 12 bits (defined by RES[1:0] bits), the LSBs of the programmed threshold must be kept cleared, the internal comparison being performed on the full 12-bits converted data (left aligned).

ADCx_AWDy_OUT signal output generation

Each analog watchdog is associated with an internal hardware signal ADC_AWDy_OUT (y being the watchdog number), which is directly connected to the ETR input (external trigger) of some of the on-chip timers. Refer to the on-chip timers sections to understand how to select the ADC_AWDy_OUT signal as ETR.

ADC_AWDy_OUT is activated when the associated analog watchdog is enabled:

Note: The AWDy flag is set by hardware and reset by software: the AWDy flag has no influence on the generation of ADC_AWDy_OUT (ex: ADC_AWDy_OUT can toggle while the AWDy flag remains at 1 if the software did not clear the flag).

The AWDy flag is cleared by programming it to 1 or by set ADDIS bit. ADSTP and JADSTP bits do not reset the AWDy flag.

Figure 288. ADC_AWDy_OUT signal generation (on all regular channels)

Timing diagram showing ADCSTATE, EOCFLAG, AWDyFLAG, and ADC_AWDy_OUT signals across seven conversions. Legend: - Converting regular channels 1,2,3,4,5,6,7; - Regular channels 1,2,3,4,5,6,7 are all guarded.

The diagram illustrates the timing of four signals during a sequence of seven regular channel conversions. The signals are:

A legend at the bottom left indicates:The diagram is labeled MSV66832V1 in the bottom right corner.

Timing diagram showing ADCSTATE, EOCFLAG, AWDyFLAG, and ADC_AWDy_OUT signals across seven conversions. Legend: - Converting regular channels 1,2,3,4,5,6,7; - Regular channels 1,2,3,4,5,6,7 are all guarded.

Figure 289. ADC_AWDy_OUT signal generation (AWDy flag not cleared by software)

Timing diagram for Figure 289 showing ADCSTATE, EOCFLAG, AWDy FLAG, and ADC_AWDy_OUT signals over seven conversions. The AWDy FLAG is set by Conversion2 and remains high because it is not cleared by software.

The diagram illustrates the following signal behavior across seven conversions:

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

MSv66833V1

Timing diagram for Figure 289 showing ADCSTATE, EOCFLAG, AWDy FLAG, and ADC_AWDy_OUT signals over seven conversions. The AWDy FLAG is set by Conversion2 and remains high because it is not cleared by software.

Figure 290. ADC_AWDy_OUT signal generation (on a single regular channel)

Timing diagram for Figure 290 showing ADCSTATE, EOCFLAG, EOSFLAG, AWDy FLAG, and ADC_AWDy_OUT signals over four pairs of conversions. Only Conversion1 is guarded, and the AWDy FLAG is manually cleared by software.

The diagram illustrates signal behavior for a sequence of two channels (Conversion1 and Conversion2):

- Converting regular channels 1 and 2
- Only channel1 is guarded

MSv66834V1

Timing diagram for Figure 290 showing ADCSTATE, EOCFLAG, EOSFLAG, AWDy FLAG, and ADC_AWDy_OUT signals over four pairs of conversions. Only Conversion1 is guarded, and the AWDy FLAG is manually cleared by software.

Figure 291. ADC_AWDy_OUT signal generation (on all injected channels)

Timing diagram showing ADCSTATE, JEOSFLAG, AWDy FLAG, and ADC_AWDy_OUT signals during a sequence of injected channel conversions. The diagram shows four conversions: Conversion1 (inside), Conversion2 (outside), Conversion3 (inside), and Conversion4 (outside). The AWDy FLAG is set when a conversion is outside the threshold and cleared by software. The ADC_AWDy_OUT signal is asserted when any conversion is outside the threshold.

The diagram illustrates the timing of the ADC_AWDy_OUT signal generation across four injected channel conversions. The top signal, ADCSTATE, shows a sequence of states: RDY, Conversion1 (inside), Conversion2 (outside), Conversion3 (inside), Conversion4 (outside), Conversion (outside), Conversion (outside), and Conversion (inside). The JEOSFLAG signal is shown as a pulse during the last conversion. The AWDy FLAG signal is shown as a pulse when the conversion is outside the threshold (Conversions 2, 4, and the two 'outside' conversions), and it is cleared by software (S/W). The ADC_AWDy_OUT signal is shown as a pulse when the conversion is outside the threshold (Conversions 2, 4, and the two 'outside' conversions).

-Converting the injected channels 1, 2, 3, 4
-All injected channels 1, 2, 3, 4 are guarded

MSV66835V1

Timing diagram showing ADCSTATE, JEOSFLAG, AWDy FLAG, and ADC_AWDy_OUT signals during a sequence of injected channel conversions. The diagram shows four conversions: Conversion1 (inside), Conversion2 (outside), Conversion3 (inside), and Conversion4 (outside). The AWDy FLAG is set when a conversion is outside the threshold and cleared by software. The ADC_AWDy_OUT signal is asserted when any conversion is outside the threshold.

Analog watchdog threshold control on the fly

LTR[22:0] and HTR[22: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 LTR[22:0] and HTR[22:0] are updated during the ADC conversion of the ADC guarded channel, resulting in 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 modified threshold, no interrupt and AWDy_OUT signal are issued. The Interrupt and the AWD generation only happen at the end of the conversion that started after the threshold update. If AWDy_OUT is already asserted, programming the new thresholds does not deassert the AWDy_OUT signal. However, the watchdog threshold must not be changed twice during the four adc_ker_ck periods.

Analog watchdog filter for watchdog 1

With analog watchdog, a valid ADC conversion data range can be configured through the ADC_AWD1LTR and ADC_AWD1HTR registers. When the conversion results have consecutively passed the threshold for more than the watchdog filter value (AWDFILT[2:0] + 1), AWD1_OUT is generated as well as the AWD1 flag. Before this value is reached, AWD1 output is not activated.

Analog watchdog with gain and offset compensation

When the gain and offset compensation are enabled, the analog watchdog compares the data after the compensation.

32.4.30 Oversampler

The oversampling unit performs data preprocessing to offload the device. It is able to handle multiple conversions and average them into a single data with increased data width, up to 22 bits.

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 enables the following functions to be performed by hardware: averaging, data rate reduction, SNR improvement and basic filtering.

The oversampling ratio \( N \) is defined by the OVSR[9:0] bits in the ADC_CFGR2 register, or by the JOVSS[3:0] bits in the ADC_CFGR3 register for parallel injected oversampling mode. They can range from 2x to 1024x. The division coefficient \( M \) consists of a right bit shift up to 10 bits. It is defined through the OVSS[3:0] bits of the ADC_CFGR2 register.

The summation unit can yield a result up to 22 bits, which can be left or right shifted at the end. When the right shift is selected, it is rounded to the nearest value using the least significant bits left apart by the shifting, before being finally transferred to the ADC_DR data register.

Figure 292 gives a numerical example of the processing, from a raw 22-bit accumulated data to the final 12-bit result.

Figure 292. 12-bit result oversampling with 10-bit right shift and rounding

Diagram illustrating 12-bit result oversampling with 10-bit right shift and rounding. It shows two examples of 22-bit data being shifted and rounded to 12-bit data based on OVSS[3:0] settings.

The diagram illustrates the processing of 22-bit accumulated data to a 12-bit result using right shifting and rounding. It shows two examples based on the OVSS[3:0] register settings.

Example 1: OVSS[3:0]=0

Example 2: OVSS[3:0]=0

MSv66836/V3

Diagram illustrating 12-bit result oversampling with 10-bit right shift and rounding. It shows two examples of 22-bit data being shifted and rounded to 12-bit data based on OVSS[3:0] settings.

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

Table 251. Maximum output results versus N and M

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
x20x1FFE0x1FFE0x0FFF0x08000x04000x02000x01000x00800x00400x0020
x40x3FFC0x3FFC0x1FFE0x0FFF0x08000x04000x02000x01000x00800x0040
x160xFFF00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x04000x02000x0100
x640x3FFC00x3FFC00x1FFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF0x08000x0400
x2560xFFF000xFFF000x7FF800x3FFC00x1FFE00xFFF00x7FF80x3FFC0x1FFE0x0FFF
x10240x3FFC000x3FFC000x1FFE000xFFF000x7FF800x3FFC00x1FFE00xFFF00x7FF80x3FFC

The conversion timing rate does not change in oversampling mode: the sample time is maintained equal during the whole oversampling sequence. A new data is provided every N conversion, with an equivalent delay equal to \( N \times T_{CONV} = N \times (t_{SAMPL} + t_{SAR}) \) . The flags are set as follows:

Unlike the conversion rate, the data latency changes in oversampling mode: each single conversion introduces an additional accumulation. As a result, an additional clock cycle is required when all the conversions are complete, after the accumulation and shift. The EOC flag is set two additional clock cycles after the conversion is complete.

ADC operating modes supported in oversampling mode (single ADC mode)

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

Analog watchdog

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

Triggered mode

The oversampling can also be used for basic filtering purpose. Although it not a very powerful filter (slow roll-off and limited stop band attenuation), it can act 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 through the TROVS bit in ADC_CFGR2, to be able to achieve an oversampling frequency defined by the user and independent from the conversion time itself. The TROVS bit is supported with hardware trigger mode.

Figure 293 shows how conversions are started in response to triggers during discontinuous mode.

If the TROVS bit is set and OVSR \( \neq \) 0, the content of the DISCEN bit is ignored and considered as 1.

If the TROVS bit is set, neither software trigger nor JAUTO is supported.

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

Figure 293: Triggered regular oversampling mode (TROVS bit = 1). The diagram illustrates two scenarios for regular oversampling. The top scenario shows CONT=0, DISCEN=1, and TROVS=0. A single trigger initiates a sequence of four conversions: Ch(N)0, Ch(N)1, Ch(N)2, and Ch(N)3. An EOC flag is set after the fourth conversion. The bottom scenario shows CONT=0, DISCEN=1, and TROVS=1. Multiple triggers are shown, each initiating a single conversion. The sequence of conversions is 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 is set after the seventh conversion. The diagram is labeled MS34455V2.
Figure 293: Triggered regular oversampling mode (TROVS bit = 1). The diagram illustrates two scenarios for regular oversampling. The top scenario shows CONT=0, DISCEN=1, and TROVS=0. A single trigger initiates a sequence of four conversions: Ch(N)0, Ch(N)1, Ch(N)2, and Ch(N)3. An EOC flag is set after the fourth conversion. The bottom scenario shows CONT=0, DISCEN=1, and TROVS=1. Multiple triggers are shown, each initiating a single conversion. The sequence of conversions is 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 is set after the seventh conversion. The diagram is labeled MS34455V2.

Injected and regular sequencer management in oversampling mode

In oversampling mode, injected and regular sequencers can have different behaviors. 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 ROVSM bit defines how the regular oversampling sequence is resumed if it is interrupted by an injected conversion:

oversampling is complete whatever the injection frequency (providing at least one regular conversion can be complete between triggers);

Figure 294 gives examples for a 4x oversampling ratio.

Figure 294. Regular oversampling modes (4x ratio)

Timing diagram showing regular oversampling modes (Continued and Resumed) with regular and injected channels, triggers, and abort signals.

The diagram illustrates two oversampling scenarios for a 4x ratio:

MSV34456V2

Timing diagram showing regular oversampling modes (Continued and Resumed) with regular and injected channels, triggers, and abort signals.

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 must be resumed (ROVSM bit = 1), as shown in Figure 295 . This limitation no longer applies in parallel injected oversampling mode.

Figure 295. Regular and injected oversampling modes used simultaneously

Figure 295: Regular and injected oversampling modes used simultaneously. The diagram shows a sequence of regular channels (Ch(N)0 to Ch(N)3, then Ch(M)0 to Ch(M)1) and injected channels (Ch(J)0 to Ch(J)3). An injected trigger occurs while the regular oversampling is active, causing it to be aborted. After the injected channels are converted, the regular oversampling resumes. The configuration bits are 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 trigger → Abort

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

JE0C

Oversampling aborted

Oversampling resumed

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

MSv34457V3

Figure 295: Regular and injected oversampling modes used simultaneously. The diagram shows a sequence of regular channels (Ch(N)0 to Ch(N)3, then Ch(M)0 to Ch(M)1) and injected channels (Ch(J)0 to Ch(J)3). An injected trigger occurs while the regular oversampling is active, causing it to be aborted. After the injected channels are converted, the regular oversampling resumes. The configuration bits are 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 oversampling mode must be disabled and the ROVSM bit set (the resumed mode is forced). The JOVSE bit must be reset. The behavior is shown in Figure 296 .

Figure 296. Triggered regular oversampling with injection

Figure 296: Triggered regular oversampling with injection. The diagram shows regular channels (Ch(N)0, Ch(N)1, Ch(N)2) being triggered. An injected trigger occurs while the regular oversampling is active, causing it to be aborted. After the injected channels (Ch(J), Ch(K)) are converted, the regular oversampling resumes. The configuration bits are ROVSE = 1, JOVSE = 0, ROVSM = 1, TROVS = 1.

Trigger → Regular channels: Ch(N) 0

Trigger → Ch(N) 1

Trigger → Ch(N) 2

Injected trigger → Abort

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

Trigger → Ch(N) 0 | Ch(N) 1 (Resumed)

Oversampling resumed

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

MSv34458V5

Figure 296: Triggered regular oversampling with injection. The diagram shows regular channels (Ch(N)0, Ch(N)1, Ch(N)2) being triggered. An injected trigger occurs while the regular oversampling is active, causing it to be aborted. After the injected channels (Ch(J), Ch(K)) are converted, the regular oversampling resumes. The configuration bits are ROVSE = 1, JOVSE = 0, ROVSM = 1, TROVS = 1.

Autoinjection mode

It is possible to oversample autoinjected sequences and store all conversion results in registers. 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 autoinjection mode. Figure 297 shows how the conversions are sequenced.

Diagram showing the sequencing of regular and injected channels in autoinjection mode. Regular channels are N0, N1, N2, N3. Injected channels are I0, I1, I2, I3, J0, J1, J2, J3, K0, K1, K2, K3, L0, L1, L2, L3. The diagram shows a sequence of regular channels followed by injected channels, then back to regular channels. The condition for this mode is JAUTO = 1, ROVSE = 1, JOVSE = 1, ROVSM = X, TROVS = 0. Reference MS34459V1.

Figure 297. Oversampling in autoinjection mode

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

MS34459V1

Diagram showing the sequencing of regular and injected channels in autoinjection mode. Regular channels are N0, N1, N2, N3. Injected channels are I0, I1, I2, I3, J0, J1, J2, J3, K0, K1, K2, K3, L0, L1, L2, L3. The diagram shows a sequence of regular channels followed by injected channels, then back to regular channels. The condition for this mode is JAUTO = 1, ROVSE = 1, JOVSE = 1, ROVSM = X, TROVS = 0. Reference MS34459V1.

Combined modes summary

Table 252 summarizes all combinations, including the modes that are not supported.

Table 252. Oversampler operating mode summary

Regular oversampling
ROVSE
Injected oversampling
JOVSE
Oversampler mode
ROVSM
0 = continued
1 = resumed
Triggered regular mode
TROVS
Comment
1000Regular continued mode
1001Not supported
1010Regular resumed mode
1011Triggered regular resumed mode
110XNot supported
1110Injected and regular resumed mode
1111Not supported
01XXInjected oversampling

32.4.31 Dual ADC modes

Dual ADC modes can be used in devices with two ADCs or more (see Figure 298).

In dual ADC mode the start of conversion is triggered alternately or simultaneously by the ADC master to the ADC slave, depending on the mode selected by the bits DUAL[4:0] in the ADCC_CCR register.

Four possible modes are implemented:

It is also possible to use these modes combined in the following ways:

In dual ADC mode (when the DUAL[4:0] bits in the ADCC_CCR register are not equal to zero), the following bits are shared between the master and slave ADCs, with the slave ADC bits being ignored and always applying to the corresponding bits of the master ADC:

For dual mode usage, the sampling time of the master and slave channels must be equal.

To start a conversion in dual mode, the user must program the EXTEN[1:0], EXTSEL, JEXTEN[1:0] and JEXTSEL bits of the master ADC only to configure a software or hardware trigger and a regular or injected trigger. The EXTEN[1:0], JEXTEN[1:0], and JEXTSEL bits of the slave ADC are don't care).

In regular simultaneous or interleaved modes, once the user sets the ADSTART or ADSTP bit of the master ADC, the corresponding bit of the slave ADC is automatically set. However, ADSTART or ADSTP bit of the slave ADC is not necessarily cleared at the same time as the master ADC bit.

In injected simultaneous or alternate trigger modes, once the user sets the JADSTART or JADSTP bit of the master ADC, the corresponding bit of the slave ADC is automatically set. However, JADSTART or JADSTP bit of the slave ADC is not necessarily cleared at the same time as the master ADC bit.

In dual ADC mode, the converted data of the master and slave ADC can be read in parallel, by reading the ADC common data register (ADCC_CDR). The flags can also be read in parallel by reading the dual-mode status register (ADCC_CSR).

Note: In dual mode, BULB, JAUTO, SMPTRIG are not supported.

Figure 298. Dual ADC block diagram

Dual ADC block diagram showing Master ADC and Slave ADC components, including channels, registers, triggers, and a common data bus.

The diagram illustrates the internal architecture of a Dual ADC system. It consists of two main ADC blocks: a Slave ADC at the top and a Master ADC at the bottom. Both ADCs have Regular channels and Injected channels . The Slave ADC's regular channels output to a Regular data register (32-bits) , and its injected channels output to Injected data registers (4 x32-bits) . The Master ADC has similar regular and injected channels, which output to their own respective Regular data register (32-bits) and Injected data registers (4 x32-bits) . All four data registers are connected to a common Address/data bus on the right. The Slave ADC is triggered by Internal triggers . The Master ADC is triggered by two Start trigger mux. units: one for the (regular group) and one for the (injected group) . These muxes receive inputs from GPIO ports (labeled ADCx_INP0, ADCx_INN0, ADCx_INP2, ADCx_INN2, ..., ADCx_INPi, ADCx_INNi) and Internal analog inputs . A Dual mode control block is connected to the Master ADC's triggers. The diagram is labeled MSV41029V3 in the bottom right corner.

Dual ADC block diagram showing Master ADC and Slave ADC components, including channels, registers, triggers, and a common data bus.

Injected simultaneous mode with independent regular conversion

The injected simultaneous mode is selected by programming DUAL[4:0] bits to 0b00101.

This mode converts an injected group of channels. The external trigger source comes from the injected group multiplexer of the master ADC (selected by the JEXTSEL bits in the ADC_JSQR register).

Note: Do not convert the same channel on the two ADCs (no overlapping sampling times for the two ADCs when converting the same channel).

In simultaneous mode, the user software must convert sequences with the same length. Sampling times for channels with the same sequence number must be equal.

Regular conversions can be performed on one or all ADCs. In that case, they are independent of each other and are interrupted when an injected event occurs. They are resumed at the end of the injected conversion group.

The software is notified by interrupts when it can read the data:

Figure 299. Injected simultaneous mode on four channels: Dual ADC mode

Timing diagram for Injected simultaneous mode on four channels: Dual ADC mode. The diagram shows two horizontal timelines for MASTER ADC and SLAVE ADC. The MASTER ADC timeline has four channels: CH1, CH2, CH3, and CH4. The SLAVE ADC timeline has four channels: CH15, CH14, CH13, and CH12. A 'Trigger' event is shown as a vertical line. Following the trigger, there are two phases: 'Sampling' (represented by a light gray rectangle) and 'Conversion' (represented by a white rectangle). Arrows indicate that the sampling and conversion phases occur simultaneously for both ADCs. The diagram ends with an arrow pointing to the end of the injected sequence on both MASTER and SLAVE ADCs. The code MS31900V1 is shown in the bottom right corner.
Timing diagram for Injected simultaneous mode on four channels: Dual ADC mode. The diagram shows two horizontal timelines for MASTER ADC and SLAVE ADC. The MASTER ADC timeline has four channels: CH1, CH2, CH3, and CH4. The SLAVE ADC timeline has four channels: CH15, CH14, CH13, and CH12. A 'Trigger' event is shown as a vertical line. Following the trigger, there are two phases: 'Sampling' (represented by a light gray rectangle) and 'Conversion' (represented by a white rectangle). Arrows indicate that the sampling and conversion phases occur simultaneously for both ADCs. The diagram ends with an arrow pointing to the end of the injected sequence on both MASTER and SLAVE ADCs. The code MS31900V1 is shown in the bottom right corner.

If JDISCEN is set, each simultaneous conversion of the injected sequence requires an injected trigger event to occur.

This mode can be combined with the AUTDLY mode:

In this mode, the following register bits are shared between the master and slave ADCs:

JADSTART, JADSTP, JDISCEN, JOVSE, JLEN, JEXTEN, JEXTSEL, GCOMPEN, JOVSECT, JOVSISE, JOVSE, and TJOVS.

Regular simultaneous mode with independent injected conversions

The regular simultaneous mode is selected by programming DUAL[4:0] bits to 0b00110.

This mode applies to a regular group of channels. The external trigger source comes from the regular group multiplexer of the master ADC (selected by the EXTSEL bits in the ADC_CFGR1 register). A simultaneous trigger is provided to the slave ADC.

In this mode, independent injected conversions are supported. An injection request (either on the master or on the slave) aborts the current simultaneous conversions both for master and slave. They are restarted once the injected conversion is completed.

Note: Do not convert the same channel on the two ADCs (no overlapping sampling times for the two ADCs when converting the same channel).

In regular simultaneous mode, the user software must convert sequences with the same length. Sampling times for channels with the same sequence number must be equal.

The software is notified by interrupts when it can read the data:

The user can read data from either ADCC_CDR or ADCC_CDR2. Once software selects one of these registers, it must continue using the same register until the ADSTP procedure is executed.

The regular data can also be read using the DMA. Several methods are possible:

Alternatively, data can be read from ADCC_CDR2:

    • – The first read returns the master ADC data.
    • – The second read returns the slave ADC data.
  1. After these reads, a DMA request is generated. The DMA transfers the slave data from the same data register and handles two transfers for dual mode operation.
  2. d) Both EOC flags are cleared when the DMA reads the ADCC_CDR register.

Note: When DAMDF[1:0] = 0b10 or 0b11, the user must program the same number of conversions in the master and in the slave sequence. Otherwise, the remaining conversions do not generate a DMA request.

Figure 300. Regular simultaneous mode on 16 channels: dual ADC mode

Diagram illustrating regular simultaneous mode on 16 channels: dual ADC mode. It shows two parallel sequences of 16 channels (CH1 to CH16) for MASTER ADC and SLAVE ADC. The MASTER ADC sequence starts with CH1 and ends with CH16. The SLAVE ADC sequence starts with CH16 and ends with CH1. A trigger arrow points to the start of the sequences. A legend indicates that a light gray box represents 'Sampling' and a white box represents 'Conversion'. The end of the regular sequence on both MASTER and SLAVE ADC is marked at the end of the sequences. The diagram is labeled ai16054b.
Diagram illustrating regular simultaneous mode on 16 channels: dual ADC mode. It shows two parallel sequences of 16 channels (CH1 to CH16) for MASTER ADC and SLAVE ADC. The MASTER ADC sequence starts with CH1 and ends with CH16. The SLAVE ADC sequence starts with CH16 and ends with CH1. A trigger arrow points to the start of the sequences. A legend indicates that a light gray box represents 'Sampling' and a white box represents 'Conversion'. The end of the regular sequence on both MASTER and SLAVE ADC is marked at the end of the sequences. The diagram is labeled ai16054b.

If the DISCEN bit is set, each “n” simultaneous conversion of the regular sequence require a regular trigger event to occur (“n” is defined by DISCNUM).

This mode can be combined with the AUTDLY mode:

The DMA can be used to handle data in regular simultaneous mode combined with AUTDLY mode, assuming that multi-DMA mode is used: bits DAMDF must be set to 0b10 or 0b11.

Interleaved mode with independent injected conversions

This mode is selected by programming DUAL[4:0] bits to 0b00111.

It can be started only on a regular group (usually one channel). The external trigger source comes from the regular channel multiplexer of the master ADC.

After an external trigger occurs:

The minimum delay between two conversions in interleaved mode is configured in the DELAY bits in the ADCC_CCR register (see Table DELAY bits versus ADC resolution ). This delay starts counting one half cycle after the end of the sampling phase of the master

conversion. This way, an ADC cannot start a conversion if the complementary ADC is still sampling its input (only one ADC can sample the input signal at a given time).

As the CONT bit is set on both the master and slave ADCs, the selected regular channels of both ADCs are continuously converted.

The software is notified by interrupts when it can read the data at the end of each conversion event (EOC) on the master or slave ADC. A slave and master EOC interrupts are generated (if EOCIE is enabled) and the software can read the ADC_DR of the slave/master ADC.

Table 253. DELAY bits versus ADC resolution (1)

DELAY bits12-bit resolution10-bit resolution8-bit resolution6-bit resolution
00001 * T adc_ker_ck1 * T adc_ker_ck1 * T adc_ker_ck1 * T adc_ker_ck
00012 * T adc_ker_ck2 * T adc_ker_ck2 * T adc_ker_ck2 * T adc_ker_ck
00103 * T adc_ker_ck3 * T adc_ker_ck3 * T adc_ker_ck3 * T adc_ker_ck
00114 * T adc_ker_ck4 * T adc_ker_ck4 * T adc_ker_ck4 * T adc_ker_ck
01005 * T adc_ker_ck5 * T adc_ker_ck5 * T adc_ker_ck5 * T adc_ker_ck
01016 * T adc_ker_ck6 * T adc_ker_ck6 * T adc_ker_ck6 * T adc_ker_ck
01107 * T adc_ker_ck7 * T adc_ker_ck7 * T adc_ker_ck6 * T adc_ker_ck
01118 * T adc_ker_ck8 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck
10009 * T adc_ker_ck9 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck
100110 * T adc_ker_ck10 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck
101011 * T adc_ker_ck11 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck
101112 * T adc_ker_ck11 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck
110013 * T adc_ker_ck11 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck
others13 * T adc_ker_ck11 * T adc_ker_ck8 * T adc_ker_ck6 * T adc_ker_ck

1. Preliminary information, subject to change.

Figure 301. Interleaved mode on 1 channel in continuous conversion mode: Dual ADC mode

Timing diagram for Figure 301: Interleaved mode on 1 channel in continuous conversion mode. The diagram shows two horizontal timelines for MASTER ADC and SLAVE ADC. The MASTER ADC starts with a sampling phase (grey) followed by a conversion phase (white) labeled CH1. The SLAVE ADC is triggered by the MASTER ADC's sampling phase. The SLAVE ADC also has a sampling phase followed by a conversion phase labeled CH1. The time between the start of the MASTER ADC's sampling phase and the start of the SLAVE ADC's conversion phase is 5 ADCCLK cycles. The time between the start of the SLAVE ADC's conversion phase and the end of the MASTER ADC's conversion phase is also 5 ADCCLK cycles. The end of the conversion on both the master and slave ADC is marked. A legend indicates that grey boxes represent Sampling and white boxes represent Conversion. The diagram is labeled MSv31030V6.
Timing diagram for Figure 301: Interleaved mode on 1 channel in continuous conversion mode. The diagram shows two horizontal timelines for MASTER ADC and SLAVE ADC. The MASTER ADC starts with a sampling phase (grey) followed by a conversion phase (white) labeled CH1. The SLAVE ADC is triggered by the MASTER ADC's sampling phase. The SLAVE ADC also has a sampling phase followed by a conversion phase labeled CH1. The time between the start of the MASTER ADC's sampling phase and the start of the SLAVE ADC's conversion phase is 5 ADCCLK cycles. The time between the start of the SLAVE ADC's conversion phase and the end of the MASTER ADC's conversion phase is also 5 ADCCLK cycles. The end of the conversion on both the master and slave ADC is marked. A legend indicates that grey boxes represent Sampling and white boxes represent Conversion. The diagram is labeled MSv31030V6.

Figure 302. Interleaved mode on 1 channel in single conversion mode: Dual ADC mode

Timing diagram for Figure 302: Interleaved mode on 1 channel in single conversion mode. The diagram shows two horizontal timelines for MASTER ADC and SLAVE ADC. The MASTER ADC starts with a sampling phase (grey) followed by a conversion phase (white) labeled CH1. The SLAVE ADC is triggered by the MASTER ADC's sampling phase. The SLAVE ADC also has a sampling phase followed by a conversion phase labeled CH1. The time between the start of the MASTER ADC's sampling phase and the start of the SLAVE ADC's conversion phase is 5 ADCCLK cycles. The time between the start of the SLAVE ADC's conversion phase and the end of the MASTER ADC's conversion phase is also 5 ADCCLK cycles. The end of the conversion on both the master and slave ADC is marked. A legend indicates that grey boxes represent Sampling and white boxes represent Conversion. The diagram is labeled MSv31031V4.
Timing diagram for Figure 302: Interleaved mode on 1 channel in single conversion mode. The diagram shows two horizontal timelines for MASTER ADC and SLAVE ADC. The MASTER ADC starts with a sampling phase (grey) followed by a conversion phase (white) labeled CH1. The SLAVE ADC is triggered by the MASTER ADC's sampling phase. The SLAVE ADC also has a sampling phase followed by a conversion phase labeled CH1. The time between the start of the MASTER ADC's sampling phase and the start of the SLAVE ADC's conversion phase is 5 ADCCLK cycles. The time between the start of the SLAVE ADC's conversion phase and the end of the MASTER ADC's conversion phase is also 5 ADCCLK cycles. The end of the conversion on both the master and slave ADC is marked. A legend indicates that grey boxes represent Sampling and white boxes represent Conversion. The diagram is labeled MSv31031V4.

If the DISCEN bit is set, each “ n ” simultaneous conversion (“ n ” is defined by DISCNUM) of the regular sequence require a regular trigger event to occur.

In interleaved mode, injected conversions are supported. When injection is done (either on master or slave), both master and the slave regular conversions are aborted and the sequence is restarted from the master (see Figure 303 ).

Note: In interleaved mode, the ADCx_AWDy_OUT signal for the master ADC is synchronized with the EOC of the master ADC, but the interrupt flag is synchronized with the EOC/JEOC flag of the slave ADC.

In addition, the ROVSM = 0 setting is not supported in oversampling mode.

Figure 303. Interleaved conversion with injection

Timing diagram showing interleaved conversion with injection for ADC1 (master) and ADC2 (slave).

The diagram illustrates the timing of interleaved conversions between a master ADC (ADC1) and a slave ADC (ADC2).
ADC1 (master) is shown with a sequence of CH1 conversions.
ADC2 (slave) is shown with a sequence of CH2 conversions, followed by CH0.
An 'Injected trigger' occurs, causing ADC1 to convert CH11.
During this injection, the ongoing conversion of CH2 on ADC2 is aborted, as indicated by a dashed box.
After the injection, the master ADC resumes with CH1, and the slave ADC resumes with CH2.
Labels 'read CDR' indicate when conversion data is read.
A 'Resume (always on master)' label points to the resumption of the master ADC's sequence.
A legend at the bottom left shows a gray rectangle for 'Sampling' and a white rectangle for 'Conversion'.

Timing diagram showing interleaved conversion with injection for ADC1 (master) and ADC2 (slave).

MS34460V1

Alternate trigger mode with independent regular conversions

The alternate trigger mode is selected by programming DUAL[4:0] bits to 0b01001.

This mode can only be started on an injected group. The source of the external trigger comes from the multiplexer injected group of the master ADC.

This mode is only possible when selecting hardware triggers: JEXTEN[1:0] must not be 0x0.

Injected discontinuous mode disabled (JDISCEN = 0)

  1. 1. When the first trigger occurs, all injected master ADC channels in the group are converted.
  2. 2. When the second trigger occurs, all injected slave ADC channels in the group are converted.
  3. 3. And so on...

A JEOS interrupt, if enabled, is generated after all injected channels of the master ADC in the group have been converted.

A JEOS interrupt, if enabled, is generated after all injected channels of the slave ADC in the group have been converted.

JE0C interrupts, if enabled, can also be generated after each injected conversion.

Figure 304. Alternate trigger: injected group of each ADC

Timing diagram showing the sequence of injected conversions for a Master ADC and a Slave ADC triggered by four external events. The diagram illustrates sampling and conversion phases, and the generation of JEOC and JEOS interrupts.

The diagram illustrates the timing of injected conversions for a Master ADC and a Slave ADC. It shows four trigger events and the resulting conversion sequence. A legend indicates that a shaded rectangle represents 'Sampling' and a white rectangle represents 'Conversion'.

Interrupt signals are generated as follows:

ai16059-m

Timing diagram showing the sequence of injected conversions for a Master ADC and a Slave ADC triggered by four external events. The diagram illustrates sampling and conversion phases, and the generation of JEOC and JEOS interrupts.

Note:

Regular conversions can be enabled on one or all ADCs. In this case, the regular conversions are independent of each other. A regular conversion is interrupted when the ADC has to perform an injected conversion. It is resumed when the injected conversion is finished.

The time interval between two trigger events must be greater than or equal to one ADC clock period. The minimum time interval between two trigger events that start conversions on the same ADC is the same as in the single ADC mode.

Injected discontinuous mode enabled (JDISCEN = 1)

If the injected discontinuous mode is enabled for both master and slave ADCs:

  1. 1. When the first trigger occurs, the first injected channel of the master ADC is converted.
  2. 2. When the second trigger occurs, the first injected channel of the slave ADC is converted.
  3. 3. And so on...

A JEOS interrupt, if enabled, is generated after all injected channels of the master ADC in the group have been converted.

A JEOS interrupt, if enabled, is generated after all injected channels of the slave ADC in the group have been converted.

JEOC interrupts, if enabled, can also be generated after each injected conversion.

Figure 305. Alternate trigger: 4 injected channels (each ADC) in discontinuous mode

Timing diagram for Figure 305 showing MASTER ADC and SLAVE ADC sequences. The MASTER ADC has 4 injected channels (CH1, CH2, CH3, CH4) triggered by 1st, 3rd, 5th, and 7th triggers. The SLAVE ADC has 4 injected channels (CH1, CH2, CH3, CH4) triggered by 2nd, 4th, 6th, and 8th triggers. Each trigger starts a sampling phase followed by a conversion phase. JEOC (End of Injected Conversion) flags are generated at the end of each conversion. The legend indicates that grey boxes represent Sampling and white boxes represent Conversion.
Timing diagram for Figure 305 showing MASTER ADC and SLAVE ADC sequences. The MASTER ADC has 4 injected channels (CH1, CH2, CH3, CH4) triggered by 1st, 3rd, 5th, and 7th triggers. The SLAVE ADC has 4 injected channels (CH1, CH2, CH3, CH4) triggered by 2nd, 4th, 6th, and 8th triggers. Each trigger starts a sampling phase followed by a conversion phase. JEOC (End of Injected Conversion) flags are generated at the end of each conversion. The legend indicates that grey boxes represent Sampling and white boxes represent Conversion.

Combined regular/injected simultaneous mode

This mode is selected by programming DUAL[4:0] bits to 0b00001.

The simultaneous conversion of a regular group can be interrupted to start the simultaneous conversion of an injected group.

Note: In combined regular/injected simultaneous mode, the user software must convert sequences with the same length.

Combined regular simultaneous and alternate trigger mode

This mode is selected by programming DUAL[4:0] bits to 0b00010.

The simultaneous conversion of a regular group can be interrupted to start the alternate trigger conversion of an injected group. Figure 306 shows the behavior of an alternate trigger interrupting a simultaneous regular conversion.

The injected alternate conversion immediately starts after the injected event. If a regular conversion is already running, in order to ensure synchronization after the injected conversion, the regular conversion of all (master/slave) ADCs is stopped and resumed synchronously at the end of the injected conversion.

Note: In combined regular simultaneous + alternate trigger mode, the user software must convert sequences with the same length.

The software trigger is not supported for injected conversions.

Figure 306. Alternate + regular simultaneous

Timing diagram for Figure 306 showing ADC MASTER reg, ADC MASTER inj, ADC SLAVE reg, and ADC SLAVE inj sequences. The diagram shows a regular conversion sequence (CH1, CH2, CH3) being interrupted by an injected conversion (CH1) triggered by the 1st trigger. The regular conversion is aborted and then resumed. The injected conversion (CH1) is followed by a regular conversion (CH3, CH4). The diagram also shows a 2nd trigger interrupting a regular conversion (CH7, CH8) with an injected conversion (CH1). The regular conversion is aborted and then resumed. The legend indicates that grey boxes represent Sampling and white boxes represent Conversion.
Timing diagram for Figure 306 showing ADC MASTER reg, ADC MASTER inj, ADC SLAVE reg, and ADC SLAVE inj sequences. The diagram shows a regular conversion sequence (CH1, CH2, CH3) being interrupted by an injected conversion (CH1) triggered by the 1st trigger. The regular conversion is aborted and then resumed. The injected conversion (CH1) is followed by a regular conversion (CH3, CH4). The diagram also shows a 2nd trigger interrupting a regular conversion (CH7, CH8) with an injected conversion (CH1). The regular conversion is aborted and then resumed. The legend indicates that grey boxes represent Sampling and white boxes represent Conversion.

If a trigger occurs during an injected conversion that has interrupted a regular conversion, the alternate trigger is served. Figure 307 shows the behavior in this case (note that the sixth trigger is ignored because the associated alternate conversion is not complete).

Figure 307. Case of trigger occurring during injected conversion

Figure 307: Case of trigger occurring during injected conversion. This diagram illustrates the interaction between regular and injected conversions in an ADC. It shows four rows: ADC MASTER reg (CH1, CH2, CH3), ADC MASTER inj (CH14), ADC SLAVE reg (CH7, CH8, CH9), and ADC SLAVE inj (CH15). The sequence starts with regular conversions CH1, CH2, CH3. A 1st trigger occurs, starting CH14. Then a 2nd trigger occurs while CH14 is active, starting CH15. The conversion CH14 is aborted. Then a 3rd trigger occurs, starting CH14 again. Then a 4th trigger occurs while CH14 is active, starting CH15. The conversion CH14 is aborted again. Then a 5th trigger occurs, starting CH14. Then a 6th trigger occurs while CH14 is active, but it is ignored because CH14 is not complete. The sequence resumes with CH15, CH11, CH12.
Figure 307: Case of trigger occurring during injected conversion. This diagram illustrates the interaction between regular and injected conversions in an ADC. It shows four rows: ADC MASTER reg (CH1, CH2, CH3), ADC MASTER inj (CH14), ADC SLAVE reg (CH7, CH8, CH9), and ADC SLAVE inj (CH15). The sequence starts with regular conversions CH1, CH2, CH3. A 1st trigger occurs, starting CH14. Then a 2nd trigger occurs while CH14 is active, starting CH15. The conversion CH14 is aborted. Then a 3rd trigger occurs, starting CH14 again. Then a 4th trigger occurs while CH14 is active, starting CH15. The conversion CH14 is aborted again. Then a 5th trigger occurs, starting CH14. Then a 6th trigger occurs while CH14 is active, but it is ignored because CH14 is not complete. The sequence resumes with CH15, CH11, CH12.

Combined injected simultaneous and interleaved mode

This mode is selected by programming DUAL[4:0] bits to 0b00011.

An interleaved conversion can be interrupted with a simultaneous injected event.

In this case, the interleaved conversion is immediately interrupted and the simultaneous injected conversion starts. At the end of the injected sequence, the interleaved conversion is resumed. When the interleaved regular conversion resumes, the first regular conversion which is performed is always the master's one. Figure 308 , Figure 309 , and Figure 310 show examples of this behavior.

Note: In this mode, the ROVSM = 0 setting is not supported in oversampling mode.

Figure 308. Interleaved single channel CH0 with injected sequence CH11, CH12

Figure 308: Interleaved single channel CH0 with injected sequence CH11, CH12. This diagram shows the interleaving of a regular conversion (CH0) and an injected sequence (CH11, CH12). It is divided into two parts. The left part shows the initial state where ADC1 (master) is performing CH0 and ADC2 (slave) is performing CH0. An injected trigger occurs, causing the conversions to be aborted. The injected sequence CH11 and CH12 is then performed. The right part shows the resumption of the regular conversions. ADC1 (master) resumes with CH0, and ADC2 (slave) resumes with CH0. A legend indicates that a light gray box represents 'Sampling' and a dark gray box represents 'Conversion'.
Figure 308: Interleaved single channel CH0 with injected sequence CH11, CH12. This diagram shows the interleaving of a regular conversion (CH0) and an injected sequence (CH11, CH12). It is divided into two parts. The left part shows the initial state where ADC1 (master) is performing CH0 and ADC2 (slave) is performing CH0. An injected trigger occurs, causing the conversions to be aborted. The injected sequence CH11 and CH12 is then performed. The right part shows the resumption of the regular conversions. ADC1 (master) resumes with CH0, and ADC2 (slave) resumes with CH0. A legend indicates that a light gray box represents 'Sampling' and a dark gray box represents 'Conversion'.

Figure 309. Two interleaved channels (CH1, CH2) with injected sequence CH11, CH12
- case 1: Master interrupted first

Timing diagram for Figure 309 showing ADC1 (master) and ADC2 (slave) interleaved channels. ADC1 starts with CH1, CH1, CH1. ADC2 starts with CH2, CH2, CH2. An injected trigger occurs, causing ADC2 to convert CH11, CH12. ADC1's conversions are aborted. After the trigger, ADC1 resumes with CH1, CH1, CH1. ADC2 resumes with CH2, CH2, CH2. Legend: Sampling (light gray), Conversion (dark gray).

ADC1 (master) [CH1] [CH1] [CH1] ... [CH1] [CH1] [CH1]
ADC2 (slave) [CH2] [CH2] [CH2] ... [CH2] [CH2] [CH2]
read CDR read CDR read CDR
Conversions aborted
Injected trigger
CH11 CH11
CH12 CH12
Resume (always restart with the master)
Legend:
Sampling Conversion
MS34462V1

Timing diagram for Figure 309 showing ADC1 (master) and ADC2 (slave) interleaved channels. ADC1 starts with CH1, CH1, CH1. ADC2 starts with CH2, CH2, CH2. An injected trigger occurs, causing ADC2 to convert CH11, CH12. ADC1's conversions are aborted. After the trigger, ADC1 resumes with CH1, CH1, CH1. ADC2 resumes with CH2, CH2, CH2. Legend: Sampling (light gray), Conversion (dark gray).

Figure 310. Two interleaved channels (CH1, CH2) with injected sequence CH11, CH12
- case 2: Slave interrupted first

Timing diagram for Figure 310 showing ADC1 (master) and ADC2 (slave) interleaved channels. ADC1 starts with CH1, CH1, CH1. ADC2 starts with CH2, CH2, CH2. An injected trigger occurs, causing ADC1 to convert CH11, CH12. ADC2's conversions are aborted. After the trigger, ADC1 resumes with CH1, CH1, CH1. ADC2 resumes with CH2, CH2, CH2. Legend: Sampling (light gray), Conversion (dark gray).

ADC1 (master) [CH1] [CH1] [CH1] ... [CH1] [CH1] [CH1]
ADC2 (slave) [CH2] [CH2] [CH2] ... [CH2] [CH2] [CH2]
read CDR read CDR read CDR
Conversions aborted
Injected trigger
CH11 CH11
CH12 CH12
Resume (always restart with the master)
Legend:
Sampling Conversion
MS34463V2

Timing diagram for Figure 310 showing ADC1 (master) and ADC2 (slave) interleaved channels. ADC1 starts with CH1, CH1, CH1. ADC2 starts with CH2, CH2, CH2. An injected trigger occurs, causing ADC1 to convert CH11, CH12. ADC2's conversions are aborted. After the trigger, ADC1 resumes with CH1, CH1, CH1. ADC2 resumes with CH2, CH2, CH2. Legend: Sampling (light gray), Conversion (dark gray).

DMA requests in dual ADC mode

In all dual ADC modes, it is possible to use two DMA channels (one for the master, one for the slave) to transfer the data, like in single mode (refer to Figure 311: DMA requests in regular simultaneous mode when DAMDF[1:0] = 0b00 ).

Figure 311. DMA requests in regular simultaneous mode when DAMDF[1:0] = 0b00

Timing diagram showing DMA requests in regular simultaneous mode. The diagram illustrates the sequence of events for two ADC channels (master and slave) triggered by a common 'Trigger' signal. The master channel (CH1) and slave channel (CH2) both perform a conversion. The master EOC (End of Conversion) signal goes high after the master conversion. The slave EOC signal goes high after the slave conversion. The DMA request from the ADC master is generated when the master EOC signal goes high. The DMA request from the ADC slave is generated when the slave EOC signal goes high. The diagram shows two instances of this sequence. In the first instance, the master EOC signal goes high, and the DMA request from the ADC master is generated. The DMA reads master ADC_DR. Then, the slave EOC signal goes high, and the DMA request from the ADC slave is generated. The DMA reads slave ADC_DR. In the second instance, the same sequence occurs again. The diagram is labeled 'Configuration where each sequence contains only one conversion. Master and slave timings are equal.' and 'MSV31032V3'.

Configuration where each sequence contains only one conversion. Master and slave timings are equal.
MSV31032V3

Timing diagram showing DMA requests in regular simultaneous mode. The diagram illustrates the sequence of events for two ADC channels (master and slave) triggered by a common 'Trigger' signal. The master channel (CH1) and slave channel (CH2) both perform a conversion. The master EOC (End of Conversion) signal goes high after the master conversion. The slave EOC signal goes high after the slave conversion. The DMA request from the ADC master is generated when the master EOC signal goes high. The DMA request from the ADC slave is generated when the slave EOC signal goes high. The diagram shows two instances of this sequence. In the first instance, the master EOC signal goes high, and the DMA request from the ADC master is generated. The DMA reads master ADC_DR. Then, the slave EOC signal goes high, and the DMA request from the ADC slave is generated. The DMA reads slave ADC_DR. In the second instance, the same sequence occurs again. The diagram is labeled 'Configuration where each sequence contains only one conversion. Master and slave timings are equal.' and 'MSV31032V3'.

In interleaved mode or in simultaneous regular mode, it is also possible to save one DMA channel and transfer both data using a single DMA channel. To do this, the DAMDF[1:0] bits must be configured in the ADCC_CCR register:

A DMA request is generated alternatively after the master and slave EOC events have occurred. At that time, the data are alternatively available in the 32-bit register ADCC_CDR2 32-bit register.

This mode is used when the data width is above 16 bits (conversion data width can exceed 16 bits when functions such as oversampling, compensation and left-bit shift, are used).

Behavior: A DMA request is generated each time a new 32-bit data is available:

A DMA request is generated alternatively after the master and slave EOC events have occurred. At that time, two data items are available and the 32-bit register ADCC_CDR contains the two half-words representing two ADC-converted data. The slave ADC data takes the upper half-word and the master ADC data takes the lower half-word. DMA transfers two data by one request.

Any value above 16-bit in the master or the slave-converted data is truncated to the least 16 significant bits.

Behavior: A DMA request is generated each time a new 32-bit data is available:

Figure 312. DMA requests in interleaved mode when DAMDF = 0b10

Timing diagram for DMA requests in interleaved mode. It shows signals for Trigger, ADC Master regular (CH1), ADC Master EOC, ADC Slave regular (CH2), ADC Slave EOC, DMA request from ADC Master, and DMA request from ADC Slave. The diagram illustrates a delay between the Master and Slave conversions. DMA requests are triggered after the completion of both master and slave conversions in a sequence.

Configuration where each sequence contains only one conversion

MSV31034V2

Timing diagram for DMA requests in interleaved mode. It shows signals for Trigger, ADC Master regular (CH1), ADC Master EOC, ADC Slave regular (CH2), ADC Slave EOC, DMA request from ADC Master, and DMA request from ADC Slave. The diagram illustrates a delay between the Master and Slave conversions. DMA requests are triggered after the completion of both master and slave conversions in a sequence.

Note: When using dual ADC mode, the user must take care to configure properly the duration of the master and slave conversions so that a DMA request is generated and served for reading both data (master + slave) before a new conversion data is available.

DAMDF[1:0] = 0b11:

This mode is similar to the DAMDF[1:0] = 0b10 configuration. The only difference is that on each DMA request (two data are available), two bytes representing two ADC converted data are transferred as a half-word.

This mode is used when the resolution is 6 bits or 8 bits and data are not signed.

Behavior: A DMA request is generated each time two data items are available:

Note: DMA burst mode is not supported in ADC dual mode.

Overrun detection when OVRMOD = 0

In dual ADC mode (when DUAL[4:0] is not equal to b00000), if an overrun is detected on one of the ADCs, DMA requests are no longer issued to ensure that all the data transferred to the RAM are valid (this behavior occurs whatever the DAMDF configuration). The EOC bit

corresponding to one ADC might remain set because the data register of this ADC contains valid data.

Overrun detection when OVRMOD = 1

In dual ADC mode, if an overrun occurs on either ADC, the data register is overwritten, causing continuous DMA requests. This results in loss of data coherency.

DMA one-shot mode/ DMA circular mode when multi-ADC mode is selected

When DAMDF mode is selected (0b10 or 0b11), DMNGT[1:0] bits of the ADCC_CCR register must also be configured to select between DMA one-shot mode and circular mode, as explained in section Section : Managing conversions using the DMA

Stopping the conversions in dual ADC modes

In dual ADC mode, the user software must set the ADSTP/JADSTP control bits in the master ADC to stop the conversions of both ADC. The other ADSTP control bit on the slave ADC has no effect in dual ADC mode.

Once both ADCs are effectively stopped, the ADSTART/JADSTART bits on the master and slave ADCs are both deasserted by hardware.

Analog watchdog in dual mode

The analog watchdog is supported in all dual modes.

Disabling the ADC in dual mode

During a dual-mode operation, the master ADC shares the ADC clock with the slave ADC. To disable the ADC correctly through the ADDIS bit of ADC_CR, set the ADSTP (or JADSP) bit on the master ADC. Once ADSTP (or JADSTP) becomes 0 both for the master and slave ADCs, set the ADDIS bit on the master ADC, then set the ADDIS bit on the slave ADC.

Autoinjection mode in dual mode

Autoinjection mode is not supported when DUAL[4:0] equals 0b00010, 0b00011, 0b00101, 0b00110, 0b00111, or 0b01001.

Additionally, parallel injected oversampling mode is not supported in autoinjection mode.

MDF mode in dual ADC interleaved mode

In dual ADC interleaved modes (DUAL[4:0] = 0b00011 or DUAL[4:0] = 0b00111), the ADC conversion results can be transferred directly to the MDF.

This mode is enabled by setting DMNGT[1:0] bits to 0b10 in the master ADC ADC_CFGR1 register.

The ADC transfers alternatively the 16 least significant bits of the regular data register from the master and the slave converter to a single channel of the MDF. Each transfer resets the EOC flag of each channel 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[10:0] = Data

To obtain 16-bit signed format, the software must configure OFFSET[11:0] bits to 0x800 with OFFSETy_CH[4:0] selecting the target channel set.

Only right aligned data can be set as MDF input format (see Figure 277: Right alignment (offset enabled, signed value) ).

MDF mode in dual ADC simultaneous mode

It is not mandatory to use the MDF in dual ADC simultaneous mode since conversion data are handled by each individual channel. Single mode with same trigger source results in simultaneous conversion with MDF interface.

Dual ADC modes supported in oversampling mode

It is possible to have oversampling enabled when working in dual ADC configuration. In this case, the two ADCs must be programmed with the very same settings (including oversampling).

32.4.32 V BAT supply monitoring

The VBATEN bit in the ADCC_CCR register is used to switch to the battery voltage. As the V BAT voltage can 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 32.4.2: ADC pins and internal signals for more details). As a consequence, the converted digital value is one fourth 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 313 shows the block diagram of the V BAT sensing feature.

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

The diagram illustrates the \( V_{BAT} \) channel circuitry. A switch, controlled by the \( VBATEN \) control bit, connects the \( V_{BAT} \) pin to a resistor divider. The divider output, labeled \( V_{BAT}/4 \) , passes through a multiplexer (also controlled by \( VBATEN \) ) to the \( ADC \) input of the \( ADCx \) block. The \( ADCx \) block outputs to an \( Address/data bus \) . The resistor divider is connected to ground. The diagram is identified as MSv41032V5.

Figure 313. VBAT channel block diagram
  1. 1. The \( VBATEN \) bit must be set to enable the conversion of internal channel for \( V_{BAT}/4 \) .

32.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 the ADC interconnection table in Section 32.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 device datasheet for the sampling time value to be applied when converting the internal voltage reference voltage.

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

Figure 314.\( V_{REFINT} \) channel block diagram Figure 314. VREFINT channel block diagram

The diagram shows the \( V_{REFINT} \) channel circuitry. An \( Internal power block \) provides the \( V_{REFINT} \) signal to a multiplexer. The multiplexer is controlled by the \( VREFEN \) control bit. The output of the multiplexer is connected to the \( ADC \) input of the \( ADCx \) block. The diagram is identified as MSv34467V5.

Figure 314. VREFINT channel block diagram
  1. 1. The \( VREFEN \) bit of the \( ADCC\_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

The power supply voltage applied to the device may be subject to variations or not precisely known. When \( V_{DDA} \) is connected to \( V_{REF+} \) , it is possible to compute the actual \( V_{DDA} \) voltage using the embedded internal reference voltage ( \( V_{REFINT} \) ). \( V_{REFINT} \) and its calibration data acquired by the ADC during the manufacturing process at \( V_{REF+} \) can be used to evaluate the actual \( V_{DDA} \) 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 some applications, the \( 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} \]

For applications where \( V_{REF+} \) is known and ADC converted values are right-aligned, the absolute voltage value can be obtained by using the following formula:

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

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.

32.4.34 Monitoring the supply voltage

The ADCs are connected to the internal supply voltage. To use the ADC to measure this voltage, enable the connection through ADC option register.

32.5 ADC interrupts

For each ADC, an interrupt can be generated:

Separate interrupt enable bits are available for flexibility.

Note: Interrupts are generated by the AHB clock domain. Since the ADC clock is adc_ker_ck, interrupt flags are delayed due to the synchronization between adc_ker_ck and AHB clock domains.

Table 254. 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 flag is setAWD1AWD1IE
Analog watchdog 2 flag is setAWD2AWD2IE
Analog watchdog 3 flag is setAWD3AWD3IE
End of sampling phaseEOSMPEOSMPIE
OverrunOVROVRIE

32.6 ADC registers (for each ADC)

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

32.6.1 ADC interrupt and status register (ADC_ISR)

Address offset: 0x000

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.AWD3AWD2AWD1JEOSJEOCOVREOSEOCEOSMPADRDY
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

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

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

Bit 9 AWD3: Analog watchdog 3 flag

This bit is set by hardware when the converted voltage crosses the values programmed in the fields LTR[22:0] and HTR[22:0] of ADC_AWD3LTR and ADC_AWD3HTR registers. It is cleared by software writing 1 to it or when ADEN = 0.

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 LTR[22:0] and HTR[22:0] of ADC_AWD2LTR and ADC_AWD2HTR registers. It is cleared by software writing 1 to it or when ADEN = 0.

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 LTR[22:0] and HTR[22:0] of ADC_AWD1LTR and ADC_AWD1HTR registers. It is cleared by software writing 1 to it or when ADEN = 0.

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 or when ADEN = 0.

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, when ADEN = 0, 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 (a new conversion has completed while the EOC flag was already set) or when adc_hclk clock is too slow to manage the data.

It is cleared by software writing 1 to it or when ADEN = 0.

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 or when ADEN = 0.

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, when ADEN = 0, 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. It is cleared by software writing 1 or when ADEN = 0.

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 ADRDY: ADC ready

This bit is set by hardware after the ADC has been enabled (bit 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 or when ADEN = 0.

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

32.6.2 ADC interrupt enable register (ADC_IER)

Address offset: 0x004

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.AWD3IEAWD2IEAWD1IEJEOSIEJEOCIEOVRIEEOSIEEOCIEEOSMIEADRDYIE
rwrwrwrwrwrwrwrwrwrw

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

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

Bit 9 AWD3IE : Analog watchdog 3 interrupt enable

This bit is set and cleared by software to enable/disable the analog watchdog 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).

32.6.3 ADC control register (ADC_CR)

Address offset: 0x008

Reset value: 0x2000 0000

31302928272625242322212019181716
ADCALADCAL DIFDEEPP WDRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rsrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JADST PADSTPJADST ARTADSTA RTADDISADEN
rsrsrsrsrsrs

Bit 31 ADCAL: ADC calibration

This bit is set by software to enter ADC calibration mode.

0: Normal mode

1: Calibration mode

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

Bit 30 ADCALDIF: Differential mode for calibration

This bit is set and cleared by software to configure the single-ended or differential input mode for the calibration.

0: Single-ended input calibration mode when ADCAL = 1

1: Differential input calibration mode when ADCAL = 1

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 and ADEN = 0).

Bits 28: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 reconfigured. The ADC is then ready to accept a new start of injected conversions (JADSTART command).

When a software trigger is used, JADSTART bit is cleared by hardware, but JADSTP bit must be programmed to reconfigure the ADC.

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: In autoinjection 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).

When a software trigger is used, ADSTART bit is cleared by hardware. However it is necessary to write ADSTP bit to reconfigure the ADC.

0: No ADC stop regular conversion command ongoing

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

Note: In autoinjection mode (JAUTO = 1), setting ADSTP bit aborts both regular and injected conversions (do not use ADSTP).

Note: In dual ADC regular simultaneous and interleaved modes, the ADSTP bit of the master ADC must be used to stop regular conversions on both ADCs. The other ADSTP bit is inactive.

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[1:0], a conversion starts immediately (software trigger configuration) or once an injected hardware trigger event occurs (hardware trigger configuration).

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, ADDIS = 0 and JAUTO = 0 (ADC is enabled and there is no pending request to disable the ADC).

Note: In autoinjection mode (JAUTO = 1), regular and autoinjected conversions are started by setting ADSTART bit (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[1:0], a conversion starts immediately (software trigger configuration) or once a regular hardware trigger event occurs (hardware trigger configuration).

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

Note: In autoinjection mode (JAUTO = 1), regular and autoinjected conversions are started by setting ADSTART bit (JADSTART must be kept cleared)

Bit 1 ADDIS : ADC disable command

This bit is set by software to disable the ADC (ADDIS command) and place 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, ADDIS = 0 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 ADRDY flag has been set.

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

0: ADC is disabled (OFF state)

1: Write 1 to enable the ADC.

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

32.6.4 ADC configuration register (ADC_CFGR1)

Address offset: 0x00C

Reset value: 0x8000 0000

31302928272625242322212019181716
Res.AWD1CH[4:0]JAUTOJAWD1ENAWD1ENAWD1SGLRes.JDISCENDISCNUM[2:0]DISCEN
rwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.AUTDLYCONTOVRMODEXTEN[1:0]EXTSEL[4:0]Res.RES[1:0]DMNGT[1:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bit 31 Reserved, must be kept at reset value.

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

.....

10011: ADC analog input channel 19 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.

Note: 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 ADEN = 0.

Note: When dual mode is enabled (DUAL bits in ADCC_CCR register are not equal to zero), the JAUTO bit of the slave ADC is not valid and controlled by the JAUTO bit of the master ADC.

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 Reserved, must be kept at reset value.

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

Note: It is not possible to use autoinjection mode and discontinuous mode simultaneously: the DISCEN and JDISCEN bits must be kept cleared by software when JAUTO is set.

Note: When dual mode is enabled (DUAL bits of ADCC_CCR register are not equal to zero), the JDISCEN bit of the slave ADC is not valid and controlled by the JDISCEN bit of the master ADC.

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

Note: When dual mode is enabled (DUAL bits in ADCC_CCR register are not equal to zero), the DISCNUM[2:0] bits of the slave ADC are not valid and controlled by the DISCNUM[2:0] bits of the master ADC.

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: DISCEN and CONT cannot both be set (DISCEN takes priority).

Note: It is not possible to use autoinjection mode and discontinuous mode simultaneously: the DISCEN and JDISCEN bits must be kept cleared by software when JAUTO is set.

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

Note: When regular dual mode is enabled (DUAL bits in ADCC_CCR register are not equal to zero), the DISCEN bit of the slave ADC is not valid and controlled by the DISCEN bit of the master ADC.

Bit 15 Reserved, must be kept at reset value.

Bit 14 AUTDLY : Delayed conversion mode

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

0: Autodelayed conversion mode off

1: Autodelayed 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).

Note: When dual mode is enabled (DUAL bits in ADCC_CCR register are not equal to zero), the AUTDLY bit of the slave ADC is not valid and controlled by the AUTDLY bit of the master ADC.

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: DISCEN and CONT cannot both be set (DISCEN takes priority).

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

Note: When regular dual mode is enabled (DUAL bits in ADCC_CCR register are not equal to zero), the CONT bit of the slave ADC is not valid and controlled by the CONT bit of the master ADC.

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

Bit 4 Reserved, must be kept at reset value.

Bits 3:2 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).

Bits 1:0 DMNGT[1:0] : Data management configuration

These bits are set and cleared by software to select how the ADC interface output data are managed.

00: Regular conversion data stored in DR only

01: DMA one-shot mode selected

10: MDF mode selected

11: DMA circular mode selected

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

32.6.5 ADC configuration register 2 (ADC_CFGR2)

Address offset: 0x010

Reset value: 0x0000 0000

31302928272625242322212019181716
LSHIFT[3:0]Res.Res.OVSR[9:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SMPTRIGSWTRIGBULBRes.Res.ROVSMTROVSOVSS[3:0]Res.Res.Res.ROVSE
rwrwrwrwrwrwrwrwrwrw
Bits 31:28 LSHIFT[3:0] : Left shift factor

This bitfield is set and cleared by software to define the left shifting applied to the final result with or without oversampling.

0000: No left shift

0001: 1-bit left shift

0010: 2-bit left shift

0011: 3-bit left shift

0100: 4-bit left shift

0101: 5-bit left shift

0110: 6-bit left shift

0111: 7-bit left shift

1000: 8-bit left shift

1001: 9-bit left shift

1010: 10-bit left shift

1011: 11-bit left shift

1100: 12-bit left shift

1101: 13-bit left shift

1110: 14-bit left shift

1111: 15-bit left shift

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

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

Bits 25:16 OVSFR[9:0] : Oversampling ratio

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

0: 1x (no oversampling)

1: 2x

2: 3x

...

1023: 1024x

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

Bit 15 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

If EXTEN[1:0] bits are set to 01, the sampling time starts on the trigger rising edge, and the conversion starts on the trigger falling edge.

The SMPTRIG bit must not be set when the BULB bit is set.

When EXTEN[1:0] bits are set to 00, set SWTRIG to start the sampling.

Note: The software is allowed to write this bit only when ADEN = 0. When the discontinuous mode is used, only DISCNUM[2:0] = 000 configuration is compatible with sampling time control trigger mode.

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

This bit is set and cleared by software to trigger the conversion in sampling time control trigger 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), SMPTRIG = 1, and EXTEN[0:1] = 00.

Bit 13 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.

BULB bit must not be set when the SWTRIG 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 ADEN = 0. When the discontinuous mode is used, only DISCNUM[2:0] = 000 configuration is compatible with bulb mode.

Bits 12: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). It is recommended to clear both JOVSE and GCOMP when ROVSM = 0.

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 and JADSTART = 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: 1-bit shift
0010: 2-bit shift
0011: 3-bit shift
0100: 4-bit shift
0101: 5-bit shift
0110: 6-bit shift
0111: 7-bit shift
1000: 8-bit shift
1001: 9-bit shift
1010: 10-bit shift
Other: reserved, must not be used

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

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

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

32.6.6 ADC sample time register 1 (ADC_SMPR1)

Address offset: 0x014

Reset value: 0x0000 0000

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

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

Bits 29:0 SMPx[2:0] : Channel x sampling time selection (x = 9 to 0)

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.

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

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

32.6.7 ADC sample time register 2 (ADC_SMPR2)

Address offset: 0x018

Reset value: 0x0000 0000

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

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

Bits 29:0 SMPx[2:0] : Channel x sampling time selection (x = 19 to 10)

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

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

32.6.8 ADC channel preselection register (ADC_PCSEL)

Address offset: 0x01C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.PCSEL[19:16]
rwrwrwrw
1514131211109876543210
PCSEL[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 19:0 PCSEL[19:0] : Channel i ( \( V_{INP[i]} \) ) preselection

These bits are written by software to preselect the input channel I/O to be converted.

0: Input channel i ( \( V_{INP[i]} \) ) is not preselected for conversion, the result of the ADC conversion for this channel is wrong

1: Input channel i ( \( V_{INP[i]} \) ) is preselected for conversion

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

Configuring the PCSEL bit is not necessary for the internal channels (such as VREFINT).

32.6.9 ADC regular sequence register 1 (ADC_SQR1)

Address offset: 0x030

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.SQ4[4:0]Res.SQ3[4:0]Res.SQ2[4]
rwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ2[3:0]Res.SQ1[4:0]Res.Res.LEN[3:0]
rwrwrwrwrwrwrwrwrwrwrwrw

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 19) 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 19) 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 19) 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 19) 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 LEN[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.

32.6.10 ADC regular sequence register 2 (ADC_SQR2)

Address offset: 0x034

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.SQ9[4:0]Res.SQ8[4:0]Res.SQ7[4]rw
rwrwrwrwrwrwrwrw
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 19) 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 19) 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 19) 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 19) 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 19) 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.

32.6.11 ADC regular sequence register 3 (ADC_SQR3)

Address offset: 0x038

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 19) 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 19) 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 19) 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 19) 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 19) 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.

32.6.12 ADC regular sequence register 4 (ADC_SQR4)

Address offset: 0x03C

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 19) 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 19) 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.

32.6.13 ADC regular data register (ADC_DR)

Address offset: 0x040

Reset value: 0x0000 0000

31302928272625242322212019181716
RDATA[31:16]
rrrrrrrrrrrrrrrr
1514131211109876543210
RDATA[15:0]
rrrrrrrrrrrrrrrr

Bits 31:0 RDATA[31: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 32.4.26: Data management .

32.6.14 ADC injected sequence register (ADC_JSQR)

Address offset: 0x04C

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]JLEN[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 19) 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 19) 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 19) 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 19) 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: 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 JADSTART = 0 (which ensures that no injected conversion is ongoing).

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 JLEN[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.

32.6.15 ADC offset y configuration register (ADC_OFCFGRy)

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

Reset value: 0x0000 0000

31302928272625242322212019181716
OFFSET_CH[4:0]SSATUSATPOS OFFRes.Res.Res.Res.Res.Res.Res.Res.
rwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.

Bits 31:27 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 in bits OFFSET[21: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).

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

Bit 26 SSAT : Signed saturation enable

This bit is set and cleared by software to enable the signed saturation feature.(see Section : Data register, data alignment and offset (ADC_DR, ADC_JDRy, OFFSETy, OFFSETy_CH, OVSS, LSHIFT, JOVSS, JLSHIFT (a) , USAT, SSAT, POSOFF) ).

0: Offset is subtracted maintaining the data integrity and extending converted data size (13-bit signed format)

1: Offset is subtracted and result is saturated to maintain the converted data size

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

Bit 25 USAT : Unsigned saturation enable

This bit is set and cleared by software to enable the unsigned saturation feature.

0: Offset is subtracted maintaining the data integrity

1: Offset is subtracted and result is saturated to maintain the converted data size

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 POSOFF : Positive offset enable

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:0 Reserved, must be kept at reset value.

32.6.16 ADC offset y register (ADC_OFRy)

Address offset: 0x060 + 0x004 * (y -1), (y= 1 to 4)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[21:16]
rwrwrwrwrwrw

1514131211109876543210
OFFSET[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 21:0 OFFSET[21:0] : Data offset y for the channel programmed in OFFSETy_CH[4:0] bits

These bits are written by software to define the offset y 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 y must be programmed in the OFFSETy_CH[4:0] bits. 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).

32.6.17 ADC gain compensation register (ADC_GCOMP)

Address offset: 0x070

Reset value: 0x0000 1000

31302928272625242322212019181716
G COMPRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
rw

1514131211109876543210
Res.Res.GCOMPCOEFF[13:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bit 31 GCOMP : Gain compensation mode

This bit is set and cleared by software to enable the Gain compensation mode.

0: Regular ADC operation mode

1: Gain compensation enabled and applied on all channels.

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

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

Bits 13:0 GCOMPCOEFF[13:0] : Gain compensation coefficient

These bits are set and cleared by software to program the gain compensation coefficient.

00 1000 0000 0000: gain factor of 0.5

...

01 0000 0000 0000: gain factor of 1

10 0000 0000 0000: gain factor of 2

11 0000 0000 0000: gain factor of 3

...

The coefficient is divided by 4096 to get the gain factor ranging from 0 to 3.9999756

Note: This gain compensation is only applied when GCOMP bit is set.

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

32.6.18 ADC injected channel y data register (ADC_JDRy)

Address offset: 0x080 + 0x004 * (y - 1), (y = 1 to 4)

Reset value: 0x0000 0000

31302928272625242322212019181716
JDATA[31:16]
rrrrrrrrrrrrrrrr
1514131211109876543210
JDATA[15:0]
rrrrrrrrrrrrrrrr

Bits 31:0 JDATA[31: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 32.4.26: Data management .

32.6.19 ADC analog watchdog 2 configuration register (ADC_AWD2CR)

Address offset: 0x0A0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[19:16]
rwrwrwrw
1514131211109876543210
AWDCH[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 19:0 AWDCH[19: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.

AWDCH[i] = 0: ADC analog input channel i is not monitored by AWD2

AWDCH[i] = 1: ADC analog input channel i is monitored by AWD2

When AWDCH[19:0] = 000..0, the analog Watchdog 2 is disabled

Note: The channels selected by AWDCH must be also selected in the SQi or JSQi bits.

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

Note: Some channels are not connected physically and must not be selected for the analog watchdog.

32.6.20 ADC analog watchdog 3 configuration register (ADC_AWD3CR)

Address offset: 0x0A4

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[19:16]
rwrwrwrw
1514131211109876543210
AWDCH[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 19:0 AWDCH[19: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.

AWDCH[i] = 0: ADC analog input channel i is not monitored by AWD3

AWDCH[i] = 1: ADC analog input channel i is monitored by AWD3

When AWDCH[19:0] = 000..0, the analog Watchdog 3 is disabled.

Note: The channels selected by AWDCH must be also selected in the SQi or JSQi bits.

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

Note: Some channels are not connected physically and must not be selected for the analog watchdog.

32.6.21 ADC analog watchdog 1 lower threshold register (ADC_AWD1LTR)

Address offset: 0x0A8

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.LTR[22:16]
rwrwrwrwrwrwrw
1514131211109876543210
LTR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 22:0 LTR[22:0] : Analog watchdog 1 lower threshold

These bits are set and cleared by software to define the lower threshold for analog watchdog 1.

Refer to Section 32.4.29: Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWDCH of ADC_AWD2CR and ADC_AWD3CR, HTR, LTR, AWDFILT) .

32.6.22 ADC analog watchdog 1 higher threshold register (ADC_AWD1HTR)

Address offset: 0x0AC

Reset value: 0x003F FFFF

31302928272625242322212019181716
AWDFILT[2:0]Res.Res.Res.Res.Res.Res.HTR[22:16]
rwrwrwrwrwrwrwrwrwrw
1514131211109876543210
HTR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:29 AWDFILT[2:0] : Analog watchdog filtering parameter

These bits are set and cleared by software.

000: No filtering, one detection generates an AWD1 flag or an interrupt

001: two consecutive detections generate an AWD1 flag or an interrupt

...

111: Eight consecutive detections generate an AWD1 flag or an interrupt

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

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

Bits 22:0 HTR[22:0] : Analog watchdog 1 higher threshold

These bits are set and cleared by software to define the higher threshold for analog watchdog 1.

Refer to Analog windows watchdog section.

32.6.23 ADC analog watchdog 2 lower threshold register (ADC_AWD2LTR)

Address offset: 0x0B0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.LTR[22:16]
rwrwrwrwrwrwrw
1514131211109876543210
LTR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 22:0 LTR[22:0] : Analog watchdog 2 lower threshold

These bits are set and cleared by software to define the lower threshold for analog watchdog 2.

Refer to Analog windows watchdog section.

32.6.24 ADC analog watchdog 2 higher threshold register (ADC_AWD2HTR)

Address offset: 0x0B4

Reset value: 0x003F FFFF

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.HTR[22:16]
rwrwrwrwrwrwrw
1514131211109876543210
HTR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 22:0 HTR[22:0] : Analog watchdog 2 higher threshold
These bits are set and cleared by software to define the higher threshold for analog watchdog 2.
Refer to Analog windows watchdog section.

32.6.25 ADC analog watchdog 3 lower threshold register (ADC_AWD3LTR)

Address offset: 0x0B8

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.LTR[22:16]
rwrwrwrwrwrwrw
1514131211109876543210
LTR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 22:0 LTR[22:0] : Analog watchdog 3 lower threshold
These bits are set and cleared by software to define the lower threshold for analog watchdog 3.
Refer to Analog windows watchdog section.

32.6.26 ADC analog watchdog 3 higher threshold register (ADC_AWD3HTR)

Address offset: 0x0BC

Reset value: 0x003F FFFF

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.HTR[22:16]
rwrwrwrwrwrwrw
1514131211109876543210
HTR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 22:0 HTR[22:0] : Analog watchdog 3 higher threshold

These bits are set and cleared by software to define the higher threshold for analog watchdog 3.
Refer to Analog windows watchdog section.

32.6.27 ADC differential mode selection register (ADC_DIFSEL)

Address offset: 0x0C0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DIFSEL[19:16]
rwrwrwrw
1514131211109876543210
DIFSEL[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwr

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

Bits 19:0 DIFSEL[19:0] : Differential mode for channels 19 to 0.

These bits are set and cleared by software. They allow to select if a channel is configured as single-ended or differential or pseudodifferential 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 or pseudodifferential 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).

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

32.6.28 ADC calibration factors (ADC_CALFACT)

Address offset: 0x0C4

Reset value: 0x0000 0000

31302928272625242322212019181716
CALAD
DOS
Res.Res.Res.Res.Res.Res.CALFACT_D[8:0]
rwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.CALFACT_S[8:0]
rwrwrwrwrwrwrwrwrw

Bit 31 CALADDOS : Calibration additional offset

This bit is set by software to add a positive offset at the input stage of ADC for calibration purpose.

0: Calibration additional positive offset disabled

1: Calibration additional positive offset enabled

Note: The software is allowed to write these bits only when ADSTART = 0, and JADSTART = 0 (ADC is enabled, calibration mode is selected, and no conversion is ongoing).

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

Bits 24:16 CALFACT_D[8:0] : Calibration factors in differential mode

These bits are written by hardware or by software.

Once a differential input calibration is complete, they are updated by hardware with the calibration factors.

The software can write these bits with a new calibration factor. If the new calibration factor is different from the current one stored in the analog ADC, it is applied once a new differential conversion is launched.

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (ADC is enabled, no calibration is ongoing and no conversion is ongoing).

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

Bits 8:0 CALFACT_S[8:0] : Calibration factors In single-ended mode

These bits are written by hardware or by software.

Once a single-ended input calibration is complete, they are updated by hardware with the calibration factors.

The software can write these bits with a new calibration factor. If the new calibration factor is different from the current one stored in the analog ADC, it is applied once a new single-ended conversion is launched.

Note: The software is allowed to write these bits only when ADSTART = 0 and JADSTART = 0 (ADC is enabled, no calibration is ongoing and no conversion is ongoing).

This bit can only be cleared by a power-on reset.

32.6.29 ADC option register (ADC_OR)

Address offset: 0x0D0

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OP2OP1OP0
rwrwrw

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

Bit 2 OP2 : Option bit 2

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

0: V DDCORE channel disabled

1: V DDCORE channel enabled

Note: This bit is only available in ADC2 and ADC3.

Bit 1 OP1 : Option bit 1

This bit is set and cleared by software to choose the ADC bandgap source

0: ADC internal bandgap disabled

1: ADC internal bandgap enabled

Note: The software is allowed to write this bit only when ADC is disabled.

Bit 0 OP0 : Option bit 0

This bit is set and cleared by software to enable the internal reference buffer.

0: ADC internal reference voltage buffer disabled

1: ADC internal reference voltage buffer enabled

Note: The software is allowed to write this bit only when ADC is disabled.

32.7 ADC common registers

These registers define the control and status registers common to master and slave ADCs.

32.7.1 ADC common status register (ADCC_CSR)

Address offset: 0x000

Reset value: 0x0000 0000

This register provides an image of the flags of the different ADCs. Nevertheless it is read-only and does not allow to clear the different flags. Instead each flag must be cleared by writing 0 to it in the corresponding ADC_ISR register.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.AWD3_
SLV
AWD2_
SLV
AWD1_
SLV
JEOS_
SLV
JEOC_
SLV
OVR_S_
LV
EOS_S_
LV
EOC_S_
LV
EOSM_
P_SLV
ADRDY_
_SLV
rrrrrrrrrr

1514131211109876543210
Res.Res.Res.Res.Res.Res.AWD3_
MST
AWD2_
MST
AWD1_
MST
JEOS_
MST
JEOC_
MST
OVR_
MST
EOS_M_
ST
EOC_
MST
EOSM_
P_MST
ADRDY_
_MST
rrrrrrrrrr

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

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

Bit 25 AWD3_
SLV
: Analog watchdog 3 flag of the slave ADC

This bit is a copy of the AWD3 bit in the corresponding ADC_ISR register.

Bit 24 AWD2_
SLV
: Analog watchdog 2 flag of the slave ADC

This bit is a copy of the AWD2 bit in the corresponding ADC_ISR register.

Bit 23 AWD1_
SLV
: Analog watchdog 1 flag of the slave ADC

This bit is a copy of the AWD1 bit in the corresponding ADC_ISR register.

Bit 22 JEOS_
SLV
: End of injected sequence flag of the slave ADC

This bit is a copy of the JEOS bit in the corresponding ADC_ISR register.

Bit 21 JEOC_
SLV
: End of injected conversion flag of the slave ADC

This bit is a copy of the JEOC bit in the corresponding ADC_ISR register.

Bit 20 OVR_
SLV
: Overrun flag of the slave ADC

This bit is a copy of the OVR bit in the corresponding ADC_ISR register.

Bit 19 EOS_
SLV
: End of regular sequence flag of the slave ADC. This bit is a copy of the EOS bit in the corresponding ADC_ISR register.

Bit 18 EOC_
SLV
: End of regular conversion of the slave ADC

This bit is a copy of the EOC bit in the corresponding ADC_ISR register.

Bit 17 EOSMP_
SLV
: End of sampling phase flag of the slave ADC

This bit is a copy of the EOSMP2 bit in the corresponding ADC_ISR register.

Bit 16 ADRDY_
SLV
: Slave ADC ready

This bit is a copy of the ADRDY bit in the corresponding ADC_ISR register.

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

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

  1. Bit 9 AWD3_MST : Analog watchdog 3 flag of the master ADC
    This bit is a copy of the AWD3 bit in the corresponding ADC_ISR register.
  2. Bit 8 AWD2_MST : Analog watchdog 2 flag of the master ADC
    This bit is a copy of the AWD2 bit in the corresponding ADC_ISR register.
  3. Bit 7 AWD1_MST : Analog watchdog 1 flag of the master ADC
    This bit is a copy of the AWD1 bit in the corresponding ADC_ISR register.
  4. Bit 6 JEOS_MST : End of injected sequence flag of the master ADC
    This bit is a copy of the JEOS bit in the corresponding ADC_ISR register.
  5. Bit 5 JEOC_MST : End of injected conversion flag of the master ADC
    This bit is a copy of the JEOC bit in the corresponding ADC_ISR register.
  6. Bit 4 OVR_MST : Overrun flag of the master ADC
    This bit is a copy of the OVR bit in the corresponding ADC_ISR register.
  7. Bit 3 EOS_MST : End of regular sequence flag of the master ADC
    This bit is a copy of the EOS bit in the corresponding ADC_ISR register.
  8. Bit 2 EOC_MST : End of regular conversion of the master ADC
    This bit is a copy of the EOC bit in the corresponding ADC_ISR register.
  9. Bit 1 EOSMP_MST : End of Sampling phase flag of the master ADC
    This bit is a copy of the EOSMP bit in the corresponding ADC_ISR register.
  10. Bit 0 ADRDY_MST : Master ADC ready
    This bit is a copy of the ADRDY bit in the corresponding ADC_ISR register.

32.7.2 ADC common control register (ADCC_CCR)

Address offset: 0x008

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.VBATENRes.VREFENRes.Res.Res.Res.Res.Res.
rwrw
1514131211109876543210
DAMDF[1:0]Res.Res.DELAY[3:0]Res.Res.Res.DUAL[4:0]
rwrwrwrwrwrwrwrwrwrwrw

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

Bit 24 VBATEN : VBAT enable

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

0: V BAT channel disabled

1: V BAT channel enabled

Note: V BAT is not available on all ADC instances. Refer to Section 32.4.4: ADC connectivity for details.

Bit 23 Reserved, must be kept at reset value.

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

Note: V REFINT is not available on all ADC instances. Refer to Section 32.4.4: ADC connectivity for details.

Note: The software is allowed to write this bit only when ADEN = 0.

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

Bits 15:14 DAMDF[1:0] : Dual ADC mode data format

This bitfield are set and cleared by software. It specifies the data format in the common data register ADCC_CDR and ADCC_CDR2.

00: Dual ADC mode without data packing (ADCC_CDR and ADCC_CDR2 registers not used).

01: Reserved

10: Data formatting mode for any data width (ADCC_CDR data register is used when the data width is less than 16 bits, otherwise ADCC_CDR2 register is used)

11: Data formatting mode for data width lower that 8 bits (ADCC_CDR data register is used)

Note: The software is allowed to write these bits only when ADEN = 0 (ADC is disabled).

Bit 13 Reserved, must be kept at reset value.

Bit 12 Reserved, must be kept at reset value.

Bits 11:8 DELAY[3:0] : Delay between two sampling phases

These bits are set and cleared by software. These bits are used in dual interleaved modes.

Refer to Table 253 for the value of ADC resolution versus DELAY bits values.

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 7:5 Reserved, must be kept at reset value.

Bits 4:0 DUAL[4:0] : Dual ADC mode selection

These bits are written by software to select the operating mode.

All the ADCs independent:

00000: Independent mode

The following settings apply to dual mode, master and slave ADCs working together

00001: Combined regular simultaneous + Injected simultaneous mode

00010: Combined regular simultaneous + Alternate trigger mode

00011: Combined interleaved mode + Injected simultaneous mode

00101: Injected simultaneous mode only

00110: Regular simultaneous mode only

00111: Interleaved mode only

01001: Alternate trigger mode only

Others: Reserved

All other combinations are reserved and must not be programmed

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

32.7.3 ADC common regular data register for dual mode (ADCC_CDR)

Address offset: 0x00C

Reset value: 0x0000 0000

31302928272625242322212019181716
RDATA_SLV[15:0]
rrrrrrrrrrrrrrrr
1514131211109876543210
RDATA_MST[15:0]
rrrrrrrrrrrrrrrr

Bits 31:16 RDATA_SLV[15:0] : Regular data of the slave ADC

In dual mode, these bits contain the regular data of the slave ADC. Refer to Section 32.4.31: Dual ADC modes .

The data alignment is applied as described in Data register, data alignment and offset (ADC_DR, ADC_JDRy, OFFSETy, OFFSETy_CH, OVSS, LSHIFT, JOVSS, JLSHIFT (a) , USAT, SSAT, POSOFF)

Bits 15:0 RDATA_MST[15:0] : Regular data of the master ADC.

In dual mode, these bits contain the regular data of the master ADC. Refer to Section 32.4.31: Dual ADC modes .

The data alignment is applied as described in Data register, data alignment and offset (ADC_DR, ADC_JDRy, OFFSETy, OFFSETy_CH, OVSS, LSHIFT, JOVSS, JLSHIFT (a) , USAT, SSAT, POSOFF)

In MDMA=0b11 mode, bits 15:8 contains SLV_ADC_DR[7:0], bits 7:0 contains MST_ADC_DR[7:0].

32.7.4 ADC common regular data register for dual mode (ADCC_CDR2)

Address offset: 0x010

Reset value: 0x0000 0000

31302928272625242322212019181716
RDATA_ALT[31:16]
rrrrrrrrrrrrrrrr
1514131211109876543210
RDATA_ALT[15:0]
rrrrrrrrrrrrrrrr

Bits 31:0 RDATA_ALT[31:0] : Regular data of the master/slave alternated ADCs.

In dual mode, these bits contain the regular 32-bit data of the master and the slave ADC. Refer to Section 32.4.31: Dual ADC modes .

The data alignment is applied as described in Data register, data alignment and offset (ADC_DR, ADC_JDRy, OFFSETy, OFFSETy_CH, OVSS, LSHIFT, JOVSS, JLSHIFT (a) , USAT, SSAT, POSOFF)

32.8 ADC register map

ADC1 and ADC2 are master and slave ADC, respectively.

Table 255. ADC register map and reset values for each ADC

OffsetRegister name
reset value
313029282726252423222120191817161514131211109876543210
0x000ADC_ISRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWD3AWD2AWD1JEOSJEOCOVREOSEOCEOSMPADRDY
Reset value0000000000
0x004ADC_IERRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWD3IEAWD2IEAWD1IEJEOSIEJEOCIEOVRIEEOSIEEOCIEEOSMPIEADRDYIE
Reset value0000000000
0x008ADC_CRADCALADCALDIFDEEPPWDRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.JADSTPADSTPJADSTARTADSTARTADDISADEN
Reset value001000000
0x00CADC_CFGR1Res.AWD1CH[4:0]JAUTOJAWD1ENAWD1ENAWD1SGLRes.JDISCENDISCNUM[2:0]DISCENRes.AUTDLYCONTOVRMODEXTEN[1:0]EXTSEL[4:0]Res.RES[1:0]DMNGT[1:0]
Reset value0x8000 0000
0x010ADC_CFGR2LSHIFT[3:0]Res.Res.OVSR[9:0]SMPTRIGSWTRIGBULBRes.ROMVSMTROVSOVSS[3:0]Res.Res.Res.ROVSE
Reset value000000000000000000000000
0x014ADC_SMPR1Res.Res.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 value0000000000000000000000000000
0x018ADC_SMPR2Res.Res.SMP19[2:0]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 value0000000000000000000000000000
0x01CADC_PCSELRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.PCSEL[19:0]
Reset value00000000000000000000
0x020-
0x02C
Reserved
0x030ADC_SQR1Res.Res.Res.SQ4[4:0]Res.SQ3[4:0]Res.SQ2[4:0]Res.SQ1[4:0]Res.LEN[3:0]
Reset value000000000000000000000000
0x034ADC_SQR2Res.Res.Res.SQ9[4:0]Res.SQ8[4:0]Res.SQ7[4:0]Res.SQ6[4:0]Res.SQ5[4:0]
Reset value0000000000000000000000000
0x038ADC_SQR3Res.Res.Res.SQ14[4:0]Res.SQ13[4:0]Res.SQ12[4:0]Res.SQ11[4:0]Res.SQ10[4:0]
Reset value0000000000000000000000000
0x03CADC_SQR4Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.SQ16[4:0]Res.SQ15[4:0]
Reset value0000000000
0x040ADC_DRRDATA[31:0]
Reset value00000000000000000000000000000000

Table 255. ADC register map and reset values for each ADC (continued)

OffsetRegister name
reset value
313029282726252423222120191817161514131211109876543210
0x044-
0x048
Reserved
0x04CADC_JSQRJSQ4[4:0]Res.JSQ3[4:0]Res.JSQ2[4:0]Res.JSQ1[4:0]JEXTEN[1:0]JEXTSEL[4:0]JLEN[1:0]
Reset value00000000000000000000000000000
0x050ADC_OFCFGR1OFFSET1_CH[4:0]SSATUSATPOSOFRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value00000000
0x054ADC_OFCFGR2OFFSET2_CH[4:0]SSATUSATPOSOFRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value00000000
0x058ADC_OFCFGR3OFFSET3_CH[4:0]SSATUSATPOSOFRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value00000000
0x05CADC_OFCFGR4OFFSET4_CH[4:0]SSATUSATPOSOFRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
Reset value00000000
0x060ADC_OFR1Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[21:0]
Reset value0000000000000000000000
0x064ADC_OFR2Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[21:0]
Reset value0000000000000000000000
0x068ADC_OFR3Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[21:0]
Reset value0000000000000000000000
0x06CADC_OFR4Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OFFSET[21:0]
Reset value0000000000000000000000
0x070ADC_GCOMPGCOMPRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.GCOMPCOEFF[13:0]
Reset value001000000000000
0x074-
0x07C
Reserved
0x080ADC_JDR1JDATA[31:0]
Reset value00000000000000000000000000000000
0x084ADC_JDR2JDATA[31:0]
Reset value00000000000000000000000000000000

Table 255. ADC register map and reset values for each ADC (continued)

OffsetRegister name
reset value
313029282726252423222120191817161514131211109876543210
0x088ADC_JDR3JDATA[31:0]
Reset value00000000000000000000000000000000
0x08CADC_JDR4JDATA[31:0]
Reset value00000000000000000000000000000000
0x090-
0x09C
Reserved
0x0A0ADC_AWD2CRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[19:0]
Reset value000000000000000000
0x0A4ADC_AWD3CRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.AWDCH[19:0]
Reset value000000000000000000
0x0A8ADC_AWD1LTRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.LTR[22:0]
Reset value000000000000000000
0x0ACADC_AWD1HTRAWDFILT
[2:0]
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.HTR[22:0]
Reset value000011111111111111111
0x0B0ADC_AWD2LTRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.LTR[22:0]
Reset value000000000000000000
0x0B4ADC_AWD2HTRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.HTR[22:0]
Reset value011111111111111111
0x0B8ADC_AWD3LTRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.LTR[22:0]
Reset value000000000000000000
0x0BCADC_AWD3HTRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.HTR[22:0]
Reset value011111111111111111
0x0C0ADC_DIFSELRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.DIFSEL[19:0]
Reset value000000000000000000
0x0C4ADC_CALFACTCALADDOSRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT_D[8:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.CALFACT_S[8:0]
Reset value0000000000000000000
0x0C8-
0x0CC
Reserved
0x0D0ADC_ORRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.OP2OP1OP0
Reset value000
0x0D4-
0x0FC
Reserved

Table 256. ADC register map and reset values (master and slave ADC common registers)

OffsetRegister name
reset value
313029282726252423222120191817161514131211109876543210
0x000ADCC_CSRRes.Res.Res.Res.Res.Res.AWD3_SLVAWD2_SLVAWD1_SLVJEOS_SLVJEOC_SLVOVR_SLVEOS_SLVEOC_SLVEOSMP_SLVADRDY_SLVRes.Res.Res.Res.Res.Res.AWD3_MSTAWD2_MSTAWD1_MSTJEOS_MSTJEOC_MSTOVR_MSTEOS_MSTEOC_MSTEOSMP_MSTADRDY_MST
Reset value00000000000000000000
0x004ReservedRes.
0x008ADCC_CCRRes.Res.Res.Res.Res.Res.VBATENRes.VREFENRes.Res.Res.DAMDF[1:0]Res.Res.DELAY[3:0]Res.Res.Res.DUAL[4:0]
Reset value0000000000000
0x00CADCC_CDRRDATA_SLV[15:0]RDATA_MST[15:0]
Reset value00000000000000000000000000000000
0x010ADCC_CDR2RDATA_ALT[31:0]
Reset value00000000000000000000000000000000
0x014Reserved

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