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.

[参考译文] AWR1642:高精度演示;相位估算校正算法

Guru**** 2595805 points
Other Parts Discussed in Thread: AWR1642

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/660101/awr1642-high-accuracy-demo-phase-estimation-correction-algorithm

器件型号:AWR1642

TI 团队、

AWR1642高精度演示中有一段代码、特别是 RADARDEMO_highAccuRangeProc_rangeEst 函数中的 RADARDEMO_highAccuRangeProc 文件中的代码、该文件保留在源代码中、但已注释掉。 我尝试理解这背后的底层算法、因为当我取消注释代码时、精度会显著下降、我不确定这是正在发生的情况的副作用、还是源代码中存在错误。 是否有适用于此算法的相关白皮书?

if (highAccuRangeHandle->enablePhaseEst){
float phaseCoarseEst1、phaseCoarseEst2、phaseInitial;
双倍 PI = 3.14159265358979323846f;
double Real、imag、denom、initReal、initImag、 dtemp1、dtemp2、dtemp;
浮点相位估算、totalPhase = 0.f、相位校正、rangePhaseCorrection;
__float2_t demodSig,corrSig;

inputPtr =(__float2_t *) AccuhighRangeHandle->inputSig;
phaseCoarseEst1 = 2 *(float) PI * AccuhighRangeHandle->fc
*(divsp (2 *(*奇怪)、(float) 3e8)+ highAccuRangeHandle->adcStartTimeConst);
phaseCoarseEst2 =(浮点) PI * highAccuRangeHandle->chirpSlope
*(divsp (2 *(*奇怪)、(float) 3e8)+ highAccuRangeHandle->adcStartTimeConst)
*(divsp (2 *(*奇怪)、(float) 3e8)+ highAccuRangeHandle->adcStartTimeConst);
phaseInitial=phaseCoarseEst1-phaseCoarseEst2;

denom = divdp (1.0、(双) highAccuRangeHandle->fft1DSize);
#if 0
dtemp1 = cos (double) phaseInitialal;
dtemp2 = sin (-(double) phaseInitialal);
initReal = cos (2.0 * pi * highAccuRangeHandle->chirpRampTime *(double) freqFineEst * denom);
initImag = sin (-2.0 * PI * highAccuRangeHandle->chirpRampTime *(double) freqFineEst * denom);
#else
dtemp1 = cosdp_i ((double) phaseInitialal);
dtemp2 = sindp_i (-(double) phaseInitialal);
initReal = cosdp_i (2.0 * PI * highAccuRangeHandle->chirpRampTime *(double) freqFineEst * denom);
initImag = sindp_i (-2.0 * PI * highAccuRangeHandle->chirpRampTime *(double) freqFineEst * denom);
#endif

//样本@ t = 0;
corrSig =_ftof2 ((float) dtemp1、(float) dtemp2);
demodSig =_complex_mpysp (_amem8_f2 (inputPtr++)、corrSig);
RADARDEMO_atan ((cplxf_t *)&dmodSig、PhaseEst);
totalPhase += phaseEst;

if ((highAccuRangeHandle->enableFilter =0)&&(highAccuRangeHandle->enableLinearFit =0)){
//样本@ t = 1;
dtemp = dtemp1 * initReal - dtemp2 * initImag;
Imag = dtemp1 * initImag + dtemp2 * initReal;
实数= dtemp;
corrsig =_ftof2 ((float) Real、(float) imag);
demodSig =_complex_mpysp (_amem8_f2 (inputPtr++)、corrSig);
RADARDEMO_atan ((cplxf_t *)&dmodSig、PhaseEst);
totalPhase += phaseEst;

对于(j = 2;j <(int32_t) AccuRangeHandle->fft1DSize;j++){
dtemp = Real * initReal - imag * initImag;
Imag = Real * initImag + imag * initReal;
实数= dtemp;
corrsig =_ftof2 ((float) Real、(float) imag);
demodSig =_complex_mpysp (_amem8_f2 (inputPtr++)、corrSig);
RADARDEMO_atan ((cplxf_t *)&dmodSig、PhaseEst);
totalPhase += phaseEst;
}
phaseCorrection = totalPhase *(float) denom;
rangePhaseCorrection = divsp ((phaseCorrection *(float) 3e8)、
(4.f *(float) PI * highAccuRangeHandle->fc));
*eh奇怪+= rangePhaseCorrection;
} 否则{
//not implemented y}

} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    正如您将在代码中注意到的、有两个不同的函数用于计算正弦和余弦值。 注释代码使用 sin ()、cos ()、其中使用的代码使用 cosdp_i ()和 sindp_i ()

    这与算法无关、与精度有关。 函数 cosdp_i 和 sindp_i 可能是双精度。

    谢谢你
    Cesar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这不是问题、代码的整个发布部分都是 RADARDEMO_highAccuRangeProC_RANGEEEST 函数中的注释部分-整个函数都很长、我认为在代码的其余部分所有人都会迷路。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该代码最初用于基于相位的范围细化。 它在仿真中表现出良好的结果、但实际上、由于缺乏缺陷建模、它不适合性能评估。 因此、代码会被注释掉、不供客户使用。

    谢谢、此致、

    Michelle

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否有关于损伤建模教材的建议?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    《适用于工业应用的精密 FMCW 短距离雷达》的第4.5节讨论了 FMCW 的相位主题、但未讨论建模。
    此致、
    Joe Quintal