10. Analog-to-digital converter (ADC)

This section applies to the whole STM32F20x and STM32F21x family, unless otherwise specified.

10.1 ADC introduction

The 12-bit ADC is a successive approximation analog-to-digital converter. It has up to 19 multiplexed channels allowing it to measure signals from 16 external sources, two internal sources, and the \( V_{BAT} \) channel. The A/D conversion of the channels can be performed in single, continuous, scan or discontinuous mode. The result of the ADC is stored into a left- or right-aligned 16-bit data register.

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

10.2 ADC main features

Figure 28 shows the block diagram of the ADC.

Note: \( V_{REF-} \) , if available (depending on package), must be tied to \( V_{SSA} \) .

10.3 ADC functional description

Figure 28 shows a single ADC block diagram and Table 32 gives the ADC pin description.

Figure 28. Single ADC block diagram

Single ADC block diagram showing internal components like Analog mux, Injected channels, Regular channels, Analog to digital converter, Injected data registers, Regular data register, Analog watchdog, and interrupt logic.

The diagram illustrates the internal architecture of the ADC. On the left, various input pins are shown: VREF+, VREF-, VDDA, VSSA, ADCx_IN0 through ADCx_IN15, Temp. sensor, VREFINT, and VBAT. These connect to an 'Analog mux' which is controlled by 'GPIO ports'. The mux outputs are split into 'Injected channels' (up to 4) and 'Regular channels' (up to 16). Both channel types feed into the 'Analog to digital converter'. The converter is controlled by 'JEXTSEL[3:0] bits' and 'JEXTEN [1:0] bits' for injected group start triggers, and 'EXTSEL[3:0] bits' and 'EXTEN [1:0] bits' for regular group start triggers. These bits are connected to various timer and external interrupt pins (e.g., TIM1_CH4, TIM1_TRGO, TIM2_CH1, TIM2_TRGO, TIM3_CH2, TIM3_CH4, TIM4_CH1, TIM4_CH2, TIM4_CH3, TIM4_TRGO, TIM5_CH4, TIM5_TRGO, TIM8_CH2, TIM8_CH3, TIM8_CH4, EXTI_15, EXTI_11). The converter also receives 'ADCCLK' from an 'ADC prescaler'. The converter's output goes to 'Injected data registers (4 x 16 bits)' and a 'Regular data register (16 bits)'. These registers are connected to an 'Address/data bus' and generate 'DMA request' signals. Above the registers, an 'Analog watchdog' block contains 'Compare result', 'Higher threshold (12 bits)', and 'Lower threshold (12 bits)'. It receives input from the 'Regular channels' and generates 'Analog watchdog event' signals. These events, along with 'End of conversion', 'End of injected conversion', and 'DMA overrun', are processed by a 'Flags' block containing 'OVR', 'EOC', 'JEOC', and 'AWD'. Each flag has a corresponding 'Interrupt enable bits' (e.g., 'OVRIE', 'EOCIE', 'JEOCIE', 'AWDIE'). These enable bits are ANDed together to generate an 'ADC Interrupt to NVIC'.

Single ADC block diagram showing internal components like Analog mux, Injected channels, Regular channels, Analog to digital converter, Injected data registers, Regular data register, Analog watchdog, and interrupt logic.

ai16046

Table 32. ADC pins

NameSignal typeRemarks
V REF+Input, analog reference positiveThe higher/positive reference voltage for the ADC, \( 1.8\text{ V} \leq V_{\text{REF+}} \leq V_{\text{DDA}} \)
V DDAInput, analog supplyAnalog power supply equal to V DD and \( 2.4\text{ V} \leq V_{\text{DDA}} \leq V_{\text{DD}}\ (3.6\text{ V}) \) for full speed
\( 1.8\text{ V} \leq V_{\text{DDA}} \leq V_{\text{DD}}\ (3.6\text{ V}) \) for reduced speed
V REF-Input, analog reference negativeThe lower/negative reference voltage for the ADC, \( V_{\text{REF-}} = V_{\text{SSA}} \)
V SSAInput, analog supply groundGround for analog power supply equal to V SS
ADCx_IN[15:0]Analog input signals16 analog input channels

10.3.1 ADC on-off control

The ADC is powered on by setting the ADON bit in the ADC_CR2 register. When the ADON bit is set for the first time, it wakes up the ADC from the Power-down mode.

Conversion starts when either the SWSTART or the JSWSTART bit is set.

You can stop conversion and put the ADC in power down mode by clearing the ADON bit. In this mode the ADC consumes almost no power (only a few µA).

10.3.2 ADC clock

The ADC features two clock schemes:

10.3.3 Channel selection

There are 16 multiplexed channels. It is possible to organize the conversions 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: ADC_IN3, ADC_IN8, ADC_IN2, ADC_IN2, ADC_IN0, ADC_IN2, ADC_IN2, ADC_IN15.

The total number of conversions in the injected group must be written in the L[1:0] bits in the ADC_JSQR register.

If the ADC_SQRx or ADC_JSQR registers are modified during a conversion, the current conversion is reset and a new start pulse is sent to the ADC to convert the newly chosen group.

Temperature sensor, V REFINT and V BAT internal channels

The temperature sensor is connected to channel ADC1_IN16 and the internal reference voltage V REFINT is connected to ADC1_IN17. These two internal channels can be selected and converted as injected or regular channels.

The V BAT channel is connected to ADC1_IN18 channel. It can also be converted as an injected or regular channel.

Note: The temperature sensor, V REFINT and the V BAT channel are available only on the master ADC1 peripheral.

10.3.4 Single conversion mode

In Single conversion mode the ADC does one conversion. This mode is started with the CONT bit at 0 by either:

Once the conversion of the selected channel is complete:

Then the ADC stops.

10.3.5 Continuous conversion mode

In continuous conversion mode, the ADC starts a new conversion as soon as it finishes one. This mode is started with the CONT bit at 1 either by external trigger or by setting the SWSTART bit in the ADC_CR2 register (for regular channels only).

After each conversion:

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

10.3.6 Timing diagram

As shown in Figure 29 , the ADC needs a stabilization time of \( t_{STAB} \) before it starts converting accurately. After the start of the ADC conversion and after 15 clock cycles, the EOC flag is set and the 16-bit ADC data register contains the result of the conversion.

Figure 29. Timing diagram

Timing diagram for the ADC showing the relationship between ADC_CLK, ADON, SWSTART/JSWSTART, ADC, and EOC signals.

The timing diagram illustrates the sequence of events for an ADC conversion:

Timing diagram for the ADC showing the relationship between ADC_CLK, ADON, SWSTART/JSWSTART, ADC, and EOC signals.

10.3.7 Analog watchdog

The AWD analog watchdog status bit is set if the analog voltage converted by the ADC is below a lower threshold or above a higher threshold. These thresholds are programmed in the 12 least significant bits of the ADC_HTR and ADC_LTR 16-bit registers. An interrupt can be enabled by using the AWDIE bit in the ADC_CR1 register.

The threshold value is independent of the alignment selected by the ALIGN bit in the ADC_CR2 register. The analog voltage is compared to the lower and higher thresholds before alignment.

Table 33 shows how the ADC_CR1 register should be configured to enable the analog watchdog on one or more channels.

Figure 30. Analog watchdog's guarded area

Diagram showing the guarded area between the higher threshold (HTR) and lower threshold (LTR) for the analog watchdog.

The diagram shows a vertical axis representing "Analog voltage". Two horizontal lines mark the "Higher threshold" (labeled HTR) and the "Lower threshold" (labeled LTR). The region between these two thresholds is shaded and labeled "Guarded area".

Diagram showing the guarded area between the higher threshold (HTR) and lower threshold (LTR) for the analog watchdog.

Table 33. Analog watchdog channel selection

