[−][src]Struct nrf9160_hal::Spim
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
impl<T> Spim<T> where
T: Instance,
[src]
T: Instance,
pub fn new(
spim: T,
pins: Pins,
frequency: FREQUENCY_A,
mode: Mode,
orc: u8
) -> Spim<T>
[src]
spim: T,
pins: Pins,
frequency: FREQUENCY_A,
mode: Mode,
orc: u8
) -> Spim<T>
pub fn read(
&mut self,
chip_select: &mut Pin<Output<PushPull>>,
tx_buffer: &[u8],
rx_buffer: &mut [u8]
) -> Result<(), Error>
[src]
&mut self,
chip_select: &mut Pin<Output<PushPull>>,
tx_buffer: &[u8],
rx_buffer: &mut [u8]
) -> Result<(), Error>
Read from an SPI slave
This method is deprecated. Consider using transfer
or transfer_split
pub fn transfer(
&mut self,
chip_select: &mut Pin<Output<PushPull>>,
buffer: &mut [u8]
) -> Result<(), Error>
[src]
&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.
pub fn transfer_split_even(
&mut self,
chip_select: &mut Pin<Output<PushPull>>,
tx_buffer: &[u8],
rx_buffer: &mut [u8]
) -> Result<(), Error>
[src]
&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.
pub fn transfer_split_uneven(
&mut self,
chip_select: &mut Pin<Output<PushPull>>,
tx_buffer: &[u8],
rx_buffer: &mut [u8]
) -> Result<(), Error>
[src]
&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.
pub fn write(
&mut self,
chip_select: &mut Pin<Output<PushPull>>,
tx_buffer: &[u8]
) -> Result<(), Error>
[src]
&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.
pub fn free(self) -> T
[src]
Return the raw interface to the underlying SPIM peripheral
Trait Implementations
impl<T> Transfer<u8> for Spim<T> where
T: Instance,
[src]
T: Instance,
type Error = Error
Error type
fn transfer(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Error>
[src]
impl<T> Write<u8> for Spim<T> where
T: Instance,
[src]
T: Instance,
Auto Trait Implementations
impl<T> Send for Spim<T> where
T: Send,
T: Send,
impl<T> Sync for Spim<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Spim<T> where
T: Unpin,
T: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<W, S> Transfer<W> for S where
S: Default<W>,
W: Clone,
[src]
S: Default<W>,
W: Clone,
type Error = <S as FullDuplex<W>>::Error
Error type
fn transfer(
&mut self,
words: &'w mut [W]
) -> Result<&'w [W], <S as FullDuplex<W>>::Error>
[src]
&mut self,
words: &'w mut [W]
) -> Result<&'w [W], <S as FullDuplex<W>>::Error>
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<W, S> Write<W> for S where
S: Default<W>,
W: Clone,
[src]
S: Default<W>,
W: Clone,
type Error = <S as FullDuplex<W>>::Error
Error type