From c384bf9e9d6660eded4eca08c66fc3cf3ce29c75 Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Thu, 1 Feb 2024 13:42:02 +0800 Subject: [PATCH] *bugfix: correct frequency estimation calculating process --- .../src/networking/phy_layer/phy_layer.c | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/df_datalink_sp/src/networking/phy_layer/phy_layer.c b/df_datalink_sp/src/networking/phy_layer/phy_layer.c index a501d78..d1d54a7 100644 --- a/df_datalink_sp/src/networking/phy_layer/phy_layer.c +++ b/df_datalink_sp/src/networking/phy_layer/phy_layer.c @@ -850,14 +850,6 @@ double Phy_GetFreqEst(PHY_INST *instPtr) fineReg = PhyRead(instPtr, FINE_FREQEST); estAbs = fineReg & FINE_FREQEST_VAL_MASK; if (frameType >= L1_200KBPS_5MS_FRAME) - { - // 1.5M Rc - coarse = (double)(80 - acqFreqIdx) * (31.25e3 / 4); - coarse += (double)syncFreqIdx * 1.5e6 / 64 / 128; - - fine = 12e6/2048*((double)estAbs)/8192.0; - } - else { // 12M Rc coarse = (double)(8 - acqFreqIdx) * (250e3 / 4); @@ -865,6 +857,14 @@ double Phy_GetFreqEst(PHY_INST *instPtr) fine = 48e6/2048*((double)estAbs)/8192.0; } + else + { + // 1.5M Rc + coarse = (double)(80 - acqFreqIdx) * (31.25e3 / 4); + coarse += (double)syncFreqIdx * 1.5e6 / 64 / 128; + + fine = 12e6/2048*((double)estAbs)/8192.0; + } fine = ((fineReg & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ? -fine : fine; @@ -899,17 +899,17 @@ double Phy_GetCoarseFreqEst(PHY_INST *instPtr) acqFreqIdx = (regValue & COASE_FREQEST_ACQ_MASK) >> COASE_FREQEST_ACQ_SHIFT; syncFreqIdx = (regValue & COASE_FREQEST_SYNC_MASK) >> COASE_FREQEST_SYNC_SHIFT; if (frameType >= L1_200KBPS_5MS_FRAME) - { - // 1.5M Rc - freqEst = (double)(80 - acqFreqIdx) * (31.25e3 / 4); - freqEst += (double)syncFreqIdx * 1.5e6 / 64 / 128; - } - else { // 12M Rc freqEst = (double)(8 - acqFreqIdx) * (250e3 / 4); freqEst += (double)syncFreqIdx * 12e6 / 64 / 128; } + else + { + // 1.5M Rc + freqEst = (double)(80 - acqFreqIdx) * (31.25e3 / 4); + freqEst += (double)syncFreqIdx * 1.5e6 / 64 / 128; + } return freqEst; } @@ -938,13 +938,13 @@ double Phy_GetFineFreqEst(PHY_INST *instPtr) estAbs = regValue & FINE_FREQEST_VAL_MASK; if (frameType >= L1_200KBPS_5MS_FRAME) { - // 1.5M Rc - freqEst = 12e6/2048*((double)estAbs)/8192.0; + // 12M Rc + freqEst = 48e6/2048*((double)estAbs)/8192.0; } else { - // 12M Rc - freqEst = 48e6/2048*((double)estAbs)/8192.0; + // 1.5M Rc + freqEst = 12e6/2048*((double)estAbs)/8192.0; } freqEst = ((regValue & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ? -freqEst : freqEst;