Channels guarded by the analog watchdogADC_CR1 register control bits (x = don't care)
AWDSGL bitAWDEN bitJAWDEN bit
Nonex00
All injected channels001
All regular channels010
All regular and injected channels011
Single (1) injected channel101
Single (1) regular channel110
Single (1) regular or injected channel111

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

10.3.8 Scan mode

This mode is used to scan a group of analog channels.

The Scan mode is selected by setting the SCAN bit in the ADC_CR1 register. Once this bit has been set, the ADC scans all the channels selected in the ADC_SQRx registers (for regular channels) or in the ADC_JSQR register (for injected channels). A single conversion is performed for each channel of the group. After each end of conversion, the next channel in the group is converted automatically. If the CONT bit is set, regular channel conversion does not stop at the last selected channel in the group but continues again from the first selected channel.

If the DMA bit is set, the direct memory access (DMA) controller is used to transfer the data converted from the regular group of channels (stored in the ADC_DR register) to SRAM after each regular channel conversion.

The EOC bit is set in the ADC_SR register:

The data converted from an injected channel are always stored into the ADC_JDRx registers.

10.3.9 Injected channel management

Triggered injection

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

  1. 1. Start the conversion of a group of regular channels either by external trigger or by setting the SWSTART bit in the ADC_CR2 register.
  2. 2. If an external injected trigger occurs or if the JSWSTART bit is set during the conversion of a regular group of channels, the current conversion is reset and the injected channel sequence switches to Scan-once mode.
  3. 3. Then, the regular conversion of the regular group of channels is resumed from the last interrupted regular conversion.

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 31 shows the corresponding timing diagram.

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

Auto-injection

If the JAUTO bit 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_SQRx and ADC_JSQR registers.

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

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

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

Figure 31. Injected conversion latency

Timing diagram for injected conversion latency. The diagram shows four waveforms over time. 1. ADCLK: A periodic square wave representing the ADC clock. 2. Injection event: A pulse that triggers the injection sequence. 3. Reset ADC: A pulse that resets the ADC. 4. SOC (Start of Conversion): A pulse that indicates the start of the conversion sequence. The diagram shows the latency between the rising edge of the Injection event and the rising edge of the SOC pulse, labeled 'max latency (1)'. Vertical dashed lines mark the rising edges of the clock and the start of the injection event. The SOC pulse is shown as a high level that drops when the conversion sequence is complete.
Timing diagram for injected conversion latency. The diagram shows four waveforms over time. 1. ADCLK: A periodic square wave representing the ADC clock. 2. Injection event: A pulse that triggers the injection sequence. 3. Reset ADC: A pulse that resets the ADC. 4. SOC (Start of Conversion): A pulse that indicates the start of the conversion sequence. The diagram shows the latency between the rising edge of the Injection event and the rising edge of the SOC pulse, labeled 'max latency (1)'. Vertical dashed lines mark the rising edges of the clock and the start of the injection event. The SOC pulse is shown as a high level that drops when the conversion sequence is complete.

1. The maximum latency value can be found in the electrical characteristics of the STM32F20x and STM32F21x datasheets.

10.3.10 Discontinuous mode

Regular group

This mode is enabled by setting the DISCEN bit in the ADC_CR1 register. It can be used to convert a short sequence of n conversions ( \( n \leq 8 \) ) that is part of the sequence of conversions selected in the ADC_SQRx registers. The value of n is specified by writing to the DISCNUM[2:0] bits in the ADC_CR1 register.

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

Example:

Note: When a regular group is converted in discontinuous mode, no rollover occurs.

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

Injected group

This mode is enabled by setting the JDISCEN bit in the ADC_CR1 register. It can be used to convert the sequence selected in the ADC_JSQR register, channel by channel, after an external trigger event.

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

Example:

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

It is not possible to use both the auto-injected and discontinuous modes simultaneously.

Discontinuous mode must not be set for regular and injected groups at the same time.

Discontinuous mode must be enabled only for the conversion of one group.

10.4 Data alignment

The ALIGN bit in the ADC_CR2 register selects the alignment of the data stored after conversion. Data can be right- or left-aligned as shown in Figure 32 and Figure 33 .

The converted data value from the injected group of channels is decreased by the user-defined offset written in the ADC_JOFRx registers so the result can be a negative value. The SEXT bit represents the extended sign value.

For channels in a regular group, no offset is subtracted so only twelve bits are significant.

Figure 32. Right alignment of 12-bit data

Diagram showing right alignment of 12-bit data for injected and regular groups.

The diagram illustrates the right alignment of 12-bit data. It consists of two horizontal rows of 16 cells. The top row, labeled 'Injected group', contains four cells labeled 'SEXT' followed by 12 cells labeled 'D11' through 'D0'. The bottom row, labeled 'Regular group', contains four cells labeled '0' followed by 12 cells labeled 'D11' through 'D0'. A small label 'ai16050' is in the bottom right corner.

Diagram showing right alignment of 12-bit data for injected and regular groups.

Figure 33. Left alignment of 12-bit data

Diagram showing left alignment of 12-bit data for injected and regular groups.

The diagram illustrates the left alignment of 12-bit data. It consists of two horizontal rows of 16 cells. The top row, labeled 'Injected group', contains one cell labeled 'SEXT', followed by 12 cells labeled 'D11' through 'D0', and three cells labeled '0'. The bottom row, labeled 'Regular group', contains 12 cells labeled 'D11' through 'D0', followed by four cells labeled '0'. A small label 'ai16051' is in the bottom right corner.

Diagram showing left alignment of 12-bit data for injected and regular groups.

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

Figure 34. Left alignment of 6-bit data

Diagram showing left alignment of 6-bit data for injected and regular groups.

The diagram illustrates the left alignment of 6-bit data. It consists of two horizontal rows of 16 cells. The top row, labeled 'Injected group', contains eight cells labeled 'SEXT', followed by six cells labeled 'D5' through 'D0', and two cells labeled '0'. The bottom row, labeled 'Regular group', contains eight cells labeled '0', followed by six cells labeled 'D5' through 'D0', and two cells labeled '0'. A small label 'ai16052' is in the bottom right corner.

Diagram showing left alignment of 6-bit data for injected and regular groups.

10.5 Channel-wise programmable sampling time

The ADC samples the input voltage for a number of ADCCLK cycles that can be modified using the SMP[2:0] bits in the ADC_SMPR1 and ADC_SMPR2 registers. Each channel can be sampled with a different sampling time.

The total conversion time is calculated as follows:

\[ T_{\text{conv}} = \text{Sampling time} + 12 \text{ cycles} \]

Example:

With ADCCLK = 30 MHz and sampling time = 3 cycles:

\[ T_{\text{conv}} = 3 + 12 = 15 \text{ cycles} = 0.5 \mu\text{s with APB2 at 60 MHz} \]

10.6 Conversion on external trigger and trigger polarity

Conversion can be triggered by an external event (e.g. timer capture, EXTI line). 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. Table 34 provides the correspondence between the EXTEN[1:0] and JEXTEN[1:0] values and the trigger polarity.

Table 34. Configuring the trigger polarity

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

Note: The polarity of the external trigger can be changed on the fly.

The EXTSEL[3:0] and JEXTSEL[3:0] control bits are used to select which out of 16 possible events can trigger conversion for the regular and injected groups.

Table 35 gives the possible external trigger for regular conversion.

Table 35. External trigger for regular channels
SourceTypeEXTSEL[3:0]
TIM1_CH1 eventInternal signal from on-chip timers0000
TIM1_CH2 event0001
TIM1_CH3 event0010
TIM2_CH2 event0011
TIM2_CH3 event0100
TIM2_CH4 event0101
TIM2_TRGO event0110
TIM3_CH1 event0111
TIM3_TRGO event1000
TIM4_CH4 event1001
TIM5_CH1 event1010
TIM5_CH2 event1011
TIM5_CH3 event1100
TIM8_CH1 event1101
TIM8_TRGO event1110
EXTI line11External pin1111

Table 36 gives the possible external trigger for injected conversion.

Table 36. External trigger for injected channels

SourceConnection typeJEXTSEL[3:0]
TIM1_CH4 eventInternal signal from on-chip timers0000
TIM1_TRGO event0001
TIM2_CH1 event0010
TIM2_TRGO event0011
TIM3_CH2 event0100
TIM3_CH4 event0101
TIM4_CH1 event0110
TIM4_CH2 event0111
TIM4_CH3 event1000
TIM4_TRGO event1001
TIM5_CH4 event1010
TIM5_TRGO event1011
TIM8_CH2 event1100
TIM8_CH3 event1101
TIM8_CH4 event1110
EXTI line15External pin1111

Software source trigger events can be generated by setting SWSTART (for regular conversion) or JSWSTART (for injected conversion) in ADC_CR2.

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

Note: The trigger selection can be changed on the fly. However, when the selection changes, there is a time frame of 1 APB clock cycle during which the trigger detection is disabled. This is to avoid spurious detection during transitions.

10.7 Fast conversion mode

It is possible to perform faster conversion by reducing the ADC resolution. The RES bits are used to select the number of bits available in the data register. The minimum conversion time for each resolution is then as follows:

10.8 Data management

10.8.1 Using the DMA

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

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

Despite this, if data are lost (overrun), the OVR bit in the ADC_SR register is set and an interrupt is generated (if the OVRIE enable bit is set). DMA transfers are then disabled and DMA requests are no longer accepted. In this case, if a DMA request is made, the regular conversion in progress is aborted and further regular triggers are ignored. It is then necessary to clear the OVR flag and the DMAEN bit in the used DMA stream, and to re-initialize both the DMA and the ADC to have the wanted converted channel data transferred to the right memory location. Only then can the conversion be resumed and the data transfer, enabled again. Injected channel conversions are not impacted by overrun errors.

When OVR = 1 in DMA mode, the DMA requests are blocked after the last valid data have been transferred, which means that all the data transferred to the RAM can be considered as valid.

At the end of the last DMA transfer (number of transfers configured in the DMA controller's DMA_SxNDTR register):

To recover the ADC from OVR state when the DMA is used, follow the steps below:

  1. 1. Reinitialize the DMA (adjust destination address and NDTR counter)
  2. 2. Clear the ADC OVR bit in ADC_SR register
  3. 3. Trigger the ADC to start the conversion.

10.8.2 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 EOCS bit must be set in the ADC_CR2 register for the EOC status bit to be set at the end of each conversion, and not only at the end of the sequence. When EOCS = 1, overrun detection is automatically enabled. Thus, each time a conversion is complete, EOC is set and the ADC_DR register can be read. The overrun management is the same as when the DMA is used.

To recover the ADC from OVR state when the EOCS is set, follow the steps below:

  1. 1. Clear the ADC OVR bit in ADC_SR register
  2. 2. Trigger the ADC to start the conversion.

10.8.3 Conversions without DMA and without overrun detection

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). For that, the DMA must be disabled (DMA = 0) and the EOC bit must be set at the end of a sequence only (EOCS = 0). In this configuration, overrun detection is disabled.

10.9 Multi ADC mode

In devices with two ADCs or more, the Dual (with two ADCs) and Triple (with three ADCs) ADC modes can be used (see Figure 35 ).

In multi ADC mode, the start of conversion is triggered alternately or simultaneously by the ADC1 master to the ADC2 and ADC3 slaves, depending on the mode selected by the MULTI[4:0] bits in the ADC_CCR register.

Note: In multi ADC mode, when configuring conversion trigger by an external event, the application must set trigger by the master only and disable trigger by slaves to prevent spurious triggers that would start unwanted slave conversions.

The four possible modes below are implemented:

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

Note: In multi ADC mode, the converted data can be read on the multi-mode data register (ADC_CDR). The status bits can be read in the multi-mode status register (ADC_CSR).

Figure 35. Multi ADC block diagram (1) Multi ADC block diagram showing ADC1 (Master), ADC2 (Slave), and ADC3 (Slave) connected to a common bus. The diagram includes input sources like GPIO ports, external triggers (EXTI), and internal triggers, as well as data registers for regular and injected channels.

The diagram illustrates the internal architecture of the Multi ADC system. On the left, various input sources are shown: ADCx_IN0 through ADCx_IN15 connected to GPIO Ports, a Temp. sensor, V REFINT , and V BAT . External triggers EXT1_11 and EXT1_15 are connected to start trigger multiplexers for regular and injected groups. These triggers feed into three ADC units: ADC1 (Master), ADC2 (Slave), and ADC3 (Slave). Each ADC unit contains 'Regular channels' and 'Injected channels' which connect to 'Regular data register (16 bits)' and 'Injected data registers (4 x 16 bits)'. A 'Common part' block contains a 'Common regular data register (32 bits) (3) ' and a 'Dual/Triple mode control' block, which receives 'internal triggers'. All data registers are connected to a vertical 'Address/data bus' on the right. The identifier 'ai16053' is located at the bottom right of the diagram.

Multi ADC block diagram showing ADC1 (Master), ADC2 (Slave), and ADC3 (Slave) connected to a common bus. The diagram includes input sources like GPIO ports, external triggers (EXTI), and internal triggers, as well as data registers for regular and injected channels.
  1. 1. Although external triggers are present on ADC2 and ADC3 they are not shown in this diagram.
  2. 2. In the Dual ADC mode, the ADC3 slave part is not present.
  3. 3. In Triple ADC mode, the ADC common data register (ADC_CDR) contains the ADC1, ADC2 and ADC3's regular converted data. All 32 register bits are used according to a selected storage order.
    In Dual ADC mode, the ADC common data register (ADC_CDR) contains both the ADC1 and ADC2's regular converted data. All 32 register bits are used.

In Multi ADC mode the DMA may be configured to transfer converted data in three different modes. In all cases, the DMA streams to use are those connected to the ADC:

In Triple ADC mode, ADC1 data are transferred on the first request, ADC2 data are transferred on the second request and ADC3 data are transferred on the third request; the sequence is repeated. So the DMA first transfers ADC1 data followed by ADC2 data followed by ADC3 data and so on.

DMA mode 1 is used in regular simultaneous triple mode only.

Example:

Regular simultaneous triple mode: 3 consecutive DMA requests are generated (one for each converted data item)

1st request: ADC_CDR[31:0] = ADC1_DR[15:0]

2nd request: ADC_CDR[31:0] = ADC2_DR[15:0]

3rd request: ADC_CDR[31:0] = ADC3_DR[15:0]

4th request: ADC_CDR[31:0] = ADC1_DR[15:0]

In Dual ADC mode, both ADC2 and ADC1 data are transferred on the first request (ADC2 data take the upper half-word and ADC1 data take the lower half-word) and so on.

In Triple ADC mode, three DMA requests are generated. On the first request, both ADC2 and ADC1 data are transferred (ADC2 data take the upper half-word and ADC1 data take the lower half-word). On the second request, both ADC1 and ADC3 data are transferred (ADC1 data take the upper half-word and ADC3 data take the lower half-word). On the third request, both ADC3 and ADC2 data are transferred (ADC3 data take the upper half-word and ADC2 data take the lower half-word) and so on.

DMA mode 2 is used in interleaved mode and in regular simultaneous mode (for Dual ADC mode only).

Example:

1st request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]

