MTB CAT1 Peripheral driver library

General Description

Functions

__STATIC_INLINE void Cy_DMA_Enable (DW_Type *base)
 Enables the DMA block. More...
 
__STATIC_INLINE void Cy_DMA_Disable (DW_Type *base)
 Disables the DMA block. More...
 
__STATIC_INLINE uint32_t Cy_DMA_GetActiveChannel (DW_Type const *base)
 Returns the status of the active/pending channels in the DMA block. More...
 
__STATIC_INLINE void * Cy_DMA_GetActiveSrcAddress (DW_Type const *base)
 Returns the source address being used for the current transfer. More...
 
__STATIC_INLINE void * Cy_DMA_GetActiveDstAddress (DW_Type const *base)
 Returns the destination address being used for the current transfer. More...
 
cy_en_dma_status_t Cy_DMA_Crc_Init (DW_Type *base, cy_stc_dma_crc_config_t const *crcConfig)
 Initializes the DMA CRC functionality. More...
 
__STATIC_INLINE uint32_t Cy_DMA_GetActiveChannelIndex (DW_Type const *base)
 Returns the index of the active channel within the DMA block. More...
 

Function Documentation

◆ Cy_DMA_Enable()

__STATIC_INLINE void Cy_DMA_Enable ( DW_Type base)

Enables the DMA block.

Parameters
baseThe pointer to the hardware DMA block.
Function Usage
/* Scenario: Initialize a 1D descriptor */
#define DATACNT (8UL)
#define CY_DMA_INTR_MASK (0x01UL)
cy_stc_dma_descriptor_t nextDescriptor;
uint32_t src_data[DATACNT];
uint32_t dst_data[DATACNT];
uint8_t currentYIndex;
/* Enabling the interrupt using the Cy_DMA_Channel_SetInterruptMask function for DMA channel.*/
{
.interruptType = CY_DMA_DESCR,
.triggerOutType = CY_DMA_DESCR,
.channelState = CY_DMA_CHANNEL_ENABLED,
.triggerInType = CY_DMA_DESCR,
.dataSize = CY_DMA_WORD,
.srcTransferSize = CY_DMA_TRANSFER_SIZE_WORD,
.dstTransferSize = CY_DMA_TRANSFER_SIZE_WORD,
.descriptorType = CY_DMA_1D_TRANSFER,
.srcAddress = &src_data,
.dstAddress = &dst_data,
.srcXincrement = 1U,
.dstXincrement = 1U,
.xCount = DATACNT,
.srcYincrement = 0U,
.dstYincrement = 0U,
.yCount = 1UL,
.nextDescriptor = &nextDescriptor,
};
if (CY_DMA_SUCCESS != Cy_DMA_Descriptor_Init(&descriptor, &descriptor_cfg))
{
/* Insert error handling */
}
/* Scenario: Setup and enable the DMA channel 0 of block DW0 */
channelConfig.preemptable = false;
channelConfig.enable = false;
channelConfig.bufferable = false;
if (CY_DMA_SUCCESS != Cy_DMA_Channel_Init(DW0, 0UL, &channelConfig))
{
/* Insert error handling */
}
Cy_DMA_Channel_SetDescriptor(DW0, 0UL, &descriptor);
if (true != Cy_DMA_Channel_IsEnabled(DW0, 0UL))
{
/* Insert error handling */
}
currentYIndex = Cy_DMA_Channel_GetCurrentYIndex(DW0, 0UL);
(void) currentYIndex;

◆ Cy_DMA_Disable()

__STATIC_INLINE void Cy_DMA_Disable ( DW_Type base)

Disables the DMA block.

Parameters
baseThe pointer to the hardware DMA block.
Function Usage
/* Scenario: Disable the DMA channel 0 of block DW0 if it's priority equals 3 */
if (3UL == Cy_DMA_Channel_GetPriority(DW0, 0UL))
{
if (0UL != Cy_DMA_GetActiveChannel(DW0))
{
/* if needed (if there is only channel used) the whole block can be disabled */
}
}

◆ Cy_DMA_GetActiveChannel()

__STATIC_INLINE uint32_t Cy_DMA_GetActiveChannel ( DW_Type const *  base)

Returns the status of the active/pending channels in the DMA block.

Parameters
baseThe pointer to the hardware DMA block.
Returns
For DW Version 1 based devices, returns a bit-field with all of the currently active/pending channels in the DMA block.
Note
For DW Version 2 based devices, returns a bit-field with first 32 channels currently active/pending in the DMA block. In addition to this, user can get the active channel index using Cy_DMA_GetActiveChannelIndex.
Function Usage
/* Scenario: Disable the DMA channel 0 of block DW0 if it's priority equals 3 */
if (3UL == Cy_DMA_Channel_GetPriority(DW0, 0UL))
{
if (0UL != Cy_DMA_GetActiveChannel(DW0))
{
/* if needed (if there is only channel used) the whole block can be disabled */
}
}

◆ Cy_DMA_GetActiveSrcAddress()

__STATIC_INLINE void * Cy_DMA_GetActiveSrcAddress ( DW_Type const *  base)

Returns the source address being used for the current transfer.

Parameters
baseThe pointer to the hardware DMA block.
Returns
Returns the pointer to the source of transfer.
Function Usage
/* Scenario: Make sure the array is not in use before modifying the array */
uint32_t array[16];
if (((void*) array != Cy_DMA_GetActiveSrcAddress(DW0)) &&
((void*) array != Cy_DMA_GetActiveDstAddress(DW0)))
{
/* Modify the array content here */
}

◆ Cy_DMA_GetActiveDstAddress()

__STATIC_INLINE void * Cy_DMA_GetActiveDstAddress ( DW_Type const *  base)

Returns the destination address being used for the current transfer.

Parameters
baseThe pointer to the hardware DMA block.
Returns
Returns the pointer to the destination of transfer.
Function Usage
/* Scenario: Make sure the array is not in use before modifying the array */
uint32_t array[16];
if (((void*) array != Cy_DMA_GetActiveSrcAddress(DW0)) &&
((void*) array != Cy_DMA_GetActiveDstAddress(DW0)))
{
/* Modify the array content here */
}

◆ Cy_DMA_Crc_Init()

cy_en_dma_status_t Cy_DMA_Crc_Init ( DW_Type base,
cy_stc_dma_crc_config_t const *  crcConfig 
)

Initializes the DMA CRC functionality.

Parameters
baseThe pointer to the hardware DMA block.
crcConfigThe pointer to the CRC configuration structure cy_stc_dma_crc_config_t.
Returns
The status /ref cy_en_dma_status_t.
Function Usage
/* Scenario: Setup the CRC for DMA block DW0 */
{
.dataReverse = false,
.dataXor = 0x00000000UL,
.polynomial = 0x04C11DB7UL,
.reminderReverse = false,
.reminderXor = 0x00000000UL,
.lfsrInitVal = 0xFFFFFFFFUL
};
if (CY_DMA_SUCCESS != Cy_DMA_Crc_Init(DW0, &crcConfig))
{
/* Insert error handling */
}

◆ Cy_DMA_GetActiveChannelIndex()

__STATIC_INLINE uint32_t Cy_DMA_GetActiveChannelIndex ( DW_Type const *  base)

Returns the index of the active channel within the DMA block.

Parameters
baseThe pointer to the hardware DMA block.
Returns
active channel index if present otherwise CY_DMA_NO_ACTIVE_CHANNELS