embassy-nrf

Crates

git

Versions

nrf5340-app-s

Flavors

embassy_nrf::spim

Struct Spim

Source
pub struct Spim<'d, T: Instance> { /* private fields */ }
Expand description

SPIM driver.

Implementations§

Source§

impl<'d, T: Instance> Spim<'d, T>

Source

pub fn new( spim: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, sck: impl Peripheral<P = impl GpioPin> + 'd, miso: impl Peripheral<P = impl GpioPin> + 'd, mosi: impl Peripheral<P = impl GpioPin> + 'd, config: Config, ) -> Self

Create a new SPIM driver.

Source

pub fn new_txonly( spim: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, sck: impl Peripheral<P = impl GpioPin> + 'd, mosi: impl Peripheral<P = impl GpioPin> + 'd, config: Config, ) -> Self

Create a new SPIM driver, capable of TX only (MOSI only).

Source

pub fn new_rxonly( spim: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, sck: impl Peripheral<P = impl GpioPin> + 'd, miso: impl Peripheral<P = impl GpioPin> + 'd, config: Config, ) -> Self

Create a new SPIM driver, capable of RX only (MISO only).

Source

pub fn new_txonly_nosck( spim: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, mosi: impl Peripheral<P = impl GpioPin> + 'd, config: Config, ) -> Self

Create a new SPIM driver, capable of TX only (MOSI only), without SCK pin.

Source

pub fn blocking_read(&mut self, data: &mut [u8]) -> Result<(), Error>

Reads data from the SPI bus without sending anything. Blocks until the buffer has been filled.

Source

pub fn blocking_transfer( &mut self, read: &mut [u8], write: &[u8], ) -> Result<(), Error>

Simultaneously sends and receives data. Blocks until the transmission is completed. If necessary, the write buffer will be copied into RAM (see struct description for detail).

Source

pub fn blocking_transfer_from_ram( &mut self, read: &mut [u8], write: &[u8], ) -> Result<(), Error>

Same as blocking_transfer but will fail instead of copying data into RAM. Consult the module level documentation to learn more.

Source

pub fn blocking_transfer_in_place( &mut self, data: &mut [u8], ) -> Result<(), Error>

Simultaneously sends and receives data. Places the received data into the same buffer and blocks until the transmission is completed.

Source

pub fn blocking_write(&mut self, data: &[u8]) -> Result<(), Error>

Sends data, discarding any received data. Blocks until the transmission is completed. If necessary, the write buffer will be copied into RAM (see struct description for detail).

Source

pub fn blocking_write_from_ram(&mut self, data: &[u8]) -> Result<(), Error>

Same as blocking_write but will fail instead of copying data into RAM. Consult the module level documentation to learn more.

Source

pub async fn read(&mut self, data: &mut [u8]) -> Result<(), Error>

Reads data from the SPI bus without sending anything.

Source

pub async fn transfer( &mut self, read: &mut [u8], write: &[u8], ) -> Result<(), Error>

Simultaneously sends and receives data. If necessary, the write buffer will be copied into RAM (see struct description for detail).

Source

pub async fn transfer_from_ram( &mut self, read: &mut [u8], write: &[u8], ) -> Result<(), Error>

Same as transfer but will fail instead of copying data into RAM. Consult the module level documentation to learn more.

Source

pub async fn transfer_in_place(&mut self, data: &mut [u8]) -> Result<(), Error>

Simultaneously sends and receives data. Places the received data into the same buffer.

Source

pub async fn write(&mut self, data: &[u8]) -> Result<(), Error>

Sends data, discarding any received data. If necessary, the write buffer will be copied into RAM (see struct description for detail).

Source

pub async fn write_from_ram(&mut self, data: &[u8]) -> Result<(), Error>

Same as write but will fail instead of copying data into RAM. Consult the module level documentation to learn more.

Trait Implementations§

Source§

impl<'d, T: Instance> Drop for Spim<'d, T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<'d, T: Instance> ErrorType for Spim<'d, T>

Source§

type Error = Error

Error type.
Source§

impl<'d, T: Instance> SetConfig for Spim<'d, T>

Source§

type Config = Config

The configuration type used by this driver.
Source§

type ConfigError = ()

The error type that can occur if set_config fails.
Source§

fn set_config(&mut self, config: &Self::Config) -> Result<(), Self::ConfigError>

Set the configuration of the driver.
Source§

impl<'d, T: Instance> SpiBus for Spim<'d, T>

Source§

fn flush(&mut self) -> Result<(), Self::Error>

Wait until all operations have completed and the bus is idle. Read more
Source§

fn read(&mut self, words: &mut [u8]) -> Result<(), Self::Error>

Read words from the slave. Read more
Source§

fn write(&mut self, words: &[u8]) -> Result<(), Self::Error>

Write words to the slave, ignoring all the incoming words. Read more
Source§

fn transfer(&mut self, read: &mut [u8], write: &[u8]) -> Result<(), Self::Error>

Write and read simultaneously. write is written to the slave on MOSI and words received on MISO are stored in read. Read more
Source§

fn transfer_in_place(&mut self, words: &mut [u8]) -> Result<(), Self::Error>

Write and read simultaneously. The contents of words are written to the slave, and the received words are stored into the same words buffer, overwriting it. Read more
Source§

impl<'d, T: Instance> SpiBus for Spim<'d, T>

Source§

async fn flush(&mut self) -> Result<(), Error>

Wait until all operations have completed and the bus is idle. Read more
Source§

async fn read(&mut self, words: &mut [u8]) -> Result<(), Error>

Read words from the slave. Read more
Source§

async fn write(&mut self, data: &[u8]) -> Result<(), Error>

Write words to the slave, ignoring all the incoming words. Read more
Source§

async fn transfer(&mut self, rx: &mut [u8], tx: &[u8]) -> Result<(), Error>

Write and read simultaneously. write is written to the slave on MOSI and words received on MISO are stored in read. Read more
Source§

async fn transfer_in_place(&mut self, words: &mut [u8]) -> Result<(), Error>

Write and read simultaneously. The contents of words are written to the slave, and the received words are stored into the same words buffer, overwriting it. Read more
Source§

impl<'d, T: Instance> Transfer<u8> for Spim<'d, T>

Source§

type Error = Error

Error type
Source§

fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error>

Sends words to the slave. Returns the words received from the slave
Source§

impl<'d, T: Instance> Write<u8> for Spim<'d, T>

Source§

type Error = Error

Error type
Source§

fn write(&mut self, words: &[u8]) -> Result<(), Self::Error>

Sends words to the slave, ignoring all the incoming words

Auto Trait Implementations§

§

impl<'d, T> Freeze for Spim<'d, T>
where T: Freeze,

§

impl<'d, T> RefUnwindSafe for Spim<'d, T>
where T: RefUnwindSafe,

§

impl<'d, T> Send for Spim<'d, T>
where T: Send,

§

impl<'d, T> Sync for Spim<'d, T>
where T: Sync,

§

impl<'d, T> Unpin for Spim<'d, T>
where T: Unpin,

§

impl<'d, T> !UnwindSafe for Spim<'d, T>

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.