Struct esp32s3_hal::spi::slave::dma::SpiDma

source ·
pub struct SpiDma<'d, T, C>{ /* private fields */ }
Expand description

A DMA capable SPI instance.

Implementations§

source§

impl<'d, T, C> SpiDma<'d, T, C>
where T: InstanceDma<<C as ChannelTypes>::Tx<'d>, <C as ChannelTypes>::Rx<'d>>, C: ChannelTypes, <C as ChannelTypes>::P: SpiPeripheral,

source

pub fn dma_write<TXBUF>( self, words: TXBUF ) -> Result<SpiDmaTransferTx<'d, T, C, TXBUF>, Error>
where TXBUF: ReadBuffer<Word = u8>,

Register a buffer for a DMA write.

This will return a SpiDmaTransferTx owning the buffer(s) and the SPI instance. The maximum amount of data to be sent is 32736 bytes.

The write is driven by the SPI master’s sclk signal and cs line.

source

pub fn dma_read<RXBUF>( self, words: RXBUF ) -> Result<SpiDmaTransferRx<'d, T, C, RXBUF>, Error>
where RXBUF: WriteBuffer<Word = u8>,

Register a buffer for a DMA read.

This will return a SpiDmaTransferRx owning the buffer(s) and the SPI instance. The maximum amount of data to be received is 32736 bytes.

The read is driven by the SPI master’s sclk signal and cs line.

source

pub fn dma_transfer<TXBUF, RXBUF>( self, words: TXBUF, read_buffer: RXBUF ) -> Result<SpiDmaTransferRxTx<'d, T, C, RXBUF, TXBUF>, Error>
where TXBUF: ReadBuffer<Word = u8>, RXBUF: WriteBuffer<Word = u8>,

Register buffers for a DMA transfer.

This will return a SpiDmaTransferRxTx owning the buffer(s) and the SPI instance. The maximum amount of data to be sent/received is 32736 bytes.

The data transfer is driven by the SPI master’s sclk signal and cs line.

Trait Implementations§

source§

impl<'d, T, C> Debug for SpiDma<'d, T, C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<'d, T, C, BUFFER> DmaTransfer<BUFFER, SpiDma<'d, T, C>> for SpiDmaTransferRx<'d, T, C, BUFFER>
where T: InstanceDma<<C as ChannelTypes>::Tx<'d>, <C as ChannelTypes>::Rx<'d>>, C: ChannelTypes, <C as ChannelTypes>::P: SpiPeripheral,

source§

fn wait( self ) -> Result<(BUFFER, SpiDma<'d, T, C>), (DmaError, BUFFER, SpiDma<'d, T, C>)>

Wait for the DMA transfer to complete and return the buffers and the SPI instance.

source§

fn is_done(&self) -> bool

Check if the DMA transfer is complete

source§

impl<'d, T, C, BUFFER> DmaTransfer<BUFFER, SpiDma<'d, T, C>> for SpiDmaTransferTx<'d, T, C, BUFFER>
where T: InstanceDma<<C as ChannelTypes>::Tx<'d>, <C as ChannelTypes>::Rx<'d>>, C: ChannelTypes, <C as ChannelTypes>::P: SpiPeripheral,

source§

fn wait( self ) -> Result<(BUFFER, SpiDma<'d, T, C>), (DmaError, BUFFER, SpiDma<'d, T, C>)>

Wait for the DMA transfer to complete and return the buffers and the SPI instance.

source§

fn is_done(&self) -> bool

Check if the DMA transfer is complete

source§

impl<'d, T, C, RXBUF, TXBUF> DmaTransferRxTx<RXBUF, TXBUF, SpiDma<'d, T, C>> for SpiDmaTransferRxTx<'d, T, C, RXBUF, TXBUF>
where T: InstanceDma<<C as ChannelTypes>::Tx<'d>, <C as ChannelTypes>::Rx<'d>>, C: ChannelTypes, <C as ChannelTypes>::P: SpiPeripheral,

source§

fn wait( self ) -> Result<(RXBUF, TXBUF, SpiDma<'d, T, C>), (DmaError, RXBUF, TXBUF, SpiDma<'d, T, C>)>

Wait for the DMA transfer to complete and return the buffers and the SPI instance.

source§

fn is_done(&self) -> bool

Check if the DMA transfer is complete

Auto Trait Implementations§

§

impl<'d, T, C> RefUnwindSafe for SpiDma<'d, T, C>

§

impl<'d, T, C> Send for SpiDma<'d, T, C>
where T: Send, <C as ChannelTypes>::Rx<'d>: Send, <C as ChannelTypes>::Tx<'d>: Send,

§

impl<'d, T, C> Sync for SpiDma<'d, T, C>
where T: Sync, <C as ChannelTypes>::Rx<'d>: Sync, <C as ChannelTypes>::Tx<'d>: Sync,

§

impl<'d, T, C> Unpin for SpiDma<'d, T, C>
where T: Unpin, <C as ChannelTypes>::Rx<'d>: Unpin, <C as ChannelTypes>::Tx<'d>: Unpin,

§

impl<'d, T, C> !UnwindSafe for SpiDma<'d, T, C>

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.