14. Analog-to-digital converter (ADC)
14.1 Introduction
The 12-bit ADC is a successive approximation analog-to-digital converter. It has up to 20 multiplexed channels allowing it to measure signals from 16 external and 4 internal sources. A/D conversion of the various channels can be performed in single, continuous, scan or discontinuous mode. The result of the ADC is stored in a left-aligned or right-aligned 16-bit data register.
The analog watchdog feature allows the application to detect if the input voltage goes outside the user-defined higher or lower thresholds.
An efficient low-power mode is implemented to allow very low consumption at low frequency.
A built-in hardware oversampler allows analog performances to be improved while off-loading the related computational burden from the CPU.
14.2 ADC main features
- • High performance
- – 12-bit, 10-bit, 8-bit or 6-bit configurable resolution
- – ADC conversion time: 0.4 µs for 12-bit resolution (2.5Msps), faster conversion times can be obtained by lowering resolution.
- – Self-calibration
- – Programmable sampling time
- – Data alignment with built-in data coherency
- – DMA support
- • Low-power
- – The application can reduce PCLK frequency for low-power operation while still keeping optimum ADC performance. For example, 0.4 µs conversion time is kept, whatever the PCLK frequency
- – Wait mode: prevents ADC overrun in applications with low PCLK frequency
- – Auto off mode: ADC is automatically powered off except during the active conversion phase. This dramatically reduces the power consumption of the ADC.
- • Analog input channels
- – 16 external analog inputs
- – 1 channel for internal temperature sensor ( \( V_{\text{SENSE}} \) )
- – 1 channel for internal reference voltage ( \( V_{\text{REFINT}} \) )
- – 1 channel for monitoring external \( V_{\text{BAT}} \) power supply pin
- – 1 channel for monitoring DAC internal channel input
- • Start-of-conversion can be initiated:
- – By software
- – By hardware triggers with configurable polarity (timer events or GPIO input events)
- • Conversion modes
- – Can convert a single channel or can scan a sequence of channels.
- – Single mode converts selected inputs once per trigger
- – Continuous mode converts selected inputs continuously
- – Discontinuous mode
- • Interrupt generation at the end of sampling, end of conversion, end of sequence conversion, and in case of analog watchdog or overrun events
- • Analog watchdog
- • Oversampler
- – 16-bit data register
- – Oversampling ratio adjustable from 2 to 256x
- – Programmable data shift up to 8-bits
- • ADC input range: \( V_{\text{SSA}} \leq V_{\text{IN}} \leq V_{\text{REF+}} \)
14.3 ADC implementation
Table 65. ADC main features| ADC modes/features | STM32U0xx |
|---|---|
| Resolution | 12 bits |
| Maximum sampling speed | 2.5 Msps |
| Hardware offset calibration | X |
| Single-ended inputs | X |
| Differential inputs | - |
| Oversampling mode | X |
| Data register | 16 bits |
| DMA support | X |
| Number of analog watchdogs | 3 |
| Number of external channels | 16 |
| Number of internal channels | 4 |
14.4 ADC functional description
Figure 31 shows the ADC block diagram and Table 66 gives the ADC pin description.
Figure 31. ADC block diagram

The block diagram illustrates the internal architecture of the ADC. At the core is the SAR ADC block, which receives CONVERTED DATA from an Over-sampler and is controlled by a start signal. The start signal is generated by a Start & Stop control block, which in turn is triggered by ADSTART (SW trigger) or HW trigger signals. The HW trigger signals are derived from external TRG0 through TRG7 pins through a series of flip-flops and an AND gate, with configuration from EXTEN[1:0] (trigger enable and edge selection) and EXTSEL[2:0] (trigger selection). The Start & Stop control also includes AUTDLY (Auto-delayed conversion) and ADSTP (stop conversion) features. The Input selection & scan control block manages ADC_IN[18:14, 10:0] channels and is configured by SCANDIR (up/down), CHSEL[19:0] , and CONT (single/continuous) signals. It also provides V IN [X] to the SAR ADC and is influenced by SMP[2:0] (sampling time). The SAR ADC is supported by a Supply and reference block connected to Analog supply VREF+ (VDDA) . This block also handles ADEN/ADDIS (Auto-off mode) and AUTOFF . Calibration is performed via LFTRIG and ADCAL (self-calibration). The ADC output DATA[15:0] is sent to an APB interface , which generates ADC interrupt (via ADREADY , EOSMP , EOS , EOC , OVR , AWDx flags) and DMA request signals. The APB interface is also configured by DMAEN and DMACFG . An ADC_AWDx_OUT signal is generated by a comparator that compares the DATA[15:0] with AWDx thresholds ( AWDxEN , AWDxSGL , AWDCHx[4:0] , LTx[11:0] , HTx[11:0] ). The ADC also features OVRMOD (overrun mode), ALIGN (left/right), and RES[1:0] (12, 10, 8 bits) settings. Other pins include TOVS , OVSS[3:0] , OVS[2:0] , and OVSE . A DISCEN (Discontinuous mode enable) pin is also shown.
MSV71275V1
- 1. TRGi are mapped at product level. Refer to Table External triggers in Section 14.4.1: ADC pins and internal signals.
14.4.1 ADC pins and internal signals
Table 66. ADC input/output pins
| Name | Signal type | Remarks |
|---|---|---|
| VDDA | Input, analog power supply | Analog power supply and positive reference voltage for the ADC |
| VSSA | Input, analog supply ground | Ground for analog power supply |
| VREF+ | Input, analog reference positive | The higher/positive reference voltage for the ADC. |
| ADC_INx | Analog input signals | 16 external analog input channels |
Table 67. ADC internal input/output signals
| Internal signal name | Signal type | Description |
|---|---|---|
| V IN [x] | Analog input channels | Connected either to internal channels or to ADC_INi external channels |
| TRGx | Input | ADC conversion triggers |
| V SENSE | Input | Internal temperature sensor output voltage |
| V REFINT | Input | Internal voltage reference output voltage |
| V BAT/3 | Input | VBAT pin input voltage divided by 3 |
| dac_out1 | Input | DAC internal channel1 input |
| ADC_AWDx_OUT | Output | Internal analog watchdog output signal connected to on-chip timers (x = Analog watchdog number = 1,2,3) |
Table 68. External triggers
| Name | Source | EXTSEL[2:0] |
|---|---|---|
| TRG0 | TIM1_TRGO2 | 000 |
| TRG1 | TIM1_CC4 | 001 |
| TRG2 | TIM2_TRGO | 010 |
| TRG3 | TIM3_TRGO | 011 |
| TRG4 | TIM15_TRGO | 100 |
| TRG5 | TIM6_TRGO | 101 |
| TRG6 | Reserved | 110 |
| TRG7 | EXTI11 | 111 |
14.4.2 ADC voltage regulator (ADVREGEN)
The ADC has a specific internal voltage regulator which must be enabled and stable before using the ADC.
The ADC internal voltage regulator can be enabled by setting ADVREGEN bit to 1 in the ADC_CR register. The software must wait for the ADC voltage regulator startup time ( \( t_{ADCVREG\_STUP} \) ) before launching a calibration or enabling the ADC. This delay must be managed by software (for details on \( t_{ADCVREG\_STUP} \) , refer to the device datasheet).
After ADC operations are complete, the ADC is disabled (ADEN = 0). To keep power consumption low, it is important to disable the ADC voltage regulator before entering low-power mode (LPRun, LPSleep or Stop mode). Refer to Section : ADC voltage regulator disable sequence .
Note: When the internal voltage regulator is disabled, the internal analog calibration is kept.
Analog reference from the power control unit
The internal ADC voltage regulator internally uses an analog reference delivered by the power control unit through a buffer. This buffer is always enabled when the main voltage regulator of the power control unit operates in normal Run mode (refer to Reset and clock control and power control sections).
If the main voltage regulator enters low-power mode (such as Low-power run mode), this buffer is disabled and the ADC cannot be used.
ADC Voltage regulator enable sequence
To enable the ADC voltage regulator, set ADVREGEN bit to 1 in ADC_CR register.
ADC voltage regulator disable sequence
To disable the ADC voltage regulator, follow the sequence below:
- 1. Make sure that the ADC is disabled (ADEN = 0).
- 2. Clear ADVREGEN bit in ADC_CR register.
14.4.3 Calibration (ADCAL)
The ADC has a calibration feature. During the procedure, the ADC calculates a calibration factor which is internally applied to the ADC until the next ADC power-off. The application must not use the ADC during calibration and must wait until it is complete.
Calibration should be performed before starting A/D conversion. It removes the offset error which may vary from chip to chip due to process variation.
The calibration is initiated by software by setting bit ADCAL to 1. It can be initiated only when all the following conditions are met:
- • the ADC voltage regulator is enabled (ADVREGEN = 1),
- • the ADC is disabled (ADEN = 0), and
- • the Auto-off mode is disabled (AUTOFF = 0).
ADCAL bit stays at 1 during all the calibration sequence. It is then cleared by hardware as soon the calibration completes. After this, the calibration factor can be read from the ADC_DR register (from bits 6 to 0).
The internal analog calibration is kept if the ADC is disabled (ADEN = 0). When the ADC operating conditions change ( \( V_{REF+} \) changes are the main contributor to ADC offset variations and temperature change to a lesser extend), it is recommended to re-run a calibration cycle.
The calibration factor is lost in the following cases:
- • The power supply is removed from the ADC (for example when the product enters Standby or VBAT mode)
- • The ADC peripheral is reset.
The calibration factor is lost each time power is removed from the ADC (for example when the product enters Standby or VBAT mode). Still, it is possible to save and restore the calibration factor by software to save time when re-starting the ADC (as long as temperature and voltage are stable during the ADC power-down).
The calibration factor can be written if the ADC is enabled but not converting (ADEN = 1 and ADSTART = 0). Then, at the next start of conversion, the calibration factor is automatically injected into the analog ADC. This loading is transparent and does not add any cycle latency to the start of the conversion.
Software calibration procedure
- 1. Ensure that ADEN = 0, AUTOFF = 0, ADVREGEN = 1, and DMAEN = 0.
- 2. Set ADCAL = 1.
- 3. Wait until ADCAL = 0 (or until EOCAL = 1). This can be handled by interrupt if the interrupt is enabled by setting the EOCALIE bit in the ADC_IER register.
- 4. The calibration factor minus one can then be read from bits 6:0 of the ADC_DR or ADC_CALFACT registers. The resulting calibration factor must be incremented by one and written back to the ADC_CALFACT register.
- 5. To reduce the noise effect of the calibration factor extraction, the software can make the average of eight calibration factor values. This step is optional but recommended for better accuracy.
The averaging procedure is as follows
- a) Obtain eight incremented calibration factor values (perform eight times step 2 to step 4).
- b) Calculate the average of these eight values and round it up to the nearest integer.
- c) Write the result to the ADC_CALFACT register.
Note: If the resulting calibration factor is higher than 0x7F, write 0x7F to the ADC_CALFACT register to avoid overflow.
Figure 32. ADC calibration
![Timing diagram for ADC calibration showing ADCAL signal, ADC State (OFF, Startup, CALIBRATE, OFF), and ADC_DR[6:0]/ADC_CALFACT[6:0] register value (0x00) over time tCAB. The diagram shows the sequence of events for calibration: software write to start calibration, hardware startup, calibration execution, and hardware completion.](/RM0503-STM32U0/81353a426e9e584bfffc4feddbe9ac8c_img.jpg)
The diagram illustrates the timing for ADC calibration. The ADCAL signal is set by software (SW) to start calibration. The ADC State transitions from OFF to Startup, then to CALIBRATE, and finally back to OFF upon hardware completion (HW). During the CALIBRATE state, the ADC_DR[6:0] or ADC_CALFACT[6:0] register is set to 0x00. The total duration of the calibration process is labeled as \( t_{CAB} \) .
Calibration factor forcing software procedure
- 1. Ensure that ADEN = 1 and ADSTART = 0 (ADC started with no conversion ongoing)
- 2. Write ADC_CALFACT with the saved calibration factor
- 3. The calibration factor is used as soon as a new conversion is launched.
Figure 33. Calibration factor forcing

This diagram shows the procedure for forcing a calibration factor. The ADC starts in a 'Ready (not converting)' state with an internal calibration factor of F1. A 'WRITE ADC_CALFACT' is performed by software to update the factor to F2. When a new conversion is started (either by hardware or software), the ADC enters a 'Converting channel (Single ended)' state, and the internal calibration factor is updated to F2. Once the conversion is complete, the ADC returns to the 'Ready' state with the new calibration factor F2.
14.4.4 ADC on-off control (ADEN, ADDIS, ADRDY)
At power-up, the ADC is disabled and put in power-down mode (ADEN = 0).
As shown in Figure 34, the ADC needs a stabilization time of \( t_{STAB} \) before it starts converting accurately.
Two control bits are used to enable or disable the ADC:
- • Set ADEN = 1 to enable the ADC. The ADRDY flag is set as soon as the ADC is ready for operation.
- • Set ADDIS = 1 to disable the ADC and put the ADC in power down mode. The ADEN and ADDIS bits are then automatically cleared by hardware as soon as the ADC is fully disabled.
Conversion can then start either by setting ADSTART to 1 (refer to Section 14.5: Conversion on external trigger and trigger polarity (EXTSEL, EXTEN) ) or when an external trigger event occurs if triggers are enabled.
Follow this procedure to enable the ADC:
- 1. Clear the ADRDY bit in ADC_ISR register by programming this bit to 1.
- 2. Set ADEN = 1 in the ADC_CR register.
- 3. Wait until ADRDY = 1 in the ADC_ISR register (ADRDY is set after the ADC startup time). This can be handled by interrupt if the interrupt is enabled by setting the ADRDYIE bit in the ADC_IER register.
Follow this procedure to disable the ADC:
- 1. Check that ADSTART = 0 in the ADC_CR register to ensure that no conversion is ongoing. If required, stop any ongoing conversion by writing 1 to the ADSTP bit in the ADC_CR register and waiting until this bit is read at 0.
- 2. Set ADDIS = 1 in the ADC_CR register.
- 3. If required by the application, wait until ADEN = 0 in the ADC_CR register, indicating that the ADC is fully disabled (ADDIS is automatically reset once ADEN = 0).
- 4. Clear the ADRDY bit in ADC_ISR register by programming this bit to 1 (optional).
Figure 34. Enabling/disabling the ADC

