Hi,
My customer wants to use the advance frame feature. We changed the code based on mmw demo in sdk 1.0, tested on AWR1642 EVM, found two issues.
1 We found the frame interrupt is triggered per subframe, while not per advance frame. Take below configuration for example, we expect the frame interrupt is triggered per 1024chirps, but actually the frame interrupt is triggered per 512chirps per subframe based on our test on EVM. Would u pls help confirm whether our test is correct or not? And how to make the frame interrupt triggered per advance frame?
2 We only found one parameter subFramePeriodicity for subframe period configuration, but not found parameter to configure the advance frame period.
The customer's target is to combine several subframes as one advance frame for process, the inter subframe time is very short, but need to reserve sufficient time for one advance frame process. Would u pls help instruct how to reach the target? Thanks.
Below show my code changes.
1 Remove the code for frame configuration, add below configuration for advance frame configuration;
/* common adv frame configuration */
advFrameCfg->frameSeq.forceProfile = 1;// 1: force Profile, 0: Don't force profile
advFrameCfg->frameSeq.numFrames = 0;//infinite
advFrameCfg->frameSeq.triggerSelect = 1;//SW Trigger
advFrameCfg->frameSeq.frameTrigDelay= 0;
/* first sub-frame configuration */
advFrameCfg->frameSeq.subFrameCfg[0].forceProfileIdx = 0;
advFrameCfg->frameSeq.subFrameCfg[0].chirpStartIdx = 0;
advFrameCfg->frameSeq.subFrameCfg[0].numOfChirps = 512;
advFrameCfg->frameSeq.subFrameCfg[0].numLoops = 1;
advFrameCfg->frameSeq.subFrameCfg[0].numOfBurst = 1;
advFrameCfg->frameSeq.subFrameCfg[0].numOfBurstLoops = 1;
advFrameCfg->frameSeq.subFrameCfg[0].chirpStartIdxOffset= 0;
advFrameCfg->frameSeq.subFrameCfg[0].burstPeriodicity = 2400000; // 12 msec
advFrameCfg->frameSeq.subFrameCfg[0].subFramePeriodicity= 2400000; // 12 msec
advFrameCfg->frameData.subframeDataCfg[0].numAdcSamples = 64*2;
advFrameCfg->frameData.subframeDataCfg[0].totalChirps = 512;
advFrameCfg->frameData.subframeDataCfg[0].numChirpsInDataPacket = 1;
numOfSubFrame++;
/* second sub-frame configuration */
advFrameCfg->frameSeq.subFrameCfg[1].forceProfileIdx = 0;
advFrameCfg->frameSeq.subFrameCfg[1].chirpStartIdx = 0;
advFrameCfg->frameSeq.subFrameCfg[1].numOfChirps = 512;
advFrameCfg->frameSeq.subFrameCfg[1].numLoops = 1;
advFrameCfg->frameSeq.subFrameCfg[1].numOfBurst = 1;
advFrameCfg->frameSeq.subFrameCfg[1].numOfBurstLoops = 1;
advFrameCfg->frameSeq.subFrameCfg[1].chirpStartIdxOffset= 0;
advFrameCfg->frameSeq.subFrameCfg[1].burstPeriodicity = 2400000; // 12 msec
advFrameCfg->frameSeq.subFrameCfg[1].subFramePeriodicity= 2400000; // 12 msec
advFrameCfg->frameData.subframeDataCfg[1].numAdcSamples = 64*2;
advFrameCfg->frameData.subframeDataCfg[1].totalChirps = 512;
advFrameCfg->frameData.subframeDataCfg[1].numChirpsInDataPacket = 1;
numOfSubFrame++;
advFrameCfg->frameSeq.numOfSubFrames = numOfSubFrame;
advFrameCfg->frameData.numSubFrames = numOfSubFrame;
2 Change the function MMWave_configLink, replace rlSetFrameConfig with rlSetAdvFrameConfig to do advance frame configuration, then rebuild the mmwave lib.
Andy