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,
impl<'d, T> Spi<'d, T, FullDuplexMode>where
T: Instance,
sourcepub fn new(
spi: impl Peripheral<P = T> + 'd,
frequency: Rate<u32, 1, 1>,
mode: SpiMode,
clocks: &Clocks<'_>
) -> Spi<'d, T, FullDuplexMode>
pub fn new( spi: impl Peripheral<P = T> + 'd, frequency: Rate<u32, 1, 1>, 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.
pub fn with_sck<SCK>(
self,
sck: impl Peripheral<P = SCK> + 'd
) -> Spi<'d, T, FullDuplexMode>where
SCK: OutputPin,
pub fn with_mosi<MOSI>(
self,
mosi: impl Peripheral<P = MOSI> + 'd
) -> Spi<'d, T, FullDuplexMode>where
MOSI: OutputPin,
pub fn with_miso<MISO>(
self,
miso: impl Peripheral<P = MISO> + 'd
) -> Spi<'d, T, FullDuplexMode>where
MISO: InputPin,
pub fn with_cs<CS>(
self,
cs: impl Peripheral<P = CS> + 'd
) -> Spi<'d, T, FullDuplexMode>where
CS: OutputPin,
sourcepub fn with_pins<SCK, MOSI, MISO, CS>(
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>
) -> Spi<'d, T, FullDuplexMode>
pub fn with_pins<SCK, MOSI, MISO, CS>( 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> ) -> Spi<'d, T, FullDuplexMode>
Setup pins for this SPI instance.
All pins are optional. Pass crate::gpio::NO_PIN if you don’t need the given pin.
pub fn change_bus_frequency( &mut self, frequency: Rate<u32, 1, 1>, clocks: &Clocks<'_> )
source§impl<'d, T> Spi<'d, T, HalfDuplexMode>where
T: ExtendedInstance,
impl<'d, T> Spi<'d, T, HalfDuplexMode>where
T: ExtendedInstance,
sourcepub fn new_half_duplex(
spi: impl Peripheral<P = T> + 'd,
frequency: Rate<u32, 1, 1>,
mode: SpiMode,
clocks: &Clocks<'_>
) -> Spi<'d, T, HalfDuplexMode>
pub fn new_half_duplex( spi: impl Peripheral<P = T> + 'd, frequency: Rate<u32, 1, 1>, 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.
pub fn with_sck<SCK>(
self,
sck: impl Peripheral<P = SCK> + 'd
) -> Spi<'d, T, HalfDuplexMode>where
SCK: OutputPin,
pub fn with_mosi<MOSI>( self, mosi: impl Peripheral<P = MOSI> + 'd ) -> Spi<'d, T, HalfDuplexMode>
pub fn with_miso<MISO>( self, miso: impl Peripheral<P = MISO> + 'd ) -> Spi<'d, T, HalfDuplexMode>
pub fn with_sio2<SIO2>( self, sio2: impl Peripheral<P = SIO2> + 'd ) -> Spi<'d, T, HalfDuplexMode>
pub fn with_sio3<SIO3>( self, sio3: impl Peripheral<P = SIO3> + 'd ) -> Spi<'d, T, HalfDuplexMode>
pub fn with_cs<CS>(
self,
cs: impl Peripheral<P = CS> + 'd
) -> Spi<'d, T, HalfDuplexMode>where
CS: OutputPin,
sourcepub fn with_pins<SCK, MOSI, MISO, SIO2, SIO3, CS>(
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>
) -> Spi<'d, T, HalfDuplexMode>
pub fn with_pins<SCK, MOSI, MISO, SIO2, SIO3, CS>( 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> ) -> Spi<'d, T, HalfDuplexMode>
Setup pins for this SPI instance.
All pins are optional. Pass crate::gpio::NO_PIN if you don’t need the given pin.
pub fn change_bus_frequency( &mut self, frequency: Rate<u32, 1, 1>, clocks: &Clocks<'_> )
Trait Implementations§
source§impl<T, M> HalfDuplexReadWrite for Spi<'_, T, M>where
T: Instance,
M: IsHalfDuplex,
impl<T, M> HalfDuplexReadWrite for Spi<'_, T, M>where
T: Instance,
M: IsHalfDuplex,
source§impl<T, M> FullDuplex<u8> for Spi<'_, T, M>where
T: Instance,
M: IsFullDuplex,
impl<T, M> FullDuplex<u8> for Spi<'_, T, M>where
T: Instance,
M: IsFullDuplex,
source§impl<'d, C, M> WithDmaSpi2<'d, C, M> for Spi<'d, SPI2, M>
impl<'d, C, M> WithDmaSpi2<'d, C, M> for Spi<'d, SPI2, M>
source§impl<'d, C, M> WithDmaSpi3<'d, C, M> for Spi<'d, SPI3, M>
impl<'d, C, M> WithDmaSpi3<'d, C, M> for Spi<'d, SPI3, M>
Auto Trait Implementations§
impl<'d, T, M> RefUnwindSafe for Spi<'d, T, M>where
M: RefUnwindSafe,
T: RefUnwindSafe,
impl<'d, T, M> Send for Spi<'d, T, M>
impl<'d, T, M> Sync for Spi<'d, T, M>
impl<'d, T, M> Unpin for Spi<'d, T, M>
impl<'d, T, M> !UnwindSafe for Spi<'d, T, M>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more