pub struct Adc<'d, T: Instance> { /* private fields */ }
Expand description
Analog to Digital driver.
Implementations§
source§impl<'d, T: Instance> Adc<'d, T>
impl<'d, T: Instance> Adc<'d, T>
sourcepub fn new(adc: impl Peripheral<P = T> + 'd) -> Self
pub fn new(adc: impl Peripheral<P = T> + 'd) -> Self
Create a new ADC driver.
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.
sourcepub fn set_sample_time(&mut self, sample_time: SampleTime)
pub fn set_sample_time(&mut self, sample_time: SampleTime)
Set the ADC sample time.
sourcepub fn sample_time(&self) -> SampleTime
pub fn sample_time(&self) -> SampleTime
Get the ADC sample time.
sourcepub fn set_resolution(&mut self, resolution: Resolution)
pub fn set_resolution(&mut self, resolution: Resolution)
Set the ADC resolution.
sourcepub fn set_averaging(&mut self, averaging: Averaging)
pub fn set_averaging(&mut self, averaging: Averaging)
Set hardware averaging.
sourcepub fn blocking_read(&mut self, channel: &mut impl AdcChannel<T>) -> u16
pub fn blocking_read(&mut self, channel: &mut impl AdcChannel<T>) -> u16
Read an ADC channel.
sourcepub async fn read(
&mut self,
rx_dma: &mut impl RxDma<T>,
sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, SampleTime)>,
readings: &mut [u16],
)
pub async fn read( &mut self, rx_dma: &mut impl RxDma<T>, sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, SampleTime)>, readings: &mut [u16], )
Read one or multiple ADC 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.degrade_adc();
let mut adc_pin2 = p.PA2.degrade_adc();
let mut measurements = [0u16; 2];
adc.read_async(
p.DMA2_CH0,
[
(&mut *adc_pin0, SampleTime::CYCLES112),
(&mut *adc_pin2, SampleTime::CYCLES112),
]
.into_iter(),
&mut measurements,
)
.await;
defmt::info!("measurements: {}", measurements);
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