RFM69 OOK compare RSSI on STM32 LPC824 and JeeLink

The RFM69 contains internal calibration features for the receive circuitry. So in theory different RFM69 receivers should have comparable noise levels as well as comparable signal levels provided the antenna design is the same, and also the antenna positioning is comparable for the receivers. Now lets put this theory to the test.

Three different receivers were constructed, a Nucleo STM32F103, a LPC824 and a JeeLink V3C with an AtMega (Arduino compatible). The transmitter is an LPC812+RFM69, simulating a FS20 signal at 868.28MHZ every 5 seconds. The receiving SW logs various numbers, such as a millisecond timestamp, an interval between the last series of transmissions (read 5 seconds), an interval between each of the three packets in a train (around 60 ms) and 88400031214C is the transmitted FS20 code.
The interesting part is however the final two numbers in brackets. Those are raw RSSI numbers, measured during the OOK train.
The first is the RawRSSI level during an OFF transmission, the noise level. The second is during the ON level. To convert them to RSSI, the following formula can be applied:

RSSI (in dBm) = (RawRSSI-256) / 2

The following three screenshots show the outputs of the signal reception logging simultaneously for the three receivers:

Nucleo STM32F103

Compare OOK weak NucleoSTM32

Compare OOK weak LPC824
JeeLink V3C
Compare OOK weak JeeLink

For all three receivers, noise levels are around 58/59 which is -99dBm.
signal-ON levels are around 88, which is -84dBm

There is a slight variation between receivers. The LPC824 seems to have the lowest noise floor. Antenna’s were quite identical being a 86mm quarter wavelength wire.

It is confirmed that RSSi levels compare well across different RFM69’s


What does this mean:
RSSI: 47(v 77-s 9-m129) THD:fix/peak/maxp:65/65/117
The receiver program samples the RSSI levels every millisecond, and calculates statistics every 10 seconds.
RSSI: 47 avarege RawRSSI
(v 77-s 9-m129) v = variance, s = standard deviation, m = maximum of RawRSSI
THD: OOK-thresholding (bit-slicing between ON and OFF):
THD:fix/peak/maxp:65/65/117 fix – the minimum value of the slice threshold, some dB above noise floor.
THD:fix/peak/maxp:65/65/117 peak/maxp – SW simulation of the PEAK-threshold of the RFM69. Current and maximum.

The receiver code (LPC824) can be found in github: https://github.com/SevenW/embapps/tree/master/embapps/rf-ook
transmitter code, as well as Arduino/JeeLib/Jeelink code can be found in the same repo in different folders.

One thought on “RFM69 OOK compare RSSI on STM32 LPC824 and JeeLink

Leave a Reply

Your email address will not be published. Required fields are marked *