diff --git a/datalink814_ge/src/phy_ctrl/phy_ctrl.c b/datalink814_ge/src/phy_ctrl/phy_ctrl.c index f14f116..de5071d 100644 --- a/datalink814_ge/src/phy_ctrl/phy_ctrl.c +++ b/datalink814_ge/src/phy_ctrl/phy_ctrl.c @@ -666,18 +666,18 @@ double Phy_GetCoarseFreqEst(PHY_INST *instPtr) return INFINITY; // FIXME } regValue = PhyRead(instPtr, COASE_FREQEST); - acqFreqIdx = (regValue >> COASE_FREQEST_ACQ_SHIFT) && COASE_FREQEST_ACQ_MASK; - acqFreqIdx = 80 - acqFreqIdx; - syncFreqIdx = (regValue >> COASE_FREQEST_SYNC_SHIFT) && COASE_FREQEST_SYNC_MASK; - syncFreqIdx = 8 - syncFreqIdx; + 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) { - freqEst = (double)acqFreqIdx * (250e3 / 4); + // 1.5M Rc + freqEst = (double)(80 - acqFreqIdx) * (31.25e3 / 4); freqEst += (double)syncFreqIdx * 1.5e6 / 64 / 128; } else { - freqEst = acqFreqIdx * (250e3 / 4); + // 12M Rc + freqEst = (double)(8 - acqFreqIdx) * (250e3 / 4); freqEst += (double)syncFreqIdx * 12e6 / 64 / 128; } diff --git a/datalink814_ge/src/phy_ctrl/phy_ctrlreg.h b/datalink814_ge/src/phy_ctrl/phy_ctrlreg.h index 9fe3587..077ef56 100644 --- a/datalink814_ge/src/phy_ctrl/phy_ctrlreg.h +++ b/datalink814_ge/src/phy_ctrl/phy_ctrlreg.h @@ -225,8 +225,8 @@ #define COASE_FREQEST_ACQ_SHIFT 0 #define COASE_FREQEST_ACQ_WIDTH 8 #define COASE_FREQEST_ACQ_MASK 0x000000FFU -#define COASE_FREQEST_SYNC_SHIFT 0 -#define COASE_FREQEST_SYNC_WIDTH 16 +#define COASE_FREQEST_SYNC_SHIFT 8 +#define COASE_FREQEST_SYNC_WIDTH 8 #define COASE_FREQEST_SYNC_MASK 0x000FF00U /**