Carrier sense threshold setting for CC1101


How to generate tables for finding carrier sense threshold.

In datasheet of CC1101 such tables for 2.4K baud and 250K baud are given. But how to generate similar tables for 10Kdata rate, MSK at 865MHZ base-band frequency?

In our project we have to use listen before talk policy.We have configured CCA mode as 0x03 (If RSSI below threshold unless currently receiving a packet). In our case one board (Say master) sends broadcast query and all other boards (slaves) gives response to this query using listen-before-talk policy. But master is unable to receive reply from all boards. If we look at slave boards log, all boards shows that they have transmitted the packet on RF. But we suspect that CC1101 is not able to detect carrier due to which there might be collisions taking place over RF network.

So we want to change carrier sense threshold setting.

Thanks in advance.


5 Replies

  • Hi Guys,

    Can anybody give some information on how to decide RSSI threshold and how it can be set using absoulte/relative threshold settings of CC1101?

    How to prepare tables for RSSI values as given in CC1101 datasheet on page no. 47, section 17.4

    Thanks and regards,


  • Hi

    The tables would be the same as for the 2.4 kBaud table (table 32) If you look at the two tables you will see that the 250kBaud table is measured with a MAGN_TARGET = 42 dBm while the 2.4 kBaud table is measured at MAGN_TARGET = 33 dBm. Taking the MAGN_TARGET into account the CS threshold will not vary significant over the different data rates.

    The best way to change the CS Threshold is to change the AGCCTRL1.CARRIER_SENSE_ABS_THR which shifts the rssi level for CS assertion relative to the MAGN_TARGET setting.

    Best regards
    PS. Thank you for clicking  Verify Answer below if this answered your question!

  • In reply to Martin B:

    Thanks a lot Martin for your quick reply.

    I will try with changes in absolute threshold.

    Just few questions,

    1) How one can decide if to use relative threshold or absolute one? In our case we didn't know in what kind of environment RF boards will be placed.

    2) Secondly in our communication network, one board(master) sends broadcast query to all other boards(slave). In reply all boards has to send packet using listen-before-talk policy. Again distance between master and salves is different i.e. one salve board might be close to master while other might be place farther. So RSSI of received signal will vary according to distance. In such cases how to decide CS threshold?

  • In reply to Vikas Javkar:


    1) For CCA operations you have to use absolute threshold. If you are using relative threshold you have to stay in RX for a period of time in order to register a change in the RSSI. With CCA you want to quickly decide if you can transmit or not.

    2) You can either set a different CS threshold based on the nodes position or you can  set a fixed CS threshold for all the nodes based on the RSSI value of the lowest received signal. This is highly depended on each scenario.

    Best regards
    PS. Thank you for clicking  Verify Answer below if this answered your question!

  • Using the "Typical settings" for 10 kbps from SmartRF Studio AGCCTRL2.MAGN_TARGET = 3 (33 dB), AGCCTRL2.MAX_DVGA_GAIN = 1 and AGCCTRL2.MAX_LNA_GAIN = 0. The carrier sense threshold will not differ much from the values in Table 32 in the CC1101 data sheet, which is for 2.4 kbps. With the above mentioned settings the carrier sense threshold will be approximately -91.5 dBm. Setting AGCCTRL2.MAX_DVGA_GAIN = 0 will lower the carrier sense threshold by 6 dB (to approximately -97.5 dBm).

    Fur further reduction in carrier sense threshold use AGCCTRL1.CARRIER_SENSE_ABS_THR. As an example, setting AGCCTRL2.MAGN_TARGET = 3 (33 dB), AGCCTRL2.MAX_DVGA_GAIN = 0 AGCCTRL2.MAX_LNA_GAIN = 0 and AGCCTRL1.CARRIER-SENSE_ABS_THR = 1001b the carrier sense is at -97.5 dBm (according to table 32) - 7 dB = -104.5 dBm.

    To find the exact carrier sense threshold for a given set of register settings you need to use a signal generator as source and monitor the carrier sense flag on one of the GDO pins. Program the AGCCTRL register and adjust the input power level until the flag is asserted.