| .. _module-pw_dma_mcuxpresso: |
| |
| ================= |
| 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: |
| |
| .. code-block:: cpp |
| |
| #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(); |
| } |