RSSI and ED Measurement

This section describes how the RSSI measurement (Received Signal Strength Indication) and the ED measurement (Energy Detection) is done for the current RF channel.

The 5-bit RSSI value has a valid range from {0 ... 28} and indicates the receive power in the selected RF channel, in steps of 3 dB. The value is updated in the radio transceiver every tTR25 and can be read from the sub register SR_RSSI.

The ED value is calculated by averaging the RSSI values over 8 symbol periods, i.e. the measurement duration results to 8*tsym. Due to the internal processing in the radio transceiver, an ED measurement is finished after tTR26.

Parameters:
rssi The current RF input power is calculated by:
ed The 8 bit ED value can be read from register RG_PHY_ED_LEVEL. It has a valid range from ed = {0,...,84}, the reset value is {255} and the values {85,...,254} are reserved. The RF signal power level for a measurement period is RSSI_BASE_VAL + ed [dBm]. The value ed=0 means, that the calculated energy is energy<=RSSI_BASE_VAL [dBm].
Note:
If the signal strength of an incoming frame has to be evaluated it is recommended to use the ED value (see PHY_ED_FRAME_END) instead of the RSSI value, because the ED value is more reliable since it obtains less variance caused by noise.

The ED value is also part of the RX status information appended to each frame (see RX Frame Status Information).

Use Cases:


PHY_GET_RSSI

The RSSI value can be retrieved from the sub register SR_RSSI whenever the radio transceiver is in one of the [RX_BASIC] states.

Note:
It is also possible to read SR_RSSI in RX_AACK_ON. However, the value should not be read in BUSY_RX_AACK.
inline_mscgraph_69
Code example
    /* AT86RF212::[RX_BASIC] */
    rssi = trx_bit_read(SR_RSSI);

PHY_ED_REQUEST

An ED measurement can be started by writing an arbitrary value to the register RG_PHY_ED_LEVEL. After tTR26 the TRX_IRQ_CCA_ED_DONE indicates the completion of the ED measurement procedure and the ED value can be read from this register.

inline_mscgraph_70
Code example
    /* AT86RF212::[RX_BASIC] */
    trx_reg_write(RG_PHY_ED_LEVEL, 0);
    delay(tED);
    ed = trx_reg_read(RG_PHY_ED_LEVEL);

PHY_ED_FRAME_END

With the detection of a SFD an ED measurement is automatically started. The result of this ED measurement is valid within a time interval which starts tReadED after the interrupt TRX_IRQ_RX_START and ends tHED after the interrupt TRX_IRQ_TRX_END. During this period, the register RG_PHY_ED_LEVEL yields the ED value for the currently received frame.

Note:
inline_mscgraph_71
Code example
    /* AT86RF212::[RX_ACTIVE] */
    delay(tPSDU);
    ed = trx_reg_read(RG_PHY_ED_LEVEL);

Generated on Mon Aug 17 13:35:00 2009 for SWPM AT86RF212 by  doxygen 1.5.6