pub struct Adc<'d, T: AnyInstance> { /* private fields */ }Expand description
Analog to Digital driver.
Implementations§
Source§impl<'d, T: Instance + AnyInstance> Adc<'d, T>
impl<'d, T: Instance + AnyInstance> Adc<'d, T>
pub fn new_with_config(adc: Peri<'d, T>, config: AdcConfig) -> Self
Sourcepub fn enable_vrefint(&self) -> VrefInt
pub fn enable_vrefint(&self) -> VrefInt
Enable reading the voltage reference internal channel.
Sourcepub fn enable_temperature(&self) -> Temperature
pub fn enable_temperature(&self) -> Temperature
Enable reading the temperature internal channel.
Sourcepub fn enable_vbat(&self) -> Vbat
pub fn enable_vbat(&self) -> Vbat
Enable reading the vbat internal channel.
Source§impl<'d, T: Instance + AnyInstance> Adc<'d, T>
impl<'d, T: Instance + AnyInstance> Adc<'d, T>
Sourcepub fn enable_vrefint_adc4(&self) -> VrefInt
pub fn enable_vrefint_adc4(&self) -> VrefInt
Enable reading the voltage reference internal channel.
Sourcepub fn enable_temperature_adc4(&self) -> Temperature
pub fn enable_temperature_adc4(&self) -> Temperature
Enable reading the temperature internal channel.
Sourcepub fn enable_vbat_adc4(&self) -> Vbat
pub fn enable_vbat_adc4(&self) -> Vbat
Enable reading the vbat internal channel.
Sourcepub fn enable_vcore_adc4(&self) -> Vcore
pub fn enable_vcore_adc4(&self) -> Vcore
Enable reading the vbat internal channel.
Sourcepub fn enable_dac_channel_adc4(&self, dac: DacChannel) -> Dac
pub fn enable_dac_channel_adc4(&self, dac: DacChannel) -> Dac
Enable reading the vbat internal channel.
Sourcepub fn set_resolution_adc4(&mut self, resolution: Resolution)
pub fn set_resolution_adc4(&mut self, resolution: Resolution)
Set the ADC resolution.
Sourcepub fn set_averaging_adc4(&mut self, averaging: Averaging)
pub fn set_averaging_adc4(&mut self, averaging: Averaging)
Set hardware averaging.
Source§impl<'d, T: AnyInstance> Adc<'d, T>
impl<'d, T: AnyInstance> Adc<'d, T>
Sourcepub fn blocking_read(
&mut self,
channel: &mut impl AdcChannel<T>,
sample_time: T::SampleTime,
) -> u16
pub fn blocking_read( &mut self, channel: &mut impl AdcChannel<T>, sample_time: T::SampleTime, ) -> u16
Read an ADC pin.
Sourcepub async fn read(
&mut self,
rx_dma: Peri<'_, impl RxDma<T>>,
sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, T::SampleTime)>,
readings: &mut [u16],
)
pub async fn read( &mut self, rx_dma: Peri<'_, impl RxDma<T>>, sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, T::SampleTime)>, readings: &mut [u16], )
Read one or multiple ADC regular channels using DMA.
sequence iterator and readings must have the same length.
Example
ⓘ
use embassy_stm32::adc::{Adc, AdcChannel}
let mut adc = Adc::new(p.ADC1);
let mut adc_pin0 = p.PA0.into();
let mut adc_pin1 = p.PA1.into();
let mut measurements = [0u16; 2];
adc.read(
p.DMA1_CH2.reborrow(),
[
(&mut *adc_pin0, SampleTime::CYCLES160_5),
(&mut *adc_pin1, SampleTime::CYCLES160_5),
]
.into_iter(),
&mut measurements,
)
.await;
defmt::info!("measurements: {}", measurements);Note: This is not very efficient as the ADC needs to be reconfigured for each read. Use
into_ring_buffered, into_ring_buffered_and_injected
Auto Trait Implementations§
impl<'d, T> Freeze for Adc<'d, T>where
T: Freeze,
impl<'d, T> RefUnwindSafe for Adc<'d, T>where
T: RefUnwindSafe,
impl<'d, T> Send for Adc<'d, T>where
T: Send,
impl<'d, T> Sync for Adc<'d, T>where
T: Sync,
impl<'d, T> Unpin for Adc<'d, T>where
T: Unpin,
impl<'d, T> !UnwindSafe for Adc<'d, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more