pub struct Sai<const N: u8, MclkPin, TxPins, RxPins> { /* private fields */ }Expand description
A SAI peripheral instance
Implementations§
Source§impl<const N: u8, Chan, Mclk, TxSync, TxBclk, TxData, RxSync, RxBclk, RxData> Sai<N, Mclk, Pins<TxSync, TxBclk, TxData>, Pins<RxSync, RxBclk, RxData>>where
Mclk: Pin<Const<N>, Signal = Mclk>,
TxSync: Pin<Const<N>, Signal = TxSync>,
TxBclk: Pin<Const<N>, Signal = TxBclk>,
TxData: Pin<Const<N>>,
RxSync: Pin<Const<N>, Signal = RxSync>,
RxBclk: Pin<Const<N>, Signal = RxBclk>,
RxData: Pin<Const<N>>,
Chan: Unsigned,
<TxData as Pin<Const<N>>>::Signal: TxDataSignal<Index = Chan>,
<RxData as Pin<Const<N>>>::Signal: RxDataSignal<Index = Chan>,
impl<const N: u8, Chan, Mclk, TxSync, TxBclk, TxData, RxSync, RxBclk, RxData> Sai<N, Mclk, Pins<TxSync, TxBclk, TxData>, Pins<RxSync, RxBclk, RxData>>where
Mclk: Pin<Const<N>, Signal = Mclk>,
TxSync: Pin<Const<N>, Signal = TxSync>,
TxBclk: Pin<Const<N>, Signal = TxBclk>,
TxData: Pin<Const<N>>,
RxSync: Pin<Const<N>, Signal = RxSync>,
RxBclk: Pin<Const<N>, Signal = RxBclk>,
RxData: Pin<Const<N>>,
Chan: Unsigned,
<TxData as Pin<Const<N>>>::Signal: TxDataSignal<Index = Chan>,
<RxData as Pin<Const<N>>>::Signal: RxDataSignal<Index = Chan>,
Source§impl<const N: u8, Chan, Mclk, TxSync, TxBclk, TxData> Sai<N, Mclk, Pins<TxSync, TxBclk, TxData>, ()>
impl<const N: u8, Chan, Mclk, TxSync, TxBclk, TxData> Sai<N, Mclk, Pins<TxSync, TxBclk, TxData>, ()>
Source§impl<const N: u8, Chan, Mclk, RxSync, RxBclk, RxData> Sai<N, Mclk, (), Pins<RxSync, RxBclk, RxData>>
impl<const N: u8, Chan, Mclk, RxSync, RxBclk, RxData> Sai<N, Mclk, (), Pins<RxSync, RxBclk, RxData>>
Source§impl<const N: u8> Sai<N, (), (), ()>
impl<const N: u8> Sai<N, (), (), ()>
Sourcepub fn without_pins(
sai: Instance<N>,
tx_chan_mask: u32,
rx_chan_mask: u32,
) -> Self
pub fn without_pins( sai: Instance<N>, tx_chan_mask: u32, rx_chan_mask: u32, ) -> Self
Create a new SAI driver from the RAL SAI instance.
You’re responsible for configuring pins, and for making sure the pin configuration doesn’t change while this driver is in use. Setting the channel mask is also your responsibility
Source§impl<const N: u8, Mclk, TxPins, RxPins> Sai<N, Mclk, TxPins, RxPins>
impl<const N: u8, Mclk, TxPins, RxPins> Sai<N, Mclk, TxPins, RxPins>
Sourcepub fn split<const WORD_SIZE: u8, const FRAME_SIZE: usize, PACKING: Packing<WORD_SIZE>>(
self,
cfg: &SaiConfig,
) -> (Option<Tx<N, WORD_SIZE, FRAME_SIZE, PACKING>>, Option<Rx<N, WORD_SIZE, FRAME_SIZE, PACKING>>)
pub fn split<const WORD_SIZE: u8, const FRAME_SIZE: usize, PACKING: Packing<WORD_SIZE>>( self, cfg: &SaiConfig, ) -> (Option<Tx<N, WORD_SIZE, FRAME_SIZE, PACKING>>, Option<Rx<N, WORD_SIZE, FRAME_SIZE, PACKING>>)
Split the Tx/Rx pair from a SAI, with word, frame, and packing options as type parameters
Auto Trait Implementations§
impl<const N: u8, MclkPin, TxPins, RxPins> Freeze for Sai<N, MclkPin, TxPins, RxPins>
impl<const N: u8, MclkPin, TxPins, RxPins> !RefUnwindSafe for Sai<N, MclkPin, TxPins, RxPins>
impl<const N: u8, MclkPin, TxPins, RxPins> Send for Sai<N, MclkPin, TxPins, RxPins>
impl<const N: u8, MclkPin, TxPins, RxPins> !Sync for Sai<N, MclkPin, TxPins, RxPins>
impl<const N: u8, MclkPin, TxPins, RxPins> Unpin for Sai<N, MclkPin, TxPins, RxPins>
impl<const N: u8, MclkPin, TxPins, RxPins> !UnwindSafe for Sai<N, MclkPin, TxPins, RxPins>
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