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.

Read RSSI value from CC1101 properly

Other Parts Discussed in Thread: CC1101

Dear experts,

I have been working with arduino and CC1101 platform, where I have doubts about how to read the correct RSSI register.

I know that there are two register to read the RSSI, CC1101_RSSI (0x34) and CC1101_RXFIFO (0x3F). Could you tell me what is the difference between them? I tried to read both, but the values are very different. The RXFIFO that I am working has 52 bytes.

I read about RSSI response time in the DN505 design note, but instead of measuring the time from the radio enters RX state until a valid RSSI value is available, what about wait until the complete packet has been received and after read the CC1101_RXFIFO? In this case, can I get the correct value of RSSI? Why when I do it using CC1101_RSSI the value is wrong?

I also need to read the RSSI value when the channel is not busy, that means the value of RSSI should be a noise. When I try to read CC1101_RXFIFO continuously, the values are periodic and possible wrong. But when I read continuously using CC1101_RSSI, this seems to be like a noise. Which one is the correct register to read?

Best Regards,

George.

  • George, 

    You are correct there are two ways of getting the RSSI read out from the CC1101. 

    • Direct approach, is to read the RSSI during normal RX operation. There you should follow DN505 in regards to timing, but generally you can read the RSSI as often as you want you just might get data that is not "new" because it only updates the values at certain intervals (see DN505). This approach is the only approach to use if you need information about how much signal energy is in a channel when it is not occupied. And this result will look like noise, because the instantaneous value is based on noise. But the value will be very low.
    • Indirect approach, getting the RSSI appended behind the payload in the RXFIFO. This RSSI only pertains to the burst of data that is found in the RX FIFO and this method cannot be used to sense energy level in IDLE channels.

    Regards,
    /TA 

  • Thank you for your answer!
    I have tested using both ways to get RSSI in the same time.
    Could you tell me if the values below, seems to be correct, just to confirm?
    The duration of time starting when the packet arrive until get the same value of CC1101_RSSI, were of 270 ms.
    RSSI =-46 ----> This value was gotten from CC1101_RXFIFO register.
    -26   ------> Those values were gotten from CC1101_RSSI register.
    -26
    -31
    -28
    -26
    -26
    -25
    -30
    -27
    -27
    -33
    -26
    -28
    -27
    -28
    -29
    -27
    -28
    -26
    -28
    -26
    -33
    -25
    -32
    -28
    -27
    -29
    -30
    -30
    -29
    -29
    -29
    -29
    -29
    -30
    -28
    -28
    -27
    -26
    -26
    -28
    -26
    -30
    -25
    -24
    -30
    -30
    -27
    -28
    -25
    -27
    -27
    -26
    -27
    -27
    -31
    -27
    -27
    -28
    -24
    -28
    -27
    -27
    -27
    -33
    -25
    -28
    -29
    -26
    -23
    -27
    -28
    -22
    -27
    -23
    -26
    -26
    -29
    -26
    -25
    -29
    -25
    -26
    -27
    -27
    -27
    -28
    -29
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    -46
    For both of them I have used this procedure below to convert the RSSI reading to dBm, is that correct?
    If RSSI_dec ≥ 128 then RSSI_dBm = (RSSI_dec - 256)/2 RSSI_offset
    Else if RSSI_dec < 128 then RSSI_dBm =  (RSSI_dec)/2 RSSI_offset 
    I am using 915 Mhz, I suppose that the value of offset is 74...

    In the DN505, the graph of page 6 shows the power increasing and in my case the values are decreasing...
    What do you think?
    Best Regards,
    George. 
  • Your math seems correct, but something is not looking right. The values are a little crazy. Can you post the raw values from the CC1101.

    /TA

  • Hi TA12012, 

    I did the same test, but now directly from register called by a function from arduino.

    I think this function already convert to decimal numbers.

    RSSI =41 -----> CC10101_TXFIFO


    206 ------> CC1101_RSSI
    204
    205
    204
    207
    206
    210
    205
    210
    200
    197
    206
    204
    212
    204
    207
    210
    204
    211
    210
    208
    211
    205
    206
    202
    213
    207
    212
    208
    203
    205
    202
    210
    202
    205
    201
    207
    202
    211
    204
    212
    202
    200
    213
    212
    210
    202
    203
    202
    211
    208
    210
    212
    203
    204
    201
    201
    206
    209
    204
    201
    205
    210
    206
    196
    205
    204
    209
    205
    201
    200
    202
    208
    196
    204
    206
    211
    206
    207
    206
    206
    204
    197
    204
    212
    207
    204
    212
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40
    40

    Best Regards,
    George. 

  • This is what I get, and it looks reasonable. Before your burst arrives the RSSI is noisy and around -100dBm, then when the Sync word has been found the RSSI is frozen at a fixed value and this case -54dBm which also seems ok.

    I have included my math below.

    /TA

    =IF(B3>128,B3-256,B3) =D3/2 =F3-74
    209 -47 -23.5 -97.5
    205 -51 -25.5 -99.5
    201 -55 -27.5 -101.5
    200 -56 -28 -102
    202 -54 -27 -101
    208 -48 -24 -98
    196 -60 -30 -104
    204 -52 -26 -100
    206 -50 -25 -99
    211 -45 -22.5 -96.5
    206 -50 -25 -99
    207 -49 -24.5 -98.5
    206 -50 -25 -99
    206 -50 -25 -99
    204 -52 -26 -100
    197 -59 -29.5 -103.5
    204 -52 -26 -100
    212 -44 -22 -96
    207 -49 -24.5 -98.5
    204 -52 -26 -100
    212 -44 -22 -96
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20 -54
    40 40 20

    -54