[][src]Function esp_idf_sys::adc1_config_channel_atten

pub unsafe extern "C" fn adc1_config_channel_atten(
    channel: adc1_channel_t,
    atten: adc_atten_t
) -> esp_err_t

@brief Set the attenuation of a particular channel on ADC1, and configure its associated GPIO pin mux.

@note For any given channel, this function must be called before the first time adc1_get_raw() is called for that channel.

@note This function can be called multiple times to configure multiple ADC channels simultaneously. adc1_get_raw() can then be called for any configured channel.

The default ADC full-scale voltage is 1.1V. To read higher voltages (up to the pin maximum voltage, usually 3.3V) requires setting >0dB signal attenuation for that ADC channel.

When VDD_A is 3.3V:

  • 0dB attenuaton (ADC_ATTEN_DB_0) gives full-scale voltage 1.1V
  • 2.5dB attenuation (ADC_ATTEN_DB_2_5) gives full-scale voltage 1.5V
  • 6dB attenuation (ADC_ATTEN_DB_6) gives full-scale voltage 2.2V
  • 11dB attenuation (ADC_ATTEN_DB_11) gives full-scale voltage 3.9V (see note below)

@note The full-scale voltage is the voltage corresponding to a maximum reading (depending on ADC1 configured bit width, this value is: 4095 for 12-bits, 2047 for 11-bits, 1023 for 10-bits, 511 for 9 bits.)

@note At 11dB attenuation the maximum voltage is limited by VDD_A, not the full scale voltage.

Due to ADC characteristics, most accurate results are obtained within the following approximate voltage ranges:

  • 0dB attenuaton (ADC_ATTEN_DB_0) between 100 and 950mV
  • 2.5dB attenuation (ADC_ATTEN_DB_2_5) between 100 and 1250mV
  • 6dB attenuation (ADC_ATTEN_DB_6) between 150 to 1750mV
  • 11dB attenuation (ADC_ATTEN_DB_11) between 150 to 2450mV

For maximum accuracy, use the ADC calibration APIs and measure voltages within these recommended ranges.

@param channel ADC1 channel to configure @param atten Attenuation level

@return - ESP_OK success - ESP_ERR_INVALID_ARG Parameter error