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.

Compiler/AWR1642: Question about the "MmwaveLink_setAdvFrameConfig"

Part Number: AWR1642
Other Parts Discussed in Thread: MMWAVE-SDK

Tool/software: TI C/C++ Compiler

Hello , 

When I'm going to run the "MmwaveLink_setAdvFrameConfig" , I found the params of  " advFrameCfg" was like that :

 Why  you set all of them to "0" ? It's a bit hard to understand  , can you provide  a complete parameter ?

thanks.

  • Hello Anist,
    We will be adding more details on the advanced frame config in the subsequent releases. For now you can find the parameter details in the "AWR1xx_Radar_Interface_Control" document which is part of the DFP package (www.ti.com/.../mmwave-dfp). The API parameters are explained in that document.

    Regards,
    Vivek
  • Hello Anist,

    Here is the code snippet for your reference-


    /* adv frame configuration */
    uint8_t numOfSubFrame = 0U;
    rlAdvFrameCfg_t advFrameCfg = {0};

    /* first sub-frame configuration */
    advFrameCfg.frameSeq.forceProfile = 0;// 1: force Profile, 0: Don't force profile
    advFrameCfg.frameSeq.numFrames = 0;//infinite
    advFrameCfg.frameSeq.triggerSelect = 1;//SW Trigger
    advFrameCfg.frameSeq.frameTrigDelay= 0;

    advFrameCfg.frameSeq.subFrameCfg[0].forceProfileIdx = 0;
    advFrameCfg.frameSeq.subFrameCfg[0].numLoops = 64;
    advFrameCfg.frameSeq.subFrameCfg[0].numOfBurst = 1;
    advFrameCfg.frameSeq.subFrameCfg[0].numOfBurstLoops = 1;
    advFrameCfg.frameSeq.subFrameCfg[0].chirpStartIdxOffset= 0;
    advFrameCfg.frameSeq.subFrameCfg[0].numOfChirps = 1;
    advFrameCfg.frameSeq.subFrameCfg[0].chirpStartIdx = 0;
    advFrameCfg.frameSeq.subFrameCfg[0].subFramePeriodicity= 20200000; // 101 msec
    advFrameCfg.frameSeq.subFrameCfg[0].burstPeriodicity = 20000000; // 100 msec

    advFrameCfg.frameData.subframeDataCfg[0].numAdcSamples = 224*2;
    advFrameCfg.frameData.subframeDataCfg[0].totalChirps = 64;
    advFrameCfg.frameData.subframeDataCfg[0].numChirpsInDataPacket = 1;
    numOfSubFrame++;

    advFrameCfg.frameSeq.subFrameCfg[1].forceProfileIdx = 0;
    advFrameCfg.frameSeq.subFrameCfg[1].numLoops = 32;
    advFrameCfg.frameSeq.subFrameCfg[1].numOfBurst = 1;
    advFrameCfg.frameSeq.subFrameCfg[1].numOfBurstLoops = 1;
    advFrameCfg.frameSeq.subFrameCfg[1].chirpStartIdxOffset= 0;
    advFrameCfg.frameSeq.subFrameCfg[1].numOfChirps = 1;
    advFrameCfg.frameSeq.subFrameCfg[1].chirpStartIdx = 1;
    advFrameCfg.frameSeq.subFrameCfg[1].subFramePeriodicity= 20200000; //101 msec
    advFrameCfg.frameSeq.subFrameCfg[1].burstPeriodicity = 20000000; //100 msec

    advFrameCfg.frameData.subframeDataCfg[1].numAdcSamples = 224*2;
    advFrameCfg.frameData.subframeDataCfg[1].totalChirps = 32;
    advFrameCfg.frameData.subframeDataCfg[1].numChirpsInDataPacket = 1;
    numOfSubFrame++;

    advFrameCfg.frameSeq.numOfSubFrames = numOfSubFrame;
    advFrameCfg.frameData.numSubFrames = numOfSubFrame;

    retVal = rlSetAdvFrameConfig(RL_DEVICE_MAP_INTERNAL_BSS, &advFrameCfg);

    you need to call this API after profileConfig and chirpConfig APIs are called.

    Regards,

    Jitendra Gupta

  • Hi , Jitendra,
    if I set forceProfile = 0 ,how do I know which profile the subFrameCfg[0] (or subFrameCfg[1]) choose?
  • See below description in the rl_sensor.h, if forceProfile = 0 then the profile index depends on the parameter in the chirp configuration.

    rlUInt8_t forceProfile; /*!< Force profile.
    0x0 The profile index set in rlSetChirpConfig API
    governs which profile is used when that chirp is
    transmitted \n
    0x1 The profile index indicated in rlSetChirpConfig API
    is ignored and all the chirps in each sub frame use a
    single profile as indicated by that sub frame profile
    forceProfileIdx .*/

    Hi Jitendra, 

    The customer want to change the mmw demo in SDK 1.0 to support advance frame. I went through the demo code, found it is not sufficient to just call the rlSetAdvFrameConfig at mss, seems it is also need to change the DSS configuration code such as MmwDemo_parseProfileAndChirpConfig. Do u have the ready code that can be shared for us, thank u very much.

    Andy

  • Hello Andy,
    if forceProfile is set to 0x0 then chirps from advFrameCfg.frameSeq.subFrameCfg[0].chirpStartIdx to [chirpStartIdx + numOfChirps] will select the profile which has been set by rlSetChirpConfig for those chirpStartIdx to endIdx.

    And if forceProfile is set to 0x1 then those chirps [strtIdx to endIdx] will use the profile mentioned in advFrameCfg.frameSeq.subFrameCfg[0].forceProfileIdx.

    Hope I'm clear wrt to forceProfile parameter.


    Current mmWave-SDK doesn't support advFrameCfg based DSP processing, we have plan to add this feature in upconming release of SDK.


    Regards,
    Jitendra Gupta
  • Hi Jitendra,

    Got it and thanks. We have changed the mmwave control lib to configure the adv frame well and the customer has already been able to process it well. We can close this post. Now we face another issue about profile reconfiguration as below post, pls help on it.
    e2e.ti.com/.../2252374

    BR,
    Andy