Module channel

Source
Expand description

§Abstractions over individual DMA channels

§Initializing

Individual channels should be initialized through the Channel::init method. This will return a Channel<Id, Ready> ready for use by a Transfer. Initializing a channel requires setting a priority level, as well as enabling or disabling interrupt requests (only for the specific channel being initialized).

§Burst Length and FIFO Threshold (SAMD51/SAME5x only)

The transfer burst length can be configured through the Channel::burst_length method. A burst is an atomic, uninterruptible transfer which length corresponds to a number of beats. See SAMD5x/E5x datasheet section 22.6.1.1 for more information. The FIFO threshold can be configured through the Channel::fifo_threshold method. This enables the channel to wait for multiple Beats before sending a Burst. See SAMD5x/E5x datasheet section 22.6.2.8 for more information.

§Channel status

Channels can be in any of three statuses: Uninitialized, Ready, and Busy. These statuses are checked at compile time to ensure they are properly initialized before launching DMA transfers.

§Resetting

Calling the Channel::reset method will reset the channel to its Uninitialized state. You will be required to call Channel::init again before being able to use it with a Transfer.

Structs§

Channel
DMA channel, capable of executing Transfers. Ongoing DMA transfers are automatically stopped when a Channel is dropped.
InterruptFlags
Interrupt sources available to a DMA channel

Enums§

Busy
Busy channel
Ready
Initialized and ready to transfer channel
ReadyFuture
Initialized and ready to transfer in async operation
Uninitialized
Uninitialized channel
UninitializedFuture
Uninitialized Channel configured for async operation

Traits§

AnyChannel
ReadyChannel
Status

Type Aliases§

ChannelId
ChannelStatus
SpecificChannel