1 Reply Latest reply on Mar 28, 2019 11:45 PM by GyanC_36

    Proper way of reading RSSI


      We are trying to read the value of RSSI, by calling the function CyBle_GetRssi() every 250ms or every second, on the module CYBLE224110-00 which is connected to another same module via bluetooth;  however, the RSSI values returned from this function are something like this: 86,-127,107,47,33,-31,-38,48,-39,113,49,-118,-34,-112,-112,-105,66,-98,73,80,-90,81,-89,-89,-3,83,-2,84,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,

      The two modules are 50cm far from each other. The expected RSSI, due to having PA/LNA, I guess, is around -20, while as you can see, most of the returned values from the function do not make sense.
      What is the proper way of reading RSSI value?

        • 1. Re: Proper way of reading RSSI



              PSoC4 BLE 4.1 devices  do not report a linear RSSI instead fluctuating values. If you want to get a linear RSSI you can do the below process-


          For linear value of RSSI, the application has to do RSSI mathematics compensation by AGC gain value as below.

          when Application reads RSSI, read back register value of BLERD_MONI[15:13]

          if bits are 101: compensate RSSI +6

                         100 : compensate RSSI+11

                         011: compensate RSSI +10

                         010: compensate RSSI + 7

                         001: compensate RSSI + 0

                         000: compensate RSSI – 4



          However, PSoC BLE 4.2 device does not have this limitation and reports almost liner values with distance.

          Also, you need to check that how much overall output power your both devices are set for.


          Please find the 'BLERD_MONI' register description in PSoC4 BLE register TRM. (https://www.cypress.com/file/421406/download )


          PS: CYBLE224110-00 is a BLE 4.1 device.



          2 of 2 people found this helpful