Function |
|
• Check currently incoming RF signal strength and preamble quality • Specify the level of RSSI for subsequent receipts in LP and XLP modes |
Purpose |
|
• Incoming RF signal strength and quality detection • Set filter level for incoming LP and XLP packets |
Syntax |
|
bit checkRF(uns8 level) |
Parameters |
|
level = RSSI_FILTER (0 to 64) Values > 64 are not intended for signal filtration, but for special purposes. See getRSSI Preconditions for example. |
Input values |
|
bit _checkRFcfg_PQT Preamble quality check enable in STD RX • 0: RF carrier strength is checked (Default) • 1: RF carrier strength and preamble quality are checked This bit applies in STD RX mode only. In LP or XLP RX modes the preamble quality is always checked. |
Return value |
|
• 1: If _checkRFcfg_PQT = 0 in STD RX mode: Signal with specified level or higher detected (RSSI >= RSSI_FILTER) If _checkRFcfg_PQT = 1 or in LP or XLP RX mode: Signal with specified level or higher detected (RSSI >= RSSI_FILTER) and correct format of packet preamble is detected • 0: Otherwise |
Output values |
|
• Filter for all subsequent incoming LP and XLP packets is set to specified method and level • After checkRF finishing, RF IC stays always in RF Ready mode. |
Preconditions |
|
In LP and XLP RX modes, checkRF should be used only once whenever a change of filter level is needed. It should not be used repeatedly in the RX loop. |
Remarks |
|
• Higher filtration brings higher immunity against noise and interferences but allows a lower range. See TR datasheet, table Relative RF range vs. checkRF(level). • checkRF(5) is recommended for immunity against weak noise.
• If _checkRFcfgPQT=1 and a packet transmitted in LP or XLP TX mode should be received in STD RX mode, toutRF ≥ 5 or 100, respectively, must be set. • Unlike getRSSI and RFRXpacket, checkRF does not update the lastRSSI register. • For reading out the RSSI value the getRSSI function is intended. See getRSSI Example. |
Side effects |
|
– |
See also |
|
|
Example 1 |
|
// Fast response receiving in STD mode _checkRFcfg_PQT = 1; // Check RF signal for preamble quality as well if (checkRF(5)) // Detect signal with RSSI >= selected level { if (RFRXpacket()) // Duration according to toutRF only if packet is sent. { // toutRF can be optimized for expected packet length. ... } } // Otherwise only ~2.8 ms (or 1 ms if _checkRFcfg_PQT = 0) is spent. ... time-critical section can be placed here |
Example 2 |
|
if (checkRF(10)) // Detect signal with RSSI >= selected level ... |
Example 3 |
|
// LP TX packet received in STD RX _checkRFcfg_PQT = 1; // Check RF signal for preamble quality as well setRFmode(_RX_STD | _WPE); // Standard RX toutRF = 5; // 5 or more is required, see Remarks // Change 5 to 100 if XLP packet is expected if (checkRF(5)) // Detect signal with RSSI >= selected level { if (RFRXpacket()) // Duration according to toutRF only if packet is sent. ... |
Example 4 |
|
// RF signal strength analyzer while (1) |