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.

AM2732: HWA configs for cascading 2 x AWR2243

Part Number: AM2732
Other Parts Discussed in Thread: AWR2243,

Hello,

I was starting to update the AM2732+AWR2243 demo to AM2732+2xAWR2243 (cascading Board TIDA020047). I have updated the folowing functions and define in the DSS part to support this new configuration (CSI, DMA,

HWA ) : 

1. CSI RX configs PING/PONG CSIRX_contextSetConfig 

/* CSI 1. */

gConfigCsirx0ContextConfig[MMW_DEMO_CSI2_CONTEXT].pingPongConfig.pingAddress = CSL_DSS_HWA_DMA0_RAM_BANK0_BASE;
gConfigCsirx0ContextConfig[MMW_DEMO_CSI2_CONTEXT].pingPongConfig.pongAddress = CSL_DSS_HWA_DMA0_RAM_BANK1_BASE;

/* CSI 2. */
gConfigCsirx1ContextConfig[MMW_DEMO_CSI2_CONTEXT].pingPongConfig.pingAddress = CSL_DSS_HWA_DMA0_RAM_BANK0_BASE + (nomberOfSample*4(nbrRXForOneAWR2243)*4) ;
gConfigCsirx1ContextConfig[MMW_DEMO_CSI2_CONTEXT].pingPongConfig.pongAddress = CSL_DSS_HWA_DMA0_RAM_BANK1_BASE + (nomberOfSample*4(nbrRXForOneAWR2243)*4) ;

2. we used DMA configuration like the configuration for 3 Antennas :"DPC_ObjDet_rangeConfig"

3. HWA configuration function  "rangeProcHWA_ConfigEDMA_DataOut_nonInterleave" :

/**************************************************************************
* Configure EDMA to copy HWA results to radar cube
* For cases with 3 TX Antenna
*************************************************************************/
DPEDMA_syncACfg syncACfg;
uint32_t numSamplePerChirp;
uint32_t numBytesPerChirp;
uint32_t destAddr[2][3];
uint8_t index;
bool lastChan = false;

numSamplePerChirp = DPParams->numRangeBins *DPParams->numRxAntennas;
numBytesPerChirp = numSamplePerChirp * sizeof(uint32_t);

destAddr[0][0] = (uint32_t)rangeProcObj->radarCubebuf;
destAddr[0][1] = (uint32_t)(rangeProcObj->radarCubebuf + 2 * numSamplePerTx);
destAddr[0][2] = (uint32_t)(rangeProcObj->radarCubebuf + 4 * numSamplePerTx);
destAddr[1][0] = (uint32_t)(rangeProcObj->radarCubebuf + numSamplePerTx);
destAddr[1][1] = (uint32_t)(rangeProcObj->radarCubebuf + 3 * numSamplePerTx);
destAddr[1][2] = (uint32_t)(rangeProcObj->radarCubebuf + 5 * numSamplePerTx);

==> By modifying these functions i have got the same logs as below. Do I need to figure out other functions ?

  • Hi Amine,

    Please give me 2 days of time to review this and get back to know. Also note that, it would be easier to support if you outlined the code changes you intend to make in the form of a diagram or brief description rather than the code itself. If you run into any issues, we can definitely look at the specifics of the changes.

    Regards,

    Kaushik

  • Hi Gouda,

    Thanks for your reply,

    I prepared two slides for the our cascading radar data path in which we highlight the data flow from the two radars using CSI and then how the data is transferred from the Range Proc DPU to radar cube data.

    We need to know if this flow is correct and what should we change in our code to make this flow working ?

    Because w tried to modify the code to match this flow but it doesn't work for us.

    radar Architecture Spec DPU.pdf

    Thnaks.

  • Hi,

    Here below the primordial modifications that we made:

    - Added configuration of CSI2B for slave radar and we configured destination memory as follow in data_path.c file :

    /* Configure memory in HWA Memory. */
    gConfigCsirx1ContextConfig[MMW_DEMO_CSI2_CONTEXT].pingPongConfig.pingAddress = CSL_DSS_HWA_DMA0_RAM_BANK0_BASE + 2048 ;
    gConfigCsirx1ContextConfig[MMW_DEMO_CSI2_CONTEXT].pingPongConfig.pongAddress = CSL_DSS_HWA_DMA0_RAM_BANK1_BASE + 2048;

    - We changed mmwDemo_DPC_ObjectDetection_csirxSOF0callback to cal " SemaphoreP_post(&gMmwDssMCB.DPMTrigFrameSemHandle);" only with CSIRX start of frame for Master Radar.

    - In objectdetection.c file we updated DPC_ObjDet_rangeConfig function we changed check on TX antenna count from 3 to 6:

    /* We are radar Cube FORMAT1 and non-interleaved ADC, so for 3 tx antenna case, we have to
    * fill format2, otherwise format1
    */
    if (staticCfg->numTxAntennas == 6)
    {
    /* Ping */
    /* Ping - dataOutPing */

    - in rangeprochwa.c file we change check on TX antenna count from 3 to 6 and changed destination addr that will be used for eDMA transfer:

    }

    else if (DPParams->numTxAntennas == 6U)
    {

    /**************************************************************************
    * Configure EDMA to copy HWA results to radar cube
    * For cases with 3 TX Antenna
    *************************************************************************/
    DPEDMA_syncACfg syncACfg;
    uint32_t numSamplePerChirp;
    uint32_t numBytesPerChirp;
    uint32_t destAddr[2][3];
    uint8_t index;
    bool lastChan = false;

    numSamplePerChirp = DPParams->numRangeBins *DPParams->numRxAntennas;
    numBytesPerChirp = numSamplePerChirp * sizeof(uint32_t);

    destAddr[0][0] = (uint32_t)rangeProcObj->radarCubebuf;
    destAddr[0][1] = (uint32_t)(rangeProcObj->radarCubebuf + 2 * numSamplePerTx);
    destAddr[0][2] = (uint32_t)(rangeProcObj->radarCubebuf + 4 * numSamplePerTx);
    destAddr[1][0] = (uint32_t)(rangeProcObj->radarCubebuf + numSamplePerTx);
    destAddr[1][1] = (uint32_t)(rangeProcObj->radarCubebuf + 3 * numSamplePerTx);
    destAddr[1][2] = (uint32_t)(rangeProcObj->radarCubebuf + 5 * numSamplePerTx);

     

    Could you check this modification please?

    Regards.