Struct esp32c2_hal::spi::slave::dma::SpiDma

source ·
pub struct SpiDma<'d, T, C>where
    C: ChannelTypes,
    <C as ChannelTypes>::P: SpiPeripheral,{ /* 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<SpiDmaTransfer<'d, T, C, TXBUF>, Error>where TXBUF: ReadBuffer<Word = u8>,

Register a buffer for a DMA write.

This will return a SpiDmaTransfer 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<SpiDmaTransfer<'d, T, C, RXBUF>, Error>where RXBUF: WriteBuffer<Word = u8>,

Register a buffer for a DMA read.

This will return a SpiDmaTransfer 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 SpiDmaTransfer 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>where C: ChannelTypes, <C as ChannelTypes>::P: SpiPeripheral,

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 SpiDmaTransfer<'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>where T: RefUnwindSafe, <C as ChannelTypes>::Rx<'d>: RefUnwindSafe, <C as ChannelTypes>::Tx<'d>: RefUnwindSafe,

§

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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere 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 Twhere 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.