atsamd_hal::dmac

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§

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

Enums§

Traits§

Type Aliases§