Note: In Auto-off mode (AUTOFF = 1) the power-on/off phases are performed automatically, by hardware and the ADRDY flag is not set.
When the bus clock is much faster than the analog ADC clock ( \( f_{ADC} \) ), a minimum delay of ten \( f_{ADC} \) clock cycles must be respected between ADEN and ADDIS bit settings.
14.4.5 ADC clock (CKMODE, PRESC[3:0])
The ADC has a dual clock-domain architecture, so that the ADC can be fed with a clock (ADC asynchronous clock) independent from the APB clock (PCLK).
Figure 35. ADC clock scheme
![Figure 35. ADC clock scheme diagram showing the internal clock architecture of the ADC. The RCC (Reset & Clock Controller) provides the PCLK clock to the ADITF block. The ADITF block contains an APB interface and two clock paths. The first path takes the PCLK clock and divides it by 1, 2, or 4 based on the CKMODE[1:0] bits of the ADC_CFGR2 register. The second path takes the ADC asynchronous clock and divides it by a programmable factor (1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256) based on the PRESC[3:0] bits of the ADC_CCR register. Both paths lead to a multiplexer (Others) which selects the clock source for the Analog ADC. The output of the multiplexer is the Analog ADC clock (fADC). The diagram is labeled MSV31926V5.](/RM0503-STM32U0/e4d1b5e946ae73dd512e1e9ff2e0b2d3_img.jpg)
- 1. Refer to Section Reset and clock control (RCC) for how the PCLK clock and ADC asynchronous clock are enabled.
The input clock of the analog ADC can be selected between two different clock sources (see Figure 35: ADC clock scheme to see how the PCLK clock and the ADC asynchronous clock are enabled):
- a) The ADC clock can be a specific clock source, named “ADC asynchronous clock” which is independent and asynchronous with the APB clock.
Refer to RCC Section for more information on generating this clock source.
To select this scheme, bits CKMODE[1:0] of the ADC_CFGR2 register must be reset.
- b) The ADC clock can be derived from the APB clock of the ADC bus interface, divided by a programmable factor (1, 2 or 4) according to bits CKMODE[1:0].
To select this scheme, bits CKMODE[1:0] of the ADC_CFGR2 register must be different from “00”.
In option a), the generated ADC clock can eventually be divided by a prescaler (1, 2, 4, 6, 8, 10, 12, 16, 32, 64, 128, 256) when programming the bits PRESC[3:0] in the ADC_CCR register).
Option a) has the advantage of reaching the maximum ADC clock frequency whatever the APB clock scheme selected.
Option b) has the advantage of bypassing the clock domain resynchronizations. This can be useful when the ADC is triggered by a timer and if the application requires that the ADC is precisely triggered without any uncertainty (otherwise, an uncertainty of the trigger instant is added by the resynchronizations between the two clock domains).
Table 69. Latency between trigger and start of conversion (1)| ADC clock source | CKMODE[1:0] | Latency between the trigger event and the start of conversion |
|---|---|---|
| SYSCLK, PLLPCLK, or HSI16 clock (2) | 00 | Latency is not deterministic (jitter) |
| PCLK divided by 2 | 01 | Latency is deterministic (no jitter) and equal to 3.25 \( f_{ADC} \) cycles |
| PCLK divided by 4 | 10 | Latency is deterministic (no jitter) and equal to 3.125 \( f_{ADC} \) cycles |
| PCLK divided by 1 | 11 | Latency is deterministic (no jitter) and equal to 3 \( f_{ADC} \) cycles |
1. Refer to the device datasheet for the maximum \( f_{ADC} \) frequency.
2. Selected with ADCSEL bitfield of the RCC_CCIPR register.
- Caution: For correct operation of the ADC analog block, the analog ADC clock ( \( f_{ADC} \) ) must have a duty cycle ranging from 45% to 55%. This is granted when the incoming clock (PCLK or ADC asynchronous clock) is divided by a factor of two or higher, using one of the scaler blocks inside the ADC. If it is not the case, some additional rules must be followed:
- • When CKMODE[1:0] = 11 (PCLK divided by one), the AHB and APB prescalers in the RCC must be configured in bypass mode.
- • When the analog ADC clock is derived from the HSE or LSE bypass clock, this bypass clock must have a 45-to-55% duty cycle unless this clock is routed to the ADC through the PLL.
14.4.6 ADC connectivity
ADC inputs are connected to the external channels as well as internal sources as described in Figure 36.
Figure 36. ADC connectivity
![Schematic diagram of ADC connectivity for SRTM32U0xx showing 20 channels (VIN[0] to VIN[19]) connected to a SAR ADC1. Channels include external pins ADC_IN0 to ADC_IN18, and internal sources VSENSE, VREFINT, VBAT/3, and dac_out1. A 'Channel selection' switch matrix is shown between the channels and the ADC input VIN.](/RM0503-STM32U0/60e1c6c40ff79e368187ba8a7e090947_img.jpg)
The diagram illustrates the internal architecture of the ADC for the SRTM32U0xx microcontroller. It features a SAR ADC1 block connected to a common input line labeled \( V_{IN} \) . This input line is connected to a 'Channel selection' switch matrix. The matrix allows for the selection of various analog sources as input channels \( V_{IN}[0] \) through \( V_{IN}[19] \) . The sources include external pins \( ADC\_IN0 \) through \( ADC\_IN18 \) , and internal reference and output sources: \( V_{SENSE} \) , \( V_{REFINT} \) , \( V_{BAT/3} \) , and \( dac\_out1 \) . The SAR ADC1 is shown with its power supply pins \( V_{DDA} \) and \( V_{SSA} \) . The diagram is labeled with 'SRTM32U0xx' at the top and 'MSV71276V1' at the bottom right.
14.4.7 Configuring the ADC
The software must write the ADCAL and ADEN bits in the ADC_CR register and configure the ADC_CFGR1 and ADC_CFGR2 registers only when the ADC is disabled (ADEN must be cleared).
The software must only write to the ADSTART and ADDIS bits in the ADC_CR register only if the ADC is enabled and there is no pending request to disable the ADC (ADEN = 1 and ADDIS = 0).
For all the other control bits in the ADC_IER, ADC_SMPR, ADC_CHSELR and ADC_CCR registers, refer to the description of the corresponding control bit in Section 14.13: ADC registers .
ADC_AWDTRx registers can be modified when conversion is ongoing.
The software must only write to the ADSTP bit in the ADC_CR register if the ADC is enabled (and possibly converting) and there is no pending request to disable the ADC (ADSTART = 1 and ADDIS = 0).
Note: There is no hardware protection preventing software from making write operations forbidden by the above rules. If such a forbidden write access occurs, the ADC may enter an undefined state. To recover correct operation in this case, the ADC must be disabled (clear ADEN = 0 and all the bits in the ADC_CR register).
14.4.8 Channel selection (CHSEL, SCANDIR, CHSELROMOD)
There are up to 20 multiplexed channels:
- • 16 analog inputs from GPIO pins (ADC_INx)
- • 4 internal analog inputs (temperature sensor, internal reference voltage, DAC internal channel1, V BAT channel)
It is possible to convert a single channel or a sequence of channels.
The sequence of the channels to be converted can be programmed in the ADC_CHSELR channel selection register: each analog input channel has a dedicated selection bit (CHSELx).
The ADC scan sequencer can be used in two different modes:
- • Sequencer not fully configurable:
The order in which the channels are scanned is defined by the channel number (CHSELROMOD bit must be cleared in ADC_CFGR1 register):
- – Sequence length configured through CHSELx bits in ADC_CHSELR register
- – Sequence direction: the channels are scanned in a forward direction (from the lowest to the highest channel number) or backward direction (from the highest to the lowest channel number) depending on the value of SCANDIR bit (SCANDIR = 0: forward scan, SCANDIR = 1: backward scan)
- – Any channel can belong to in these sequences
- • Sequencer fully configurable
The CHSELROMOD bit is set in ADC_CFGR1 register.
- – Sequencer length is up to 8 channels
- – The order in which the channels are scanned is independent from the channel number. Any order can be configured through SQ1[3:0] to SQ8[3:0] bits in ADC_CHSELR register.
- – Only channel 0 to channel 14 can be selected in this sequence
- – If the sequencer detects SQx[3:0] = 0b1111, the following SQx[3:0] registers are ignored.
- – If no 0b1111 is programmed in SQx[3:0], the sequencer scans full eight channels.
After programming ADC CHSELR, SCANDIR and CHSELROMOD bits, it is mandatory to wait for CCRDY flag before starting conversions. It indicates that the new channel setting has
been applied. If a new configuration is required, the CCRDY flag must be cleared prior to starting the conversion.
The software is allowed to program the CHSEL, SCANDIR, CHSELROMOD bits only when ADSTART bit is cleared (which ensures that no conversion is ongoing).
Temperature sensor, DAC output, V REFINT and V BAT internal channels
The temperature sensor is connected to channel ADC V IN [11].
The internal voltage reference V REFINT is connected to channel ADC V IN [12].
V BAT channel is connected to ADC V IN [13] channel.
The internal dac_out1 output voltage is connected to ADC V IN [19] channel.
When V REF+ is lower than V DDA , this channel is not converted.
14.4.9 Programmable sampling time (SMPx[2:0])
Before starting a conversion, the ADC needs to establish a direct connection between the voltage source to be measured and the embedded sampling capacitor of the ADC. This sampling time must be enough for the input voltage source to charge the sample and hold capacitor to the input voltage level.
Having a programmable sampling time allows the conversion speed to be trimmed according to the input resistance of the input voltage source.
The ADC samples the input voltage for a number of ADC clock cycles that can be modified using the SMP1[2:0] and SMP2[2:0] bits in the ADC_SMPR register.
Each channel can choose one out of two sampling times configured in SMP1[2:0] and SMP2[2:0] bitfields, through SMPSELx bits in ADC_SMPR register.
The total conversion time is calculated as follows:
Example:
With \( f_{\text{ADC}} = 16 \text{ MHz} \) and a sampling time of 1.5 ADC clock cycles:
The ADC indicates the end of the sampling phase by setting the EOSMP flag.
14.4.10 Single conversion mode (CONT = 0)
In Single conversion mode, the ADC performs a single sequence of conversions, converting all the channels once. This mode is selected when CONT = 0 in the ADC_CFGR1 register. Conversion is started by either:
- • Setting the ADSTART bit in the ADC_CR register
- • Hardware trigger event
Inside the sequence, after each conversion is complete:
- • The converted data are stored in the 16-bit ADC_DR register
- • The EOC (end of conversion) flag is set
- • An interrupt is generated if the EOCIE bit is set
After the sequence of conversions is complete:
- • The EOS (end of sequence) flag is set
- • An interrupt is generated if the EOSIE bit is set
Then the ADC stops until a new external trigger event occurs or the ADSTART bit is set again.
Note: To convert a single channel, program a sequence with a length of 1.
14.4.11 Continuous conversion mode (CONT = 1)
In continuous conversion mode, when a software or hardware trigger event occurs, the ADC performs a sequence of conversions, converting all the channels once and then automatically re-starts and continuously performs the same sequence of conversions. This mode is selected when CONT = 1 in the ADC_CFGR1 register. Conversion is started by either:
- • Setting the ADSTART bit in the ADC_CR register
- • Hardware trigger event
Inside the sequence, after each conversion is complete:
- • The converted data are stored in the 16-bit ADC_DR register
- • The EOC (end of conversion) flag is set
- • An interrupt is generated if the EOCIE bit is set
After the sequence of conversions is complete:
- • The EOS (end of sequence) flag is set
- • An interrupt is generated if the EOSIE bit is set
Then, a new sequence restarts immediately and the ADC continuously repeats the conversion sequence.
Note: To convert a single channel, program a sequence with a length of 1.
It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1.
14.4.12 Starting conversions (ADSTART)
Software starts ADC conversions by setting ADSTART = 1.
When ADSTART is set, the conversion:
- • Starts immediately if EXTEN = 00 (software trigger)
- • At the next active edge of the selected hardware trigger if EXTEN ≠ 00
The ADSTART bit is also used to indicate whether an ADC operation is currently ongoing. It is possible to re-configure the ADC while ADSTART = 0, indicating that the ADC is idle.
The ADSTART bit is cleared by hardware:
- • In single mode with software trigger (CONT = 0, EXTEN = 00)
- – At any end of conversion sequence (EOS = 1)
- • In discontinuous mode with software trigger (CONT = 0, DISCEN = 1, EXTEN = 00)
- – At end of conversion (EOC = 1)
- • In all cases (CONT = x, EXTEN = XX)
- – After execution of the ADSTP procedure invoked by software (see Section 14.4.14: Stopping an ongoing conversion (ADSTP) on page 344 )
Note: In continuous mode (CONT = 1), the ADSTART bit is not cleared by hardware when the EOS flag is set because the sequence is automatically relaunched.
When hardware trigger is selected in single mode (CONT = 0 and EXTEN = 01), ADSTART is not cleared by hardware when the EOS flag is set (except if DMAEN = 1 and DMACFG = 0 in which case ADSTART is cleared at end of the DMA transfer). This avoids the need for software having to set the ADSTART bit again and ensures the next trigger event is not missed.
After changing channel selection configuration (by programming ADC_CHSELR register or changing CHSELRMOD or SCANDIR), it is mandatory to wait until CCRDY flag is asserted before asserting ADSTART, otherwise the value written to ADSTART is ignored.
14.4.13 Timings
The elapsed time between the start of a conversion and the end of conversion is the sum of the configured sampling time plus the successive approximation time depending on data resolution:
Figure 37. Analog-to-digital conversion time

