Struct nrf52833_hal::Spim

source ·
pub struct Spim<T>(/* private fields */);
Expand description

Interface to a SPIM instance.

This is a very basic interface that comes with the following limitations:

  • The SPIM instances share the same address space with instances of SPIS, SPI, TWIM, TWIS, and TWI. You need to make sure that conflicting instances are disabled before using Spim. See product specification, section 15.2.

Implementations§

source§

impl<T> Spim<T>
where T: Instance,

source

pub fn new( spim: T, pins: Pins, frequency: FREQUENCY_A, mode: Mode, orc: u8 ) -> Spim<T>

source

pub fn transfer( &mut self, chip_select: &mut Pin<Output<PushPull>>, buffer: &mut [u8] ) -> Result<(), Error>

Read and write from a SPI slave, using a single buffer.

This method implements a complete read transaction, which consists of the master transmitting what it wishes to read, and the slave responding with the requested data.

Uses the provided chip select pin to initiate the transaction. Transmits all bytes in buffer, then receives an equal number of bytes.

source

pub fn transfer_split_even( &mut self, chip_select: &mut Pin<Output<PushPull>>, tx_buffer: &[u8], rx_buffer: &mut [u8] ) -> Result<(), Error>

Read and write from a SPI slave, using separate read and write buffers.

This method implements a complete read transaction, which consists of the master transmitting what it wishes to read, and the slave responding with the requested data.

Uses the provided chip select pin to initiate the transaction. Transmits all bytes in tx_buffer, then receives bytes until rx_buffer is full.

If tx_buffer.len() != rx_buffer.len(), the transaction will stop at the smaller of either buffer.

source

pub fn transfer_split_uneven( &mut self, chip_select: &mut Pin<Output<PushPull>>, tx_buffer: &[u8], rx_buffer: &mut [u8] ) -> Result<(), Error>

Read and write from a SPI slave, using separate read and write buffers.

This method implements a complete read transaction, which consists of the master transmitting what it wishes to read, and the slave responding with the requested data.

Uses the provided chip select pin to initiate the transaction. Transmits all bytes in tx_buffer, then receives bytes until rx_buffer is full.

This method is more complicated than the other transfer methods because it is allowed to perform transactions where tx_buffer.len() != rx_buffer.len(). If this occurs, extra incoming bytes will be discarded, OR extra outgoing bytes will be filled with the orc value.

source

pub fn transfer_split_uneven_internal( &mut self, tx_buffer: &[u8], rx_buffer: &mut [u8] ) -> Result<(), Error>

source

pub fn write( &mut self, chip_select: &mut Pin<Output<PushPull>>, tx_buffer: &[u8] ) -> Result<(), Error>

Write to an SPI slave.

This method uses the provided chip select pin to initiate the transaction, then transmits all bytes in tx_buffer. All incoming bytes are discarded.

source

pub fn free(self) -> (T, Pins)

Return the raw interface to the underlying SPIM peripheral.

Trait Implementations§

source§

impl<T> ErrorType for Spim<T>

§

type Error = Error

Error type.
source§

impl<T> SpiBus for Spim<T>
where T: Instance,

source§

fn read( &mut self, words: &mut [u8] ) -> Result<(), <Spim<T> as ErrorType>::Error>

Read words from the slave. Read more
source§

fn write(&mut self, words: &[u8]) -> Result<(), <Spim<T> as ErrorType>::Error>

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

fn transfer( &mut self, read: &mut [u8], write: &[u8] ) -> Result<(), <Spim<T> as ErrorType>::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<(), <Spim<T> as ErrorType>::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§

fn flush(&mut self) -> Result<(), <Spim<T> as ErrorType>::Error>

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

impl<T> Transfer<u8> for Spim<T>
where T: Instance,

§

type Error = Error

Error type
source§

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

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

impl<T> Write<u8> for Spim<T>
where T: Instance,

§

type Error = Error

Error type
source§

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

Sends words to the slave, ignoring all the incoming words

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<T> UnwindSafe for Spim<T>
where T: UnwindSafe,

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

§

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>,

§

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>,

§

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.