48 regValTemp = base->
CR;
55 base->
CR = regValTemp;
73 regValTemp = base->
CR;
76 base->
CR = regValTemp;
91 regValTemp = base->
CR;
94 base->
CR = regValTemp;
110 base->
SEEI = channel;
114 base->
CEEI = channel;
130 base->
SERQ = channel;
134 base->
CERQ = channel;
138 #if FEATURE_EDMA_CHANNEL_GROUP_COUNT > 0x1U
146 void EDMA_HAL_SetGroupPriority(
DMA_Type * base, edma_group_priority_t priority)
149 uint32_t mask = DMA_CR_GRP0PRI_MASK | DMA_CR_GRP1PRI_MASK;
150 regValTemp = base->
CR;
152 if (priority == EDMA_GRP0_PRIO_HIGH_GRP1_PRIO_LOW)
154 regValTemp |= DMA_CR_GRP0PRI_MASK;
158 regValTemp |= DMA_CR_GRP1PRI_MASK;
161 base->
CR = regValTemp;
181 base->
TCD[channel].
CITER.ELINKNO = 0U;
183 base->
TCD[channel].
CSR = 0U;
184 base->
TCD[channel].
BITER.ELINKNO = 0U;
199 #ifdef DEV_ERROR_DETECT
206 base->
TCD[channel].
ATTR = regValTemp;
217 #ifdef DEV_ERROR_DETECT
223 bool mlOffNo =
false;
236 regValTemp = base->
TCD[channel].
NBYTES.MLOFFYES;
239 base->
TCD[channel].
NBYTES.MLOFFYES = regValTemp;
258 #ifdef DEV_ERROR_DETECT
261 uint32_t result = 0UL;
265 bool mlOffNo =
false;
299 #ifdef DEV_ERROR_DETECT
305 bool mlOffNo =
false;
318 regValTemp = base->
TCD[channel].
NBYTES.MLOFFYES;
321 base->
TCD[channel].
NBYTES.MLOFFYES = regValTemp;
334 #ifdef DEV_ERROR_DETECT
348 DMA_Type * base, uint32_t channel, uint32_t linkChannel,
bool enable)
350 #ifdef DEV_ERROR_DETECT
356 regValTemp = base->
TCD[channel].
BITER.ELINKYES;
359 base->
TCD[channel].
BITER.ELINKYES = regValTemp;
360 regValTemp = base->
TCD[channel].
CITER.ELINKYES;
363 base->
TCD[channel].
CITER.ELINKYES = regValTemp;
368 regValTemp = base->
TCD[channel].
BITER.ELINKYES;
371 base->
TCD[channel].
BITER.ELINKYES = regValTemp;
373 regValTemp = base->
TCD[channel].
CITER.ELINKYES;
376 base->
TCD[channel].
CITER.ELINKYES = regValTemp;
390 #ifdef DEV_ERROR_DETECT
397 regValTemp = base->
TCD[channel].
BITER.ELINKYES;
400 base->
TCD[channel].
BITER.ELINKYES = regValTemp;
402 regValTemp = base->
TCD[channel].
CITER.ELINKYES;
405 base->
TCD[channel].
CITER.ELINKYES = regValTemp;
409 regValTemp = base->
TCD[channel].
BITER.ELINKNO;
412 base->
TCD[channel].
BITER.ELINKNO = regValTemp;
414 regValTemp = base->
TCD[channel].
CITER.ELINKNO;
417 base->
TCD[channel].
CITER.ELINKNO = regValTemp;
431 #ifdef DEV_ERROR_DETECT
434 uint16_t result = 0U;
443 return (uint32_t) result;
456 #ifdef DEV_ERROR_DETECT
460 uint16_t result = 0U;
469 return (uint32_t) result;
482 #ifdef DEV_ERROR_DETECT
487 uint16_t result = 0U;
499 return (((uint32_t) result) * nbytes);
512 #ifdef DEV_ERROR_DETECT
516 uint32_t nbytes, begin_majorcount, current_majorcount;
522 return ((begin_majorcount - current_majorcount) * nbytes);
void EDMA_HAL_TCDSetScatterGatherLink(DMA_Type *base, uint32_t channel, uint32_t nextTCDAddr)
Configures the memory address for the next transfer TCD for the TCD.
#define DMA_CR_EMLM_SHIFT
#define DMA_TCD_BITER_ELINKYES_BITER_MASK
#define DMA_TCD_BITER_ELINKYES_LINKCH_MASK
void EDMA_HAL_TCDClearReg(DMA_Type *base, uint32_t channel)
Clears all registers to 0 for the hardware TCD.
union DMA_Type::@6::@8 CITER
#define DMA_TCD_BITER_ELINKYES_BITER(x)
uint32_t EDMA_HAL_TCDGetUnfinishedBytes(const DMA_Type *base, uint32_t channel)
Gets the number of bytes haven't transferred for the TCD.
#define DMA_TCD_NBYTES_MLOFFNO_NBYTES_MASK
#define DMA_TCD_NBYTES_MLOFFNO_DMLOE_SHIFT
#define FEATURE_EDMA_MODULE_CHANNELS
#define DMA_TCD_CITER_ELINKYES_LINKCH_MASK
#define DMA_TCD_CITER_ELINKNO_CITER_SHIFT
#define DMA_TCD_CITER_ELINKYES_ELINK(x)
void EDMA_HAL_TCDSetMajorCount(DMA_Type *base, uint32_t channel, uint32_t count)
Sets the major iteration count according to minor loop channel link setting.
#define DMA_TCD_NBYTES_MLOFFNO_DMLOE_MASK
#define DMA_TCD_CITER_ELINKYES_CITER_LE_SHIFT
union DMA_Type::@6::@9 BITER
uint32_t EDMA_HAL_TCDGetCurrentMajorCount(const DMA_Type *base, uint32_t channel)
Returns the current major iteration count.
#define DMA_TCD_NBYTES_MLOFFYES_MLOFF_MASK
void EDMA_HAL_CancelTransferWithError(DMA_Type *base)
Cancels the remaining data transfer and treats it as an error condition.
#define DMA_TCD_BITER_ELINKYES_BITER_SHIFT
#define DMA_TCD_BITER_ELINKNO_ELINK_MASK
void EDMA_HAL_SetErrorIntCmd(DMA_Type *base, uint8_t channel, bool enable)
Enables/Disables the error interrupt for channels.
#define DMA_TCD_BITER_ELINKYES_LINKCH(x)
#define DMA_TCD_NBYTES_MLOFFYES_NBYTES(x)
#define DMA_TCD_CITER_ELINKNO_CITER_MASK
#define DMA_TCD_CITER_ELINKYES_LINKCH(x)
#define DMA_TCD_BITER_ELINKNO_ELINK_SHIFT
#define DMA_TCD_ATTR_DMOD_SHIFT
#define DMA_TCD_CITER_ELINKYES_ELINK_MASK
#define DMA_TCD_BITER_ELINKNO_BITER_MASK
void EDMA_HAL_CancelTransfer(DMA_Type *base)
Cancels the remaining data transfer.
void EDMA_HAL_TCDSetMinorLoopOffset(DMA_Type *base, uint32_t channel, int32_t offset)
Configures the minor loop offset for the TCD.
void EDMA_HAL_TCDSetChannelMinorLink(DMA_Type *base, uint32_t channel, uint32_t linkChannel, bool enable)
Sets the channel minor link for the TCD.
void EDMA_HAL_TCDSetAttribute(DMA_Type *base, uint32_t channel, edma_modulo_t srcModulo, edma_modulo_t destModulo, edma_transfer_size_t srcTransferSize, edma_transfer_size_t destTransferSize)
Configures the transfer attribute for the eDMA channel.
#define DMA_TCD_ATTR_SMOD_SHIFT
#define DMA_TCD_CITER_ELINKYES_CITER_LE(x)
#define DMA_TCD_NBYTES_MLOFFNO_SMLOE_SHIFT
#define DMA_TCD_NBYTES_MLOFFNO_NBYTES_SHIFT
edma_transfer_size_t
eDMA transfer configuration Implements : edma_transfer_size_t_Class
union DMA_Type::@6::@7 NBYTES
edma_modulo_t
eDMA modulo configuration Implements : edma_modulo_t_Class
#define DMA_TCD_NBYTES_MLOFFYES_NBYTES_SHIFT
#define DMA_TCD_NBYTES_MLOFFNO_SMLOE_MASK
#define DMA_TCD_NBYTES_MLOFFYES_MLOFF(x)
#define DMA_TCD_CITER_ELINKNO_CITER(x)
#define DMA_TCD_BITER_ELINKNO_BITER_SHIFT
void EDMA_HAL_SetDmaRequestCmd(DMA_Type *base, uint8_t channel, bool enable)
Enables/Disables the DMA request for the channel or all channels.
uint32_t EDMA_HAL_TCDGetFinishedBytes(const DMA_Type *base, uint32_t channel)
Gets the number of bytes already transferred for the TCD.
#define DMA_TCD_BITER_ELINKYES_ELINK_MASK
#define DMA_TCD_ATTR_SSIZE_SHIFT
struct DMA_Type::@6 TCD[DMA_TCD_COUNT]
#define DMA_TCD_CITER_ELINKYES_CITER_LE_MASK
void EDMA_HAL_Init(DMA_Type *base)
Initializes eDMA module to known state.
void EDMA_HAL_TCDSetNbytes(DMA_Type *base, uint32_t channel, uint32_t nbytes)
Configures the nbytes for the eDMA channel.
#define DMA_TCD_BITER_ELINKNO_BITER(x)
uint32_t EDMA_HAL_TCDGetNbytes(const DMA_Type *base, uint32_t channel)
Gets the nbytes configuration data for the TCD.
#define DMA_TCD_NBYTES_MLNO_NBYTES_MASK
#define DMA_TCD_BITER_ELINKYES_ELINK(x)
uint32_t EDMA_HAL_TCDGetBeginMajorCount(const DMA_Type *base, uint32_t channel)
Returns the begin major iteration count.
#define DMA_TCD_NBYTES_MLNO_NBYTES_SHIFT
#define DMA_TCD_ATTR_DSIZE_SHIFT
#define DMA_TCD_NBYTES_MLOFFYES_NBYTES_MASK