pub struct I2S<'d, W: Word> { /* private fields */ }
Expand description
I2S driver.
Implementations§
source§impl<'d, W: Word> I2S<'d, W>
impl<'d, W: Word> I2S<'d, W>
sourcepub fn new_txonly<T: Instance>(
peri: impl Peripheral<P = T> + 'd,
sd: impl Peripheral<P = impl MosiPin<T>> + 'd,
ws: impl Peripheral<P = impl WsPin<T>> + 'd,
ck: impl Peripheral<P = impl CkPin<T>> + 'd,
mck: impl Peripheral<P = impl MckPin<T>> + 'd,
txdma: impl Peripheral<P = impl TxDma<T>> + 'd,
txdma_buf: &'d mut [W],
freq: Hertz,
config: Config,
) -> Self
pub fn new_txonly<T: Instance>( peri: impl Peripheral<P = T> + 'd, sd: impl Peripheral<P = impl MosiPin<T>> + 'd, ws: impl Peripheral<P = impl WsPin<T>> + 'd, ck: impl Peripheral<P = impl CkPin<T>> + 'd, mck: impl Peripheral<P = impl MckPin<T>> + 'd, txdma: impl Peripheral<P = impl TxDma<T>> + 'd, txdma_buf: &'d mut [W], freq: Hertz, config: Config, ) -> Self
Create a transmitter driver.
sourcepub fn new_txonly_nomck<T: Instance>(
peri: impl Peripheral<P = T> + 'd,
sd: impl Peripheral<P = impl MosiPin<T>> + 'd,
ws: impl Peripheral<P = impl WsPin<T>> + 'd,
ck: impl Peripheral<P = impl CkPin<T>> + 'd,
txdma: impl Peripheral<P = impl TxDma<T>> + 'd,
txdma_buf: &'d mut [W],
freq: Hertz,
config: Config,
) -> Self
pub fn new_txonly_nomck<T: Instance>( peri: impl Peripheral<P = T> + 'd, sd: impl Peripheral<P = impl MosiPin<T>> + 'd, ws: impl Peripheral<P = impl WsPin<T>> + 'd, ck: impl Peripheral<P = impl CkPin<T>> + 'd, txdma: impl Peripheral<P = impl TxDma<T>> + 'd, txdma_buf: &'d mut [W], freq: Hertz, config: Config, ) -> Self
Create a transmitter driver without a master clock pin.
sourcepub fn new_rxonly<T: Instance>(
peri: impl Peripheral<P = T> + 'd,
sd: impl Peripheral<P = impl MisoPin<T>> + 'd,
ws: impl Peripheral<P = impl WsPin<T>> + 'd,
ck: impl Peripheral<P = impl CkPin<T>> + 'd,
mck: impl Peripheral<P = impl MckPin<T>> + 'd,
rxdma: impl Peripheral<P = impl RxDma<T>> + 'd,
rxdma_buf: &'d mut [W],
freq: Hertz,
config: Config,
) -> Self
pub fn new_rxonly<T: Instance>( peri: impl Peripheral<P = T> + 'd, sd: impl Peripheral<P = impl MisoPin<T>> + 'd, ws: impl Peripheral<P = impl WsPin<T>> + 'd, ck: impl Peripheral<P = impl CkPin<T>> + 'd, mck: impl Peripheral<P = impl MckPin<T>> + 'd, rxdma: impl Peripheral<P = impl RxDma<T>> + 'd, rxdma_buf: &'d mut [W], freq: Hertz, config: Config, ) -> Self
Create a receiver driver.
sourcepub fn new_full_duplex<T: Instance>(
peri: impl Peripheral<P = T> + 'd,
txsd: impl Peripheral<P = impl MosiPin<T>> + 'd,
rxsd: impl Peripheral<P = impl MisoPin<T>> + 'd,
ws: impl Peripheral<P = impl WsPin<T>> + 'd,
ck: impl Peripheral<P = impl CkPin<T>> + 'd,
mck: impl Peripheral<P = impl MckPin<T>> + 'd,
txdma: impl Peripheral<P = impl TxDma<T>> + 'd,
txdma_buf: &'d mut [W],
rxdma: impl Peripheral<P = impl RxDma<T>> + 'd,
rxdma_buf: &'d mut [W],
freq: Hertz,
config: Config,
) -> Self
pub fn new_full_duplex<T: Instance>( peri: impl Peripheral<P = T> + 'd, txsd: impl Peripheral<P = impl MosiPin<T>> + 'd, rxsd: impl Peripheral<P = impl MisoPin<T>> + 'd, ws: impl Peripheral<P = impl WsPin<T>> + 'd, ck: impl Peripheral<P = impl CkPin<T>> + 'd, mck: impl Peripheral<P = impl MckPin<T>> + 'd, txdma: impl Peripheral<P = impl TxDma<T>> + 'd, txdma_buf: &'d mut [W], rxdma: impl Peripheral<P = impl RxDma<T>> + 'd, rxdma_buf: &'d mut [W], freq: Hertz, config: Config, ) -> Self
Create a full duplex driver.
sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Reset the ring buffer to its initial state. Can be used to recover from overrun.
sourcepub fn split<'s>(
&'s mut self,
) -> Result<(Reader<'s, 'd, W>, Writer<'s, 'd, W>), Error>
pub fn split<'s>( &'s mut self, ) -> Result<(Reader<'s, 'd, W>, Writer<'s, 'd, W>), Error>
Split the driver into a Reader/Writer pair. Useful for splitting the reader/writer functionality across tasks or for calling the read/write methods in parallel.
sourcepub async fn read(&mut self, data: &mut [W]) -> Result<(), Error>
pub async fn read(&mut self, data: &mut [W]) -> Result<(), Error>
Read data from the I2S ringbuffer. SAI is always receiving data in the background. This function pops already-received data from the buffer. If there’s less than data.len() data in the buffer, this waits until there is.
Trait Implementations§
Auto Trait Implementations§
impl<'d, W> Freeze for I2S<'d, W>
impl<'d, W> RefUnwindSafe for I2S<'d, W>where
W: RefUnwindSafe,
impl<'d, W> Send for I2S<'d, W>where
W: Send,
impl<'d, W> Sync for I2S<'d, W>where
W: Sync,
impl<'d, W> Unpin for I2S<'d, W>
impl<'d, W> !UnwindSafe for I2S<'d, W>
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