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.

AWR1642BOOST: Why AWR2642 BPM Looks like this?

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642,

I tested BPM on awr1642 on the AWR1642BOOST EVM. My configure is based on "profile_2d_bpm.cfg" in mmWaveDemo, but I wrote it to static configure.

The code related to bpm is as follows:

rlChirpCfg_t s_pChirpCfg[CHIRP_NUM_IN_PROFILE_VAL] = {
	{
		.chirpStartIdx = 0,
	    .chirpEndIdx = 0,
	    .profileId = 0,
	    .startFreqVar = 0,
	    .freqSlopeVar = 0,
	    .idleTimeVar = 0,
	    .adcStartTimeVar = 0,
	    .txEnable = 3
	},
	{
		.chirpStartIdx = 1,
	    .chirpEndIdx = 1,
	    .profileId = 0,
	    .startFreqVar = 0,
	    .freqSlopeVar = 0,
	    .idleTimeVar = 0,
	    .adcStartTimeVar = 0,
	    .txEnable = 3
	}
};

for(sChirpIndex = 0; sChirpIndex < CHIRP_NUM_IN_PROFILE_VAL; sChirpIndex++){
    if(MMWave_getProfileHandle(mmWaveHandle, s_pChirpCfg[sChirpIndex].profileId, &profileHandle, &errCode) < 0){
        System_printf ("Error: Unable to get the profile [Error code %d]\n");
        return;
    }
    chirpHandle = MMWave_addChirp (profileHandle, &s_pChirpCfg[sChirpIndex], &errCode);
    if (chirpHandle == NULL)
    {
        System_printf ("Error: Unable to add the chirp [Error code %d]\n", errCode);
        return;
    }
}

/* frame config */
ptrCtrlCfg->u.frameCfg.frameCfg.chirpStartIdx      = 0;
ptrCtrlCfg->u.frameCfg.frameCfg.chirpEndIdx        = 1;
ptrCtrlCfg->u.frameCfg.frameCfg.numLoops           = 32;
ptrCtrlCfg->u.frameCfg.frameCfg.numFrames          = 0;						
//ptrCtrlCfg->u.frameCfg.frameCfg.numAdcSamples      = 256;					/* Not used*/
ptrCtrlCfg->u.frameCfg.frameCfg.framePeriodicity   = 100 * 1000000 / 5;
ptrCtrlCfg->u.frameCfg.frameCfg.triggerSelect      = 1;
ptrCtrlCfg->u.frameCfg.frameCfg.frameTriggerDelay  = 0 * 1000000 / 5;

/* add bpm wave*/
for(numBpmChirps = 0; numBpmChirps < 2; numBpmChirps++){
	memset ((void *)&bpmChirpCfg, 0, sizeof(rlBpmChirpCfg_t));
	/*first bpm*/
	bpmChirpCfg.chirpStartIdx = 0;
	bpmChirpCfg.chirpEndIdx = 0;
	bpmChirpCfg.constBpmVal = 0;
	bpmChirpHandle = MMWave_addBpmChirp (mmWaveHandle, &bpmChirpCfg, &errCode);
	if (bpmChirpHandle == NULL)
	{
		System_printf ("Error: Unable to add BPM cfg [Error code %d]\n", errCode);
		return;
	}

	/*2nd bpm*/
	bpmChirpCfg.chirpStartIdx = 1;
	bpmChirpCfg.chirpEndIdx = 1;
	bpmChirpCfg.constBpmVal = 0xCU;
	bpmChirpHandle = MMWave_addBpmChirp (mmWaveHandle, &bpmChirpCfg, &errCode);
	if (bpmChirpHandle == NULL)
	{
		System_printf ("Error: Unable to add BPM cfg [Error code %d]\n", errCode);
		return;
	}
}

I used an Oscilloscope to capture the radio that AWR1642BOOST emitted, but my freq-time plot is as follows:

The red part seems no good, because the frequency is not linear, the blue part of the same chirp has 20MHz lower than the other part. (S1-S2) of BPM seems gonging wrong.

If I don't use BPM, the result acts perfect:

I think something wrong with my BPM, and my configure is referred to "profile_2d_bpm.cfg" in awr1642 demo. Where did I go wrong? thank u!