EFM32 Giant Gecko Software Documentation  efm32gg-doc-5.1.2
em_dma.h File Reference

Detailed Description

Direct memory access (DMA) API.

Version
5.1.2

License

Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no obligation to support this Software. Silicon Labs is providing the Software "AS IS", with no express or implied warranties of any kind, including, but not limited to, any implied warranties of merchantability or fitness for any particular purpose or warranties against infringement of any proprietary rights of a third party.

Silicon Labs will not be liable for any consequential, incidental, or special damages, or any other relief, or for any claim by any third party, arising from your use of this Software.

Definition in file em_dma.h.

#include "em_device.h"
#include <stdio.h>
#include <stdbool.h>

Go to the source code of this file.

Data Structures

struct  DMA_CB_TypeDef
 Callback structure that can be used to define DMA complete actions. More...
 
struct  DMA_CfgChannel_TypeDef
 
struct  DMA_CfgDescr_TypeDef
 
struct  DMA_CfgDescrSGAlt_TypeDef
 
struct  DMA_CfgLoop_TypeDef
 
struct  DMA_CfgRect_TypeDef
 
struct  DMA_Init_TypeDef
 

Typedefs

typedef void(* DMA_FuncPtr_TypeDef) (unsigned int channel, bool primary, void *user)
 DMA interrupt callback function pointer. More...
 

Enumerations

enum  DMA_ArbiterConfig_TypeDef {
  dmaArbitrate1 = _DMA_CTRL_R_POWER_1,
  dmaArbitrate2 = _DMA_CTRL_R_POWER_2,
  dmaArbitrate4 = _DMA_CTRL_R_POWER_4,
  dmaArbitrate8 = _DMA_CTRL_R_POWER_8,
  dmaArbitrate16 = _DMA_CTRL_R_POWER_16,
  dmaArbitrate32 = _DMA_CTRL_R_POWER_32,
  dmaArbitrate64 = _DMA_CTRL_R_POWER_64,
  dmaArbitrate128 = _DMA_CTRL_R_POWER_128,
  dmaArbitrate256 = _DMA_CTRL_R_POWER_256,
  dmaArbitrate512 = _DMA_CTRL_R_POWER_512,
  dmaArbitrate1024 = _DMA_CTRL_R_POWER_1024
}
 
enum  DMA_CycleCtrl_TypeDef {
  dmaCycleCtrlBasic = _DMA_CTRL_CYCLE_CTRL_BASIC,
  dmaCycleCtrlAuto = _DMA_CTRL_CYCLE_CTRL_AUTO,
  dmaCycleCtrlPingPong = _DMA_CTRL_CYCLE_CTRL_PINGPONG,
  dmaCycleCtrlMemScatterGather = _DMA_CTRL_CYCLE_CTRL_MEM_SCATTER_GATHER,
  dmaCycleCtrlPerScatterGather = _DMA_CTRL_CYCLE_CTRL_PER_SCATTER_GATHER
}
 
enum  DMA_DataInc_TypeDef {
  dmaDataInc1 = _DMA_CTRL_SRC_INC_BYTE,
  dmaDataInc2 = _DMA_CTRL_SRC_INC_HALFWORD,
  dmaDataInc4 = _DMA_CTRL_SRC_INC_WORD,
  dmaDataIncNone = _DMA_CTRL_SRC_INC_NONE
}
 
enum  DMA_DataSize_TypeDef {
  dmaDataSize1 = _DMA_CTRL_SRC_SIZE_BYTE,
  dmaDataSize2 = _DMA_CTRL_SRC_SIZE_HALFWORD,
  dmaDataSize4 = _DMA_CTRL_SRC_SIZE_WORD
}
 

Functions

void DMA_ActivateAuto (unsigned int channel, bool primary, void *dst, const void *src, unsigned int nMinus1)
 Activate DMA auto-request cycle (used for memory-memory transfers). More...
 
void DMA_ActivateBasic (unsigned int channel, bool primary, bool useBurst, void *dst, const void *src, unsigned int nMinus1)
 Activate DMA basic cycle (used for memory-peripheral transfers). More...
 
void DMA_ActivatePingPong (unsigned int channel, bool useBurst, void *primDst, const void *primSrc, unsigned int primNMinus1, void *altDst, const void *altSrc, unsigned int altNMinus1)
 Activate DMA ping-pong cycle (used for memory-peripheral transfers). More...
 
void DMA_ActivateScatterGather (unsigned int channel, bool useBurst, DMA_DESCRIPTOR_TypeDef *altDescr, unsigned int count)
 Activate DMA scatter-gather cycle (used for either memory-peripheral or memory-memory transfers). More...
 
void DMA_CfgChannel (unsigned int channel, DMA_CfgChannel_TypeDef *cfg)
 Configure a DMA channel. More...
 
void DMA_CfgDescr (unsigned int channel, bool primary, DMA_CfgDescr_TypeDef *cfg)
 Configure DMA descriptor for auto-request, basic or ping-pong DMA cycles. More...
 
void DMA_CfgDescrScatterGather (DMA_DESCRIPTOR_TypeDef *descr, unsigned int indx, DMA_CfgDescrSGAlt_TypeDef *cfg)
 Configure an alternate DMA descriptor for use with scatter-gather DMA cycles. More...
 
void DMA_CfgLoop (unsigned int channel, DMA_CfgLoop_TypeDef *cfg)
 Configure DMA channel for Loop mode or 2D transfer. More...
 
void DMA_CfgRect (unsigned int channel, DMA_CfgRect_TypeDef *cfg)
 Configure DMA channel 2D transfer properties. More...
 
void DMA_ChannelEnable (unsigned int channel, bool enable)
 Enable or disable a DMA channel. More...
 
bool DMA_ChannelEnabled (unsigned int channel)
 Check if DMA channel is enabled. More...
 
void DMA_ChannelRequestEnable (unsigned int channel, bool enable)
 Enable or disable a DMA channel request. More...
 
void DMA_Init (DMA_Init_TypeDef *init)
 Initializes DMA controller. More...
 
__STATIC_INLINE void DMA_IntClear (uint32_t flags)
 Clear one or more pending DMA interrupts. More...
 
__STATIC_INLINE void DMA_IntDisable (uint32_t flags)
 Disable one or more DMA interrupts. More...
 
__STATIC_INLINE void DMA_IntEnable (uint32_t flags)
 Enable one or more DMA interrupts. More...
 
__STATIC_INLINE uint32_t DMA_IntGet (void)
 Get pending DMA interrupt flags. More...
 
__STATIC_INLINE uint32_t DMA_IntGetEnabled (void)
 Get enabled and pending DMA interrupt flags. Useful for handling more interrupt sources in the same interrupt handler. More...
 
__STATIC_INLINE void DMA_IntSet (uint32_t flags)
 Set one or more pending DMA interrupts. More...
 
void DMA_IRQHandler (void)
 Interrupt handler for DMA cycle completion handling. More...
 
void DMA_RefreshPingPong (unsigned int channel, bool primary, bool useBurst, void *dst, const void *src, unsigned int nMinus1, bool stop)
 Refresh a descriptor used in a DMA ping-pong cycle. More...
 
void DMA_Reset (void)
 Reset the DMA controller. More...
 
__STATIC_INLINE void DMA_ResetLoop (unsigned int channel)
 Clear Loop configuration for channel. More...
 
__STATIC_INLINE void DMA_ResetRect (unsigned int channel)
 Clear Rect/2D DMA configuration for channel. More...