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.

CC1200 : packet RSSI measurement issue

Other Parts Discussed in Thread: CC1200

Hello,

I have some difficulties to get correct rssi level according to packet reception.

The radio parameters are : 868MHz / 250kbps/RX_BW=555kHz/2GFSK/Dev=125kHz/ 15<Pkt_lenght<64 bytes

To be sure that it was not due to my hardware, I have integrated a CC120XEM board to my µC. The board is link with a coax cable to the TI eval board equipped with the same CC120XEM.

1) When I send a packet (18 bytes) to the eval board with a -24dBm Tx power, SmartRf displays -25 or -26dBm for the received packet. Quite good! In this case, the AGC_GAIN_ADJUST is set to 0. If I set it to the recommended offset value (-81 = 0xAF) the received level is closed to -106dBm.

Question : how the rssi is calculated in the SmartRf for a packet reception? Why the gain_adjust should not be set to the recommended value?

2) When I use my own hardware, I receive my packets with a -28dBm level. A bit less than in the first case but quite good to!

3) Now when I receive a packet with my own hardware, I can't get the expected rssi level when I receive a packet.

Tx level is still set to -24dBm. I read the rssi level added at the end of the payload to get my packets rssi level.

When the AGC_GAIN_ADJUST is set to 0, I get +72dBm levels and when it is set to -81 I get -11dBm. Both are wrong!

Here are the values of some registers linked to the AGC. I got these values from SmartRF:

    {CC1200_AGC_REF,          0x27},      //0x0016
    {CC1200_AGC_CS_THR,       0xEE},      //0x0017
    {CC1200_AGC_GAIN_ADJUST,  0xAF},      //0x0018
    {CC1200_AGC_CFG3,         0xB1},      //0x0019
    {CC1200_AGC_CFG2,         0x20},      //0x001A
    {CC1200_AGC_CFG1,         0x11},      //0x001B
    {CC1200_AGC_CFG0,         0x94},      //0x001C

=>Can somebody explain me what I'm doing wrong?


Many thanks!

  • LE GAC Arnaud,

    I recommend doing it something like this, leave the internal gain adjust at 0 and perform the offset externally like what I did below.

    {CC1200_AGC_GAIN_ADJUST,  0x00},

    #define RSSI_OFFSET 99

    static signed char
    rssi_dbm(unsigned char raw_rssi)
    {
    int8_t dbm = 0;

    if(raw_rssi >= 128) {
    dbm = 128 - raw_rssi;
    } else {
    dbm = raw_rssi;
    }
    dbm = dbm - RSSI_OFFSET;
    // printf("raw_rssi %d rssi %d \n", raw_rssi, dbm);
    return dbm;
    }

    Regards,
    /TA

  • Hello,

    In fact I have measured the rssi offset using 2 boards linked by a coax cable. I have transmitted packets with a known Tx power (-24dBm) and I have determined the offset value to get the correct calculated rssi value for the rx packet.

    My estimated value is around -97 when I was expecting -81 has given by SmartRf.

    It seems to be good now.

    Thank you.