2nd request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]

1st request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]

2nd request: ADC_CDR[31:0] = ADC1_DR[15:0] | ADC3_DR[15:0]

3rd request: ADC_CDR[31:0] = ADC3_DR[15:0] | ADC2_DR[15:0]

4th request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]

representing two ADC converted data items are transferred as a half-word. The data transfer order is similar to that of the DMA mode 2.

DMA mode 3 is used in interleaved mode in 6-bit and 8-bit resolutions (dual and triple mode).

Example:

Overrun detection: If an overrun is detected on one of the concerned ADCs (ADC1 and ADC2 in dual and triple modes, ADC3 in triple mode only), the DMA requests are no longer issued to ensure that all the data transferred to the RAM are valid. It may happen that the EOC bit corresponding to one ADC remains set because the data register of this ADC contains valid data.

10.9.1 Injected simultaneous mode

This mode converts an injected group of channels. The external trigger source comes from the injected group multiplexer of ADC1 (selected by the JEXTSEL[3:0] bits in the ADC1_CR2 register). A simultaneous trigger is provided to ADC2 and ADC3.

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

In simultaneous mode, one must convert sequences with the same length or ensure that the interval between triggers is longer than the longer of the 2 sequences (Dual ADC mode) /3 sequences (Triple ADC mode). Otherwise, the ADC with the shortest sequence may restart while the ADC with the longest sequence is completing the previous conversions.

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.

Dual ADC mode

At the end of conversion event on ADC1 or ADC2:

Figure 36. Injected simultaneous mode on 4 channels: dual ADC mode

Timing diagram for Dual ADC mode showing channel sequences for ADC1 and ADC2, a trigger signal, sampling, and conversion phases. ADC1 sequence: CH0, CH1, CH2, CH3, ..., CH15. ADC2 sequence: CH15, CH14, CH13, CH12, ..., CH0. A 'Trigger' signal initiates 'Sampling' and then 'Conversion'. The 'End of conversion on ADC1 and ADC2' is marked at the end of the sequences.
Timing diagram for Dual ADC mode showing channel sequences for ADC1 and ADC2, a trigger signal, sampling, and conversion phases. ADC1 sequence: CH0, CH1, CH2, CH3, ..., CH15. ADC2 sequence: CH15, CH14, CH13, CH12, ..., CH0. A 'Trigger' signal initiates 'Sampling' and then 'Conversion'. The 'End of conversion on ADC1 and ADC2' is marked at the end of the sequences.

Triple ADC mode

At the end of conversion event on ADC1, ADC2 or ADC3:

Figure 37. Injected simultaneous mode on 4 channels: triple ADC mode

Timing diagram for Triple ADC mode showing channel sequences for ADC1, ADC2, and ADC3. ADC1: CH0, CH1, CH2, CH3, ..., CH15. ADC2: CH15, CH14, CH13, CH12, ..., CH0. ADC3: CH10, CH12, CH8, CH5, ..., CH2. A 'Trigger' signal initiates 'Sampling' and then 'Conversion'. The 'End of conversion on ADC1, ADC2 and ADC3' is marked at the end of the sequences.
Timing diagram for Triple ADC mode showing channel sequences for ADC1, ADC2, and ADC3. ADC1: CH0, CH1, CH2, CH3, ..., CH15. ADC2: CH15, CH14, CH13, CH12, ..., CH0. ADC3: CH10, CH12, CH8, CH5, ..., CH2. A 'Trigger' signal initiates 'Sampling' and then 'Conversion'. The 'End of conversion on ADC1, ADC2 and ADC3' is marked at the end of the sequences.

10.9.2 Regular simultaneous mode

This mode is performed on a regular group of channels. The external trigger source comes from the regular group multiplexer of ADC1 (selected by the EXTSEL[3:0] bits in the ADC1_CR2 register). A simultaneous trigger is provided to ADC2 and ADC3.

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

