pw_dma_mcuxpresso#

DMA helpers for MCUXpresso SDK

Unstable C++17

pw_dma_mcuxpresso provides helper classes for working with an MCUXpresso DMA controller. The API is specific to MCUXpresso and doesn’t implement any generic DMA API at this time.

API reference#

The following classes make up the public API:

McuxpressoDmaController#

Represents a DMA Controller. Supports constinit initialization.

McuxpressoDmaChannel#

Represents a single channel of a DMA controller.

NOTE: Because the SDK maintains a permanent reference to this class’s members, these objects must have static lifetime at the time Init() is called and ever after. The destructor will intentionally crash.

Guides#

Example code to use a DMA channel:

#include "pw_dma_mcuxpresso/dma.h"
#include "pw_status/try.h"

constinit pw::dma::McuxpressoDmaController dma(DMA0_BASE);

// McuxpressoDmaChannel must have static lifetime
pw::dma::McuxpressoDmaChannel tx_dma = dma.GetChannel(kTxDmaChannel);

pw::Status Init() {
  // Initialize the DMA controller
  PW_TRY(dma.Init());

  tx_dma.Init();
  tx_dma.SetPriority(kTxDmaChannelPriority);
  tx_dma.Enable();
  tx_dma.EnableInterrupts();

  // Pass handle to driver that needs a dma_handle_t*.
  dma_handle_t* handle = tx_dma.handle();
}