Hello,
I am trying to output the CQ data from the CQ RAM into L3RAM on AWR1843 via DPEDMA. The documentation says that the CQ RAM is a ping-pong memory, so I'm wondering how I should configure the DPEDMA_syncACfg ping/pong addresses to transfer the data from each chirp into L3RAM. The buffers have all been allocated correctly and I already calculated the size of the CQ data outputted during each chirp.
static int32_t rangeProcDSP_ConfigCqSatDataEDMA(
rangeProcDSPObj* rangeProcObj, DPU_RangeProcDSP_HW_Resources* hwRes) {
int32_t retVal = 0;
DPEDMA_syncACfg syncACfg;
rangeProc_dpParams* dpParams = &rangeProcObj->DPParams;
uint32_t satDataSizePerChirp =
(dpParams->numSatDataSlices + 1) * sizeof(uint8_t);
// Copy data from CQ2 into L3 memory.
syncACfg.aCount = satDataSizePerChirp;
syncACfg.bCount = dpParams->numChirpsPerChirpEvent;
syncACfg.srcBIdx =
MATHUTILS_ROUND_UP_UNSIGNED(satDataSizePerChirp, CQ_DATA_ALIGNMENT);
syncACfg.dstBIdx = satDataSizePerChirp;
// Ping configuration.
syncACfg.srcAddress = (uint32_t)rangeProcObj->cqSatDataBuf;
syncACfg.destAddress = (uint32_t)rangeProcObj->cqSatDataOut;
retVal = DPEDMA_configSyncA_singleFrame(
hwRes->edmaCfg.edmaHandle, &hwRes->edmaCfg.cqSatDataPing,
NULL, // no chaining
&syncACfg, false, true, true, NULL, NULL);
if (retVal < 0) {
return retVal;
}
// Pong configuration.
syncACfg.srcAddress = (uint32_t)rangeProcObj->cqSatDataBuf + offset?;
syncACfg.destAddress = (uint32_t)rangeProcObj->cqSatDataOut + offset?;
retVal = DPEDMA_configSyncA_singleFrame(
hwRes->edmaCfg.edmaHandle, &hwRes->edmaCfg.cqSatDataPong,
NULL, // no chaining
&syncACfg, false, true, true, NULL, NULL);
return retVal;
}
What should be the offset for the pong DPEDMA? I know that mmwave_sdk_03_03_00_03/packages/ti/control/mmwavelink/test/common/link_test.c has an example with normal EDMA, but I would like to set up DPEDMA. Thank you!