In regular simultaneous mode, one must convert sequences with the same length or ensure that the interval between triggers is longer than the long conversion time of the 2 sequences (Dual ADC mode) /3 sequences (Triple ADC mode). Otherwise, the ADC with the shortest sequence may restart while the ADC with the longest sequence is completing the previous conversions.

Injected conversions must be disabled.

Dual ADC mode

At the end of conversion event on ADC1 or ADC2:

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

Diagram of Dual ADC mode showing channel sequences for ADC1 and ADC2. ADC1 channels are CH0, CH1, CH2, CH3, ..., CH15. ADC2 channels are CH15, CH14, CH13, CH12, ..., CH0. A 'Trigger' signal starts the process, followed by 'Sampling' and 'Conversion' phases. The 'End of conversion on ADC1 and ADC2' is indicated at the end of the sequence.

The diagram illustrates the channel sequences for Dual ADC mode. ADC1 is configured with channels CH0, CH1, CH2, CH3, followed by an ellipsis and then CH15. ADC2 is configured with channels CH15, CH14, CH13, CH12, followed by an ellipsis and then CH0. A 'Trigger' signal initiates the conversion process, which consists of 'Sampling' and 'Conversion' phases. The 'End of conversion on ADC1 and ADC2' is marked at the end of the channel sequences. The identifier 'ai16054' is present in the bottom right corner.

Diagram of Dual ADC mode showing channel sequences for ADC1 and ADC2. ADC1 channels are CH0, CH1, CH2, CH3, ..., CH15. ADC2 channels are CH15, CH14, CH13, CH12, ..., CH0. A 'Trigger' signal starts the process, followed by 'Sampling' and 'Conversion' phases. The 'End of conversion on ADC1 and ADC2' is indicated at the end of the sequence.

Triple ADC mode

At the end of conversion event on ADC1, ADC2 or ADC3:

Figure 39. Regular simultaneous mode on 16 channels: triple ADC mode

Diagram of Triple ADC mode showing channel sequences for ADC1, ADC2, and ADC3. ADC1 channels are CH0, CH1, CH2, CH3, ..., CH15. ADC2 channels are CH15, CH14, CH13, CH12, ..., CH0. ADC3 channels are CH10, CH12, CH8, CH5, ..., CH2. A 'Trigger' signal starts the process, followed by 'Sampling' and 'Conversion' phases. The 'End of conversion on ADC1, ADC2 and ADC3' is indicated at the end of the sequence.

The diagram illustrates the channel sequences for Triple ADC mode. ADC1 is configured with channels CH0, CH1, CH2, CH3, followed by an ellipsis and then CH15. ADC2 is configured with channels CH15, CH14, CH13, CH12, followed by an ellipsis and then CH0. ADC3 is configured with channels CH10, CH12, CH8, CH5, followed by an ellipsis and then CH2. A 'Trigger' signal initiates the conversion process, which consists of 'Sampling' and 'Conversion' phases. The 'End of conversion on ADC1, ADC2 and ADC3' is marked at the end of the channel sequences. The identifier 'ai16055' is present in the bottom right corner.

Diagram of Triple ADC mode showing channel sequences for ADC1, ADC2, and ADC3. ADC1 channels are CH0, CH1, CH2, CH3, ..., CH15. ADC2 channels are CH15, CH14, CH13, CH12, ..., CH0. ADC3 channels are CH10, CH12, CH8, CH5, ..., CH2. A 'Trigger' signal starts the process, followed by 'Sampling' and 'Conversion' phases. The 'End of conversion on ADC1, ADC2 and ADC3' is indicated at the end of the sequence.

10.9.3 Interleaved mode

This mode can be started only on a regular group (usually one channel). The external trigger source comes from the regular channel multiplexer of ADC1.

Dual ADC mode

After an external trigger occurs:

The minimum delay which separates 2 conversions in interleaved mode is configured in the DELAY bits in the ADC_CCR register. However, 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). In this case, the delay becomes the sampling time + 2 ADC clock cycles. For instance, if DELAY = 5 clock cycles and the sampling takes 15 clock cycles on both ADCs, then 17 clock cycles separate conversions on ADC1 and ADC2).

If the CONT bit is set on both ADC1 and ADC2, the selected regular channels of both ADCs are continuously converted.

Note: If the conversion sequence is interrupted (for instance when DMA end of transfer occurs), the multi-ADC sequencer must be reset by configuring it in independent mode first (bits DUAL[4:0] = 00000) before reprogramming the interleaved mode.

After an EOC interrupt is generated by ADC2 (if enabled through the EOCIE bit) a 32-bit DMA transfer request is generated (if the DMA[1:0] bits in ADC_CCR are equal to 0b10). This request first transfers the ADC2 converted data stored in the upper half-word of the ADC_CDR 32-bit register into SRAM, then the ADC1 converted data stored in the register's lower half-word into SRAM.

Figure 40. Interleaved mode on 1 channel in continuous conversion mode: dual ADC mode

Timing diagram for Interleaved mode on 1 channel in continuous conversion mode: dual ADC mode. The diagram shows two horizontal timelines for ADC1 and ADC2. A 'Trigger' arrow points to the start of the ADC1 timeline. The ADC1 timeline shows a 'Sampling' phase (grey box) followed by a 'Conversion' phase (white box) for channel 'CH0'. The ADC2 timeline shows a similar 'Sampling' and 'Conversion' phase for channel 'CH0', but delayed. A double-headed arrow between the start of the ADC1 conversion and the start of the ADC2 conversion is labeled '8 ADCCLK cycles'. Arrows point to the end of the conversion sequences on both ADCs, labeled 'End of conversion on ADC1' and 'End of conversion on ADC2'. A legend on the right shows a grey box for 'Sampling' and a white box for 'Conversion'. The diagram is labeled 'ai16056' in the bottom right corner.
Timing diagram for Interleaved mode on 1 channel in continuous conversion mode: dual ADC mode. The diagram shows two horizontal timelines for ADC1 and ADC2. A 'Trigger' arrow points to the start of the ADC1 timeline. The ADC1 timeline shows a 'Sampling' phase (grey box) followed by a 'Conversion' phase (white box) for channel 'CH0'. The ADC2 timeline shows a similar 'Sampling' and 'Conversion' phase for channel 'CH0', but delayed. A double-headed arrow between the start of the ADC1 conversion and the start of the ADC2 conversion is labeled '8 ADCCLK cycles'. Arrows point to the end of the conversion sequences on both ADCs, labeled 'End of conversion on ADC1' and 'End of conversion on ADC2'. A legend on the right shows a grey box for 'Sampling' and a white box for 'Conversion'. The diagram is labeled 'ai16056' in the bottom right corner.

Triple ADC mode

After an external trigger occurs:

The minimum delay which separates 2 conversions in interleaved mode is configured in the DELAY bits in the ADC_CCR register. However, 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). In this case, the delay becomes the sampling time + 2 ADC clock cycles. For instance, if DELAY = 5 clock cycles and the sampling takes 15 clock cycles on the three ADCs, then 17 clock cycles separate the conversions on ADC1, ADC2 and ADC3).

If the CONT bit is set on ADC1, ADC2 and ADC3, the selected regular channels of all ADCs are continuously converted.

Note: If the conversion sequence is interrupted (for instance when DMA end of transfer occurs), the multi-ADC sequencer must be reset by configuring it in independent mode first (bits DUAL[4:0] = 00000) before reprogramming the interleaved mode.

In this mode a DMA request is generated each time 2 data items are available, (if the DMA[1:0] bits in the ADC_CCR register are equal to 0b10). The request first transfers the first converted data stored in the lower half-word of the ADC_CDR 32-bit register to SRAM, then it transfers the second converted data stored in ADC_CDR's upper half-word to SRAM. The sequence is the following:

Figure 41. Interleaved mode on 1 channel in continuous conversion mode: triple ADC mode

Timing diagram for triple ADC mode in interleaved conversion. It shows three ADCs (ADC1, ADC2, ADC3) each with a sequence of channels (CH0). A 'Trigger' initiates the sequence. The diagram shows the flow of data from the ADCs through a buffer to SRAM. Arrows indicate 'End of conversion on ADC1', 'End of conversion on ADC2', and 'End of conversion on ADC3'. A 'DMA request every 2 conversions' is shown. A legend indicates 'Sampling' (small square) and 'Conversion' (large rectangle). The time between the start of the first conversion and the start of the second is marked as '6 ADCCLK cycles'. The diagram is labeled 'ai16058'.
Timing diagram for triple ADC mode in interleaved conversion. It shows three ADCs (ADC1, ADC2, ADC3) each with a sequence of channels (CH0). A 'Trigger' initiates the sequence. The diagram shows the flow of data from the ADCs through a buffer to SRAM. Arrows indicate 'End of conversion on ADC1', 'End of conversion on ADC2', and 'End of conversion on ADC3'. A 'DMA request every 2 conversions' is shown. A legend indicates 'Sampling' (small square) and 'Conversion' (large rectangle). The time between the start of the first conversion and the start of the second is marked as '6 ADCCLK cycles'. The diagram is labeled 'ai16058'.