The diagram shows the timing sequence for an ADC conversion. The ADC state transitions from RDY to Sampling Ch(N), then to Converting Ch(N), and finally to Sampling Ch(N+1). The Analog channel is active during the sampling phases. The Internal S/H signal shows the sample and hold phases for AIN(N) and AIN(N+1). ADSTART is set by software (SW) to begin the conversion. EOSMP is set by hardware (HW) at the end of sampling and cleared by SW. EOC is set by HW at the end of conversion and cleared by HW/SW. ADC_DR contains Data N-1 and Data N. Indicative timings \( t_{\text{SAMPL}}^{(1)} \) and \( t_{\text{SAR}}^{(2)} \) are shown. MSV30532V2
- 1. \( t_{\text{SAMPL}} \) depends on SMP[2:0].
- 2. \( t_{\text{SAR}} \) depends on RES[2:0].
- 3. The synchronization between the analog clock and the digital clock domains is not described in the above figure.
Figure 38. ADC conversion timings

The diagram shows the timing sequence for ADC conversions. ADSTART is triggered, and the ADC state transitions from Ready to S0, then Conversion 0, S1, Conversion 1, S2, Conversion 2, S3, and Conversion 3. The ADC_DR register contains Data 0, Data 1, and Data 2. The trigger latency \( t_{\text{LATR}}^{(2)} \) and write latency \( W_{\text{LATENCY}}^{(3)} \) are indicated. MSV33174V2
- 1. EXTEN = 00 or EXTEN ≠ 00.
- 2. Trigger latency (refer to datasheet for more details).
- 3. ADC_DR register write latency (refer to datasheet for more details).
14.4.14 Stopping an ongoing conversion (ADSTP)
The software can decide to stop any ongoing conversions by setting ADSTP = 1 in the ADC_CR register.
This resets the ADC operation and the ADC is idle, ready for a new operation.
When the ADSTP bit is set by software, any ongoing conversion is aborted and the result is discarded (ADC_DR register is not updated with the current conversion).
The scan sequence is also aborted and reset (meaning that restarting the ADC would restart a new sequence).
Once this procedure is complete, the ADSTP and ADSTART bits are both cleared by hardware and the software must wait until ADSTART=0 before starting new conversions.
Figure 39. Stopping an ongoing conversion

The diagram illustrates the timing of ADC signals when stopping an ongoing conversion. The top row shows the ADC state: RDY → SAMPLING CH(N) → CONVERTING CH(N) → RDY. The second row shows the ADSTART signal: it is set by software (SW) at the start of the conversion and cleared by hardware (HW) when the conversion ends. The third row shows the ADSTOP signal: it is set by software (SW) while the conversion is ongoing and cleared by hardware (HW) when the conversion ends. The bottom row shows the ADC_DR register: it contains DATA N-1 during the conversion. A vertical dashed line marks the point where the conversion ends and the ADC returns to the RDY state.
14.5 Conversion on external trigger and trigger polarity (EXTSEL, EXTEN)
A conversion or a sequence of conversion can be triggered either by software or by an external event (for example timer capture). If the EXTEN[1:0] control bits are not equal to “0b00”, then external events are able to trigger a conversion with the selected polarity. The trigger selection is effective once software has set bit ADSTART = 1.
Any hardware triggers which occur while a conversion is ongoing are ignored.
If bit ADSTART = 0, any hardware triggers which occur are ignored.
Table 70 provides the correspondence between the EXTEN[1:0] values and the trigger polarity.
Table 70. Configuring the trigger polarity
| Source | EXTEN[1:0] |
|---|---|
| Trigger detection disabled | 00 |
| Detection on rising edge | 01 |
| Detection on falling edge | 10 |
| Detection on both rising and falling edges | 11 |
Note: The polarity of the external trigger can be changed only when the ADC is not converting ( \( ADSTART = 0 \) ).
The EXTSEL[2:0] control bits are used to select which of 8 possible events can trigger conversions.
Refer to Table 68: External triggers in Section 14.4.1: ADC pins and internal signals for the list of all the external triggers that can be used for regular conversion.
The software source trigger events can be generated by setting the ADSTART bit in the ADC_CR register.
Note: The trigger selection can be changed only when the ADC is not converting ( \( ADSTART = 0 \) ).
14.5.1 Discontinuous mode (DISCEN)
This mode is enabled by setting the DISCEN bit in the ADC_CFGR1 register.
In this mode ( \( DISCEN = 1 \) ), a hardware or software trigger event is required to start each conversion defined in the sequence. On the contrary, if \( DISCEN = 0 \) , a single hardware or software trigger event successively starts all the conversions defined in the sequence.
Example:
- •
\(
DISCEN = 1
\)
, channels to be converted = 0, 3, 7, 10
- – 1st trigger: channel 0 is converted and an EOC event is generated
- – 2nd trigger: channel 3 is converted and an EOC event is generated
- – 3rd trigger: channel 7 is converted and an EOC event is generated
- – 4th trigger: channel 10 is converted and both EOC and EOS events are generated.
- – 5th trigger: channel 0 is converted an EOC event is generated
- – 6th trigger: channel 3 is converted and an EOC event is generated
- – ...
- •
\(
DISCEN = 0
\)
, channels to be converted = 0, 3, 7, 10
- – 1st trigger: the complete sequence is converted: channel 0, then 3, 7 and 10. Each conversion generates an EOC event and the last one also generates an EOS event.
- – Any subsequent trigger events restarts the complete sequence.
Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits \( DISCEN = 1 \) and \( CONT = 1 \) .
14.5.2 Programmable resolution (RES) - Fast conversion mode
It is possible to obtain faster conversion times ( \( t_{SAR} \) ) by reducing the ADC resolution.
The resolution can be configured to be either 12, 10, 8, or 6 bits by programming the RES[1:0] bits in the ADC_CFGR1 register. Lower resolution allows faster conversion times for applications where high data precision is not required.
Note: The RES[1:0] bit must only be changed when the ADEN bit is reset.
The result of the conversion is always 12 bits wide and any unused LSB bits are read as zeros.
Lower resolution reduces the conversion time needed for the successive approximation steps as shown in Table 71 .
Table 71. \( t_{SAR} \) timings depending on resolution
| RES[1:0] (bits) | \(
t_{SAR}
\) ( \( f_{ADC} \) cycles) | \(
t_{SAR}
\)
at \( f_{ADC} = 35 \) MHz (ns) | \(
t_{SMPL(min)}
\) ( \( f_{ADC} \) cycles) | \(
t_{CONV}
\)
with min.
\(
t_{SMPL}
\) ( \( f_{ADC} \) cycles) | \(
t_{CONV(min)}
\)
at \( f_{ADC} = 35 \) MHz (ns) |
|---|---|---|---|---|---|
| 12 | 12.5 | 357 | 1.5 | 14 | 400 |
| 10 | 10.5 | 300 | 1.5 | 12 | 343 |
| 8 | 8.5 | 243 | 1.5 | 10 | 286 |
| 6 | 6.5 | 186 | 1.5 | 8 | 229 |
14.5.3 End of conversion, end of sampling phase (EOC, EOSMP flags)
The ADC indicates each end of conversion (EOC) event.
The ADC sets the EOC flag in the ADC_ISR register as soon as a new conversion data result is available in the ADC_DR register. An interrupt can be generated if the EOCIE bit is set in the ADC_IER register. The EOC flag is cleared by software either by writing 1 to it, or by reading the ADC_DR register.
The ADC also indicates the end of sampling phase by setting the EOSMP flag in the ADC_ISR register. The EOSMP flag is cleared by software by writing 1 to it. An interrupt can be generated if the EOSMPIE bit is set in the ADC_IER register.
The aim of this interrupt is to allow the processing to be synchronized with the conversions. Typically, an analog multiplexer can be accessed in hidden time during the conversion phase, so that the multiplexer is positioned when the next sampling starts.
Note: As there is only a very short time left between the end of the sampling and the end of the conversion, it is recommenced to use polling or a WFE instruction rather than an interrupt and a WFI instruction.
14.5.4 End of conversion sequence (EOS flag)
The ADC notifies the application of each end of sequence (EOS) event.
The ADC sets the EOS flag in the ADC_ISR register as soon as the last data result of a conversion sequence is available in the ADC_DR register. An interrupt can be generated if the EOSIE bit is set in the ADC_IER register. The EOS flag is cleared by software by writing 1 to it.
14.5.5 Example timing diagrams (single/continuous modes hardware/software triggers)
Figure 40. Single conversions of a sequence, software trigger

- 1. EXTEN = 00, CONT = 0
- 2. CHSEL = 0x20601, WAIT = 0, AUTOFF = 0
Figure 41. Continuous conversion of a sequence, software trigger

- 1. EXTEN = 00, CONT = 1,
- 2. CHSEL = 0x20601, WAIT = 0, AUTOFF = 0
Figure 42. Single conversions of a sequence, hardware trigger

The timing diagram shows the following signals and their states over time:
- ADSTART (1) : A single rising edge (by S/W) initiates the conversion sequence.
- EOC : End of Conversion pulses, occurring after each channel conversion (CH0, CH1, CH2, CH3). Each pulse consists of a rising and a falling edge.
- EOS : End of Sequence, occurring after the last channel (CH3) in the sequence. It consists of a rising and a falling edge.
- TRGx (1) : Hardware trigger signal. It is shown as a series of rising edges (by H/W) that are ignored (marked with an 'X').
- ADC state (2) : The state of the ADC, showing a sequence of RDY (Ready), CH0, CH1, CH2, CH3, RDY, CH0, CH1, CH2, CH3, RDY.
- ADC_DR : Data Register, showing the conversion results D0, D1, D2, D3, D0, D1, D2, D3.
Legend:
- by S/W (Software): Rising edge
- by H/W (Hardware): Rising edge
- triggered: Rising edge
- ignored: Rising edge with an 'X' mark
MSv30340V2
- 1. EXTSEL = TRGx (over-frequency), EXTEN = 01 (rising edge), CONT = 0
- 2. CHSEL = 0xF, SCANDIR = 0, WAIT = 0, AUTOFF = 0
Figure 43. Continuous conversions of a sequence, hardware trigger

