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!