10.9.4 Alternate trigger mode

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

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.

If the conversion sequence is interrupted (for instance when DMA end of transfer occurs), the multi-ADC sequencer must be reset by configuring it in independent mode first (bits DUAL[4:0] = 00000) before reprogramming the interleaved mode.

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

Dual ADC mode

A JEOC interrupt, if enabled, is generated after all injected ADC1 channels in the group have been converted.

A JEOC interrupt, if enabled, is generated after all injected ADC2 channels in the group have been converted.

If another external trigger occurs after all injected channels in the group have been converted then the alternate trigger process restarts by converting the injected ADC1 channels in the group.

Figure 42. Alternate trigger: injected group of each ADC

Timing diagram showing alternate triggering of ADC1 and ADC2. The diagram illustrates a sequence of triggers (1st, 2nd, 3rd, 4th, ..., (n)th, (n+1)th) and the corresponding conversion phases (Sampling and Conversion) for ADC1 and ADC2. The 1st trigger starts ADC1 conversion. The 2nd trigger starts ADC2 conversion. The 3rd trigger starts ADC1 conversion again. The 4th trigger starts ADC2 conversion again. The (n)th trigger starts ADC1 conversion. The (n+1)th trigger starts ADC2 conversion. The diagram also shows the EOC (End of Conversion) and JEOC (End of Injected Conversion) signals for each ADC. A legend indicates that the top part of the bar represents 'Sampling' and the bottom part represents 'Conversion'.
Timing diagram showing alternate triggering of ADC1 and ADC2. The diagram illustrates a sequence of triggers (1st, 2nd, 3rd, 4th, ..., (n)th, (n+1)th) and the corresponding conversion phases (Sampling and Conversion) for ADC1 and ADC2. The 1st trigger starts ADC1 conversion. The 2nd trigger starts ADC2 conversion. The 3rd trigger starts ADC1 conversion again. The 4th trigger starts ADC2 conversion again. The (n)th trigger starts ADC1 conversion. The (n+1)th trigger starts ADC2 conversion. The diagram also shows the EOC (End of Conversion) and JEOC (End of Injected Conversion) signals for each ADC. A legend indicates that the top part of the bar represents 'Sampling' and the bottom part represents 'Conversion'.

If the injected discontinuous mode is enabled for both ADC1 and ADC2:

A JEOC interrupt, if enabled, is generated after all injected ADC1 channels in the group have been converted.

A JEOC interrupt, if enabled, is generated after all injected ADC2 channels in the group have been converted.

If another external trigger occurs after all injected channels in the group have been converted then the alternate trigger process restarts.

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

Figure 43: Timing diagram showing alternate triggers for 4 injected channels in discontinuous mode. The diagram illustrates the sequence of triggers (1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th) and the corresponding ADC1 and ADC2 conversion sequences. A legend indicates that a small rectangle represents 'Sampling' and a larger rectangle represents 'Conversion'. JEOC (End of Injected Conversion) flags are shown for ADC1 and ADC2 after their respective sequences complete.
Figure 43: Timing diagram showing alternate triggers for 4 injected channels in discontinuous mode. The diagram illustrates the sequence of triggers (1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th) and the corresponding ADC1 and ADC2 conversion sequences. A legend indicates that a small rectangle represents 'Sampling' and a larger rectangle represents 'Conversion'. JEOC (End of Injected Conversion) flags are shown for ADC1 and ADC2 after their respective sequences complete.

Triple ADC mode

A JEOC interrupt, if enabled, is generated after all injected ADC1 channels in the group have been converted.

A JEOC interrupt, if enabled, is generated after all injected ADC2 channels in the group have been converted.

A JEOC interrupt, if enabled, is generated after all injected ADC3 channels in the group have been converted.

If another external trigger occurs after all injected channels in the group have been converted then the alternate trigger process restarts by converting the injected ADC1 channels in the group.

Figure 44. Alternate trigger: injected group of each ADC

Figure 44: Timing diagram showing alternate triggers for injected groups of each ADC. The diagram illustrates the sequence of triggers (1st, 2nd, 3rd, 4th, 5th, (n)th, (n+1)th, (n+2)th) and the corresponding ADC1, ADC2, and ADC3 conversion sequences. A legend indicates that a small rectangle represents 'Sampling' and a larger rectangle represents 'Conversion'. EOC (End of Conversion) and JEOC (End of Injected Conversion) flags are shown for each ADC after their respective sequences complete.
Figure 44: Timing diagram showing alternate triggers for injected groups of each ADC. The diagram illustrates the sequence of triggers (1st, 2nd, 3rd, 4th, 5th, (n)th, (n+1)th, (n+2)th) and the corresponding ADC1, ADC2, and ADC3 conversion sequences. A legend indicates that a small rectangle represents 'Sampling' and a larger rectangle represents 'Conversion'. EOC (End of Conversion) and JEOC (End of Injected Conversion) flags are shown for each ADC after their respective sequences complete.

10.9.5 Combined regular/injected simultaneous mode

It is possible to interrupt the simultaneous conversion of a regular group to start the simultaneous conversion of an injected group.

Note: In combined regular/injected simultaneous mode, one must convert sequences with the same length or ensure that the interval between triggers is longer than the long conversion time of the 2 sequences (Dual ADC mode) /3 sequences (Triple ADC mode). Otherwise, the

ADC with the shortest sequence may restart while the ADC with the longest sequence is completing the previous conversions.

10.9.6 Combined regular simultaneous + alternate trigger mode

It is possible to interrupt the simultaneous conversion of a regular group to start the alternate trigger conversion of an injected group. Figure 45 shows the behavior of an alternate trigger interrupting a simultaneous regular conversion.

The injected alternate conversion is immediately started after the injected event. If 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, one must convert sequences with the same length or ensure that the interval between triggers is longer than the long conversion time of the 2 sequences (Dual ADC mode) /3 sequences (Triple ADC mode). Otherwise, the ADC with the shortest sequence may restart while the ADC with the longest sequence is completing the previous conversions.

If the conversion sequence is interrupted (for instance when DMA end of transfer occurs), the multi-ADC sequencer must be reset by configuring it in independent mode first (bits DUAL[4:0] = 00000) before reprogramming the interleaved mode.

Figure 45. Alternate + regular simultaneous

Timing diagram showing ADC conversion sequences for regular (reg) and injected (inj) groups. The diagram illustrates how an injected sequence can interrupt a regular sequence upon a trigger event, and how synchronization is maintained.

The diagram shows four horizontal timelines representing ADC conversion sequences over time.
1. ADC1 reg : Shows a sequence of regular conversions: CH0, CH1, CH2, followed by CH2, CH3, then CH3, CH4.
2. ADC1 inj : Shows an injected sequence starting with CH0, which interrupts the regular sequence.
3. ADC2 reg : Shows a sequence of regular conversions: CH3, CH5, CH6, followed by CH6, CH7, then CH7, CH8.
4. ADC2 inj : Shows an injected sequence starting with CH0, which interrupts the regular sequence.
Triggers:
- 1st trigger : Indicated by a downward arrow, it occurs while ADC1 reg is converting CH2, causing the injected sequence (ADC1 inj) to start.
- 2nd trigger : Indicated by an upward arrow, it occurs while ADC2 reg is converting CH7, but it is ignored because the injected sequence (ADC2 inj) is already running.
Synchronization: The text 'synchro not lost' indicates that the regular sequences resume correctly after the injected sequences complete.
Reference: ai16062

Timing diagram showing ADC conversion sequences for regular (reg) and injected (inj) groups. The diagram illustrates how an injected sequence can interrupt a regular sequence upon a trigger event, and how synchronization is maintained.

If a trigger occurs during an injected conversion that has interrupted a regular conversion, it is ignored. Figure 46 shows the behavior in this case (2nd trigger is ignored).

Figure 46. Case of trigger occurring during injected conversion

Timing diagram showing ADC conversion sequences for regular (reg) and injected (inj) channels. The diagram illustrates four horizontal timelines: ADC1 reg, ADC1 inj, ADC2 reg, and ADC2 inj. Triggers are indicated by arrows: 1st trigger (top, pointing down) occurs between CH1 and CH2 of ADC1 reg; 2nd trigger (bottom, pointing up) occurs between CH6 and CH7 of ADC2 reg; 3rd trigger (top, pointing down) occurs between CH2 and CH3 of ADC1 inj; 4th trigger (bottom, pointing up) occurs between CH7 and CH8 of ADC2 reg. The sequences show how injected conversions (CH0, CH2, CH3, CH4) are interleaved with regular conversions (CH0, CH1, CH2, CH3, CH5, CH6, CH7, CH8).
Timing diagram showing ADC conversion sequences for regular (reg) and injected (inj) channels. The diagram illustrates four horizontal timelines: ADC1 reg, ADC1 inj, ADC2 reg, and ADC2 inj. Triggers are indicated by arrows: 1st trigger (top, pointing down) occurs between CH1 and CH2 of ADC1 reg; 2nd trigger (bottom, pointing up) occurs between CH6 and CH7 of ADC2 reg; 3rd trigger (top, pointing down) occurs between CH2 and CH3 of ADC1 inj; 4th trigger (bottom, pointing up) occurs between CH7 and CH8 of ADC2 reg. The sequences show how injected conversions (CH0, CH2, CH3, CH4) are interleaved with regular conversions (CH0, CH1, CH2, CH3, CH5, CH6, CH7, CH8).

