Struct esp_hal::spi::master::Spi

source ·
pub struct Spi<'d, T, M> { /* private fields */ }
Expand description

SPI peripheral driver

Implementations§

source§

impl<'d, T> Spi<'d, T, FullDuplexMode>
where T: Instance,

source

pub fn new( spi: impl Peripheral<P = T> + 'd, frequency: HertzU32, mode: SpiMode, clocks: &Clocks<'_> ) -> Spi<'d, T, FullDuplexMode>

Constructs an SPI instance in 8bit dataframe mode.

All pins are optional. Setup these pins using with_pins or individual methods for each pin.

source

pub fn with_sck<SCK: OutputPin>( self, sck: impl Peripheral<P = SCK> + 'd ) -> Self

source

pub fn with_mosi<MOSI: OutputPin>( self, mosi: impl Peripheral<P = MOSI> + 'd ) -> Self

source

pub fn with_miso<MISO: InputPin>( self, miso: impl Peripheral<P = MISO> + 'd ) -> Self

source

pub fn with_cs<CS: OutputPin>(self, cs: impl Peripheral<P = CS> + 'd) -> Self

source

pub fn with_pins<SCK: OutputPin, MOSI: OutputPin, MISO: InputPin, CS: OutputPin>( self, sck: Option<impl Peripheral<P = SCK> + 'd>, mosi: Option<impl Peripheral<P = MOSI> + 'd>, miso: Option<impl Peripheral<P = MISO> + 'd>, cs: Option<impl Peripheral<P = CS> + 'd> ) -> Self

Setup pins for this SPI instance.

All pins are optional. Pass crate::gpio::NO_PIN if you don’t need the given pin.

source

pub fn change_bus_frequency(&mut self, frequency: HertzU32, clocks: &Clocks<'_>)

source§

impl<'d, T> Spi<'d, T, HalfDuplexMode>

source

pub fn new_half_duplex( spi: impl Peripheral<P = T> + 'd, frequency: HertzU32, mode: SpiMode, clocks: &Clocks<'_> ) -> Spi<'d, T, HalfDuplexMode>

Constructs an SPI instance in half-duplex mode.

All pins are optional. Setup these pins using with_pins or individual methods for each pin.

source

pub fn with_sck<SCK: OutputPin>( self, sck: impl Peripheral<P = SCK> + 'd ) -> Self

source

pub fn with_mosi<MOSI: OutputPin + InputPin>( self, mosi: impl Peripheral<P = MOSI> + 'd ) -> Self

source

pub fn with_miso<MISO: OutputPin + InputPin>( self, miso: impl Peripheral<P = MISO> + 'd ) -> Self

source

pub fn with_sio2<SIO2: OutputPin + InputPin>( self, sio2: impl Peripheral<P = SIO2> + 'd ) -> Self

source

pub fn with_sio3<SIO3: OutputPin + InputPin>( self, sio3: impl Peripheral<P = SIO3> + 'd ) -> Self

source

pub fn with_cs<CS: OutputPin>(self, cs: impl Peripheral<P = CS> + 'd) -> Self

source

pub fn with_pins<SCK: OutputPin, MOSI: OutputPin + InputPin, MISO: OutputPin + InputPin, SIO2: OutputPin + InputPin, SIO3: OutputPin + InputPin, CS: OutputPin>( self, sck: Option<impl Peripheral<P = SCK> + 'd>, mosi: Option<impl Peripheral<P = MOSI> + 'd>, miso: Option<impl Peripheral<P = MISO> + 'd>, sio2: Option<impl Peripheral<P = SIO2> + 'd>, sio3: Option<impl Peripheral<P = SIO3> + 'd>, cs: Option<impl Peripheral<P = CS> + 'd> ) -> Self

Setup pins for this SPI instance.

All pins are optional. Pass crate::gpio::NO_PIN if you don’t need the given pin.

source

pub fn change_bus_frequency(&mut self, frequency: HertzU32, clocks: &Clocks<'_>)

Trait Implementations§

source§

impl<T, M> ErrorType for Spi<'_, T, M>

§

type Error = Error

Error type.
source§

impl<T, M> FullDuplex for Spi<'_, T, M>
where T: Instance, M: IsFullDuplex,

source§

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

Reads the word stored in the shift register Read more
source§

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

Writes a word to the slave
source§

impl<T, M> HalfDuplexReadWrite for Spi<'_, T, M>
where T: Instance, M: IsHalfDuplex,

§

type Error = Error

source§

fn read( &mut self, data_mode: SpiDataMode, cmd: Command, address: Address, dummy: u8, buffer: &mut [u8] ) -> Result<(), Self::Error>

Half-duplex read.
source§

fn write( &mut self, data_mode: SpiDataMode, cmd: Command, address: Address, dummy: u8, buffer: &[u8] ) -> Result<(), Self::Error>

Half-duplex write.
source§

impl<T, M> SpiBus for Spi<'_, T, M>
where T: Instance, M: IsFullDuplex,

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§

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

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

impl<'d, C, M> WithDmaSpi2<'d, C, M> for Spi<'d, SPI2, M>

source§

fn with_dma(self, channel: Channel<'d, C>) -> SpiDma<'d, SPI2, C, M>

source§

impl<T, M> Transfer<u8> for Spi<'_, T, M>
where T: Instance, M: IsFullDuplex,

§

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<T, M> Write<u8> for Spi<'_, T, M>
where T: Instance, M: IsFullDuplex,

§

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
source§

impl<T, M> FullDuplex<u8> for Spi<'_, T, M>
where T: Instance, M: IsFullDuplex,

§

type Error = Error

An enumeration of SPI errors
source§

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

Reads the word stored in the shift register Read more
source§

fn send(&mut self, word: u8) -> Result<(), Self::Error>

Sends a word to the slave

Auto Trait Implementations§

§

impl<'d, T, M> Freeze for Spi<'d, T, M>
where T: Freeze,

§

impl<'d, T, M> RefUnwindSafe for Spi<'d, T, M>

§

impl<'d, T, M> Send for Spi<'d, T, M>
where M: Send, T: Send,

§

impl<'d, T, M> Sync for Spi<'d, T, M>
where M: Sync, T: Sync,

§

impl<'d, T, M> Unpin for Spi<'d, T, M>
where M: Unpin, T: Unpin,

§

impl<'d, T, M> !UnwindSafe for Spi<'d, T, M>

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

§

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.