static void App_udmaRxHpdInit(Udma_ChHandle rxChHandle, uint8_t *pHpdMem, const uint32_t *destBuf, uint32_t length) { CSL_UdmapCppi5HMPD *pHpd = (CSL_UdmapCppi5HMPD *) pHpdMem; uint32_t descType = (uint32_t)CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_HOST; /* Setup descriptor */ CSL_udmapCppi5SetDescType(pHpd, descType); CSL_udmapCppi5SetEpiDataPresent(pHpd, FALSE); CSL_udmapCppi5SetPsDataLoc(pHpd, 0U); CSL_udmapCppi5SetPsDataLen(pHpd, 0U); CSL_udmapCppi5SetPktLen(pHpd, descType, length); CSL_udmapCppi5SetPsFlags(pHpd, 0U); CSL_udmapCppi5SetIds(pHpd, descType, 0x321, UDMA_DEFAULT_FLOW_ID); CSL_udmapCppi5SetSrcTag(pHpd, 0x0000); /* Not used */ CSL_udmapCppi5SetDstTag(pHpd, 0x0000); /* Not used */ /* Return Policy descriptors are reserved in case of AM243X/Am64X */ CSL_udmapCppi5SetReturnPolicy( pHpd, descType, 0U, 0U, 0U, 0U); CSL_udmapCppi5LinkDesc(pHpd, 0U); CSL_udmapCppi5SetBufferAddr(pHpd, (uint64_t) Udma_defaultVirtToPhyFxn(destBuf, 0U, NULL)); CSL_udmapCppi5SetBufferLen(pHpd, length); CSL_udmapCppi5SetOrgBufferAddr(pHpd, (uint64_t) Udma_defaultVirtToPhyFxn(destBuf, 0U, NULL)); CSL_udmapCppi5SetOrgBufferLen(pHpd, length); /* Writeback cache */ CacheP_wb(pHpdMem, UDMA_TEST_DESC_SIZE, CacheP_TYPE_ALLD); return; }
我使用的是mcu_plus_sdk_am64x_08_03_00_18\examples\drivers\udma\udma_adc_read例程,我看上面DMAINIT的代码中没有写DMA是从哪个ADC通道搬运数据的,哪我应该从哪个地方知道DMA是从哪个ADC通道搬运数据的?