PSoC 6 Peripheral Driver Library

General Description

Functions

cy_en_dma_status_t Cy_DMA_Channel_Init (DW_Type *base, uint32_t channel, cy_stc_dma_channel_config_t const *channelConfig)
 Initializes the DMA channel with a descriptor and other parameters. More...
 
void Cy_DMA_Channel_DeInit (DW_Type *base, uint32_t channel)
 Clears the content of registers corresponding to the channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_SetDescriptor (DW_Type *base, uint32_t channel, cy_stc_dma_descriptor_t const *descriptor)
 Sets a descriptor as current for the specified DMA channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_Enable (DW_Type *base, uint32_t channel)
 The function is used to enable a DMA channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_Disable (DW_Type *base, uint32_t channel)
 The function is used to disable a DMA channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_SetPriority (DW_Type *base, uint32_t channel, uint32_t priority)
 The function is used to set a priority for the DMA channel. More...
 
__STATIC_INLINE uint32_t Cy_DMA_Channel_GetPriority (DW_Type const *base, uint32_t channel)
 Returns the priority of the DMA channel. More...
 
__STATIC_INLINE cy_en_dma_intr_cause_t Cy_DMA_Channel_GetStatus (DW_Type const *base, uint32_t channel)
 Returns the interrupt reason of the specified channel. More...
 
__STATIC_INLINE cy_stc_dma_descriptor_tCy_DMA_Channel_GetCurrentDescriptor (DW_Type const *base, uint32_t channel)
 Returns the descriptor that is active in the channel. More...
 
__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatus (DW_Type const *base, uint32_t channel)
 Returns the interrupt status of the specified channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_ClearInterrupt (DW_Type *base, uint32_t channel)
 Clears the interrupt status of the specified channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_SetInterrupt (DW_Type *base, uint32_t channel)
 Sets the interrupt for the specified channel. More...
 
__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptMask (DW_Type const *base, uint32_t channel)
 Returns the interrupt mask value of the specified channel. More...
 
__STATIC_INLINE void Cy_DMA_Channel_SetInterruptMask (DW_Type *base, uint32_t channel, uint32_t interrupt)
 Sets an interrupt mask value for the specified channel. More...
 
__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatusMasked (DW_Type const *base, uint32_t channel)
 Returns the logical AND of the corresponding INTR and INTR_MASK fields in a single-load operation. More...
 

Function Documentation

◆ Cy_DMA_Channel_Init()

cy_en_dma_status_t Cy_DMA_Channel_Init ( DW_Type base,
uint32_t  channel,
cy_stc_dma_channel_config_t const *  channelConfig 
)

Initializes the DMA channel with a descriptor and other parameters.

Parameters
baseThe pointer to the hardware DMA block.
channelA channel number.
channelConfigThe structure that has the initialization information for the channel.
Returns
The status /ref cy_en_dma_status_t.
Function Usage
/* Scenario: Initialize a 1D descriptor */
#define DATACNT (8UL)
cy_stc_dma_descriptor_t nextDescriptor;
uint32_t src[DATACNT];
uint32_t dst[DATACNT];
{
.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,
.dstAddress = &dst,
.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);

◆ Cy_DMA_Channel_DeInit()

void Cy_DMA_Channel_DeInit ( DW_Type base,
uint32_t  channel 
)

Clears the content of registers corresponding to the channel.

Parameters
baseThe pointer to the hardware DMA block.
channelA channel number.
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_Channel_SetDescriptor()

__STATIC_INLINE void Cy_DMA_Channel_SetDescriptor ( DW_Type base,
uint32_t  channel,
cy_stc_dma_descriptor_t const *  descriptor 
)

Sets a descriptor as current for the specified DMA channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
descriptorThis is the descriptor to be associated with the channel.
Function Usage
/* Scenario: Initialize a 1D descriptor */
#define DATACNT (8UL)
cy_stc_dma_descriptor_t nextDescriptor;
uint32_t src[DATACNT];
uint32_t dst[DATACNT];
{
.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,
.dstAddress = &dst,
.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);

◆ Cy_DMA_Channel_Enable()

__STATIC_INLINE void Cy_DMA_Channel_Enable ( DW_Type base,
uint32_t  channel 
)

The function is used to enable a DMA channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Function Usage
/* Scenario: Initialize a 1D descriptor */
#define DATACNT (8UL)
cy_stc_dma_descriptor_t nextDescriptor;
uint32_t src[DATACNT];
uint32_t dst[DATACNT];
{
.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,
.dstAddress = &dst,
.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);

◆ Cy_DMA_Channel_Disable()

__STATIC_INLINE void Cy_DMA_Channel_Disable ( DW_Type base,
uint32_t  channel 
)

The function is used to disable a DMA channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
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_Channel_SetPriority()

__STATIC_INLINE void Cy_DMA_Channel_SetPriority ( DW_Type base,
uint32_t  channel,
uint32_t  priority 
)

