TI中文支持网
TI专业的中文技术问题搜集分享网站

IWR1843BOOST: 关于多普勒删除的问题

Part Number:IWR1843BOOST

你好,

程序是PA_18XX,如果不使用多普勒维度FFT,直接将实部和虚部转换为浮点数,这么改有什么不对吗?运行CFAR时检测点高达145个,原来只有十几个,

如果这样更改存在数据上的错误,有什么建议吗

for (rangeIdx = 0; rangeIdx < obj->numRangeBins; rangeIdx++){//鎸夌収璺濈缁村皢鏁版嵁浠ワ紙铏氭嫙澶╃嚎*澶氭櫘鍕掍粨锛夊皢鏁版嵁浠巖adarCube鎼繍鍒版殏瀛樹箳涔撶紦瀛樺尯copyBlock((uint32_t *)&obj->radarCube[rangeIdx * obj->numVirtualAntennas * obj->numDopplerBins], (uint32_t *)&obj->dstPingPong[0], obj->numDopplerBins * obj->numVirtualAntennas);radarDopplerProcessRun(obj->radarProcessHandle, (cplx16_t *) &obj->dstPingPong[0], (float *) obj->dopplerProcOut[PING]);//闂撮殧璺濈浠撲紶閫佸鏅嫆浠� 鐢ㄤ簬璺濈閫熷害鐑浘copyTranspose((uint32_t *)obj->dopplerProcOut[PING], (uint32_t *)&(obj->radarProcConfig.heatMapMem[rangeIdx]), obj->numDopplerBins, 0, obj->numRangeBins, 1);}



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];pDataOut=tempDataOut;//累加四个天线的数据,并转换为floatfor( 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++;}
	}
	
//	/*输入标志,指示调用模块仅用于重新生成 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);
}

Cherry Zhou:

您好,您的code是不是有些问题?可以的话您请重新添加下。

,

JESU LEE:

是不能直接将cplx16_t转换为float吗,因为我看到CFAR的输入是float ** localPDPPtr

,

Cherry Zhou:

for (rangeIdx = 0; rangeIdx < obj->numRangeBins; rangeIdx++) { //鎸夌収璺濈缁村皢鏁版嵁浠ワ紙铏氭嫙澶╃嚎*澶氭櫘鍕掍粨锛夊皢鏁版嵁浠巖adarCube鎼繍鍒版殏瀛樹箳涔撶紦瀛樺尯 copyBlock((uint32_t *)&obj->radarCube[rangeIdx * obj->numVirtualAntennas * obj->numDopplerBins], (uint32_t *)&obj->dstPingPong[0], obj->numDopplerBins * obj->numVirtualAntennas);

radarDopplerProcessRun(obj->radarProcessHandle, (cplx16_t *) &obj->dstPingPong[0], (float *) obj->dopplerProcOut[PING]);

//闂撮殧璺濈浠撲紶閫佸鏅嫆浠� 鐢ㄤ簬璺濈閫熷害鐑浘 copyTranspose((uint32_t *)obj->dopplerProcOut[PING], (uint32_t *)&(obj->radarProcConfig.heatMapMem[rangeIdx]), obj->numDopplerBins, 0, obj->numRangeBins, 1); }

您代码的前半部分如上,我和您确认下是否无误,没有问题的话我就把您的问题升级到英文论坛给工程师看下。

,

JESU LEE:

您提到的这部分代码是原来的,更改的是radarDopplerProcessRun函数;

原来的函数体:

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);
}

更改后的函数体:

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;//累加四个天线的数据,并转换为floatfor( 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;
}

,

JESU LEE:

Cherry Zhou 说:您代码的前半部分如上,我和您确认下是否无误,没有问题的话我就把您的问题升级到英文论坛给工程师看下。

我在想是不是因为将实部虚部分别转换成float的数量是2个float,这时候就超出了输出的大小    dataPathObj->dopplerProcOut[PING] = (float *)radarOsal_memAlloc(RADARMEMOSAL_HEAPTYPE_LL2, 0, sizeof(float)*dataPathObj->numDopplerBins, 8);

我猜想是不是将实部作为float的高位,虚部作为float的虚部这样处理的

,

Cherry Zhou:

我们向工程师确认下,有答复尽快给到到您。

,

Cherry Zhou:

请问您目前安装的软件版本(SDK、toolbox等)是什么? 以及使用的示例软件是什么? 您的应用具体是什么?

,

JESU LEE:

你好,软件版本是sdk3.5.0.4,示例软件pa_18xx,应用是打算将pa_18xx 的速度纬度fft算法部分去掉,将距离纬度的cfar检测出来的距离索引,用于高精度液位测量的zoomfft粗略的索引,提高静态物体距离的检测精度。

赞(0)
未经允许不得转载:TI中文支持网 » IWR1843BOOST: 关于多普勒删除的问题
分享到: 更多 (0)