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.

FREQEST and CC1110

I am using a CC1110 with the default SmartRF Studio setting for 2k4 KBaud, GMSK, 868.3MHz. I am trying to implement frequency compensation by reading and averaging the FREQEST register and setting the FSCTRL0 register with this value but with little success.

When I read the FREQEST register after a successful RX I get values ranging typically from -1 to -9. These values do not change when I set FSCTRL0 or when I manually correct for the offset using the FREQx registers.

Does anyone know how the FREQEST works and how reliable it is with small packets (20 bytes of payload) at 2k4?

 

 

 

  • The offsets getting estimated in your system is relatively small. If you add a known offset on the sender side (+/-10 kHz) do you get the same result then? 

  • The offsets are small but quite large compared to the modulation and RX bandwidth. I have been trying to adjust the receiver in isolation. Adjusting the transmitter is trickier but I will see what I can do.

  • I have tried changing the frequency of the transmitter by twiddling with the FREQ0 register. This seems to have very little impact on the FREQEST reading in the receiver which now reports values in the range 0 to -3 going to extremes of -7 at very large offsets. I have never seen it give a positive reading.

     Does anyone know how it works? Is it based on the symbol timing or frequency offset?


  • have you looked at DN015? 

  • I had already read DN015 but on reading it again realized that the value reported in FREQEST must be accumulated (not averaged as I had previously assumed)  then applied to FSCTRL0. 

    I have now done some further tests using 2 TI CC1110 dev boards and a mix of Packet Sniffer and RF Studio and here are my conclusions.

    • With FSCTRL0 set to 0 the link works
    • With FSCTRL0 set to small positive and negative values the link continues to work
    • The value reported by FREQEST seems to be independent of values written to FSCTRL0
    • In my setup FREQEST reports a value in the range -16 to -18. 
    • Setting FSCTRL to -16 causes the receiver to stop working

    If I follow the algorithm in DN015 then I start with an FSCTRL0 setting of 0, add -16 to it then apply that to FSCTRL0 at which point everything stops.  Am I missing something obvious here? 

  • Hello.

    I try to adjust compensation of frequency offset on the chip CC1110. I act according to the scheme described in DN015 but no result. register FREQEST issued chaotic offset values ​​from -7 to 5, the difference in the carrier transmitter and receiver 20kHz, the absolute value adjustment goes regardless of the position of the frequency, and eventually the RX "compensated" so that the receiver stops hear the transmitter. why it does not work? what i missing?

    some register values 

    FSCTRL1 0x0C
    FSCTRL0 0x00
    MDMCFG4 0xA9
    MDMCFG3 0xE4
    MDMCFG2 0x13
    MDMCFG1 0x21
    MDMCFG0 0xF8
    MCSM0 0x18
    FOCCFG 0x1A
    BSCFG 0x1C
    AGCCTRL2 0x47
    AGCCTRL1 0x00
    AGCCTRL0 0xB0
    FSCAL3 0xE9
    FSCAL2 0x2A
    FSCAL1 0x00
    FSCAL0 0x1F

  • Alexandra, 

    Did you accumulate? See below, text.

    /TA

    Note that the receiver software must apply the accumulated value to [FSCTRL0.FREQOFF],
    not just the instant [FREQEST.FREQOFF_EST] value. It is also important that the
    CC11xx/CC25xx is in IDLE state when reading [FREQEST.FREQOFF_EST], to ensure that
    the [FREQEST.FREQOFF_EST] value links to the last received RF packet. Furthermore,
    noisy [FSCTRL0.FREQOFF] samples can be suppressed by filtering it (e.g. low-pass filter),
    but this has not been done in this design note. Finally, note that in an RF network application
    each receiver should memorize the frequency offset value associated with each transmitting
    node in order to apply the correct permanent offset when communicating with different nodes.

  • thank you for answer

    Yes, i accumulate  value, accumulator is signed, and saving this value. Testing occurred with 1 transmitter and 1 reciever. 

    my code after transaction comlete 

    "freqOffAcc = freqOffAcc + (signed char ) FREQEST;

    FSCTRL0 = freqOffAcc;"

    freqOffAcc is signed char.

  • the difference between the signal and noise about 40dBm.

  • did any have example of Frequency offset using