This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR6843 HWA 2DFFT EDMA Configuration

Other Parts Discussed in Thread: AWR6843

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?

  • Hi,

    I would recommend that you take a look at the documentation for the RangeProc DPU. Among other things, it has diagrams for the various ADC data formats and how the EDMA handles them. It can be found at <mmWave_SDK_Location>/packages/ti/datapath/dpu/rangeproc/docs/doxygen/html/dpu_rangehwa.html
    Let me know if you have further questions after going through this documentation.

    Best Regards,
    Alec

  • Hi Alec,

    I checked the document, there is only content about HWA 1DFFT in the document, there is no related content about HWA 2DFFT, could you please provide a Demo that includes HWA 2DFFT?

    B&R

    Russell

  • Russell,

    To be clear, your goal is to perform the 2D FFT in the HWA and then EDMA the results out in the format you showed above?

    Best Regards,
    Alec

  • Hi Alec

    my goal is to perform the 2D FFT in the HWA.
    1. But I don't know how to use EDMA to transfer how much data to HWA for 2DFFT. Is it a Sample and a Chirp? Or four channels at a time?
    2. How to move data to L3 after 2DFFT?  Could you please provide some support? Thanks!

    B&R

    Russell

  • Hi,

    I would strongly recommend you take a look at the current processing chains (such as ones used in OOB demo or 3D people counting demo) and familiarize yourself with how the EDMA is utilized in these chains. You should be able to quickly find examples of the EDMA configuration as well as how the data is eventually moved to L3. You can also leverage the documentation that is included as part of the EDMA driver in the mmWave SDK.


    Best Regards,
    Alec

  • Hi Alec,

    1. Sorry,Maybe my explanation is not very clear, what I mean is how much data should I carry at one time for 2DFFT? Because when the data I move is too large or too small, EDMA will fail.
    2. Why could't I see the data when I move the data to MEM_1 when doing 2DFFT? When doing 1DFFT, it is in shared mode, and when doing 2DFFT, the sharing is turned off.

    B&R

    Russell

  • Russell,

    Understood. Have you gone through the 6443 version of the out of box demo? Since it is doing ALL processing on the MSS + HWA, this should already be implemented there.

    Best Regards,
    Alec

  • Hi Alec,

    1. Where could I get the 6443 version of the out of box demo? Is it a full project? Could I see the source code?
    2. On 6843 is DSS + HWA, 1DFFT of HWA is already implemented. Either MSS + HWA or DSS + HWA should be able to implement 1DFFT and 2DFFT, right?

    Thanks for your support!

    B&R

    Russell

  • Hi,

    You can find this version in the mmWave Industrial Toolbox, and yes it is a full project with src code. it can be found at the following location:

    <mmWave_Industrial_Toolbox_4_10_1>\labs\Out_Of_Box_Demo\src\xwr6443

    Best Regards,
    Alec

  • Hi Alec,

    I reviewed the src code, only some initialization of HWA did not do other operations, where could I get more information, including complete data handling format documentation and corresponding detailed engineering code examples? 

    B&R

    Russell

  • Hi,

    You will want to identify which modules of the source code that you have questions about, and find the relevant module in the mmWave SDK, which will typically include a docs folder as well as a test folder.

    Best Regards,
    Alec

  • Hi Alec,

    Sorry for taking so long to get back to you, I checked the Demo documentation and code, and rearranged the problem.
    1. Currently based on the HWA in the demo project path "C:\ti\mmwave_sdk_03_05_00_04\packages\ti\demo\xwr18xx", transplant it to the AWR6843 project, it can be compiled successfully, 1DFFT can also run normally, but 2DFFT cannot pass normally.
    2. Is "xwr18xx" and "AWR6843" incompatible? How to fix compatibility issues?Thanks!

    Best Regards,
    Russell

  • Hi Russell,

    Since this thread is already marked as resolved, can you create a new thread and continue this discussion there?

    Best Regards,
    Alec