Peripheral features
The Direct Memory Access Multiplexer (DMAMUX) routes DMA sources, called slots, to any of the DMA channels on SOCS.
- Support multiple independently selectable DMA channel routers.
- Support multiple peripheral slots can be routed to all the DMA channels. The peripheral used as the DMA sources.
- Support always-on slots can be routed to all the DMA channels. In addition to the peripherals that can be used as DMA sources, there are several additional DMA sources that are always enabled. Unlike the peripheral DMA sources, where the peripheral controls the flow of data during DMA transfers, the sources that are always enabled provide no such "throttling" of the data transfers It is useful to below cases:
- Performing DMA transfer to/from GPIO, moving data from/to one or more GPIO
- Performing DMA transfer from memory to memory, typically as fast as possible without software activation
- Any DMA transfer that requires software activation, since when activating a DMA channel via software, subsequent executions of the minor loop(reference EDMA driver for concept of minor loop) require that a new start event be sent, to reduce software intervention, the always-on source can be used to do the channel reactivation.
How this peripheral works
A DMA source will be routed directly to the specified DMA channel.
How this driver is designed to make this peripheral works.
- The DMAMUX driver provide one function group,
- DMAMUX Channel functional group
- The interfaces support connect one sources(peripheral or always on) to a specified DMA channel, then enable the channel.
- The interfaces support put a DMAMUX channel into the disconnect status.
How to use this driver
- Connect a source to a DMA channel Using DMAMUX_ConnectChannelToTriggerSource Interface to connect a source to a specified DMA channel and enable the channel.
- Disconnect the DMAMUX channel Using DMAMUX_DisconnectChannelFromTriggerSource Interface to disconnect a specified channel from the source.
Typical Use Cases
- Connect a perpheral source to DMA channel 0
- Connect a always on source to DMA channel 0
- Swicth source for DMA channel 0 step1: Disable the DMA channel 0 in DMA peripheral firstly step2: Switch to a new source for the channel