embassy-nrf

Crates

git

Versions

nrf5340-net

Flavors

embassy_nrf::spis

Struct Spis

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

SPIS driver.

Implementations§

Source§

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

Source

pub fn new( spis: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, cs: impl Peripheral<P = impl GpioPin> + '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 SPIS driver.

Source

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

Create a new SPIS driver, capable of TX only (MISO only).

Source

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

Create a new SPIS driver, capable of RX only (MOSI only).

Source

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

Create a new SPIS driver, capable of TX only (MISO only) without SCK pin.

Source

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

Reads data from the SPI bus without sending anything. Blocks until cs is deasserted. Returns number of bytes read.

Source

pub fn blocking_transfer( &mut self, read: &mut [u8], write: &[u8], ) -> Result<(usize, usize), 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). Returns number of bytes transferred (n_rx, n_tx).

Source

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

Same as blocking_transfer but will fail instead of copying data into RAM. Consult the module level documentation to learn more. Returns number of bytes transferred (n_rx, n_tx).

Source

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

Simultaneously sends and receives data. Places the received data into the same buffer and blocks until the transmission is completed. Returns number of bytes transferred.

Source

pub fn blocking_write(&mut self, data: &[u8]) -> Result<usize, 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). Returns number of bytes written.

Source

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

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

Source

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

Reads data from the SPI bus without sending anything. Returns number of bytes read.

Source

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

Simultaneously sends and receives data. If necessary, the write buffer will be copied into RAM (see struct description for detail). Returns number of bytes transferred (n_rx, n_tx).

Source

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

Same as transfer but will fail instead of copying data into RAM. Consult the module level documentation to learn more. Returns number of bytes transferred (n_rx, n_tx).

Source

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

Simultaneously sends and receives data. Places the received data into the same buffer. Returns number of bytes transferred.

Source

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

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

Source

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

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

Source

pub fn is_overread(&mut self) -> bool

Checks if last transaction overread.

Source

pub fn is_overflow(&mut self) -> bool

Checks if last transaction overflowed.

Trait Implementations§

Source§

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

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<'d, T: Instance> SetConfig for Spis<'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.

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<'d, T> !UnwindSafe for Spis<'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> 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<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<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.