---
# System prepended metadata

title: What type of adc does STM32F051x6 have?
tags: [stm32]

---

The [STM32F051x6](https://www.ampheo.com/search/STM32F051) [microcontroller](https://www.ampheo.com/c/microcontrollers) features a 12-bit Successive Approximation Register (SAR) ADC.

![how-to-use-adc-in-stm32f103c8-measuring-analog-voltage](https://hackmd.io/_uploads/HJoJgfjxWg.jpg)

Here are the key specifications and characteristics of this [ADC](https://www.onzuu.com/category/analog-to-digital-converters):

**ADC Core Specifications**
* Type: 12-bit Successive Approximation Register (SAR)
* Resolution: 12 bits (4096 possible values)
* Channels: Up to 16 external channels + 3 internal channels
* Conversion Speed: Up to 1 MSPS (Million Samples Per Second) at 14 MHz ADC clock

**Detailed Features**
**Input Channels:**
* 16 external analog inputs connected to GPIO pins
* 3 internal channels:
  * Internal reference voltage (VREFINT)
  * Internal temperature sensor
  * VBAT monitoring (for battery applications)

**Conversion Modes:**
* Single conversion mode (one channel at a time)
* Continuous conversion mode (automatic repeated conversions)
* Scan mode (automatically converts a sequence of channels)
* Discontinuous mode
* Injected channels (for higher-priority conversions)

**Trigger Sources:**
* Software trigger
* Hardware triggers from timers (TIM1, TIM2, TIM3, TIM15)
* External triggers

**Data Management:**
* Data register: 12-bit right-aligned or 16-bit left-aligned
* Analog Watchdog - can monitor specific channels and generate interrupts when values go outside programmed thresholds
* DMA support for efficient data transfer without CPU intervention

**Typical Performance Characteristics**
* Supply voltage: 2.4V to 3.6V
* Analog supply voltage: 2.4V to 3.6V (VDDA)
* Input voltage range: 0V to VDDA
* Conversion time: As low as 1 μs in fast mode
* Sampling time: Programmable from 1.5 ADC cycles to 239.5 ADC cycles

**Example Configuration Code**
Here's a basic setup for the ADC in single conversion mode:

```
c

// Basic ADC initialization for STM32F051
void ADC_Init(void) {
    // 1. Enable clock for ADC and GPIO
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;      // Enable GPIOA clock
    RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;     // Enable ADC1 clock
    
    // 2. Configure GPIO pin as analog input (e.g., PA0)
    GPIOA->MODER |= GPIO_MODER_MODER0;      // Analog mode for PA0 (11 in MODER0 bits)
    
    // 3. Configure ADC
    ADC1->CFGR1 = 0;                        // Default configuration
    ADC1->CFGR2 = 0;                        // Default clock (PCLK/2)
    ADC1->SMPR |= ADC_SMPR_SMP_0;           // Sampling time selection
    
    // 4. Calibrate ADC (mandatory after reset)
    ADC1->CR |= ADC_CR_ADCAL;               // Start calibration
    while (ADC1->CR & ADC_CR_ADCAL);        // Wait for calibration complete
    
    // 5. Enable ADC
    ADC1->CR |= ADC_CR_ADEN;                // Enable ADC
    while (!(ADC1->ISR & ADC_ISR_ADRDY));   // Wait until ADC ready
}

// Function to read ADC value from a channel
uint16_t ADC_Read(uint8_t channel) {
    // Select channel
    ADC1->CHSELR = (1 << channel);
    
    // Start conversion
    ADC1->CR |= ADC_CR_ADSTART;
    
    // Wait for conversion complete
    while (!(ADC1->ISR & ADC_ISR_EOC));
    
    // Read result
    return ADC1->DR;
}
```
**Key Advantages of SAR ADC in STM32F051**
1. Good balance of speed and accuracy - 1 MSPS is sufficient for many embedded applications
2. Low power consumption compared to other ADC architectures
3. Simple architecture - easy to understand and use
4. Flexible triggering allows synchronization with other system events
5. Internal channels enable monitoring of chip temperature and reference voltage

**Common Applications**
* [Sensor](https://www.ampheo.com/c/sensors) reading (temperature, pressure, light)
* Battery voltage monitoring
* [Potentiometer](https://www.onzuu.com/category/potentiometers)/[joystick](https://www.onzuu.com/category/joystick) position sensing
* Audio signal acquisition (lower frequency)
* Industrial control systems

The 12-bit SAR ADC in the [STM32F051x6](https://www.ampheoelec.de/search/STM32F051) provides a good compromise between performance, power consumption, and cost, making it suitable for a wide range of embedded applications requiring analog-to-digital conversion.