pub struct ChipSelectPin<CSPIN>(/* private fields */);
Expand description

Wrapper for the CS pin

Used to contain the chip-select pin during operation to prevent its mode from being changed from Output. This is necessary because the SPI state machine would otherwise reset itself to SPI slave mode immediately. This wrapper can be used just like an output pin, because it implements all the same traits from embedded-hal.

Implementations§

source§

impl<CSPIN: PinOps> ChipSelectPin<CSPIN>

source

pub unsafe fn into_pin_unchecked(self) -> Pin<Output, CSPIN>

Convert this ChipSelectPin into the underlying “real” Pin<> object.

§Safety

This function is unsafe because the underlying pin can be converted into a non-output mode which would break SPI functionality. The user must ensure the pin is only used in output modes after calling this function.

source

pub unsafe fn from_pin(pin: Pin<Output, CSPIN>) -> Self

(Re)create a ChipSelectPin from a real Pin<> object.

This function is only meant to be used when the pin was previously moved out of the ChipSelectPin using ChipSelectPin::into_pin_unchecked().

Trait Implementations§

source§

impl<CSPIN: PinOps> ErrorType for ChipSelectPin<CSPIN>

§

type Error = Infallible

Error type
source§

impl<CSPIN: PinOps> OutputPin for ChipSelectPin<CSPIN>

§

type Error = Infallible

Error type
source§

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

Drives the pin low Read more
source§

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

Drives the pin high Read more
source§

fn set_state(&mut self, state: PinState) -> Result<(), Self::Error>

Drives the pin high or low depending on the provided value Read more
source§

impl<CSPIN: PinOps> OutputPin for ChipSelectPin<CSPIN>

source§

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

Drives the pin high. Read more
source§

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

Drives the pin low. Read more
source§

fn set_state(&mut self, state: PinState) -> Result<(), Self::Error>

Drives the pin high or low depending on the provided value. Read more
source§

impl<CSPIN: PinOps> StatefulOutputPin for ChipSelectPin<CSPIN>

source§

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

Is the pin in drive high mode? Read more
source§

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

Is the pin in drive low mode? Read more
source§

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

Toggle pin output.
source§

impl<CSPIN: PinOps> StatefulOutputPin for ChipSelectPin<CSPIN>

source§

fn is_set_low(&self) -> Result<bool, Self::Error>

Is the pin in drive low mode? Read more
source§

fn is_set_high(&self) -> Result<bool, Self::Error>

Is the pin in drive high mode? Read more
source§

impl<CSPIN: PinOps> ToggleableOutputPin for ChipSelectPin<CSPIN>

§

type Error = Infallible

Error type
source§

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

Toggle pin output.

Auto Trait Implementations§

§

impl<CSPIN> Freeze for ChipSelectPin<CSPIN>
where CSPIN: Freeze,

§

impl<CSPIN> RefUnwindSafe for ChipSelectPin<CSPIN>
where CSPIN: RefUnwindSafe,

§

impl<CSPIN> Send for ChipSelectPin<CSPIN>
where CSPIN: Send,

§

impl<CSPIN> Sync for ChipSelectPin<CSPIN>
where CSPIN: Sync,

§

impl<CSPIN> Unpin for ChipSelectPin<CSPIN>
where CSPIN: Unpin,

§

impl<CSPIN> UnwindSafe for ChipSelectPin<CSPIN>
where CSPIN: 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> 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.