The timing diagram shows the following signals and their states over time:
- ADSTART (1) : A single rising edge (by S/W) initiates the conversion sequence.
- EOC : End of Conversion pulses, occurring after each channel conversion (CH0, CH1, CH2, CH3). Each pulse consists of a rising and a falling edge.
- EOS : End of Sequence, occurring after the last channel (CH3) in the sequence. It consists of a rising and a falling edge.
- ADSTP : Stop conversion signal, shown as a falling edge (by H/W) that stops the sequence.
- TRGx (1) : Hardware trigger signal. It is shown as a falling edge (by H/W) that is ignored (marked with an 'X').
- ADC state (2) : The state of the ADC, showing a sequence of RDY, CH0, CH1, CH2, CH3, CH0, CH1, CH2, CH3, CH0, STOP, RDY.
- ADC_DR : Data Register, showing the conversion results D0, D1, D2, D3, D0, D1, D2, D3.
Legend:
- by S/W (Software): Rising edge
- by H/W (Hardware): Falling edge
- triggered: Rising edge
- ignored: Falling edge with an 'X' mark
MSv30341V2
- 1. EXTSEL = TRGx, EXTEN = 10 (falling edge), CONT = 1
- 2. CHSEL = 0xF, SCANDIR = 0, WAIT = 0, AUTOFF = 0
14.5.6 Low frequency trigger mode
Once the ADC is enabled or the last ADC conversion is complete, the ADC is ready to start a new conversion. The ADC needs to be started at a predefined time ( \( t_{idle} \) ) otherwise ADC converted data might be corrupted due to the transistor leakage (refer to the device datasheet for the maximum value of \( t_{idle} \) ).
If the application has to support a time longer than the maximum \( t_{idle} \) value (between one trigger to another for single conversion mode or between the ADC enable and the first ADC conversion), then the ADC internal state needs to be rearmed. This mechanism can be enabled by setting LFTRIG bit to 1 in ADC_CFGR2 register. By setting this bit, any trigger (software or hardware) sends a rearm command to ADC. The conversion starts after a one ADC clock cycle delay compared to LFTRIG cleared.
It is not necessary to use this mode when AUTOFF bit is set. For Wait mode, only the first trigger generates an internal rearm command.
14.6 Data management
14.6.1 Data register and data alignment (ADC_DR, ALIGN)
At the end of each conversion (when an EOC event occurs), the result of the converted data is stored in the ADC_DR data register which is 16-bit wide.
The format of the ADC_DR depends on the configured data alignment and resolution.
The ALIGN bit in the ADC_CFGR1 register selects the alignment of the data stored after conversion. Data can be right-aligned (ALIGN = 0) or left-aligned (ALIGN = 1) as shown in Figure 44.
Figure 44. Data alignment and resolution (oversampling disabled: OVSE = 0)
| ALIGN | RES | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0x0 | 0x0 | DR[11:0] | ||||||||||||||
| 0x1 | 0x00 | DR[9:0] | |||||||||||||||
| 0x2 | 0x00 | DR[7:0] | |||||||||||||||
| 0x3 | 0x00 | DR[5:0] | |||||||||||||||
| 1 | 0x0 | DR[11:0] | 0x0 | ||||||||||||||
| 0x1 | DR[9:0] | 0x00 | |||||||||||||||
| 0x2 | DR[7:0] | 0x00 | |||||||||||||||
| 0x3 | 0x00 | DR[5:0] | 0x0 | ||||||||||||||
MS30342V1
14.6.2 ADC overrun (OVR, OVRMOD)
The overrun flag (OVR) indicates a data overrun event, when the converted data was not read in time by the CPU or the DMA, before the data from a new conversion is available.
The OVR flag is set in the ADC_ISR register if the EOC flag is still at '1' at the time when a new conversion completes. An interrupt can be generated if the OVRIE bit is set in the ADC_IER register.
When an overrun condition occurs, the ADC keeps operating and can continue to convert unless the software decides to stop and reset the sequence by setting the ADSTP bit in the ADC_CR register.
The OVR flag is cleared by software by writing 1 to it.
It is possible to configure if the data is preserved or overwritten when an overrun event occurs by programming the OVRMOD bit in the ADC_CFGR1 register:
- •
OVRMOD = 0
- – An overrun event preserves the data register from being overwritten: the old data is maintained and the new conversion is discarded. If OVR remains at 1, further conversions can be performed but the resulting data is discarded.
- •
OVRMOD = 1
- – The data register is overwritten with the last conversion result and the previous unread data is lost. If OVR remains at 1, further conversions can be performed and the ADC_DR register always contains the data from the latest conversion.
Figure 45. Example of overrun (OVR)

The diagram illustrates the timing of an ADC overrun. The top section shows signal transitions for ADSTART (1) , EOC, EOS, OVR, ADSTP, and TRGx (1) . Below this, the 'ADC state (2) ' shows a sequence of states: RDY, CH0, CH1, CH2, CH0, CH1, CH2, CH0, STOP, RDY. The 'ADC_DR read access' line shows when the data register is read. In the 'ADC_DR (OVRMOD=0)' row, the data sequence is D0, D1, D2, D0, where the second D0 is maintained despite a new conversion (CH1) starting because the previous D0 was not read (indicated by the OVERRUN label). In the 'ADC_DR (OVRMOD=1)' row, the data sequence is D0, D1, D2, D0, D1, D2, where the data is overwritten by subsequent conversions. A legend at the bottom left defines the trigger types: 'by S/W' (software trigger indicated by an upward arrow), 'by H/W' (hardware trigger indicated by a filled upward arrow), and 'triggered' (indicated by a step pulse).
MSV30343V3
14.6.3 Managing a sequence of data converted without using the DMA
If the conversions are slow enough, the conversion sequence can be handled by software. In this case the software must use the EOC flag and its associated interrupt to handle each data result. Each time a conversion is complete, the EOC bit is set in the ADC_ISR register and the ADC_DR register can be read. The OVRMOD bit in the ADC_CFGR1 register should be configured to 0 to manage overrun events as an error.
14.6.4 Managing converted data without using the DMA without overrun
It may be useful to let the ADC convert one or more channels without reading the data after each conversion. In this case, the OVRMOD bit must be configured at 1 and the OVR flag should be ignored by the software. When OVRMOD = 1, an overrun event does not prevent the ADC from continuing to convert and the ADC_DR register always contains the latest conversion data.
14.6.5 Managing converted data using the DMA
Since all converted channel values are stored in a single data register, it is efficient to use DMA when converting more than one channel. This avoids losing the conversion data results stored in the ADC_DR register.
When DMA mode is enabled (DMAEN bit set in the ADC_CFGR1 register), a DMA request is generated after the conversion of each channel. This allows the transfer of the converted data from the ADC_DR register to the destination location selected by the software.
Note: The DMAEN bit in the ADC_CFGR1 register must be set after the ADC calibration phase.
Despite this, if an overrun occurs (OVR = 1) because the DMA could not serve the DMA transfer request in time, the ADC stops generating DMA requests and the data corresponding to the new conversion is not transferred by the DMA. Which means that all the data transferred to the RAM can be considered as valid.
Depending on the configuration of OVRMOD bit, the data is either preserved or overwritten (refer to Section 14.6.2: ADC overrun (OVR, OVRMOD) on page 349 ).
The DMA transfer requests are blocked until the software clears the OVR bit.
Two different DMA modes are proposed depending on the application use and are configured with bit DMACFG in the ADC_CFGR1 register:
- • DMA one shot mode (DMACFG = 0).
This mode should be selected when the DMA is programmed to transfer a fixed number of data words. - • DMA circular mode (DMACFG = 1)
This mode should be selected when programming the DMA in circular mode or double buffer mode.
DMA one shot mode (DMACFG = 0)
In this mode, the ADC generates a DMA transfer request each time a new conversion data word is available and stops generating DMA requests once the DMA has reached the last DMA transfer (when a transfer complete interrupt occurs, see Section 9: Direct memory access controller (DMA) on page 265 ) even if a conversion has been started again.
When the DMA transfer is complete (all the transfers configured in the DMA controller have been done):
- • The content of the ADC data register is frozen.
- • Any ongoing conversion is aborted and its partial result discarded
- • No new DMA request is issued to the DMA controller. This avoids generating an overrun error if there are still conversions which are started.
- • The scan sequence is stopped and reset
- • The DMA is stopped
DMA circular mode (DMACFG = 1)
In this mode, the ADC generates a DMA transfer request each time a new conversion data word is available in the data register, even if the DMA has reached the last DMA transfer. This allows the DMA to be configured in circular mode to handle a continuous analog input data stream.
14.7 Low-power features
14.7.1 Wait mode conversion
Wait mode conversion can be used to simplify the software as well as optimizing the performance of applications clocked at low frequency where there might be a risk of ADC overrun occurring.
When the WAIT bit is set in the ADC_CFGR1 register, a new conversion can start only if the previous data has been treated, once the ADC_DR register has been read or if the EOC bit has been cleared.
This is a way to automatically adapt the speed of the ADC to the speed of the system that reads the data.
Note: Any hardware triggers which occur while a conversion is ongoing or during the wait time preceding the read access are ignored.
Figure 46. Wait mode conversion (continuous mode, software trigger)
The diagram illustrates the timing of an ADC in continuous mode with a software trigger. The signals shown are:
- ADSTART : Software trigger signal.
- EOC : End of conversion pulses.
- EOS : End of sequence pulse.
- ADSTP : Stop signal.
- ADC_DR Read access : Pulses indicating when the data register is read.
- ADC state : Shows states RDY, CH1, DLY, CH2, DLY, CH3, DLY, CH1, DLY, STOP, RDY.
- ADC_DR : Data register values D1, D2, D3, and D1.
Legend:
by S/W by H/W
MSv30344V2
- 1. EXTEN = 00, CONT = 1
- 2. CHSEL = 0x3, SCANDIR = 0, WAIT = 1, AUTOFF = 0
14.7.2 Auto-off mode (AUTOFF)
The ADC has an automatic power management feature which is called auto-off mode, and is enabled by setting AUTOFF = 1 in the ADC_CFGR1 register.
When AUTOFF = 1 , the ADC is always powered off when not converting and automatically wakes-up when a conversion is started (by software or hardware trigger). A startup-time is automatically inserted between the trigger event which starts the conversion and the sampling time of the ADC. The ADC is then automatically disabled once the sequence of conversions is complete.
Auto-off mode can cause a dramatic reduction in the power consumption of applications which need relatively few conversions or when conversion requests are timed far enough apart (for example with a low frequency hardware trigger) to justify the extra power and extra time used for switching the ADC on and off.
Auto-off mode can be combined with the wait mode conversion (WAIT = 1) for applications clocked at low frequency. This combination can provide significant power savings if the ADC is automatically powered-off during the wait phase and restarted as soon as the ADC_DR register is read by the application (see Figure 48: Behavior with WAIT = 1, AUTOFF = 1 ).
Figure 47. Behavior with WAIT = 0, AUTOFF = 1

Legend: by S/W (software triggered), by H/W (hardware triggered), triggered (rising edge).
MSv30345V2
- 1. EXTSEL = TRGx, EXTEN = 01 (rising edge), CONT = x, ADSTART = 1, CHSEL = 0xF, SCANDIR = 0, WAIT = 1, AUTOFF = 1
Figure 48. Behavior with WAIT = 1, AUTOFF = 1

Legend: by S/W (software triggered), by H/W (hardware triggered), triggered (rising edge).
MSv30346V2
- 1. EXTSEL = TRGx, EXTEN = 01 (rising edge), CONT = x, ADSTART = 1, CHSEL = 0xF, SCANDIR = 0, WAIT = 1, AUTOFF = 1
14.8 Analog window watchdogs
The three AWD analog watchdogs monitor whether some channels remain within a configured voltage range (window).
14.8.1 Description of analog watchdog 1
AWD1 analog watchdog is enabled by setting the AWD1EN bit in the ADC_CFGR1 register. It is used to monitor that either one selected channel or all enabled channels (see Table 73: Analog watchdog 1 channel selection ) remain within a configured voltage range (window) as shown in Figure 49 .
The AWD1 analog watchdog status bit is set if the analog voltage converted by the ADC is below a lower threshold or above a higher threshold. These thresholds are programmed in HT1[11:0] and LT1[11:0] bits of ADC_AWD1TR register. An interrupt can be enabled by setting the AWD1IE bit in the ADC_IER register.
The AWD1 flag is cleared by software by programming it to 1.
When converting data with a resolution of less than 12-bit (according to bits DRES[1:0]), the LSB of the programmed thresholds must be kept cleared because the internal comparison is always performed on the full 12-bit raw converted data (left aligned).
Table 72 describes how the comparison is performed for all the possible resolutions.
Table 72. Analog watchdog comparison
| Resolution bits RES[1:0] | Analog Watchdog comparison between: | Comments | |
|---|---|---|---|
| Raw converted data, left aligned (1) | Thresholds | ||
| 00: 12-bit | DATA[11:0] | LTx[11:0] and HTx[11:0] | - |
| 01: 10-bit | DATA[11:2],00 | LTx[11:0] and HTx[11:0] | The user must configure LTx[1:0] and HTx[1:0] to “00” |
| 10: 8-bit | DATA[11:4],0000 | LTx[11:0] and HTx[11:0] | The user must configure LTx[3:0] and HTx[3:0] to “0000” |
| 11: 6-bit | DATA[11:6],000000 | LTx[11:0] and HTx[11:0] | The user must configure LTx[5:0] and HTx[5:0] to “000000” |
1. The watchdog comparison is performed on the raw converted data before any alignment calculation.
Table 73 shows how to configure the AWD1SGL and AWD1EN bits in the ADC_CFGR1 register to enable the analog watchdog on one or more channels.
Figure 49. Analog watchdog guarded area

