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: Choose IF Frequency

Part Number: CC1120

Hi all,

I'm using cc1120 to receive data with:

RF: 426.25MHz, Channel space 12.5kHz, Deviation 1,8kHz, Symbolrate 2.4kps, 2FSK

no sync and no preamble.

I set RW filter BW is 12.5 kHz

In section 6.2 DC Offset Removal.

How can I choose value of FREQ_IF_CFG.FREQ_IF exactly with this parameters?

When I config DCFILT_CFG = 0x5C, FREQ_IF_CFG = 0x40, AGC_REF = 0x20 then sometime data is wrong.

Sorry  for me not have much understanding of RF.

Thank you.

Vu.

 

  • For low datarates, keep the IF at default.

    What is the reason for operating without preamble/ sync?

    With a RX BW  =12.5 kHz, have you checked that you don't have a small offset in the RF frequency (or more importantly, an offset between the RX and the TX side)  

  • Hi TER,

    -"What is the reason for operating without preamble/ sync?" I create packet is 794 bits preamle 0x55 + 6 bits sync 0x3F + 14 bytes data, So I will handle to catch my packet in MCU.

    - Offset between the TX and  the RX side always < 200Hz

    Thank you for response.

    Vu.

  • CC1120 is designed to use preamble and sync. Since you wrote that you are not using preamble/ sync, does that mean that you are using transparent mode? If possible, use he default sync word.  What is the background for using a very short sync word and a very long preamble? 

  • I use FIFO mode without sync and preamble(it's look like transparent mode?).

    "What is the background for using a very short sync word and a very long preamble? " Because this is model specifications of my project.

    Do you have any ideas?

    Thank you.

    Vu,

  • Is this an old legacy format you have to comply with? 

    I would  start with set the sync word to 0x55553F (or the last 32 bits you send)

  • yes,this an old legacy format I have to comply with.

    when I set sync, I get 2 packet:

    packet 1(OK): ....555557F01630C618C3...

    packet 2(NG):...5552AAFE02C618C318630C618C7006DEC100

    Second packet is wrong 1 bit in preamble.

    Sometime, 14 bytes data isn't receive enough.

    Thank for response!

    Vu,

  • Do you use fixed packet length (I assume you don't have a length byte?)

  • Hi TER

    I config mode as below:

    // Variable length mode
    dmy = 0x20;
    write_cc1120_single(PKT_CFG0, &dmy);

    dmy = 0xFF; 
    write_cc1120_single(PKT_LEN, &dmy);

    Vu,

  • Meaning that you have a length byte? You don't describe a length byte as part of your payload. 

  • Hi TER, 

    I understood.

    when I set fixed len mode, PKT_LEN = 14( = Payload len) data sometime just 0x55, i can't see my payload,

    when I set infinity len mode or without preamble, sync => data read from RX FIFO continuos(data+noise), but the last byte of payload sometime wrong(~40%).

    Side TX : after send the last byte of payload => IDLE.

    Thank you,

    Vu.

  • Could you share the register settings you used for the latest test?

  • Hi TER, This is setting:

      RX TX
    Register Value Value
     IOCFG3 0xB0 0xB0
     IOCFG2 0x06 0x06
     IOCFG1 0xB0 0xB0
     IOCFG0 0x02 0x02
     SYNC3 0x55 0x93
     SYNC2 0x55 0x0B
     SYNC1 0x55 0x51
     SYNC0 0x7F 0x03
     SYNC_CFG1 0x06 0x0B
     SYNC_CFG0 0x17 0x17
     DEVIATION_M 0x8A 0x8A
     MODCFG_DEV_E 0x01 0x01
     DCFILT_CFG 0x5C 0x1C
     PREAMBLE_CFG1 0x00 0x00
     PREAMBLE_CFG0 0x00 0x2A
     FREQ_IF_CFG 0x40 0x40
     IQIC 0x00 0xC6
     CHAN_BW 0x10 0x08
     MDMCFG1 0x46 0x46
     MDMCFG0 0x01 0x05
     SYMBOL_RATE2 0x53 0x53
     SYMBOL_RATE1 0xA9 0xA9
     SYMBOL_RATE0 0x2A 0x2A
     AGC_REF 0x20 0x20
     AGC_CS_THR 0x70 0x19
     AGC_GAIN_ADJUST 0x97 0x00
     AGC_CFG3 0x91 0x91
     AGC_CFG2 0x20 0x20
     AGC_CFG1 0xA9 0xA9
     AGC_CFG0 0xCF 0xC3
     FIFO_CFG 0x7F 0x00
     DEV_ADDR 0x00 0x00
     SETTLING_CFG 0x03 0x0B
     FS_CFG 0x14 0x14
     WOR_CFG1 0x08 0x08
     WOR_CFG0 0x21 0x21
     WOR_EVENT0_MSB 0x00 0x00
     WOR_EVENT0_LSB 0x00 0x00
     PKT_CFG2 0x00 0x04
     PKT_CFG1 0x00 0x00
     PKT_CFG0 0x00 0x40
     RFEND_CFG1 0x3F 0x0F
     RFEND_CFG0 0x20 0x20
     PA_CFG2 0x7F 0x7A
     PA_CFG1 0xE0 0xE0
     PA_CFG0 0x7C 0x7C
     PKT_LEN 0x0E 0x0E
     IF_MIX_CFG  0x00 0x00
     FREQOFF_CFG  0x22 0x22
     TOC_CFG  0x0B 0x0B
     MARC_SPARE  0x00 0x00
     ECG_CFG  0x00 0x00
     CFM_DATA_CFG  0x00 0x00
     EXT_CTRL  0x01 0x01
     RCCAL_FINE  0x00 0x00
     RCCAL_COARSE  0x00 0x00
     RCCAL_OFFSET  0x00 0x00
     FREQOFF1  0x00 0x00
     FREQOFF0  0x00 0x00
     FREQ2  0x6A 0x6A
     FREQ1  0x90 0x90
     FREQ0  0x00 0x00
     IF_ADC2  0x02 0x02
     IF_ADC1  0xA6 0xA6
     IF_ADC0  0x04 0x04
     FS_DIG1  0x00 0x00
     FS_DIG0  0x5F 0x5F
     FS_CAL3  0x00 0x00
     FS_CAL2  0x20 0x20
     FS_CAL1  0x40 0x40
     FS_CAL0  0x0E 0x0E
     FS_CHP  0x28 0x28
     FS_DIVTWO  0x03 0x03
     FS_DSM1  0x00 0x00
     FS_DSM0  0x33 0x33
     FS_DVC1  0xFF 0xFF
     FS_DVC0  0x17 0x17
     FS_LBI  0x00 0x00
     FS_PFD  0x50 0x50
     FS_PRE  0x6E 0x6E
     FS_REG_DIV_CML  0x14 0x14
     FS_SPARE  0xAC 0xAC
     FS_VCO4  0x14 0x14
     FS_VCO3  0x00 0x00
     FS_VCO2  0x00 0x00
     FS_VCO1  0x00 0x00
     FS_VCO0  0xB4 0xB4
     GBIAS6  0x00 0x00
     GBIAS5  0x02 0x02
     GBIAS4  0x00 0x00
     GBIAS3  0x00 0x00
     GBIAS2  0x10 0x10
     GBIAS1  0x00 0x00
     GBIAS0  0x00 0x00
     IFAMP  0x01 0x01
     LNA  0x01 0x01
     RXMIX  0x01 0x01
     XOSC5  0x0E 0x0E
     XOSC4  0xA0 0xA0
     XOSC3  0xC7 0x03
     XOSC2  0x04 0x04
     XOSC1  0x07 0x03
     XOSC0  0x00 0x00
     ANALOG_SPARE  0x00 0x00
     PA_CFG3  0x00 0x00
     WOR_TIME1 0x00 0x00
     WOR_TIME0 0x00 0x00
     WOR_CAPTURE1 0x00 0x00
     WOR_CAPTURE0 0x00 0x00
     BIST 0x00 0x00
     DCFILTOFFSET_I1 0x00 0x00
     DCFILTOFFSET_I0 0x00 0x00
     DCFILTOFFSET_Q1 0x00 0x00
     DCFILTOFFSET_Q0 0x00 0x00
     IQIE_I1 0x00 0x00
     IQIE_I0 0x00 0x00
     IQIE_Q1 0x00 0x00
     IQIE_Q0 0x00 0x00
     RSSI1 0x80 0x80
     RSSI0 0x00 0x00
     MARCSTATE 0x41 0x41
     LQI_VAL 0x00 0x00
     PQT_SYNC_ERR 0xFF 0xFF
     DEM_STATUS 0x00 0x00
     FREQOFF_EST1 0x00 0x00
     FREQOFF_EST0 0x00 0x00
     AGC_GAIN3 0x00 0x00
     AGC_GAIN2 0xD1 0xD1
     AGC_GAIN1 0x00 0x00
     AGC_GAIN0 0x3F 0x3F
     CFM_RX_DATA_OUT 0x00 0x00
     CFM_TX_DATA_IN 0x00 0x00
     ASK_SOFT_RX_DATA 0x30 0x30
     RNDGEN 0x7F 0x7F
     MAGN2 0x00 0x00
     MAGN1 0x00 0x00
     MAGN0 0x00 0x00
     ANG1 0x00 0x00
     ANG0 0x00 0x00
     CHFILT_I2 0x08 0x08
     CHFILT_I1 0x00 0x00
     CHFILT_I0 0x00 0x00
     CHFILT_Q2 0x00 0x00
     CHFILT_Q1 0x00 0x00
     CHFILT_Q0 0x00 0x00
     GPIO_STATUS 0x00 0x00
     FSCAL_CTRL 0x01 0x01
     PHASE_ADJUST 0x00 0x00
     PARTNUMBER 0x00 0x00
     PARTVERSION 0x00 0x00
     SERIAL_STATUS 0x00 0x00
     MODEM_STATUS1 0x01 0x01
     MODEM_STATUS0 0x00 0x00
     MARC_STATUS1 0x00 0x00
     MARC_STATUS0 0x00 0x00
     PA_IFAMP_TEST 0x00 0x00
     FSRF_TEST 0x00 0x00
     PRE_TEST 0x00 0x00
     PRE_OVR 0x00 0x00
     ADC_TEST 0x00 0x00
     DVC_TEST 0x0B 0x0B
     ATEST 0x40 0x40
     ATEST_LVDS 0x00 0x00
     ATEST_MODE 0x00 0x00
     XOSC_TEST1 0x3C 0x3C
     XOSC_TEST0 0x00 0x00

    The last byte wrong because TX side:

    As you can see, the last byte data when I send continuos( pointer 1) data OK, when the last byte data send => IDLDE then data will be wrong, noise is generate(pointer 2).

    Can you explain it?

  • First settings: Why have you set the sync word differently on the RX and TX side?

    Why have you set SYNC0 to 0x7F and not 0x3F?

  • Hi TER,

    Sorry, At TX side I change: 

    // Set no hardware preample and sync
    dmy = 0x00; // No Preamle
    write_cc1120_single(PREAMBLE_CFG1, &dmy);
    dmy = 0x03; // No Sync
    write_cc1120_single(SYNC_CFG0, &dmy);

    Preamble + sync : ...0101 0101 0111 1111 : 0x55, 0x7F

    TX side I'm not set Preamble + sync, I just write data ...0x55, 0x7F into FIFO to transmit it.

    RX side receive normal.

    Now, I want to know the pulse noise at the last byte of packet.

    Thank you,

    Vu,

  • Have you seen issues caused by "noise"?

    The plots you have posted: What is the "y" axis, is it output power or deviation? Is the noise independent of the PA ramp settings? 

  • Hi TER,

    It's output of AF level, about 2Vpp is output when AF LEVEL = 0 dB.

    When I change PA ramp setting, It wil be change.

    I have a new question. In RX side, If no signal at input of RX then value of register RSSI is 0x91 => -111dBm, I want to increase sensitivity, about -120 or lower when no signal at input RX,

    Which register I can set to get this.

    Thank you, 

    Vu

  • RX: Not exactly sure what you mean. My understanding is that you have your DUT, you have no known input on the antenna port and you are not able to read a RSSI lower than -111 dBm? Do you have an antenna connected? In that case what you are seeing is the noise floor where you are located. You can see if that is the case by moving the DUT into a RF shield and see if the RSSI drops.

    TX: Not exactly sure what you mean here. First, Not sure what you mean by AF level and where exactly you do this measurement. Secondly, why do you do this measurement? We are never looking at the signal in the voltage domain. 

  • RX: I have a Radio communcication tester, Tester connect to RX via coaxial cable.

    Then I set input power RX, When noise in RX, I'm not able to read RSSI lower than -111dBm.

    When I change channel RF, RSSI still -111dBm.

    TX: I think because it make RX receive packet wrong(at end of packet)

  • To fully understand what you are seeing I believe I have to run some measurements. Due to the covid-19 situation I try to limit the number of days in the office. Would you be able to disclose the potential volume for this project? If you don't want to share it in a public forum, send be a friend request. 

  • Hi TER,

    Thank for your support!

    In RX, I found issue from my hardware, so I can't read correct value RSSI.

    In my code, when I read RSSI interval 10ms, RSSI return about -123, -124dBm.

    When I read RSSI interval 1ms, RSSI return -123, -124, sometime is -60, -61 dBm.

    Because I read RSSI value too fast, right?

    I want to update RSSI value as quickly as possile.

    Thank you. Vu

  • Have you looked at and calculated the RSSI response time according to https://www.ti.com/lit/pdf/swra413?