Dear Ti,
1.wave config: 3Tx4Rx、128chirp、64sample
2. "1dfft_format" is the format of 1dfft, "2dfft_format" is the format I want to get by moving 1dfft by edma,Could I do 2dfft by moving the values of four channels at once?
“1dfft_format”
RX1 | RX2 | RX3 | RX4 | |||||
TX1 (chirp1) |
I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
I1 | Q1 | I1 | Q1 | I1 | Q1 | I1 | Q1 | |
…… | …… | …… | …… | |||||
I63 | Q63 | I63 | Q63 | I63 | Q63 | I63 | Q63 | |
TX2 (chirp1) |
I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
I1 | Q1 | I1 | Q1 | I1 | Q1 | I1 | Q1 | |
…… | …… | …… | …… | |||||
I63 | Q63 | I63 | Q63 | I63 | Q63 | I63 | Q63 | |
TX3 (chirp1) |
I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
I1 | Q1 | I1 | Q1 | I1 | Q1 | I1 | Q1 | |
…… | …… | …… | …… | |||||
I63 | Q63 | I63 | Q63 | I63 | Q63 | I63 | Q63 | |
TX1 (chirp2) |
I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
I1 | Q1 | I1 | Q1 | I1 | Q1 | I1 | Q1 | |
…… | …… | …… | …… | |||||
I63 | Q63 | I63 | Q63 | I63 | Q63 | I63 | Q63 | |
…… | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
I1 | Q1 | I1 | Q1 | I1 | Q1 | I1 | Q1 | |
…… | …… | …… | …… | |||||
I63 | Q63 | I63 | Q63 | I63 | Q63 | I63 | Q63 | |
TX3 (chirp128) |
I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
I1 | Q1 | I1 | Q1 | I1 | Q1 | I1 | Q1 | |
…… | …… | …… | …… | |||||
I63 | Q63 | I63 | Q63 | I63 | Q63 | I63 | Q63 |
"2dfft_format"
Rx1 | Rx2 | Rx3 | Rx4 | |||||
TX1(chirp1) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp2) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp3) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp4) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp5) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp6) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp125) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp126) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp127) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX1(chirp128) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp1) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp2) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp3) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp4) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp5) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp6) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp125) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp126) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp127) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX2(chirp128) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp1) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp2) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp3) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp4) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp5) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp6) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
...... | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp125) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp126) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp127) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
TX3(chirp128) | I0 | Q0 | I0 | Q0 | I0 | Q0 | I0 | Q0 |
3.Edma Code config at follows,Could the configuration of EDMA get the data format I want?
int32_t EDMAutil_configHwaContiguous(EDMA_Handle handle,
uint8_t chId, bool isEventTriggered,
uint8_t linkChId, uint8_t chainChId,
uint32_t * pSrcAddress,uint32_t * pDestAddress,
uint16_t numBytes, uint16_t numBlocks,
uint16_t srcIncrBytes, uint16_t dstIncrBytes,
bool isIntermediateChainingEnabled,
bool isFinalChainingEnabled,
bool isTransferCompletionEnabled,
EDMA_transferCompletionCallbackFxn_t transferCompletionCallbackFxn,
uintptr_t transferCompletionCallbackFxnArg)
{
EDMA_channelConfig_t config;
int32_t errorCode = EDMA_NO_ERROR;
config.channelId = chId;
config.channelType = (uint8_t)EDMA3_CHANNEL_TYPE_DMA;
config.paramId = chId;
config.eventQueueId = 0;
config.paramSetConfig.sourceAddress = (uint32_t) pSrcAddress;
config.paramSetConfig.destinationAddress = (uint32_t) pDestAddress;
config.paramSetConfig.aCount = 16; //bytes
config.paramSetConfig.bCount = 128; //block
config.paramSetConfig.cCount = 192;
config.paramSetConfig.bCountReload = 0;//config.paramSetConfig.bCount;
config.paramSetConfig.sourceBindex = 3072; //bytes
config.paramSetConfig.destinationBindex = 16; //bytes
config.paramSetConfig.sourceCindex = 16; //bytes
config.paramSetConfig.destinationCindex = 0;
config.paramSetConfig.linkAddress = EDMA_NULL_LINK_ADDRESS;
config.paramSetConfig.transferType = (uint8_t)EDMA3_SYNC_AB;
config.paramSetConfig.transferCompletionCode = chainChId;
config.paramSetConfig.sourceAddressingMode = (uint8_t) EDMA3_ADDRESSING_MODE_LINEAR;
config.paramSetConfig.destinationAddressingMode = (uint8_t) EDMA3_ADDRESSING_MODE_LINEAR;
/* don't care because of linear addressing modes above */
config.paramSetConfig.fifoWidth = (uint8_t) EDMA3_FIFO_WIDTH_8BIT;
config.paramSetConfig.isStaticSet = false;
config.paramSetConfig.isEarlyCompletion = false;
config.paramSetConfig.isFinalTransferInterruptEnabled =
isTransferCompletionEnabled;
config.paramSetConfig.isIntermediateTransferInterruptEnabled = false;
config.paramSetConfig.isFinalChainingEnabled =
isFinalChainingEnabled;
config.paramSetConfig.isIntermediateChainingEnabled =
isIntermediateChainingEnabled;
config.transferCompletionCallbackFxn = transferCompletionCallbackFxn;
if (transferCompletionCallbackFxn != NULL) {
config.transferCompletionCallbackFxnArg = transferCompletionCallbackFxnArg;
}
if ((errorCode = EDMA_configChannel(handle, &config, isEventTriggered)) != EDMA_NO_ERROR)
{
//System_printf("Error: EDMA_configChannel() failed with error code = %d\n", errorCode);
MmwDemo_dssAssert (0);
goto exit;
}
errorCode = EDMA_setup_shadow_link(handle, chId, linkChId,
&config.paramSetConfig, config.transferCompletionCallbackFxn, transferCompletionCallbackFxnArg);
exit:
return(errorCode);
}
4.When the program runs, I find that MEM_0 has data, MEM_1 has no data, and MEM_2&MEM_3 has data,Why MEM_1 has no data?