10.10 Temperature sensor

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

The temperature sensor is internally connected to the ADC1_IN16 input channel which is used to convert the sensor's output voltage to a digital value.

Figure 47 shows the block diagram of the temperature sensor.

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

Note: The TSVREFE bit must be set to enable the conversion of both internal channels: ADC1_IN16 (temperature sensor) and ADC1_IN17 ( \( V_{REFINT} \) ).

Main features

Figure 47. Temperature sensor and V REFINT channel block diagram Figure 47. Temperature sensor and VREFINT channel block diagram. The diagram shows a Temperature sensor and an Internal power block connected to a multiplexer. The multiplexer is controlled by the TSVREFE control bit. The output of the multiplexer is VSENSE, which is connected to the ADC1_IN16 input of the ADC1 block. The Internal power block is connected to the ADC1_IN17 input of the ADC1 block. The ADC1 block outputs converted data to the Address/data bus. The diagram is labeled ai16065.
Figure 47. Temperature sensor and VREFINT channel block diagram. The diagram shows a Temperature sensor and an Internal power block connected to a multiplexer. The multiplexer is controlled by the TSVREFE control bit. The output of the multiplexer is VSENSE, which is connected to the ADC1_IN16 input of the ADC1 block. The Internal power block is connected to the ADC1_IN17 input of the ADC1 block. The ADC1 block outputs converted data to the Address/data bus. The diagram is labeled ai16065.

Reading the temperature

To use the sensor:

  1. 1. Select ADC1_IN16 input channel.
  2. 2. Select a sampling time greater than the minimum sampling time specified in the datasheet.
  3. 3. Set the TSVREFE bit in the ADC_CCR register to wake up the temperature sensor from power down mode
  4. 4. Start the ADC conversion by setting the SWSTART bit (or by external trigger)
  5. 5. Read the resulting V SENSE data in the ADC data register
  6. 6. Calculate the temperature using the following formula:

\[ \text{Temperature (in } ^\circ\text{C)} = \{(V_{\text{SENSE}} - V_{25}) / \text{Avg\_Slope}\} + 25 \]

Where:

Refer to the datasheet's electrical characteristics section for the actual values of V 25 and Avg_Slope.

Note: The sensor has a startup time after waking from power down mode before it can output V SENSE at the correct level. The ADC also has a startup time after power-on, so to minimize the delay, the ADON and TSVREFE bits should be set at the same time.

The temperature sensor output voltage changes linearly with temperature. The offset of this linear function depends on each chip due to process variation (up to 45 °C from one chip to another).

The internal temperature sensor is more suited for applications that detect temperature variations instead of absolute temperatures. If accurate temperature reading is required, an external temperature sensor should be used.

10.11 Battery charge monitoring

The VBATE bit in the ADC_CCR register is used to switch to the battery voltage. As the \( V_{BAT} \) voltage could be higher than \( V_{DDA} \) , to ensure the correct operation of the ADC, the \( V_{BAT} \) pin is internally connected to a bridge divider by 2. This bridge is automatically enabled when VBATE is set, to connect \( V_{BAT}/2 \) to the ADC1_IN18 input channel. As a consequence, the converted digital value is half 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.

10.12 ADC interrupts

An interrupt can be produced on the end of conversion for regular and injected groups, when the analog watchdog status bit is set and when the overrun status bit is set. Separate interrupt enable bits are available for flexibility.

Two other flags are present in the ADC_SR register, but there is no interrupt associated with them:

Table 37. ADC interrupts

Interrupt eventEvent flagEnable control bit
End of conversion of a regular groupEOCEOCIE
End of conversion of an injected groupJEOCJEOCIE
Analog watchdog status bit is setAWDAWDIE
OverrunOVROVRIE

10.13 ADC registers

Refer to Section 1.1: List of abbreviations for registers for a list of abbreviations used in register descriptions.

The peripheral registers must be written at word level (32 bits). Read accesses can be done by bytes (8 bits), half-words (16 bits) or words (32 bits).

10.13.1 ADC status register (ADC_SR)

Address offset: 0x00
Reset value: 0x0000 0000

31302928272625242322212019181716
Reserved
1514131211109876543210
ReservedOVRSTRTJSTRTJEOCEOCAWD
rc_w0rc_w0rc_w0rc_w0rc_w0rc_w0

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

Bit 5 OVR : Overrun
This bit is set by hardware when data are lost (either in single mode or in dual/triple mode). It is cleared by software. Overrun detection is enabled only when DMA = 1 or EOCS = 1.

Bit 4 STRT : Regular channel start flag
This bit is set by hardware when regular channel conversion starts. It is cleared by software.

Bit 3 JSTRT : Injected channel start flag
This bit is set by hardware when injected group conversion starts. It is cleared by software.

Bit 2 JEOC : Injected channel end of conversion
This bit is set by hardware at the end of the conversion of all injected channels in the group. It is cleared by software.

Bit 1 EOC : Regular channel end of conversion
This bit is set by hardware at the end of the conversion of a regular group of channels. It is cleared by software or by reading the ADC_DR register.

Bit 0 AWD : Analog watchdog flag
This bit is set by hardware when the converted voltage crosses the values programmed in the ADC_LTR and ADC_HTR registers. It is cleared by software.

10.13.2 ADC control register 1 (ADC_CR1)