The diagram illustrates the 'Guarded area' for an analog watchdog. A vertical axis represents 'Analog voltage'. Two horizontal lines represent the 'Higher threshold' (HTx) and the 'Lower threshold' (LTx). The region between these two thresholds is shaded and labeled 'Guarded area'. The diagram shows that the guarded area is the range between HTx and LTx.
| Channels guarded by the analog watchdog | AWD1SGL bit | AWD1EN bit |
|---|---|---|
| None | x | 0 |
| All channels | 0 | 1 |
| Single (1) channel | 1 | 1 |
1. Selected by the AWD1CH[4:0] bits
14.8.2 Description of analog watchdog 2 and 3
The second and third analog watchdogs are more flexible and can guard several selected channels by programming the AWDxCHy in ADC_AWDxCR (x = 2, 3).
The corresponding watchdog is enabled when any AWDxCHy bit (x = 2,3) is set in ADC_AWDxCR register.
When converting data with a resolution of less than 12 bits (configured through DRES[1:0] bits), the LSB of the programmed thresholds must be kept cleared because the internal comparison is always performed on the full 12-bit raw converted data (left aligned).
Table 72 describes how the comparison is performed for all the possible resolutions.
The AWD2/3 analog watchdog status bit is set if the analog voltage converted by the ADC is below a low threshold or above a high threshold. These thresholds are programmed in HTx[11:0] and LTx[11:0] of ADC_AWDxTR registers (x = 2 or 3). An interrupt can be enabled by setting the AWDxIE bit in the ADC_IER register.
The AWD2 and ADW3 flags are cleared by software by programming them to 1.
14.8.3 ADC_AWDx_OUT output signal generation
Each analog watchdog is associated to an internal hardware signal, ADC_AWDx_OUT (x being the watchdog number) that is directly connected to the ETR input (external trigger) of some on-chip timers (refer to the timers section for details on how to select the ADC_AWDx_OUT signal as ETR).
ADC_AWDx_OUT is activated when the associated analog watchdog is enabled:
- • ADC_AWDx_OUT is set when a guarded conversion is outside the programmed thresholds.
- • ADC_AWDx_OUT is reset after the end of the next guarded conversion which is inside the programmed thresholds. It remains at 1 if the next guarded conversions are still outside the programmed thresholds.
- • ADC_AWDx_OUT is also reset when disabling the ADC (when setting ADDIS to 1). Note that stopping conversions (ADSTP set), might clear the ADC_AWDx_OUT state.
- • ADC_AWDx_OUT state does not change when the ADC converts the none-guarded channel (see Figure 52 )
AWDx flag is set by hardware and reset by software: AWDx flag has no influence on the generation of ADC_AWDx_OUT (as an example, ADC_AWDx_OUT can toggle while AWDx flag remains at 1 if the software has not cleared the flag).
The ADC_AWDx_OUT signal is generated by the f ADC clock domain. This signal can be generated even the APB clock is stopped.
The AWD comparison is performed at the end of each ADC conversion. The ADC_AWDx_OUT rising edge and falling edge occurs two \( f_{ADC} \) clock cycles after the comparison.
As ADC_AWDx_OUT is generated by the \( f_{ADC} \) clock domain and AWD flag is generated by the APB clock domain, the rising edges of these signals are not synchronized.
Figure 50. ADC_AWDx_OUT signal generation

This timing diagram illustrates the relationship between the ADC STATE, EOC FLAG, AWDx FLAG, and ADC_AWDx_OUT signals during a sequence of seven conversions. The ADC STATE starts in the RDY state and transitions through Conversion1 to Conversion7. Below each conversion state, it is marked as either 'inside' or 'outside' the watchdog threshold. The EOC FLAG pulses high at the end of each conversion. The AWDx FLAG is set high when a conversion is 'outside' (Conversion2, Conversion4, Conversion5, Conversion6) and is cleared by software (marked 'Cleared by SW') shortly after being set. The ADC_AWDx_OUT signal goes high when a conversion is 'outside' and low when it is 'inside', with a delay of two \( f_{ADC} \) cycles. A legend box indicates: Converted channels: 1,2,3,4,5,6,7; Guarded converted channels: 1,2,3,4,5,6,7. The diagram is labeled MSv45362V1.
Figure 51. ADC_AWDx_OUT signal generation (AWDx flag not cleared by software)

This timing diagram shows the signal generation when the AWDx FLAG is not cleared by software. The sequence of conversions (1-7) and their 'inside'/'outside' status are identical to Figure 50. However, once the AWDx FLAG is set high by Conversion2 (the first 'outside' result), it remains high for the remainder of the sequence (marked 'not cleared by SW'). The ADC_AWDx_OUT signal still transitions based on the individual conversion results (high for 'outside', low for 'inside') regardless of the state of the AWDx FLAG. A legend box indicates: Converted channels: 1,2,3,4,5,6,7; Guarded converted channels: 1,2,3,4,5,6,7. The diagram is labeled MSv45363V1.
Figure 52. ADC_AWDx_OUT signal generation (on a single channel)

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

14.9 Oversampler
The oversampling unit performs data preprocessing to offload the CPU. It can handle multiple conversions and average them into a single data with increased data width, up to 16-bit.
It provides a result with the following form, where N and M can be adjusted:
It allows the following functions to be performed by hardware: averaging, data rate reduction, SNR improvement, basic filtering.
The oversampling ratio N is defined using the OVSR[2:0] bits in the ADC_CFGR2 register. It can range from 2x to 256x. The division coefficient M consists of a right bit shift up to 8 bits. It is configured through the OVSS[3:0] bits in the ADC_CFGR2 register.
The summation unit can yield a result up to 20 bits (256 x 12-bit), which is first shifted right. The upper bits of the result are then truncated, keeping only the 16 least significant bits rounded to the nearest value using the least significant bits left apart by the shifting, before being finally transferred into the ADC_DR data register.
Note: If the intermediate result after the shifting exceeds 16 bits, the upper bits of the result are simply truncated.
Figure 54. 20-bit to 16-bit result truncation

The diagram shows the truncation process. The 'Raw 20-bit data' row has bit positions 19, 15, 11, 7, 3, and 0 marked. An arrow labeled 'Shifting' points to the right, indicating a right shift. The 'Truncation and rounding' row shows the final 16-bit result with bit positions 15 and 0 marked. The raw data is shifted right by 4 bits, and the upper 4 bits are truncated, keeping the 16 least significant bits.
Figure 55 gives a numerical example of the processing, from a raw 20-bit accumulated data to the final 16-bit result.
Figure 55. Numerical example with 5-bits shift and rounding

The diagram shows a numerical example. The 'Raw 20-bit data' row has bit positions 19, 15, 11, 7, 3, and 0 marked, with values 3, B, 7, D, and 7 respectively. The 'Final result after 5-bits shift and rounding to nearest' row has bit positions 15 and 0 marked, with values 1, D, B, and F respectively. The raw data is shifted right by 5 bits, and the resulting 16 least significant bits are rounded to the nearest value.
Table 74 gives the data format for the various N and M combination, for a raw conversion data equal to 0xFFF.
Table 74. Maximum output results vs N and M. Grayed values indicates truncation
| Oversampling ratio | Max Raw data | No-shift OVSS = 0000 | 1-bit shift OVSS = 0001 | 2-bit shift OVSS = 0010 | 3-bit shift OVSS = 0011 | 4-bit shift OVSS = 0100 | 5-bit shift OVSS = 0101 | 6-bit shift OVSS = 0110 | 7-bit shift OVSS = 0111 | 8-bit shift OVSS = 1000 |
|---|---|---|---|---|---|---|---|---|---|---|
| 2x | 0x1FFE | 0x1FFE | 0x0FFF | 0x0800 | 0x0400 | 0x0200 | 0x0100 | 0x0080 | 0x0040 | 0x0020 |
| 4x | 0x3FFC | 0x3FFC | 0x1FFE | 0x0FFF | 0x0800 | 0x0400 | 0x0200 | 0x0100 | 0x0080 | 0x0040 |
| 8x | 0x7FF8 | 0x7FF8 | 0x3FFC | 0x1FFE | 0x0FFF | 0x0800 | 0x0400 | 0x0200 | 0x0100 | 0x0080 |
| 16x | 0xFFF0 | 0xFFF0 | 0x7FF8 | 0x3FFC | 0x1FFE | 0x0FFF | 0x0800 | 0x0400 | 0x0200 | 0x0100 |
| 32x | 0x1FFE0 | 0xFFE0 | 0xFFF0 | 0x7FF8 | 0x3FFC | 0x1FFE | 0x0FFF | 0x0800 | 0x0400 | 0x0200 |
| 64x | 0x3FFC0 | 0xFFC0 | 0xFFE0 | 0xFFF0 | 0x7FF8 | 0x3FFC | 0x1FFE | 0x0FFF | 0x0800 | 0x0400 |
| 128x | 0x7FF80 | 0xFF80 | 0xFFC0 | 0xFFE0 | 0xFFF0 | 0x7FF8 | 0x3FFC | 0x1FFE | 0x0FFF | 0x0800 |
| 256x | 0xFFF00 | 0xFF00 | 0xFF80 | 0xFFC0 | 0xFFE0 | 0xFFF0 | 0x7FF8 | 0x3FFC | 0x1FFE | 0x0FFF |
The conversion timings in oversampled mode do not change compared to standard conversion mode: the sample time is maintained equal during the whole oversampling sequence. New data are provided every N conversion, with an equivalent delay equal to \( N \times t_{CONV} = N \times (t_{SAMPL} + t_{SAR}) \) . The flags features are raised as following:
- • the end of the sampling phase (EOSMP) is set after each sampling phase
- • the end of conversion (EOC) occurs once every N conversions, when the oversampled result is available
- • the end of sequence (EOCSEQ) occurs once the sequence of oversampled data is completed (i.e. after N x sequence length conversions total)
14.9.1 ADC operating modes supported when oversampling
In oversampling mode, most of the ADC operating modes are available:
- • Single or continuous mode conversions, forward or backward scanned sequences
- • ADC conversions start either by software or with triggers
- • ADC stop during a conversion (abort)
- • Data read via CPU or DMA with overrun detection
- • Low-power modes (WAIT, AUTOFF)
- • Programmable resolution: in this case, the reduced conversion values (as per RES[1:0] bits in ADC_CFGR1 register) are accumulated, truncated, rounded and shifted in the same way as 12-bit conversions are
Note: The alignment mode is not available when working with oversampled data. The ALIGN bit in ADC_CFGR1 is ignored and the data are always provided right-aligned.
14.9.2 Analog watchdog
The analog watchdog functionality is available, with the following differences:
- • the RES[1:0] bits are ignored, comparison is always done on using the full 12-bits values HTx[11:0] and LTx[11:0]
- • the comparison is performed on the most significant 12 bits of the 16 bits oversampled results ADC_DR[15:4]
Note: Care must be taken when using high shifting values. This reduces the comparison range. For instance, if the oversampled result is shifted by 4 bits thus yielding a 12-bit data right-aligned, the affective analog watchdog comparison can only be performed on 8 bits. The comparison is done between ADC_DR[11:4] and HTx[7:0] / LTx[7:0], and HTx[11:8] / LTx[11:8] must be kept reset.
14.9.3 Triggered mode
The averager can also be used for basic filtering purposes. Although not a very efficient filter (slow roll-off and limited stop band attenuation), it can be used as a notch filter to reject constant parasitic frequencies (typically coming from the mains or from a switched mode power supply). For this purpose, a specific discontinuous mode can be enabled with TOVS bit in ADC_CFGR2, to be able to have an oversampling frequency defined by a user and independent from the conversion time itself.
Figure 56 below shows how conversions are started in response to triggers in discontinuous mode.
If the TOVS bit is set, the content of the DISCEN bit is ignored and considered as 1.
Figure 56. Triggered oversampling mode (TOVS bit = 1)

