embassy-nrf

Crates

git

Versions

nrf52840

Flavors

embassy_nrf::saadc

Struct Saadc

Source
pub struct Saadc<'d, const N: usize> { /* private fields */ }
Expand description

One-shot and continuous SAADC.

Implementations§

Source§

impl<'d, const N: usize> Saadc<'d, N>

Source

pub fn new( saadc: impl Peripheral<P = SAADC> + 'd, _irq: impl Binding<SAADC, InterruptHandler> + 'd, config: Config, channel_configs: [ChannelConfig<'_>; N], ) -> Self

Create a new SAADC driver.

Source

pub async fn calibrate(&self)

Perform SAADC calibration. Completes when done.

Source

pub async fn sample(&mut self, buf: &mut [i16; N])

One shot sampling. The buffer must be the same size as the number of channels configured. The sampling is stopped prior to returning in order to reduce power consumption (power consumption remains higher if sampling is not stopped explicitly). Cancellation will also cause the sampling to be stopped.

Source

pub async fn run_task_sampler<F, T: TimerInstance, const N0: usize>( &mut self, timer: &mut T, ppi_ch1: &mut impl ConfigurableChannel, ppi_ch2: &mut impl ConfigurableChannel, frequency: Frequency, sample_counter: u32, bufs: &mut [[[i16; N]; N0]; 2], callback: F, )
where F: FnMut(&[[i16; N]]) -> CallbackResult,

Continuous sampling with double buffers.

A TIMER and two PPI peripherals are passed in so that precise sampling can be attained. The sampling interval is expressed by selecting a timer clock frequency to use along with a counter threshold to be reached. For example, 1KHz can be achieved using a frequency of 1MHz and a counter threshold of 1000.

A sampler closure is provided that receives the buffer of samples, noting that the size of this buffer can be less than the original buffer’s size. A command is return from the closure that indicates whether the sampling should continue or stop.

NOTE: The time spent within the callback supplied should not exceed the time taken to acquire the samples into a single buffer. You should measure the time taken by the callback and set the sample buffer size accordingly. Exceeding this time can lead to samples becoming dropped.

The sampling is stopped prior to returning in order to reduce power consumption (power consumption remains higher if sampling is not stopped explicitly), and to free the buffers from being used by the peripheral. Cancellation will also cause the sampling to be stopped.

Source§

impl<'d> Saadc<'d, 1>

Source

pub async fn run_timer_sampler<I, S, const N0: usize>( &mut self, bufs: &mut [[[i16; 1]; N0]; 2], sample_rate_divisor: u16, sampler: S, )
where S: FnMut(&[[i16; 1]]) -> CallbackResult,

Continuous sampling on a single channel with double buffers.

The internal clock is to be used with a sample rate expressed as a divisor of 16MHz, ranging from 80..2047. For example, 1600 represents a sample rate of 10KHz given 16_000_000 / 10_000_000 = 1600.

A sampler closure is provided that receives the buffer of samples, noting that the size of this buffer can be less than the original buffer’s size. A command is return from the closure that indicates whether the sampling should continue or stop.

Trait Implementations§

Source§

impl<'d, const N: usize> Drop for Saadc<'d, N>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'d, const N: usize> Freeze for Saadc<'d, N>

§

impl<'d, const N: usize> RefUnwindSafe for Saadc<'d, N>

§

impl<'d, const N: usize> Send for Saadc<'d, N>

§

impl<'d, const N: usize> Sync for Saadc<'d, N>

§

impl<'d, const N: usize> Unpin for Saadc<'d, N>

§

impl<'d, const N: usize> !UnwindSafe for Saadc<'d, N>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.