pub struct Mem2Mem<'d, M>where
M: Mode,{ /* private fields */ }Expand description
DMA Memory to Memory pseudo-Peripheral
This is a pseudo-peripheral that allows for memory to memory transfers. It is not a real peripheral, but a way to use the DMA engine for memory to memory transfers.
Implementations§
Source§impl<'d> Mem2Mem<'d, Blocking>
impl<'d> Mem2Mem<'d, Blocking>
Sourcepub fn new<CH, DM>(
channel: Channel<'d, DM, CH>,
peripheral: impl DmaEligible,
rx_descriptors: &'static mut [DmaDescriptor],
tx_descriptors: &'static mut [DmaDescriptor],
) -> Result<Self, DmaError>
pub fn new<CH, DM>( channel: Channel<'d, DM, CH>, peripheral: impl DmaEligible, rx_descriptors: &'static mut [DmaDescriptor], tx_descriptors: &'static mut [DmaDescriptor], ) -> Result<Self, DmaError>
Create a new Mem2Mem instance.
Sourcepub fn new_with_chunk_size<CH, DM>(
channel: Channel<'d, DM, CH>,
peripheral: impl DmaEligible,
rx_descriptors: &'static mut [DmaDescriptor],
tx_descriptors: &'static mut [DmaDescriptor],
chunk_size: usize,
) -> Result<Self, DmaError>
pub fn new_with_chunk_size<CH, DM>( channel: Channel<'d, DM, CH>, peripheral: impl DmaEligible, rx_descriptors: &'static mut [DmaDescriptor], tx_descriptors: &'static mut [DmaDescriptor], chunk_size: usize, ) -> Result<Self, DmaError>
Create a new Mem2Mem instance with specific chunk size.
Sourcepub unsafe fn new_unsafe<CH, DM>(
channel: Channel<'d, DM, CH>,
peripheral: DmaPeripheral,
rx_descriptors: &'static mut [DmaDescriptor],
tx_descriptors: &'static mut [DmaDescriptor],
chunk_size: usize,
) -> Result<Self, DmaError>
pub unsafe fn new_unsafe<CH, DM>( channel: Channel<'d, DM, CH>, peripheral: DmaPeripheral, rx_descriptors: &'static mut [DmaDescriptor], tx_descriptors: &'static mut [DmaDescriptor], chunk_size: usize, ) -> Result<Self, DmaError>
Create a new Mem2Mem instance.
§Safety
You must ensure that your not using DMA for the same peripheral and that your the only one using the DmaPeripheral.
Sourcepub fn into_async(self) -> Mem2Mem<'d, Async>
pub fn into_async(self) -> Mem2Mem<'d, Async>
Convert Mem2Mem to an async Mem2Mem.
Source§impl<M> Mem2Mem<'_, M>where
M: Mode,
impl<M> Mem2Mem<'_, M>where
M: Mode,
Sourcepub fn start_transfer<'t, TXBUF, RXBUF>(
&mut self,
rx_buffer: &'t mut RXBUF,
tx_buffer: &'t TXBUF,
) -> Result<DmaTransferRx<'_, Self>, DmaError>where
TXBUF: ReadBuffer,
RXBUF: WriteBuffer,
pub fn start_transfer<'t, TXBUF, RXBUF>(
&mut self,
rx_buffer: &'t mut RXBUF,
tx_buffer: &'t TXBUF,
) -> Result<DmaTransferRx<'_, Self>, DmaError>where
TXBUF: ReadBuffer,
RXBUF: WriteBuffer,
Start a memory to memory transfer.
Auto Trait Implementations§
impl<'d, M> Freeze for Mem2Mem<'d, M>
impl<'d, M> RefUnwindSafe for Mem2Mem<'d, M>where
M: RefUnwindSafe,
impl<'d, M> Send for Mem2Mem<'d, M>where
M: Send,
impl<'d, M> !Sync for Mem2Mem<'d, M>
impl<'d, M> Unpin for Mem2Mem<'d, M>where
M: Unpin,
impl<'d, M> !UnwindSafe for Mem2Mem<'d, M>
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