Address offset: 0x04

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedRESAWDENJAWDENReserved
rwrwrwrw
1514131211109876543210
DISCNUM[2:0]JDISCENDISCENJAUTOAWDSGLSCANJEOCIEAWDIEEOCIEAWDCH[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bit 26 OVRIE : Overrun interrupt enable

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

0: Overrun interrupt disabled

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

Bits 25:24 RES[1:0] : Resolution

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

00: 12-bit (15 ADCCLK cycles)

01: 10-bit (13 ADCCLK cycles)

10: 8-bit (11 ADCCLK cycles)

11: 6-bit (9 ADCCLK cycles)

Bit 23 AWDEN : Analog watchdog enable on regular channels

This bit is set and cleared by software.

0: Analog watchdog disabled on regular channels

1: Analog watchdog enabled on regular channels

Bit 22 JAWDEN : Analog watchdog enable on injected channels

This bit is set and cleared by software.

0: Analog watchdog disabled on injected channels

1: Analog watchdog enabled on injected channels

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

Bits 15:13 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

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

Bit 11 DISCEN : Discontinuous mode on regular channels

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

Bit 10 JAUTO : Automatic injected group conversion

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

Bit 9 AWDSGL : Enable the watchdog on a single channel in scan mode

This bit is set and cleared by software to enable/disable the analog watchdog on the channel identified by the AWDCH[4:0] bits.

Bit 8 SCAN : Scan mode

This bit is set and cleared by software to enable/disable the Scan mode. In Scan mode, the inputs selected through the ADC_SQRx or ADC_JSQRx registers are converted.

Note: An EOC interrupt is generated if the EOCIE bit is set:

Note: A JEOC interrupt is generated only on the end of conversion of the last channel if the JEOCIE bit is set.

Bit 7 JEOCIE : Interrupt enable for injected channels

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

Bit 6 AWDIE : Analog watchdog interrupt enable

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

Bit 5 EOCIE : Interrupt enable for EOC

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

Bits 4:0 AWDCH[4:0] : Analog watchdog channel select bits

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

  1. Note:
    • 00000: ADC analog input Channel0
    • 00001: ADC analog input Channel1
    • ...
    • 01111: ADC analog input Channel15
    • 10000: ADC analog input Channel16
    • 10001: ADC analog input Channel17
    • 10010: ADC analog input Channel18
    • Other values reserved

10.13.3 ADC control register 2 (ADC_CR2)

Address offset: 0x08

Reset value: 0x0000 0000

31302928272625242322212019181716
reservedSWSTARTEXTENEXTSEL[3:0]reservedJSWSTARTJEXTENJEXTSEL[3:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
reservedALIGNEOCSDDSDMAReservedCONTADON
rwrwrwrwrwrw

Bit 31 Reserved, must be kept at reset value.

Bit 30 SWSTART : Start conversion of regular channels

This bit is set by software to start conversion and cleared by hardware as soon as the conversion starts.

0: Reset state

1: Starts conversion of regular channels

Note: This bit can be set only when ADON = 1 otherwise no conversion is launched.

Bits 29:28 EXTEN : External trigger enable 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: Trigger detection disabled

01: Trigger detection on the rising edge

10: Trigger detection on the falling edge

11: Trigger detection on both the rising and falling edges

Bits 27:24 EXTSEL[3:0] : External event select for regular group

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

0000: Timer 1 CC1 event

0001: Timer 1 CC2 event

0010: Timer 1 CC3 event

0011: Timer 2 CC2 event

0100: Timer 2 CC3 event

0101: Timer 2 CC4 event

0110: Timer 2 TRGO event

0111: Timer 3 CC1 event

1000: Timer 3 TRGO event

1001: Timer 4 CC4 event

1010: Timer 5 CC1 event

1011: Timer 5 CC2 event

1100: Timer 5 CC3 event

1101: Timer 8 CC1 event

1110: Timer 8 TRGO event

1111: EXTI line11

Bit 23 Reserved, must be kept at reset value.

Bit 22 JSWSTART : Start conversion of injected channels

This bit is set by software and cleared by hardware as soon as the conversion starts.

0: Reset state

1: Starts conversion of injected channels

Note: This bit can be set only when ADON = 1 otherwise no conversion is launched.

Bits 21:20 JEXTEN : External trigger enable 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: Trigger detection disabled

01: Trigger detection on the rising edge

10: Trigger detection on the falling edge

11: Trigger detection on both the rising and falling edges

Bits 19:16 JEXTSEL[3:0] : External event select for injected group

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

0000: Timer 1 CC4 event

0001: Timer 1 TRGO event

0010: Timer 2 CC1 event

0011: Timer 2 TRGO event

0100: Timer 3 CC2 event

0101: Timer 3 CC4 event

0110: Timer 4 CC1 event

0111: Timer 4 CC2 event

1000: Timer 4 CC3 event

1001: Timer 4 TRGO event

1010: Timer 5 CC4 event

1011: Timer 5 TRGO event

1100: Timer 8 CC2 event

1101: Timer 8 CC3 event

1110: Timer 8 CC4 event

1111: EXTI line15

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

Bit 11 ALIGN : Data alignment

This bit is set and cleared by software. Refer to Figure 32 and Figure 33 .

0: Right alignment

1: Left alignment

Bit 10 EOCS : End of conversion selection

This bit is set and cleared by software.

0: The EOC bit is set at the end of each sequence of regular conversions. Overrun detection is enabled only if DMA=1.

1: The EOC bit is set at the end of each regular conversion. Overrun detection is enabled.

Bit 9 DDS : DMA disable selection (for single ADC mode)

This bit is set and cleared by software.

0: No new DMA request is issued after the last transfer (as configured in the DMA controller)

1: DMA requests are issued as long as data are converted and DMA=1

Bit 8 DMA : Direct memory access mode (for single ADC mode)

This bit is set and cleared by software. Refer to the DMA controller chapter for more details.

0: DMA mode disabled

1: DMA mode enabled

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

Bit 1 CONT : Continuous conversion

This bit is set and cleared by software. If it is set, conversion takes place continuously until it is cleared.
0: Single conversion mode
1: Continuous conversion mode

Bit 0 ADON : A/D Converter ON / OFF

This bit is set and cleared by software.

Note: 0: Disable ADC conversion and go to power down mode
1: Enable ADC

10.13.4 ADC sample time register 1 (ADC_SMPR1)

Address offset: 0x0C

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedSMP18[2:0]SMP17[2:0]SMP16[2:0]SMP15[2:1]
rwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SMP15_0SMP14[2:0]SMP13[2:0]SMP12[2:0]SMP11[2:0]SMP10[2:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 26:0 SMPx[2:0] : Channel x sampling time selection

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

Note: 000: 3 cycles
001: 15 cycles
010: 28 cycles
011: 56 cycles
100: 84 cycles
101: 112 cycles
110: 144 cycles
111: 480 cycles

10.13.5 ADC sample time register 2 (ADC_SMPR2)

Address offset: 0x10

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedSMP9[2:0]SMP8[2:0]SMP7[2:0]SMP6[2:0]SMP5[2:1]
rwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SMP5_0SMP4[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

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.

  1. Note:
    • 000: 3 cycles
    • 001: 15 cycles
    • 010: 28 cycles
    • 011: 56 cycles
    • 100: 84 cycles
    • 101: 112 cycles
    • 110: 144 cycles
    • 111: 480 cycles

10.13.6 ADC injected channel data offset register x (ADC_JOFRx) (x=1..4)

Address offset: 0x14-0x20

Reset value: 0x0000 0000

31302928272625242322212019181716
Reserved
1514131211109876543210
ReservedJOFFSETx[11:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 11:0 JOFFSETx[11:0] : Data offset for injected channel x

These bits are written by software to define the offset to be subtracted from the raw converted data when converting injected channels. The conversion result can be read from in the ADC_JDRx registers.

10.13.7 ADC watchdog higher threshold register (ADC_HTR)

Address offset: 0x24

Reset value: 0x0000 0FFF

31302928272625242322212019181716
Reserved
1514131211109876543210
ReservedHT[11:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 11:0 HT[11:0] : Analog watchdog higher threshold

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

Note: The software can write to these registers when an ADC conversion is ongoing. The programmed value is effective when the next conversion is complete. Writing to this register is performed with a write delay that can create uncertainty on the effective time at which the new value is programmed.

10.13.8 ADC watchdog lower threshold register (ADC_LTR)

Address offset: 0x28

Reset value: 0x0000 0000

31302928272625242322212019181716
Reserved
1514131211109876543210
ReservedLT[11:0]
rwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 11:0 LT[11:0] : Analog watchdog lower threshold

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

Note: The software can write to these registers when an ADC conversion is ongoing. The programmed value is effective when the next conversion is complete. Writing to this register is performed with a write delay that can create uncertainty on the effective time at which the new value is programmed.

10.13.9 ADC regular sequence register 1 (ADC_SQR1)

Address offset: 0x2C

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedL[3:0]SQ16[4:1]
rwrwrwrwrwrwrwrw
1514131211109876543210
SQ16_0SQ15[4:0]SQ14[4:0]SQ13[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

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

These bits are written by software to define the total number of conversions in the regular channel conversion sequence.
0000: 1 conversion
0001: 2 conversions
...
1111: 16 conversions

Bits 19:15 SQ16[4:0] : 16th conversion in regular sequence

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

10.13.10 ADC regular sequence register 2 (ADC_SQR2)

Address offset: 0x30

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedSQ12[4:0]SQ11[4:0]SQ10[4:1]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ10_0SQ9[4:0]SQ8[4:0]SQ7[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

10.13.11 ADC regular sequence register 3 (ADC_SQR3)

Address offset: 0x34

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedSQ6[4:0]SQ5[4:0]SQ4[4:1]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SQ4_0SQ3[4:0]SQ2[4:0]SQ1[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 14:10 SQ3[4:0] : 3rd conversion in regular sequence

Bits 9:5 SQ2[4:0] : 2nd conversion in regular sequence

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

10.13.12 ADC injected sequence register (ADC_JSQR)

Address offset: 0x38

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedJL[1:0]JSQ4[4:1]
rwrwrwrwrwrw
1514131211109876543210
JSQ4[0]JSQ3[4:0]JSQ2[4:0]JSQ1[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

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

Bits 21:20 JL[1:0] : Injected 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

Bits 19:15 JSQ4[4:0] : 4th conversion in injected sequence (when JL[1:0]=3, see note below)

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

Bits 14:10 JSQ3[4:0] : 3rd conversion in injected sequence (when JL[1:0]=3, see note below)

Bits 9:5 JSQ2[4:0] : 2nd conversion in injected sequence (when JL[1:0]=3, see note below)

Bits 4:0 JSQ1[4:0] : 1st conversion in injected sequence (when JL[1:0]=3, see note below)

Note: When JL[1:0]=3 (4 injected conversions in the sequencer), the ADC converts the channels in the following order: JSQ1[4:0], JSQ2[4:0], JSQ3[4:0], and JSQ4[4:0].

When JL=2 (3 injected conversions in the sequencer), the ADC converts the channels in the following order: JSQ2[4:0], JSQ3[4:0], and JSQ4[4:0].

When JL=1 (2 injected conversions in the sequencer), the ADC converts the channels in starting from JSQ3[4:0], and then JSQ4[4:0].

When JL=0 (1 injected conversion in the sequencer), the ADC converts only JSQ4[4:0] channel.

10.13.13 ADC injected data register x (ADC_JDRx) (x= 1..4)

Address offset: 0x3C - 0x48

Reset value: 0x0000 0000

31302928272625242322212019181716
Reserved
1514131211109876543210
JDATA[15:0]
rrrrrrrrrrrrrrrr

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

Bits 15:0 JDATA[15:0] : Injected data

These bits are read-only. They contain the conversion result from injected channel x. The data are left -or right-aligned as shown in Figure 32 and Figure 33 .

10.13.14 ADC regular data register (ADC_DR)

Address offset: 0x4C

Reset value: 0x0000 0000

31302928272625242322212019181716
Reserved
1514131211109876543210
DATA[15:0]
rrrrrrrrrrrrrrrr

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

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

These bits are read-only. They contain the conversion result from the regular channels. The data are left- or right-aligned as shown in Figure 32 and Figure 33 .

10.13.15 ADC Common status register (ADC_CSR)

Address offset: 0x00 (this offset address is relative to ADC1 base address + 0x300)

Reset value: 0x0000 0000

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

31302928272625242322212019181716
ReservedOVR3STRT3JSTRT3JEOC 3EOC3AWD3
ADC3
Reservedrrrrrr
1514131211109876543210
ReservedOVR2STRT2JSTRT2JEOC2EOC2AWD2ReservedOVR1STRT1JSTRT1JEOC 1EOC1AWD1
ADC2ADC1
ReservedrrrrrrReservedrrrrrr
ADC2ADC1

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

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

Bit 5 OVR1 : Overrun flag of ADC1

This bit is a copy of the OVR bit in the ADC1_SR register.

Bit 4 STRT1 : Regular channel Start flag of ADC1

This bit is a copy of the STRT bit in the ADC1_SR register.

Bit 3 JSTRT1 : Injected channel Start flag of ADC1

This bit is a copy of the JSTRT bit in the ADC1_SR register.

Bit 2 JEOC1 : Injected channel end of conversion of ADC1

This bit is a copy of the JEOC bit in the ADC1_SR register.

Bit 1 EOC1 : End of conversion of ADC1

This bit is a copy of the EOC bit in the ADC1_SR register.

Bit 0 AWD1 : Analog watchdog flag of ADC1

This bit is a copy of the AWD bit in the ADC1_SR register.

10.13.16 ADC common control register (ADC_CCR)

Address offset: 0x04 (this offset address is relative to ADC1 base address + 0x300)

Reset value: 0x0000 0000

31302928272625242322212019181716
ReservedTSVREFEVBATEReservedADCPRE
rwrwrwrw
1514131211109876543210
DMA[1:0]DDSRes.DELAY[3:0]ReservedMULTI[4:0]
rwrwrwrwrwrwrwrwrwrwrwrw

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

Bit 23 TSVREFE : Temperature sensor and V REFINT enable

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

0: Temperature sensor and V REFINT channel disabled

1: Temperature sensor and V REFINT channel enabled

Note:

Bit 22 VBATE : V BAT enable

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

0: V BAT channel disabled

1: V BAT channel enabled

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

Bits 17:16 ADCPRE : ADC prescaler

Set and cleared by software to select the frequency of the clock to the ADC. The clock is common for all the ADCs.

Note: 00: PCLK2 divided by 2

01: PCLK2 divided by 4

10: PCLK2 divided by 6

11: PCLK2 divided by 8

Bits 15:14 DMA : Direct memory access mode for multi ADC mode

This bit-field is set and cleared by software. Refer to the DMA controller section for more details.

00: DMA mode disabled

01: DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)

10: DMA mode 2 enabled (2 / 3 half-words by pairs - 2&1 then 1&3 then 3&2)

11: DMA mode 3 enabled (2 / 3 bytes by pairs - 2&1 then 1&3 then 3&2)

Bit 13 DDS : DMA disable selection (for multi-ADC mode)

This bit is set and cleared by software.

0: No new DMA request is issued after the last transfer (as configured in the DMA controller). DMA bits are not cleared by hardware, however they must have been cleared and set to the wanted mode by software before new DMA requests can be generated.

1: DMA requests are issued as long as data are converted and DMA = 01, 10 or 11.

Bit 12 Reserved, must be kept at reset value.

Bit 11:8 DELAY: Delay between 2 sampling phases

Set and cleared by software. These bits are used in dual or triple interleaved modes.

0000: \( 5 \cdot T_{ADCCLK} \)

0001: \( 6 \cdot T_{ADCCLK} \)

0010: \( 7 \cdot T_{ADCCLK} \)

...

1111: \( 20 \cdot T_{ADCCLK} \)

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

Bits 4:0 MULTI[4:0]: Multi ADC mode selection

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

– All the ADCs independent:

00000: Independent mode

– 00001 to 01001: Dual mode, ADC1 and ADC2 working together, ADC3 is independent

00001: Combined regular simultaneous + injected simultaneous mode

00010: Combined regular simultaneous + alternate trigger mode

00011: Reserved

00101: Injected simultaneous mode only

00110: Regular simultaneous mode only

00111: interleaved mode only

01001: Alternate trigger mode only

– 10001 to 11001: Triple mode: ADC1, 2 and 3 working together

10001: Combined regular simultaneous + injected simultaneous mode

10010: Combined regular simultaneous + alternate trigger mode

10011: Reserved

10101: Injected simultaneous mode only

10110: Regular simultaneous mode only

10111: interleaved mode only

11001: Alternate trigger mode only

All other combinations are reserved and must not be programmed

Note: In multi mode, a change of channel configuration generates an abort that can cause a loss of synchronization. It is recommended to disable the multi ADC mode before any configuration change.

10.13.17 ADC common regular data register for dual and triple modes (ADC_CDR)

Address offset: 0x08 (this offset address is relative to ADC1 base address + 0x300)

Reset value: 0x0000 0000

31302928272625242322212019181716
DATA2[15:0]
rrrrrrrrrrrrrrrr
1514131211109876543210
DATA1[15:0]
rrrrrrrrrrrrrrrr

Bits 31:16 DATA2[15:0] : 2nd data item of a pair of regular conversions

Bits 15:0 DATA1[15:0] : 1st data item of a pair of regular conversions

10.13.18 ADC register map

The following table summarizes the ADC registers.

Table 38. ADC global register map

OffsetRegister
0x000 - 0x04CADC1
0x050 - 0x0FCReserved
0x100 - 0x14CADC2
0x118 - 0x1FCReserved
0x200 - 0x24CADC3
0x250 - 0x2FCReserved
0x300 - 0x308Common registers

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

OffsetRegister313029282726252423222120191817161514131211109876543210
0x00ADC_SRReservedOVRSTRTJSTRTJEOCEOCAWD
Reset value000000
0x04ADC_CR1ReservedOVRIERES[1:0]AWDENJAWDENReservedDISC NUM [2:0]JDISCENDISCENJAUTOAWDSGLSCANJEOCIEAWDIEEOCIEAWDCH[4:0]
Reset value00000000000000000000
0x08ADC_CR2Reser vedSWSTARTEXTEN[1:0]EXTSEL [3:0]Reser vedJSWSTARTJEXTEN[1:0]JEXTSEL [3:0]ReservedALIGNEOCSDDSDMAReservedCONTADON
Reset value0000000000000000000
0x0CADC_SMPR1Sample time bits SMPx_x
Reset value00000000000000000000000000000000
0x10ADC_SMPR2Sample time bits SMPx_x
Reset value00000000000000000000000000000000
0x14ADC_JOFR1ReservedJOFFSET1[11:0]
Reset value000000000000
0x18ADC_JOFR2ReservedJOFFSET2[11:0]
Reset value000000000000
0x1CADC_JOFR3ReservedJOFFSET3[11:0]
Reset value000000000000
0x20ADC_JOFR4ReservedJOFFSET4[11:0]
Reset value000000000000
0x24ADC_HTRReservedHT[11:0]
Reset value111111111111
0x28ADC_LTRReservedLT[11:0]
Reset value000000000000
0x2CADC_SQR1ReservedL[3:0]Regular channel sequence SQx_x bits
Reset value000000000000000000000000
0x30ADC_SQR2Reserved ReservedRegular channel sequence SQx_x bits
Reset value0000000000000000000000000000000
0x34ADC_SQR3Regular channel sequence SQx_x bits
Reset value0000000000000000000000000000000
0x38ADC_JSQRReservedJL[1:0]Injected channel sequence JSQx_x bits
Reset value0000000000000000000000
0x3CADC_JDR1ReservedJDATA[15:0]
Reset value0000000000000000
0x40ADC_JDR2ReservedJDATA[15:0]
Reset value0000000000000000
0x44ADC_JDR3ReservedJDATA[15:0]
Reset value0000000000000000
0x48ADC_JDR4ReservedJDATA[15:0]
Reset value0000000000000000
0x4CADC_DRReservedRegular DATA[15:0]
Reset value0000000000000000

Table 40. ADC register map and reset values (common ADC registers)

OffsetRegister313029282726252423222120191817161514131211109876543210
0x00ADC_CSRReservedOVRSTRTJSTRTJEOCEOCAWDReservedOVRSTRTJSTRTJEOCEOCAWDReservedOVRSTRTJSTRTJEOCEOCAWD
Reset value000000000000000000
ADC3ADC2ADC1
0x04ADC_CCRReservedTSVREFEVBATReservedADCPR[1:0]DMA[1:0]DDSReservedDELAY [3:0]ReservedMULTI [4:0]
Reset value000000
0x08ADC_CDRRegular DATA2[15:0]
Reset value00000000000000000000000000000000

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