embassy-stm32

Crates

git

Versions

stm32h753ai

Flavors

embassy_stm32::i2s

Struct I2S

source
pub struct I2S<'d, W: Word> { /* private fields */ }
Expand description

I2S driver.

Implementations§

source§

impl<'d, W: Word> I2S<'d, W>

source

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.

source

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.

source

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.

source

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.

source

pub fn start(&mut self)

Start I2S driver.

source

pub fn clear(&mut self)

Reset the ring buffer to its initial state. Can be used to recover from overrun.

source

pub async fn stop(&mut self)

Stop I2S driver.

source

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.

source

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.

source

pub async fn write(&mut self, data: &[W]) -> Result<(), Error>

Write data to the I2S ringbuffer. This appends the data to the buffer and returns immediately. The data will be transmitted in the background. If thfre’s no space in the buffer, this waits until there is.

source

pub async fn write_immediate( &mut self, data: &mut [W], ) -> Result<(usize, usize), Error>

Write data directly to the raw I2S ringbuffer. This can be used to fill the buffer before starting the DMA transfer.

Trait Implementations§

source§

impl<'d, W: Word> Drop for I2S<'d, W>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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

source§

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

source§

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.