*bugfix: correct frequency estimation calculating process

This commit is contained in:
Gatsby Van
2024-02-01 13:42:02 +08:00
parent 752e9b3081
commit c384bf9e9d
@@ -850,14 +850,6 @@ double Phy_GetFreqEst(PHY_INST *instPtr)
fineReg = PhyRead(instPtr, FINE_FREQEST); fineReg = PhyRead(instPtr, FINE_FREQEST);
estAbs = fineReg & FINE_FREQEST_VAL_MASK; estAbs = fineReg & FINE_FREQEST_VAL_MASK;
if (frameType >= L1_200KBPS_5MS_FRAME) 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 // 12M Rc
coarse = (double)(8 - acqFreqIdx) * (250e3 / 4); coarse = (double)(8 - acqFreqIdx) * (250e3 / 4);
@@ -865,6 +857,14 @@ double Phy_GetFreqEst(PHY_INST *instPtr)
fine = 48e6/2048*((double)estAbs)/8192.0; 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 = ((fineReg & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ?
-fine : fine; -fine : fine;
@@ -899,17 +899,17 @@ double Phy_GetCoarseFreqEst(PHY_INST *instPtr)
acqFreqIdx = (regValue & COASE_FREQEST_ACQ_MASK) >> COASE_FREQEST_ACQ_SHIFT; acqFreqIdx = (regValue & COASE_FREQEST_ACQ_MASK) >> COASE_FREQEST_ACQ_SHIFT;
syncFreqIdx = (regValue & COASE_FREQEST_SYNC_MASK) >> COASE_FREQEST_SYNC_SHIFT; syncFreqIdx = (regValue & COASE_FREQEST_SYNC_MASK) >> COASE_FREQEST_SYNC_SHIFT;
if (frameType >= L1_200KBPS_5MS_FRAME) 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 // 12M Rc
freqEst = (double)(8 - acqFreqIdx) * (250e3 / 4); freqEst = (double)(8 - acqFreqIdx) * (250e3 / 4);
freqEst += (double)syncFreqIdx * 12e6 / 64 / 128; 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; return freqEst;
} }
@@ -938,13 +938,13 @@ double Phy_GetFineFreqEst(PHY_INST *instPtr)
estAbs = regValue & FINE_FREQEST_VAL_MASK; estAbs = regValue & FINE_FREQEST_VAL_MASK;
if (frameType >= L1_200KBPS_5MS_FRAME) if (frameType >= L1_200KBPS_5MS_FRAME)
{ {
// 1.5M Rc // 12M Rc
freqEst = 12e6/2048*((double)estAbs)/8192.0; freqEst = 48e6/2048*((double)estAbs)/8192.0;
} }
else else
{ {
// 12M Rc // 1.5M Rc
freqEst = 48e6/2048*((double)estAbs)/8192.0; freqEst = 12e6/2048*((double)estAbs)/8192.0;
} }
freqEst = ((regValue & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ? freqEst = ((regValue & FINE_FREQEST_SIGN_MASK) == FINE_FREQEST_SIGN_NEG) ?
-freqEst : freqEst; -freqEst : freqEst;