The function is used to set a priority for the DMA channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
priorityThe priority to be set for the DMA channel. The allowed values are 0,1,2,3.
Function Usage
/* Scenario: Initialize a 1D descriptor */
#define DATACNT (8UL)
cy_stc_dma_descriptor_t nextDescriptor;
uint32_t src[DATACNT];
uint32_t dst[DATACNT];
{
.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,
.dstAddress = &dst,
.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);

◆ Cy_DMA_Channel_GetPriority()

__STATIC_INLINE uint32_t Cy_DMA_Channel_GetPriority ( DW_Type const *  base,
uint32_t  channel 
)

Returns the priority of the DMA channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Returns
The priority of the channel.
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_Channel_GetStatus()

__STATIC_INLINE cy_en_dma_intr_cause_t Cy_DMA_Channel_GetStatus ( DW_Type const *  base,
uint32_t  channel 
)

Returns the interrupt reason of the specified channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Returns
The cause cy_en_dma_intr_cause_t of the interrupt.
Function Usage
/* Scenario: Inside the interrupt service routine for block DW0 channel 0: */
{
/* Get the interrupt cause */
{
/* Insert error handling */
}
/* Clear the interrupt */
}

◆ Cy_DMA_Channel_GetCurrentDescriptor()

__STATIC_INLINE cy_stc_dma_descriptor_t * Cy_DMA_Channel_GetCurrentDescriptor ( DW_Type const *  base,
uint32_t  channel 
)

Returns the descriptor that is active in the channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Returns
The pointer to the descriptor associated with the channel.
Function Usage
/* Scenario: Disable a descriptor */
if (&descriptor != Cy_DMA_Channel_GetCurrentDescriptor(DW0, 0UL)) /* Make sure it is not in use */
{
}

◆ Cy_DMA_Channel_GetInterruptStatus()

__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatus ( DW_Type const *  base,
uint32_t  channel 
)

Returns the interrupt status of the specified channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Returns
The status of an interrupt for the specified channel.
Function Usage
/* Scenario: Need to check the interrupt status regardless of whether it is enabled (masked) or not */
{
/* The DW0 channel 0 interrupt is pending */
}

◆ Cy_DMA_Channel_ClearInterrupt()

__STATIC_INLINE void Cy_DMA_Channel_ClearInterrupt ( DW_Type base,
uint32_t  channel 
)

Clears the interrupt status of the specified channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Function Usage
/* Scenario: Inside the interrupt service routine for block DW0 channel 0: */
{
/* Get the interrupt cause */
{
/* Insert error handling */
}
/* Clear the interrupt */
}

◆ Cy_DMA_Channel_SetInterrupt()

__STATIC_INLINE void Cy_DMA_Channel_SetInterrupt ( DW_Type base,
uint32_t  channel 
)

Sets the interrupt for the specified channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Function Usage
/* Scenario: Enable interrupts for block DW0 channel 0 */
/* Scenario: Test the interrupt for block DW0 channel 0 */
/* Now the interrupt should occur (if it is enabled, of course) */
/* Scenario: Disable interrupts for block DW0 channel 0 if it is enabled */
{
}

◆ Cy_DMA_Channel_GetInterruptMask()

__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptMask ( DW_Type const *  base,
uint32_t  channel 
)

Returns the interrupt mask value of the specified channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Returns
The interrupt mask value.
Function Usage
/* Scenario: Enable interrupts for block DW0 channel 0 */
/* Scenario: Test the interrupt for block DW0 channel 0 */
/* Now the interrupt should occur (if it is enabled, of course) */
/* Scenario: Disable interrupts for block DW0 channel 0 if it is enabled */
{
}

◆ Cy_DMA_Channel_SetInterruptMask()

__STATIC_INLINE void Cy_DMA_Channel_SetInterruptMask ( DW_Type base,
uint32_t  channel,
uint32_t  interrupt 
)

Sets an interrupt mask value for the specified channel.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
interruptThe interrupt mask: CY_DMA_INTR_MASK to enable the interrupt or 0UL to disable the interrupt.
Function Usage
/* Scenario: Enable interrupts for block DW0 channel 0 */
/* Scenario: Test the interrupt for block DW0 channel 0 */
/* Now the interrupt should occur (if it is enabled, of course) */
/* Scenario: Disable interrupts for block DW0 channel 0 if it is enabled */
{
}

◆ Cy_DMA_Channel_GetInterruptStatusMasked()

__STATIC_INLINE uint32_t Cy_DMA_Channel_GetInterruptStatusMasked ( DW_Type const *  base,
uint32_t  channel 
)

Returns the logical AND of the corresponding INTR and INTR_MASK fields in a single-load operation.

Parameters
baseThe pointer to the hardware DMA block.
channelThe channel number.
Function Usage
/* Scenario: Inside the interrupt service routine for block DW0 channel 0: */
{
/* Get the interrupt cause */
{
/* Insert error handling */
}
/* Clear the interrupt */
}