Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 1.46 KB

docs.rst

File metadata and controls

57 lines (42 loc) · 1.46 KB

pw_dma_mcuxpresso

.. pigweed-module::
   :name: pw_dma_mcuxpresso

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();
}