157 ASSERT((ui32ChannelNum & 0xffff) < 32);
184 ASSERT((ui32ChannelNum & 0xffff) < 32);
211 ASSERT((ui32ChannelNum & 0xffff) < 32);
247 ASSERT(((uint32_t)psControlTable & ~0x3FF) ==
248 (uint32_t)psControlTable);
249 ASSERT((uint32_t)psControlTable >= 0x20000000);
325 ASSERT((ui32ChannelNum & 0xffff) < 32);
361 ASSERT((ui32ChannelNum & 0xffff) < 32);
370 ui32ChannelNum &= 0x1f;
434 ASSERT((ui32ChannelNum & 0xffff) < 32);
443 ui32ChannelNum &= 0x1f;
502 uint32_t ui32Attr = 0;
507 ASSERT((ui32ChannelNum & 0xffff) < 32);
514 ui32ChannelNum &= 0x1f;
610 ASSERT((ui32ChannelStructIndex & 0xffff) < 64);
618 ui32ChannelStructIndex &= 0x3f;
711 void *pvSrcAddr,
void *pvDstAddr,
712 uint32_t ui32TransferSize)
715 uint32_t ui32Control;
717 uint32_t ui32BufferBytes;
722 ASSERT((ui32ChannelStructIndex & 0xffff) < 64);
725 ASSERT((uint32_t)pvSrcAddr >= 0x20000000);
726 ASSERT((uint32_t)pvDstAddr >= 0x20000000);
727 ASSERT((ui32TransferSize != 0) && (ui32TransferSize <= 1024));
734 ui32ChannelStructIndex &= 0x3f;
745 ui32Control = (psControlTable[ui32ChannelStructIndex].
ui32Control &
764 ui32Control |= ui32Mode | ((ui32TransferSize - 1) << 4);
778 ui32Inc = ui32Inc >> 26;
779 ui32BufferBytes = ui32TransferSize << ui32Inc;
780 pvSrcAddr = (
void *)((uint32_t)pvSrcAddr + ui32BufferBytes - 1);
786 psControlTable[ui32ChannelStructIndex].
pvSrcEndAddr = pvSrcAddr;
811 (
void *)&psControlTable[ui32ChannelStructIndex |
812 UDMA_ALT_SELECT].ui32Spare;
819 ui32Inc = ui32Inc >> 30;
820 ui32BufferBytes = ui32TransferSize << ui32Inc;
821 pvDstAddr = (
void *)((uint32_t)pvDstAddr + ui32BufferBytes - 1);
828 psControlTable[ui32ChannelStructIndex].
pvDstEndAddr = pvDstAddr;
833 psControlTable[ui32ChannelStructIndex].
ui32Control = ui32Control;
862 void *pvTaskList, uint32_t ui32IsPeriphSG)
870 ASSERT((ui32ChannelNum & 0xffff) < 32);
873 ASSERT(ui32TaskCount <= 1024);
874 ASSERT(ui32TaskCount != 0);
881 ui32ChannelNum &= 0x1f;
898 &psTaskTable[ui32TaskCount - 1].
ui32Spare;
951 uint32_t ui32Control;
956 ASSERT((ui32ChannelStructIndex & 0xffff) < 64);
964 ui32ChannelStructIndex &= 0x3f;
975 ui32Control = (psControlTable[ui32ChannelStructIndex].
ui32Control &
996 return((ui32Control >> 4) + 1);
1021 uint32_t ui32Control;
1026 ASSERT((ui32ChannelStructIndex & 0xffff) < 64);
1034 ui32ChannelStructIndex &= 0x3f;
1044 ui32Control = (psControlTable[ui32ChannelStructIndex].
ui32Control &
1060 return(ui32Control);
1226 uint32_t ui32MapReg;
1227 uint_fast8_t ui8MapShift;
1228 uint_fast8_t ui8ChannelNum;
1233 ASSERT((ui32Mapping & 0xffffff00) < 0x00050000);
1238 ui8ChannelNum = ui32Mapping & 0xff;
1239 ui32Mapping = ui32Mapping >> 16;
1245 ui32MapReg =
UDMA_CHMAP0 + (uint32_t)((ui8ChannelNum / 8) * 4);
1246 ui8MapShift = (ui8ChannelNum % 8) * 4;
1251 HWREG(ui32MapReg) = (
HWREG(ui32MapReg) & ~(0xf << ui8MapShift)) |
1252 ui32Mapping << ui8MapShift;
uint32_t uDMAChannelModeGet(uint32_t ui32ChannelStructIndex)
#define UDMA_CHCTL_DSTINC_32
volatile void * pvSrcEndAddr
void uDMAChannelAssign(uint32_t ui32Mapping)
#define UDMA_CHCTL_NXTUSEBURST
uint32_t uDMAChannelSizeGet(uint32_t ui32ChannelStructIndex)
void uDMAIntUnregister(uint32_t ui32IntChannel)
#define UDMA_DST_INC_NONE
#define UDMA_MODE_PER_SCATTER_GATHER
void uDMAChannelTransferSet(uint32_t ui32ChannelStructIndex, uint32_t ui32Mode, void *pvSrcAddr, void *pvDstAddr, uint32_t ui32TransferSize)
void uDMAChannelSelectDefault(uint32_t ui32DefPeriphs)
#define UDMA_CHCTL_SRCSIZE_M
uint32_t uDMAIntStatus(void)
#define UDMA_CHCTL_XFERSIZE_M
#define UDMA_ATTR_USEBURST
void uDMAChannelAttributeEnable(uint32_t ui32ChannelNum, uint32_t ui32Attr)
void uDMAChannelSelectSecondary(uint32_t ui32SecPeriphs)
void uDMAChannelControlSet(uint32_t ui32ChannelStructIndex, uint32_t ui32Control)
#define UDMA_CHCTL_DSTSIZE_32
#define UDMA_SRC_INC_NONE
bool uDMAChannelIsEnabled(uint32_t ui32ChannelNum)
volatile uint32_t ui32Spare
uint32_t uDMAChannelAttributeGet(uint32_t ui32ChannelNum)
void * uDMAControlAlternateBaseGet(void)
void uDMAChannelRequest(uint32_t ui32ChannelNum)
#define UDMA_ATTR_HIGH_PRIORITY
#define UDMA_CHCTL_SRCSIZE_32
#define UDMA_CHCTL_SRCINC_32
#define UDMA_CHCTL_XFERMODE_PER_SG
void uDMAChannelScatterGatherSet(uint32_t ui32ChannelNum, uint32_t ui32TaskCount, void *pvTaskList, uint32_t ui32IsPeriphSG)
void uDMAChannelAttributeDisable(uint32_t ui32ChannelNum, uint32_t ui32Attr)
volatile uint32_t ui32Control
volatile void * pvDstEndAddr
#define UDMA_CHCTL_ARBSIZE_M
#define UDMA_CHCTL_DSTINC_M
#define UDMA_ATTR_ALTSELECT
void uDMAChannelDisable(uint32_t ui32ChannelNum)
#define UDMA_CHCTL_SRCINC_M
void IntUnregister(uint32_t ui32Interrupt)
void uDMAIntClear(uint32_t ui32ChanMask)
#define UDMA_ATTR_REQMASK
#define UDMA_CHCTL_XFERMODE_M
void * uDMAControlBaseGet(void)
void uDMAIntRegister(uint32_t ui32IntChannel, void(*pfnHandler)(void))
uint32_t uDMAErrorStatusGet(void)
#define UDMA_CHCTL_ARBSIZE_4
#define UDMA_CHCTL_XFERMODE_MEM_SG
void uDMAErrorStatusClear(void)
#define UDMA_CHCTL_XFERSIZE_S
#define UDMA_MODE_MEM_SCATTER_GATHER
void IntDisable(uint32_t ui32Interrupt)
void IntRegister(uint32_t ui32Interrupt, void(*pfnHandler)(void))
void uDMAControlBaseSet(void *psControlTable)
void IntEnable(uint32_t ui32Interrupt)
#define UDMA_CHCTL_DSTSIZE_M
#define UDMA_MODE_ALT_SELECT
void uDMAChannelEnable(uint32_t ui32ChannelNum)