Hi team,
The program is PA_18XX. If the Doppler dimension FFT is not used, is it possible to convert real and imaginary parts directly to floating-point numbers by making the following changes? There were as many as 145 detection points when running CFAR, compared to a dozen.
The RadarDopplerProcessRun function is changed. The original function was as follows:
uint8_t radarDopplerProcessRun(void *handle, cplx16_t * pDataIn, float *pDataOut)
{
radarProcessInstance_t *processInst = (radarProcessInstance_t *)handle;
int32_t i,j;
float *tempDataOut;
tempDataOut=pDataOut;
for (j = 0; j < processInst->nRxAnt; j++)//虚拟天线个数
{
//按照天线维度将(虚拟天线*多普勒仓)数据展开
processInst->dopplerInput->dopplerProcInput[j] = (void * )&pDataIn[j * processInst->fftSize2D];
}
/*输入标志,指示调用模块仅用于重新生成 2DFFT 输出目的。*/
processInst->dopplerInput->reGen2DFFTout4AoAFlag = 0;
/*输入标志,用于启用TDM MIMO的多普勒补偿(如果设置为1),
* 并且如果reGen2DFFTout4AoAFlag设置为1*/
processInst->dopplerInput->dopplerComp4TDMMimo = 0;
processInst->dopplerProcErrorCode = RADARDEMO_dopplerProc_run(
processInst->dopplerFFInstance,
processInst->dopplerInput,
pDataOut);
return((uint8_t)processInst->dopplerProcErrorCode);
}
The changed function is as follows:
uint8_t radarDopplerProcessRun(void *handle, cplx16_t * pDataIn, float *pDataOut)
{
radarProcessInstance_t *processInst = (radarProcessInstance_t *)handle;
int32_t i,j;
float *tempDataOut;
tempDataOut=pDataOut;
for (j = 0; j < processInst->nRxAnt; j++)//虚拟天线个数
{
pDataOut=tempDataOut;//累加四个天线的数据,并转换为float
for( i = 0; i <((int32_t)processInst->fftSize2D - 1); i++)
{
*pDataOut += (float)pDataIn[j * processInst->fftSize2D].real;
pDataOut++;
*pDataOut += (float)pDataIn[j * processInst->fftSize2D].imag;
pDataOut++;
pDataIn++;
}
}
return;
}
Could you help check this case? Thanks.
Best Regards,
Cherry