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.

CC1120 Frequency Offset Estimation

Other Parts Discussed in Thread: CC1120

Hi TI

I have a problem understanding if I'm correctly using the FREQOFF_EST register.

I'm developing a small system composed by a central unit (that mounts CC1120) connected with some peripheral units with unknow radio.

I'd like to measure (in the central unit), when any packet is received, the relative offset between the received packet and "my" operative frequency and use this information to tell to the peripheral device which sends the packet to add or decrease its offset to keep the communication range whithin a maximum range of +-2kHz.

My system works in 2FSK, 19.2kbps, 50kHz RX-BW filter.

Is it possible to use the FREQOFF_EST value to perform this measure?

This question is because I've tryed to use a TrxEB+CC1120 as transmitter and changing the Carrier Frequency with 1kHz step and I've observed an absolutely non-linear result in FREQOFF_EST value.

I don't want to use the AFC because i don't want (at now) compensate the central node carrier frequency, just use it to measure the peripheral "deviation" from the central carrier.

Thanks and best regards!

Mat

  • When using FREQOFF_CFG.FOC_CFG=0, the estimate will have an error equal to {-3, -2, -1 0, 1, 2}/64*Deviation. If FREQOFF_CFG.FOC_CFG different from from 0 the accuracy is much better (using feedback to PLL)
  • Hi TER,

    thank you for your answer.

    My current configuration of FREQOFF_CFG is 0x22, then the FOC field is 1 even if feedback to pll is disabled...

    The experiment I did is:
    I've fixed my carrier frequency (on TrxEB used with SmartRF studio) at 869.850 MHz then move it above and below with 1kHz step.
    The result I get (on my hardware) are the following:

    Carrier -> FREQOFF_EST (calculated using the formula in the register description - I'm using a "normal" 32MHz XTAL)
    869.856 MHz -> ~ -0.1 kHz
    869.855 MHz -> ~ -0.7 kHz
    869.854 MHz -> ~ -1.7 kHz
    869.853 MHz -> ~ +1.2 kHz
    869.852 MHz -> ~ +0.2 kHz
    869.851 MHz -> ~ -0.4 kHz
    869.850 MHz -> ~ -1.6 kHz
    869.849 MHz -> ~ +1.5 kHz
    869.848 MHz-> ~ -1.6 kHz
    869.847 MHz-> ~ -1.6 kHz
    869.846 MHz-> ~ -1.6 kHz
    869.845 MHz-> ~ -1.6 kHz

    Every time I read 3 times the registers (FREQOFF_EST1/0) and calculating the AVG
    I've also tried to read the estimation either during the packet reception (just after the sync word received) or at the end of the reception after putting the radio in IDLE but results are quite the same.

    Those value seems to be very strange...

    Is there any other option to set?

    Thank you
    Mat
  • I was referring to FREQOFF_CFG.FOC_CFG which is set to 0 in your case.

    Try FREQOFF_CFG=0x33 and check the accuracy with this setting.
  • Thank you TER

    using FREQOFF_CFG=0x33 it is definitely more accurate.

    But in my understanding, in this case the automatic frequency compensation is enabled, so the central device "follows" the peripheral device, is my understanding correct?
  • Feedback to PLL uses a different frequency compensation path and need a 2-4 byte preamble to calculate the frequency. We have only seen upsides using feedback to PLL.