Hardware Abstraction Layer (HAL)
All Data Structures Functions Variables Typedefs Enumerations Enumerator Modules Pages
M2M DMA (Memory-to-Memory Direct Memory Access)

General Description

M2M DMA allows transferring data between memory regions without CPU intervention.

It can be used to transfer WIFI data between the Apps processor and the WLAN processor through the WWD driver.

Macros

#define ACPU_DMA_TX_CHANNEL   (1)
 Application CPU DMA TX channel.
 
#define ACPU_DMA_RX_CHANNEL   (0)
 Application CPU DMA RX channel.
 
#define WCPU_DMA_TX_CHANNEL   (0)
 WLAN CPU DMA TX channel.
 
#define WCPU_DMA_RX_CHANNEL   (1)
 WLAN CPU DMA RX channel.
 
#define MEMCPY_M2M_DMA_CHANNEL   (2)
 MEMCPY M2M DMA channel.
 
#define MEMCPY_USR_DMA_CHANNEL   (3)
 User M2M DMA channel.
 
#define USR1_DMA_TX_CHANNEL   (4)
 User DMA TX channel 1.
 
#define USR1_DMA_RX_CHANNEL   (5)
 User DMA RX channel 1.
 
#define USR2_DMA_TX_CHANNEL   (6)
 User DMA TX channel 2.
 
#define USR2_DMA_RX_CHANNEL   (7)
 User DMA RX channel 2.
 
#define _CYHAL_M2M_GRPS   (3)
 Number of available channel groups.
 
#define SDPCMD_RXOFFSET   (8)
 RX offset.
 

Enumerations

enum  _cyhal_m2m_group_t {
  _CYHAL_M2M_GRP_WWD ,
  _CYHAL_M2M_GRP_USR_1 ,
  _CYHAL_M2M_GRP_USR_2
}
 M2M DMA group. More...
 

Functions

void _cyhal_m2m_init_dma (_cyhal_m2m_group_t group, uint8_t tx_ch, uint8_t rx_ch, uint32_t rx_buffer_size)
 Common M2M initialization routine. More...
 
void _cyhal_m2m_disable_dma (uint8_t dma_ch)
 Common M2M disable DMA routine. More...
 
void _cyhal_m2m_deinit_dma (_cyhal_m2m_group_t group)
 Common M2M deinitialization routine. More...
 
bool _cyhal_m2m_tx_is_idle (_cyhal_m2m_group_t group)
 Common M2M routine to check if communication is idle. More...
 
void _cyhal_m2m_get_channels (_cyhal_m2m_group_t group, uint8_t *tx_ch, uint8_t *rx_ch, uint8_t *dma_ch)
 Common M2M routine to get the channels for a given group. More...
 
void _cyhal_m2m_unprotected_dma_memcpy (uint8_t dma_ch, void *destination, const void *source, uint32_t byte_count)
 Common M2M function for initiating a regular DMA transfer. More...
 

Enumeration Type Documentation

◆ _cyhal_m2m_group_t

M2M DMA group.

Enumerator
_CYHAL_M2M_GRP_WWD 

Group used for WWD.

_CYHAL_M2M_GRP_USR_1 

User group 1.

_CYHAL_M2M_GRP_USR_2 

User group 2.

Function Documentation

◆ _cyhal_m2m_init_dma()

void _cyhal_m2m_init_dma ( _cyhal_m2m_group_t  group,
uint8_t  tx_ch,
uint8_t  rx_ch,
uint32_t  rx_buffer_size 
)

Common M2M initialization routine.

Function for initializing a DMA group consisting of TX, RX, and DMA channels.

Parameters
[in]groupGroup number
[in]tx_chTX channel number
[in]rx_chRX channel number
[in]rx_buffer_sizeRX buffer size

◆ _cyhal_m2m_disable_dma()

void _cyhal_m2m_disable_dma ( uint8_t  dma_ch)

Common M2M disable DMA routine.

Function for disabling a DMA channel

Parameters
[in]dma_chDMA channel number

◆ _cyhal_m2m_deinit_dma()

void _cyhal_m2m_deinit_dma ( _cyhal_m2m_group_t  group)

Common M2M deinitialization routine.

Function for deinitializing a DMA group.

Parameters
[in]groupGroup number

◆ _cyhal_m2m_tx_is_idle()

bool _cyhal_m2m_tx_is_idle ( _cyhal_m2m_group_t  group)

Common M2M routine to check if communication is idle.

Parameters
[in]groupGroup number
Returns
Idle (true) or Busy (false)

◆ _cyhal_m2m_get_channels()

void _cyhal_m2m_get_channels ( _cyhal_m2m_group_t  group,
uint8_t *  tx_ch,
uint8_t *  rx_ch,
uint8_t *  dma_ch 
)

Common M2M routine to get the channels for a given group.

Parameters
[in]groupGroup number
[in]tx_chTX channel number
[in]rx_chRX channel number
[in]dma_chDMA channel number

◆ _cyhal_m2m_unprotected_dma_memcpy()

void _cyhal_m2m_unprotected_dma_memcpy ( uint8_t  dma_ch,
void *  destination,
const void *  source,
uint32_t  byte_count 
)

Common M2M function for initiating a regular DMA transfer.

Parameters
[in]dma_chDMA channel number
[in]destinationDestination address
[in]sourceSource address
[in]byte_countNumber of bytes to transfer