(DISCEN = 1)*
TOVS = 0
(DISCEN = 1)*
TOVS = 1
14.10 Temperature sensor and internal reference voltage
The temperature sensor can be used to measure the junction temperature ( \( T_J \) ) of the device. The temperature sensor is internally connected to the ADC \( V_{IN}[11] \) input channel which is used to convert the sensor's output voltage to a digital value. The sampling time for the temperature sensor analog pin must be greater than the minimum \( T_{S\_temp} \) value specified in the datasheet. When not in use, the sensor can be put in power down mode.
The internal voltage reference ( \( V_{REFINT} \) ) provides a stable (bandgap) voltage output for the ADC. \( V_{REFINT} \) is internally connected to the ADC \( V_{IN}[12] \) input channel. The precise voltage of \( V_{REFINT} \) is individually measured for each part by ST during production test and stored in the system memory area.
Figure 57 shows the block diagram of connections between the temperature sensor, the internal voltage reference and the ADC.
The TSEN bit must be set to enable the conversion of ADC \( V_{IN}[11] \) (temperature sensor) and the VREFEN bit must be set to enable the conversion of ADC \( V_{IN}[12] \) ( \( V_{REFINT} \) ).
Note: Before entering any Stop mode, the temperature sensor and the internal reference voltage must be disabled by clearing TSEN and VREFEN, respectively.
Figure 57. Temperature sensor and \( V_{REFINT} \) channel block diagram
![Block diagram showing the connections between a Temperature sensor, an Internal power block, and an ADC. The Temperature sensor output is connected to an operational amplifier (op-amp) whose non-inverting input is controlled by the TSEN bit. The op-amp output is labeled V_SENSE and is connected to the ADC V_IN[11] input. The Internal power block output is connected to another op-amp whose non-inverting input is controlled by the VREFEN bit. The op-amp output is labeled V_REFINT and is connected to the ADC V_IN[12] input. The ADC block has a 'converted data' output connected to an 'Address/data bus'. The diagram is labeled MSV71290V1 in the bottom right corner.](/RM0503-STM32U0/4b4b9c9c016880edb872f25cefc85eb1_img.jpg)
Reading the temperature
- 1. Select the ADC \( V_{IN}[11] \) input channel.
- 2. Select an appropriate sampling time specified in the device datasheet ( \( T_{S\_temp} \) ).
- 3. Set the TSEN bit in the ADC_CCR register to wake up the temperature sensor from power down mode and wait for its stabilization time ( \( t_{START} \) ).
- 4. Start the ADC conversion by setting the ADSTART bit in the ADC_CR register (or by external trigger).
- 5. Read the resulting \( V_{SENSE} \) data in the ADC_DR register.
- 6. Calculate the temperature using the following formula
Where:
- • TS_CAL2 is the temperature sensor calibration value acquired at TS_CAL2_TEMP (refer to the datasheet for TS_CAL2 value)
- • TS_CAL1 is the temperature sensor calibration value acquired at TS_CAL1_TEMP (refer to the datasheet for TS_CAL1 value)
- • TS_DATA is the actual temperature sensor output value converted by ADC
Refer to the specific device datasheet for more information about TS_CAL1 and TS_CAL2 calibration points.
Note: The sensor has a startup time after waking from power down mode before it can output V SENSE at the correct level. The ADC also has a startup time after power-on, so to minimize the delay, the ADEN and TSEN bits should be set at the same time.
Calculating the actual V REF+ voltage using the internal reference voltage
V REF+ voltage may be subject to variation or not precisely known. The embedded internal reference voltage (V REFINT ) and its calibration data acquired by the ADC during the manufacturing process at V REF+_charac can be used to evaluate the actual V REF+ voltage level.
The following formula gives the actual V REF+ voltage supplying the device:
Where:
- • V REF+_Charac is the value of V REF+ voltage characterized at V REFINT during the manufacturing process. It is specified in the device datasheet.
- • VREFINT_CAL is the VREFINT calibration value
- • VREFINT_DATA is the actual VREFINT output value converted by ADC
Converting a supply-relative ADC measurement to an absolute voltage value
The ADC is designed to deliver a digital value corresponding to the ratio between the analog power supply and the voltage applied on the converted channel. For most application use cases, it is necessary to convert this ratio into a voltage independent of V REF+ . For applications where V REF+ is known and ADC converted values are right-aligned you can use the following formula to get this absolute value:
For applications where V REF+ value is not known, you must use the internal voltage reference and V REF+ can be replaced by the expression provided in Calculating the actual V REF+ voltage using the internal reference voltage , resulting in the following formula:
Where:
- • \( V_{REF+\_Charac} \) is the value of \( V_{REF+} \) voltage characterized at \( V_{REFINT} \) during the manufacturing process. It is specified in the device datasheet.
- • \( VREFINT\_CAL \) is the \( VREFINT \) calibration value
- • \( ADC\_DATA_x \) is the value measured by the ADC on channelx (right-aligned)
- • \( VREFINT\_DATA \) is the actual \( VREFINT \) output value converted by the ADC
- • \( NUM\_CODES \) is the number of ADC output codes. For example with 12-bit resolution, it is \( 2^{12} = 4096 \) or with 8-bit resolution, \( 2^8 = 256 \) .
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.
14.11 Battery voltage monitoring
The VBATEN bit in the ADC_CCR register allows the application to measure the backup battery voltage on the VBAT pin. As the \( V_{BAT} \) voltage can be higher than \( V_{REF+} \) , to ensure the correct operation of the ADC, the VBAT pin is internally connected to a bridge divider. This bridge is automatically enabled when VBATEN is set, to connect \( V_{BAT} \) to the ADC \( V_{IN}[13] \) input channel. As a consequence, the converted digital value is \( V_{BAT}/3 \) . To prevent any unwanted consumption on the battery, it is recommended to enable the bridge divider only when needed for ADC conversion.
14.12 ADC interrupts
An interrupt can be generated by any of the following events:
- • End Of Calibration (EOCAL flag)
- • ADC power-up, when the ADC is ready (ADRDY flag)
- • End of any conversion (EOC flag)
- • End of a sequence of conversions (EOS flag)
- • When an analog watchdog detection occurs (AWD1, AWD2, AWD3 flags)
- • When the Channel configuration is ready (CCRDY flag)
- • When the end of sampling phase occurs (EOSMP flag)
- • when a data overrun occurs (OVR flag)
Separate interrupt enable bits are available for flexibility.
Table 75. ADC interrupts
| Interrupt event | Event flag | Enable control bit |
|---|---|---|
| End Of Calibration | EOCAL | EOCALIE |
| ADC ready | ADRDY | ADRDYIE |
| End of conversion | EOC | EOCIE |
| End of sequence of conversions | EOS | EOSIE |
| Analog watchdog 1 status bit is set | AWD1 | AWD1IE |
| Analog watchdog 2 status bit is set | AWD2 | AWD2IE |
Table 75. ADC interrupts (continued)
| Interrupt event | Event flag | Enable control bit |
|---|---|---|
| Analog watchdog 3 status bit is set | AWD3 | AWD3IE |
| Channel Configuration Ready | CCRDY | CCRDYIE |
| End of sampling phase | EOSMP | EOSMPIE |
| Overrun | OVR | OVRIE |
14.13 ADC registers
Refer to Section 1.2 for a list of abbreviations used in register descriptions.
14.13.1 ADC interrupt and status register (ADC_ISR)
Address offset: 0x00
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | CCRDY | Res. | EOCAL | Res. | AWD3 | AWD2 | AWD1 | Res. | Res. | OVR | EOS | EOC | EOSMP | ADRDY |
| rc_w1 | rc_w1 | rc_w1 | rc_w1 | rc_w1 | rc_w1 | rc_w1 | rc_w1 | rc_w1 | rc_w1 |
Bits 31:14 Reserved, must be kept at reset value.
Bit 13 CCRDY : Channel Configuration Ready flag
This flag bit is set by hardware when the channel configuration is applied after programming to ADC_CHSELR register or changing CHSELRMOD or SCANDIR. It is cleared by software by programming it to it.
0: Channel configuration update not applied.
1: Channel configuration update is applied.
Note: When the software configures the channels (by programming ADC_CHSELR or changing CHSELRMOD or SCANDIR), it must wait until the CCRDY flag rises before configuring again or starting conversions, otherwise the new configuration (or the START bit) is ignored. Once the flag is asserted, if the software needs to configure again the channels, it must clear the CCRDY flag before proceeding with a new configuration.
Bit 12 Reserved, must be kept at reset value.
Bit 11 EOCAL : End Of Calibration flag
This bit is set by hardware when calibration is complete. It is cleared by software writing 1 to it.
0: Calibration is not complete
1: Calibration is complete
Bit 10 Reserved, must be kept at reset value.
Bit 9 AWD3 : Analog watchdog 3 flag
This bit is set by hardware when the converted voltage crosses the values programmed in ADC_AWD3TR and ADC_AWD3TR registers. It is cleared by software by programming it to 1.
0: No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software)
1: Analog watchdog event occurred
Bit 8 AWD2 : Analog watchdog 2 flag
This bit is set by hardware when the converted voltage crosses the values programmed in ADC_AWD2TR and ADC_AWD2TR registers. It is cleared by software programming it to 1.
0: No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software)
1: Analog watchdog event occurred
Bit 7 AWD1: Analog watchdog 1 flagThis bit is set by hardware when the converted voltage crosses the values programmed in ADC_TR1 and ADC_HR1 registers. It is cleared by software by programming it to 1.
0: No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software)
1: Analog watchdog event occurred
Bits 6:5 Reserved, must be kept at reset value.
Bit 4 OVR: ADC overrunThis bit is set by hardware when an overrun occurs, meaning that a new conversion has complete while the EOC flag was already set. It is cleared by software writing 1 to it.
0: No overrun occurred (or the flag event was already acknowledged and cleared by software)
1: Overrun has occurred
Bit 3 EOS: End of sequence flagThis bit is set by hardware at the end of the conversion of a sequence of channels selected by the CHSEL bits. It is cleared by software writing 1 to it.
0: Conversion sequence not complete (or the flag event was already acknowledged and cleared by software)
1: Conversion sequence complete
Bit 2 EOC: End of conversion flagThis bit is set by hardware at the end of each conversion of a channel when a new data result is available in the ADC_DR register. It is cleared by software writing 1 to it or by reading the ADC_DR register.
0: Channel conversion not complete (or the flag event was already acknowledged and cleared by software)
1: Channel conversion complete
Bit 1 EOSMP: End of sampling flagThis bit is set by hardware during the conversion, at the end of the sampling phase. It is cleared by software by programming it to '1'.
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 readyThis bit is set by hardware after the ADC has been enabled (ADEN = 1) and when the ADC reaches a state where it is ready to accept conversion requests.
It is cleared by software writing 1 to it.
0: ADC not yet ready to start conversion (or the flag event was already acknowledged and cleared by software)
1: ADC is ready to start conversion
14.13.2 ADC interrupt enable register (ADC_IER)
Address offset: 0x04
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | CCRDYIE | Res. | EOCALIE | Res. | AWD3IE | AWD2IE | AWD1IE | Res. | Res. | OVRIE | EOSIE | EOCIE | EOSMPIE | ADRDYIE |
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Bits 31:14 Reserved, must be kept at reset value.
Bit 13 CCRDYIE : Channel Configuration Ready Interrupt enable
This bit is set and cleared by software to enable/disable the channel configuration ready interrupt.
0: Channel configuration ready interrupt disabled
1: Channel configuration ready interrupt enabled
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 12 Reserved, must be kept at reset value.
Bit 11 EOCALIE : End of calibration interrupt enable
This bit is set and cleared by software to enable/disable the end of calibration interrupt.
0: End of calibration interrupt disabled
1: End of calibration interrupt enabled
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 10 Reserved, must be kept at reset value.
Bit 9 AWD3IE : Analog watchdog 3 interrupt enable
This bit is set and cleared by software to enable/disable the analog watchdog interrupt.
0: Analog watchdog interrupt disabled
1: Analog watchdog interrupt enabled
Note: The Software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 8 AWD2IE : Analog watchdog 2 interrupt enable
This bit is set and cleared by software to enable/disable the analog watchdog interrupt.
0: Analog watchdog interrupt disabled
1: Analog watchdog interrupt enabled
Note: The Software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 7 AWD1IE : Analog watchdog 1 interrupt enable
This bit is set and cleared by software to enable/disable the analog watchdog interrupt.
0: Analog watchdog interrupt disabled
1: Analog watchdog interrupt enabled
Note: The Software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bits 6:5 Reserved, must be kept at reset value.
Bit 4 OVRIE : Overrun interrupt enable
This bit is set and cleared by software to enable/disable the overrun interrupt.
0: Overrun interrupt disabled
1: Overrun interrupt enabled. An interrupt is generated when the OVR bit is set.
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 3 EOSIE : End of conversion sequence interrupt enable
This bit is set and cleared by software to enable/disable the end of sequence of conversions interrupt.
0: EOS interrupt disabled
1: EOS interrupt enabled. An interrupt is generated when the EOS bit is set.
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 2 EOCIE : End of conversion interrupt enable
This bit is set and cleared by software to enable/disable the end of conversion interrupt.
0: EOC interrupt disabled
1: EOC interrupt enabled. An interrupt is generated when the EOC bit is set.
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 1 EOSMPIE : End of sampling flag interrupt enable
This bit is set and cleared by software to enable/disable the end of the sampling phase interrupt.
0: EOSMP interrupt disabled.
1: EOSMP interrupt enabled. An interrupt is generated when the EOSMP bit is set.
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
Bit 0 ADDRYIE : ADC ready interrupt enable
This bit is set and cleared by software to enable/disable the ADC Ready interrupt.
0: ADRDY interrupt disabled.
1: ADRDY interrupt enabled. An interrupt is generated when the ADRDY bit is set.
Note: The software is allowed to write this bit only when ADSTART bit is cleared (this ensures that no conversion is ongoing).
14.13.3 ADC control register (ADC_CR)
Address offset: 0x08
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ADCAL | Res. | Res. | ADVREGEN | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| rs | nw | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | ADSTP | Res. | ADSTART | ADDIS | ADEN |
| rs | rs | rs | rs |
This bit is set by software to start the calibration of the ADC.
It is cleared by hardware after calibration is complete.
0: Calibration complete
1: Write 1 to calibrate the ADC. Read at 1 means that a calibration is in progress.
Note: The software is allowed to set ADCAL only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0, AUTOFF = 0, and ADEN = 0).
The software is allowed to update the calibration factor by writing ADC_CALFACT only when ADEN = 1 and ADSTART = 0 (ADC enabled and no conversion is ongoing).
Bits 30:29 Reserved, must be kept at reset value.
Bit 28 ADVREGEN : ADC Voltage Regulator EnableThis bit is set by software, to enable the ADC internal voltage regulator. The voltage regulator output is available after \( t_{ADCVREG\_STUP} \) .
It is cleared by software to disable the voltage regulator. It can be cleared only if ADEN is cleared.
0: ADC voltage regulator disabled
1: ADC voltage regulator enabled
Note: The software is allowed to program this bit field only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).
Bits 27:5 Reserved, must be kept at reset value.
Bit 4 ADSTP : ADC stop conversion commandThis bit is set by software to stop and discard an ongoing conversion (ADSTP Command).
It is cleared by hardware when the conversion is effectively discarded and the ADC is ready to accept a new start conversion command.
0: No ADC stop conversion command ongoing
1: Write 1 to stop the ADC. Read 1 means that an ADSTP command is in progress.
Note: Setting ADSTP to '1' is only effective when ADSTART = 1 and ADDIS = 0 (ADC is enabled and may be converting and there is no pending request to disable the ADC)
Bit 3 Reserved, must be kept at reset value.
Bit 2 ADSTART : ADC start conversion commandThis bit is set by software to start ADC conversion. Depending on the EXTEN [1:0] configuration bits, a conversion either starts immediately (software trigger configuration) or once a hardware trigger event occurs (hardware trigger configuration).
It is cleared by hardware:
- – In single conversion mode (CONT = 0, DISCEN = 0), when software trigger is selected (EXTEN = 00): at the assertion of the end of Conversion Sequence (EOS) flag.
- – In discontinuous conversion mode (CONT = 0, DISCEN = 1), when the software trigger is selected (EXTEN = 00): at the assertion of the end of Conversion (EOC) flag.
- – In all other cases: after the execution of the ADSTP command, at the same time as the ADSTP bit is cleared by hardware.
0: No ADC conversion is ongoing.
1: Write 1 to start the ADC. Read 1 means that the ADC is operating and may be converting.
Note: The software is allowed to set ADSTART only when ADEN = 1 and ADDIS = 0 (ADC is enabled and there is no pending request to disable the ADC).
After writing to ADC_CHSELR register or changing CHSELRMOD or SCANDIRW, it is mandatory to wait until CCRDY flag is asserted before setting ADSTART, otherwise, the value written to ADSTART is ignored.
Bit 1 ADDIS : ADC disable command
This bit is set by software to disable the ADC (ADDIS command) and put it into power-down state (OFF state).
It is cleared by hardware once the ADC is effectively disabled (ADEN is also cleared by hardware at this time).
0: No ADDIS command ongoing
1: Write 1 to disable the ADC. Read 1 means that an ADDIS command is in progress.
Note: Setting ADDIS to '1' is only effective when ADEN = 1 and ADSTART = 0 (which ensures that no conversion is ongoing)
Bit 0 ADEN : ADC enable command
This bit is set by software to enable the ADC. The ADC is effectively ready to operate once the ADRDY flag has been set.
It is cleared by hardware when the ADC is disabled, after the execution of the ADDIS command.
0: ADC is disabled (OFF state)
1: Write 1 to enable the ADC.
Note: The software is allowed to set ADEN only when ADCAL = 0, ADSTP = 0, ADSTART = 0, ADDIS = 0, ADEN = 0, and ADVREGEN = 1.
14.13.4 ADC configuration register 1 (ADC_CFGR1)
Address offset: 0x0C
Reset value: 0x0000 0000
The software is allowed to program ADC_CFGR1 only when ADEN is cleared in ADC_CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | AWD1CH[4:0] | Res. | Res. | AWD1EN | AWD1GL | CHSEL RMOD | Res. | Res. | Res. | Res. | DISCE N | ||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| AUTOF F | WAIT | CONT | OVRM OD | EXTEN[1:0] | Res. | EXTSEL[2:0] | ALIGN | RES[1:0] | SCAND IR | DMAC FG | DMAE N | ||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | |
Bit 31 Reserved, must be kept at reset value.
Bits 30:26 AWD1CH[4:0] : Analog watchdog channel selection
These bits are set and cleared by software. They select the input channel to be guarded by the analog watchdog.
00000: ADC analog input Channel 0 monitored by AWD
00001: ADC analog input Channel 1 monitored by AWD
.....
10011: ADC analog input Channel 19 monitored by AWD
Others: Reserved
Note: The channel selected by the AWDCH[4:0] bits must be also set into the CHSELR register.
Bits 25:24 Reserved, must be kept at reset value.
Bit 23 AWD1EN : Analog watchdog enableThis bit is set and cleared by software.
0: Analog watchdog 1 disabled
1: Analog watchdog 1 enabled
Bit 22 AWD1SGL : Enable the watchdog on a single channel or on all channelsThis bit is set and cleared by software to enable the analog watchdog on the channel identified by the AWDCH[4:0] bits or on all the channels
0: Analog watchdog 1 enabled on all channels
1: Analog watchdog 1 enabled on a single channel
Bit 21 CHSELRMOD : Mode selection of the ADC_CHSELR registerThis bit is set and cleared by software to control the ADC_CHSELR feature:
0: Each bit of the ADC_CHSELR register enables an input
1: ADC_CHSELR register is able to sequence up to 8 channels
Note: If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored.
Bits 20:17 Reserved, must be kept at reset value.
Bit 16 DISCEN : Discontinuous modeThis bit is set and cleared by software to enable/disable discontinuous mode.
0: Discontinuous mode disabled
1: Discontinuous mode enabled
Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1.
Bit 15 AUTOFF : Auto-off modeThis bit is set and cleared by software to enable/disable auto-off mode.
0: Auto-off mode disabled
1: Auto-off mode enabled
Bit 14 WAIT : Wait conversion modeThis bit is set and cleared by software to enable/disable wait conversion mode.
0: Wait conversion mode off
1: Wait conversion mode on
Bit 13 CONT : Single / continuous conversion modeThis bit is set and cleared by software. If it is set, conversion takes place continuously until it is cleared.
0: Single conversion mode
1: Continuous conversion mode
Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1.
Bit 12 OVRMOD : Overrun management mode
This bit is set and cleared by software and configure the way data overruns are managed.
0: ADC_DR register is preserved with the old data when an overrun is detected.
1: ADC_DR register is overwritten with the last conversion result when an overrun is detected.
Bits 11:10 EXTEN[1:0] : External trigger enable and polarity selection
These bits are set and cleared by software to select the external trigger polarity and enable the trigger.
00: Hardware trigger detection disabled (conversions can be started by software)
01: Hardware trigger detection on the rising edge
10: Hardware trigger detection on the falling edge
11: Hardware trigger detection on both the rising and falling edges
Bit 9 Reserved, must be kept at reset value.
Bits 8:6 EXTSEL[2:0] : External trigger selection
These bits select the external event used to trigger the start of conversion (refer to Table 68: External triggers for details):
000: TRG0
001: TRG1
010: TRG2
011: TRG3
100: TRG4
101: TRG5
110: TRG6
111: TRG7
Bit 5 ALIGN : Data alignment
This bit is set and cleared by software to select right or left alignment. Refer to Figure 44: Data alignment and resolution (oversampling disabled: OVSE = 0) on page 349
0: Right alignment
1: Left alignment
Bits 4:3 RES[1:0] : Data resolution
These bits are written by software to select the resolution of the conversion.
00: 12 bits
01: 10 bits
10: 8 bits
11: 6 bits
Bit 2 SCANDIR : Scan sequence direction
This bit is set and cleared by software to select the direction in which the channels is scanned in the sequence. It is effective only if CHSELMOD bit is cleared.
0: Upward scan (from CHSEL0 to CHSEL)
1: Backward scan (from CHSEL to CHSEL0)
Note: If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored.
Bit 1 DMACFG : Direct memory access configuration
This bit is set and cleared by software to select between two DMA modes of operation and is effective only when DMAEN = 1.
0: DMA one shot mode selected
1: DMA circular mode selected
For more details, refer to Section 14.6.5: Managing converted data using the DMA on page 351 .
Bit 0 DMAEN : Direct memory access enable
This bit is set and cleared by software to enable the generation of DMA requests. This allows the DMA controller to be used to manage automatically the converted data. For more details, refer to Section 14.6.5: Managing converted data using the DMA on page 351 .
0: DMA disabled
1: DMA enabled
14.13.5 ADC configuration register 2 (ADC_CFGR2)
Address offset: 0x10
Reset value: 0x0000 0000
The software is allowed to program ADC_CFGR2 only when ADEN is cleared in ADC_CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CKMODE[1:0] | LFTRIG | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | |
| rw | rw | rw | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | TOVS | OVSS[3:0] | OVSR[2:0] | Res. | OVSE | |||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | |||||||
Bits 31:30 CKMODE[1:0] : ADC clock mode
These bits are set and cleared by software to define how the analog ADC is clocked:
00: ADCCLK (Asynchronous clock mode), generated at product level (refer to RCC section)
01: PCLK/2 (Synchronous clock mode)
10: PCLK/4 (Synchronous clock mode)
In all synchronous clock modes, there is no jitter in the delay from a timer trigger to the start of a conversion.
Note: The software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).
Bit 29 LFTRIG : Low frequency trigger mode enable
This bit is set and cleared by software.
0: Low Frequency Trigger Mode disabled
1: Low Frequency Trigger Mode enabled
Note: The software is allowed to write this bit only when ADEN bit is cleared.
Bits 28:10 Reserved, must be kept at reset value.
Bit 9 TOVS : Triggered OversamplingThis bit is set and cleared by software.
0: All oversampled conversions for a channel are done consecutively after a trigger
1: Each oversampled conversion for a channel needs a trigger
Note: The software is allowed to write this bit only when ADEN bit is cleared.
Bits 8:5 OVSS[3:0] : Oversampling shiftThis bit is set and cleared by software.
0000: No shift
0001: Shift 1-bit
0010: Shift 2-bits
0011: Shift 3-bits
0100: Shift 4-bits
0101: Shift 5-bits
0110: Shift 6-bits
0111: Shift 7-bits
1000: Shift 8-bits
Others: Reserved
Note: The software is allowed to write this bit only when ADEN bit is cleared.
Bits 4:2 OVSR[2:0] : Oversampling ratioThis bit field defines the number of oversampling ratio.
000: 2x
001: 4x
010: 8x
011: 16x
100: 32x
101: 64x
110: 128x
111: 256x
Starting from 32x, it is mandatory to use OVSS[3:0] to reduce the data size to less than 16 bits to fit to the ADC_DR register. For example, if OVSR[2:0] is configured to 32x, the data width is 17 bits, and OVSS[3:0] must be set to 1-bit shift.
Note: The software is allowed to write this bit only when ADEN bit is cleared.
Bit 1 Reserved, must be kept at reset value.
Bit 0 OVSE : Oversampler EnableThis bit is set and cleared by software.
0: Oversampler disabled
1: Oversampler enabled
Note: The software is allowed to write this bit only when ADEN bit is cleared.
14.13.6 ADC sampling time register (ADC_SMPR)
Address offset: 0x14
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | SMPSE L19 | SMPSE L18 | SMPSE L17 | SMPSE L16 | SMPSE L15 | SMPSE L14 | SMPSE L13 | SMPSE L12 | SMPSE L11 | SMPSE L10 | SMPSE L9 | SMPSE L8 |
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SMPSE L7 | SMPSE L6 | SMPSE L5 | SMPSE L4 | SMPSE L3 | SMPSE L2 | SMPSE L1 | SMPSE L0 | Res. | SMP2[2:0] | Res. | SMP1[2:0] | ||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||
Bits 31:28 Reserved, must be kept at reset value.
Bits 27:8 SMPSELx : Channel-x sampling time selection (x = 19 to 0)
These bits are written by software to define which sampling time is used.
0: Sampling time of CHANNELx use the setting of SMP1[2:0] register.
1: Sampling time of CHANNELx use the setting of SMP2[2:0] register.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bit 7 Reserved, must be kept at reset value.
Bits 6:4 SMP2[2:0] : Sampling time selection 2
These bits are written by software to select the sampling time that applies to all channels.
000: 1.5 ADC clock cycles
001: 3.5 ADC clock cycles
010: 7.5 ADC clock cycles
011: 12.5 ADC clock cycles
100: 19.5 ADC clock cycles
101: 39.5 ADC clock cycles
110: 79.5 ADC clock cycles
111: 160.5 ADC clock cycles
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bit 3 Reserved, must be kept at reset value.
Bits 2:0 SMP1[2:0] : Sampling time selection 1
These bits are written by software to select the sampling time that applies to all channels.
000: 1.5 ADC clock cycles
001: 3.5 ADC clock cycles
010: 7.5 ADC clock cycles
011: 12.5 ADC clock cycles
100: 19.5 ADC clock cycles
101: 39.5 ADC clock cycles
110: 79.5 ADC clock cycles
111: 160.5 ADC clock cycles
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
14.13.7 ADC watchdog threshold register (ADC_AWD1TR)
Address offset: 0x20
Reset value: 0x0FFF 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | HT1[11:0] | |||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | LT1[11:0] | |||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||||
Bits 31:28 Reserved, must be kept at reset value.
Bits 27:16 HT1[11:0] : Analog watchdog 1 higher threshold
These bits are written by software to define the higher threshold for the analog watchdog.
Refer to Section 14.8: Analog window watchdogs on page 355 .
Bits 15:12 Reserved, must be kept at reset value.
Bits 11:0 LT1[11:0] : Analog watchdog 1 lower threshold
These bits are written by software to define the lower threshold for the analog watchdog.
Refer to Section 14.8: Analog window watchdogs on page 355 .
14.13.8 ADC watchdog threshold register (ADC_AWD2TR)
Address offset: 0x24
Reset value: 0x0FFF 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | HT2[11:0] | |||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | LT2[11:0] | |||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||||
Bits 31:28 Reserved, must be kept at reset value.
Bits 27:16 HT2[11:0] : Analog watchdog 2 higher threshold
These bits are written by software to define the higher threshold for the analog watchdog.
Refer to Section 14.8: Analog window watchdogs on page 355 .
Bits 15:12 Reserved, must be kept at reset value.
Bits 11:0 LT2[11:0] : Analog watchdog 2 lower threshold
These bits are written by software to define the lower threshold for the analog watchdog.
Refer to Section 14.8: Analog window watchdogs on page 355 .
14.13.9 ADC channel selection register (ADC_CHSELR)
Address offset: 0x28
Reset value: 0x0000 0000
The same register can be used in two different modes:
- – Each ADC_CHSELR bit enables an input (CHSELRMOD = 0 in ADC_CFGR1). Refer to the current section.
- – ADC_CHSELR is able to sequence up to 8 channels (CHSELRMOD = 1 in ADC_CFGR1). Refer to next section.
CHSELRMOD = 0 in ADC_CFGR1
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | CHSEL 19 | CHSEL 18 | CHSEL 17 | CHSEL 16 |
| rw | rw | rw | rw | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CHSEL 15 | CHSEL 14 | CHSEL 13 | CHSEL 12 | CHSEL 11 | CHSEL 10 | CHSEL 9 | CHSEL 8 | CHSEL 7 | CHSEL 6 | CHSEL 5 | CHSEL 4 | CHSEL 3 | CHSEL 2 | CHSEL 1 | CHSEL 0 |
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Bits 31:20 Reserved, must be kept at reset value.
Bits 19:0 CHSEL[19:0] : Channel-x selection
These bits are written by software and define which channels are part of the sequence of channels to be converted.
0: Input Channel-x is not selected for conversion
1: Input Channel-x is selected for conversion
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored.
14.13.10 ADC channel selection register [alternate] (ADC_CHSELR)
Address offset: 0x28
Reset value: 0x0000 0000
The same register can be used in two different modes:
- – Each ADC_CHSELR bit enables an input (CHSELRMOD = 0 in ADC_CFGR1). Refer to the current previous section.
- – ADC_CHSELR is able to sequence up to 8 channels (CHSELRMOD = 1 in ADC_CFGR1). Refer to this section.
CHSELRMOD = 1 in ADC_CFGR1:
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SQ8[3:0] | SQ7[3:0] | SQ6[3:0] | SQ5[3:0] | ||||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SQ4[3:0] | SQ3[3:0] | SQ2[3:0] | SQ1[3:0] | ||||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates the end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
0000: CH0
0001: CH1
...
1100: CH12
1101: CH13
1110: CH14
1111: No channel selected (End of sequence)
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 27:24 SQ7[3:0]: 7th conversion of the sequenceThese bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 23:20 SQ6[3:0]: 6th conversion of the sequenceThese bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 19:16 SQ5[3:0]: 5th conversion of the sequenceThese bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 15:12 SQ4[3:0]: 4th conversion of the sequenceThese bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 11:8 SQ3[3:0] : 3rd conversion of the sequence
These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 7:4 SQ2[3:0] : 2nd conversion of the sequence
These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
Bits 3:0 SQ1[3:0] : 1st conversion of the sequence
These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence.
When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored.
Refer to SQ8[3:0] for a definition of channel selection.
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
14.13.11 ADC watchdog threshold register (ADC_AWD3TR)
Address offset: 0x2C
Reset value: 0x0FFF 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | HT3[11:0] | |||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | LT3[11:0] | |||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | ||||
Bits 31:28 Reserved, must be kept at reset value.
Bits 27:16 HT3[11:0] : Analog watchdog 3 higher threshold
These bits are written by software to define the higher threshold for the analog watchdog.
Refer to Section 14.8: Analog window watchdogs on page 355 .
Bits 15:12 Reserved, must be kept at reset value.
Bits 11:0 LT3[11:0] : Analog watchdog 3 lower threshold
These bits are written by software to define the lower threshold for the analog watchdog.
Refer to Section 14.8: Analog window watchdogs on page 355 .
14.13.12 ADC data register (ADC_DR)
Address offset: 0x40
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DATA[15:0] | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Bits 31:16 Reserved, must be kept at reset value.
Bits 15:0 DATA[15:0] : Converted data
These bits are read-only. They contain the conversion result from the last converted channel. The data are left- or right-aligned as shown in Figure 44 .
Just after a calibration is complete, DATA[6:0] contains the calibration factor.
14.13.13 ADC analog watchdog 2 configuration register (ADC_AWD2CR)
Address offset: 0xA0
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | AWD2 CH19 | AWD2 CH18 | AWD2 CH17 | AWD2 CH16 |
| rw | rw | rw | rw | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| AWD2 CH15 | AWD2 CH14 | AWD2 CH13 | AWD2 CH12 | AWD2 CH11 | AWD2 CH10 | AWD2 CH9 | AWD2 CH8 | AWD2 CH7 | AWD2 CH6 | AWD2 CH5 | AWD2 CH4 | AWD2 CH3 | AWD2 CH2 | AWD2 CH1 | AWD2 CH0 |
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Bits 31:20 Reserved, must be kept at reset value.
Bits 19:0 AWD2CH[19:0] : Analog watchdog channel selection
These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2).
0: ADC analog channel-x is not monitored by AWD2
1: ADC analog channel-x is monitored by AWD2
Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. The software is allowed to write this bit only when ADEN = 0.
14.13.14 ADC Analog Watchdog 3 Configuration register (ADC_AWD3CR)
Address offset: 0xA4
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | AWD3CH19 | AWD3CH18 | AWD3CH17 | AWD3CH16 |
| rw | rw | rw | rw | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| AWD3CH15 | AWD3CH14 | AWD3CH13 | AWD3CH12 | AWD3CH11 | AWD3CH10 | AWD3CH9 | AWD3CH8 | AWD3CH7 | AWD3CH6 | AWD3CH5 | AWD3CH4 | AWD3CH3 | AWD3CH2 | AWD3CH1 | AWD3CH0 |
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Bits 31:20 Reserved, must be kept at reset value.
Bits 19:0 AWD3CH[19:0] : Analog watchdog channel selection
These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3).
0: ADC analog channel-x is not monitored by AWD3
1: ADC analog channel-x is monitored by AWD3
Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. The software is allowed to write this bit only when ADEN = 0.
14.13.15 ADC calibration factor (ADC_CALFACT)
Address offset: 0xB4
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | CALFACT[6:0] | ||||||
| rw | rw | rw | rw | rw | rw | rw | |||||||||
Bits 31:7 Reserved, must be kept at reset value.
Bits 6:0 CALFACT[6:0] : Calibration factor
These bits are written by hardware or by software.
- – Once a calibration is complete, they are updated by hardware with the calibration factors.
- – Software can write these bits with a new calibration factor. If the new calibration factor is different from the current one stored into the analog ADC, it is then applied once a new conversion is launched.
- – Just after a calibration is complete, DATA[6:0] contains the calibration factor.
Note: Software can write these bits only when ADEN=1 (ADC is enabled and no calibration is ongoing and no conversion is ongoing).
14.13.16 ADC common configuration register (ADC_CCR)
Address offset: 0x308
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | VBATEN | TSEN | VREFEN | PRESC[3:0] | Res. | Res. | |||
| rw | rw | rw | rw | rw | rw | rw | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
Bits 31:25 Reserved, must be kept at reset value.
Bit 24 VBATEN : V BAT enable
This bit is set and cleared by software to enable/disable the V BAT channel.
0: V BAT channel disabled
1: V BAT channel enabled
Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing)
Bit 23 TSEN : Temperature sensor buffer enable
This bit is set and cleared by software to enable/disable the temperature sensor buffer.
0: Temperature sensor buffer disabled
1: Temperature sensor buffer enabled
Note: Software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
This bit must be cleared before entering low-power modes to avoid unwanted power consumption.
Bit 22 VREFEN : V REFINT buffer enable
This bit is set and cleared by software to enable/disable the V REFINT buffer.
0: V REFINT buffer disabled
1: V REFINT buffer enabled
Note: Software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing).
This bit must be cleared before entering low-power modes to avoid unwanted power consumption.
Bits 21:18 PRESC[3:0] : ADC prescaler
Set and cleared by software to select the frequency of the clock to the ADC.
- 0000: input ADC clock not divided
- 0001: input ADC clock divided by 2
- 0010: input ADC clock divided by 4
- 0011: input ADC clock divided by 6
- 0100: input ADC clock divided by 8
- 0101: input ADC clock divided by 10
- 0110: input ADC clock divided by 12
- 0111: input ADC clock divided by 16
- 1000: input ADC clock divided by 32
- 1001: input ADC clock divided by 64
- 1010: input ADC clock divided by 128
- 1011: input ADC clock divided by 256
- Other: Reserved
Note: Software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0).
Bits 17:0 Reserved, must be kept at reset value.
14.14 ADC register map
The following table summarizes the ADC registers.
Table 76. ADC register map and reset values
| Offset | Register name Reset value | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x00 | ADC_ISR | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | CCRDY | EOCAL | Res. | Res. | AWD3 | AWD2 | AWD1 | Res. | Res. | Res. | OVR | EOS | EOC | EOSMP |
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
| 0x04 | ADC_IER | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | CCRDYIE | EOCALIE | Res. | Res. | AWD3IE | AWD2IE | AWD1IE | Res. | Res. | Res. | OVRIE | EOSIE | EOCIE | EOSMPIE |
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||
| 0x08 | ADC_CR | ADCAL | Res. | Res. | ADVERGEN | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | ADSTP | Res. | ADSTART | ADDIS |
| Reset value | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||||||
| 0x0C | ADC_CFGR1 | Res. | AWDCH[4:0] | Res. | Res. | AWD1EN | AWD1SGL | CHSELROMOD | Res. | Res. | Res. | Res. | DISCEN | AUTOFF | WAIT | CONT | OVRMOD | EXTEN[1:0] | Res. | EXTSEL [2:0] | ALIGN | RES [1:0] | SCANDIR | DMACFG | DMAEN | ||||||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||
| Offset | Register name Reset value | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x10 | ADC_CFGR2 | CKMODE[1:0] | LFTRIG | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | TOVS | OVSS[3:0] | OVSR[2:0] | Res. | OVSE | ||||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||||||||||
| 0x14 | ADC_SMPR | Res. | Res. | Res. | Res. | SMPSEL19 | SMPSEL18 | SMPSEL17 | SMPSEL16 | SMPSEL15 | SMPSEL14 | SMPSEL13 | SMPSEL12 | SMPSEL11 | SMPSEL10 | SMPSEL9 | SMPSEL8 | SMPSEL7 | SMPSEL6 | SMPSEL5 | SMPSEL4 | SMPSEL3 | SMPSEL2 | SMPSEL1 | SMPSEL0 | Res. | SMP2[2:0] | Res. | SMP1[2:0] | ||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||
| 0x18 | Reserved | Reserved | |||||||||||||||||||||||||||||||
| 0x1C | Reserved | Reserved | |||||||||||||||||||||||||||||||
| 0x20 | ADC_AWD1TR | Res. | Res. | Res. | Res. | HT1[11:0] | Res. | Res. | Res. | Res. | LT1[11:0] | ||||||||||||||||||||||
| Reset value | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||
| 0x24 | ADC_AWD2TR | Res. | Res. | Res. | Res. | HT2[11:0] | Res. | Res. | Res. | Res. | LT2[11:0] | ||||||||||||||||||||||
| Reset value | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||
| 0x28 | ADC_CHSELR (CHSELRMOD=0) | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | CHSEL19 | CHSEL18 | CHSEL17 | CHSEL16 | CHSEL15 | CHSEL14 | CHSEL13 | CHSEL12 | CHSEL11 | CHSEL10 | CHSEL9 | CHSEL8 | CHSEL7 | CHSEL6 | CHSEL5 | CHSEL4 | CHSEL3 | CHSEL2 | CHSEL1 | CHSEL0 |
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||
| 0x28 | ADC_CHSELR (CHSELRMOD=1) | SQ8[3:0] | SQ7[3:0] | SQ6[3:0] | SQ5[3:0] | SQ4[3:0] | SQ3[3:0] | SQ2[3:0] | SQ1[3:0] | ||||||||||||||||||||||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 0x2C | ADC_AWD3TR | Res. | Res. | Res. | Res. | HT3[11:0] | Res. | Res. | Res. | Res. | LT3[11:0] | ||||||||||||||||||||||
| Reset value | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||
| 0x30 0x34 0x38 0x3C | Reserved | Reserved | |||||||||||||||||||||||||||||||
| 0x40 | ADC_DR | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | DATA[15:0] | |||||||||||||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||||||
| ... | Reserved | Reserved | |||||||||||||||||||||||||||||||
| 0xA0 | ADC_AWD2CR | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | AWD2CH19 | AWD2CH18 | AWD2CH17 | AWD2CH16 | AWD2CH15 | AWD2CH14 | AWD2CH13 | AWD2CH12 | AWD2CH11 | AWD2CH10 | AWD2CH9 | AWD2CH8 | AWD2CH7 | AWD2CH6 | AWD2CH5 | AWD2CH4 | AWD2CH3 | AWD2CH2 | AWD2CH1 | AWD2CH0 |
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||
| 0xA4 | ADC_AWD3CR | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | AWD3CH19 | AWD3CH18 | AWD3CH17 | AWD3CH16 | AWD3CH15 | AWD3CH14 | AWD3CH13 | AWD3CH12 | AWD3CH11 | AWD3CH10 | AWD3CH9 | AWD3CH8 | AWD3CH7 | AWD3CH6 | AWD3CH5 | AWD3CH4 | AWD3CH3 | AWD3CH2 | AWD3CH1 | AWD3CH0 |
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||
Table 76. ADC register map and reset values (continued)
| Offset | Register name Reset value | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ... | Reserved | Reserved | ||||||||||||||||||||||||||||||||||
| 0xB4 | ADC_CALFACT | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | CALFACT[6:0] | |||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||||||
| ... | Reserved | Reserved | ||||||||||||||||||||||||||||||||||
| 0x308 | ADC_CCR | Res. | Res. | Res. | Res. | Res. | Res. | Res. | VBATEN | TSEN | VREFEN | PRESC3 | PRESC2 | PRESC1 | PRESCO | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | ||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||||||||||||||||||
Refer to Section 2.2 for the register boundary addresses.