RSSI and ED Measurement

This section describes, how the values for the RSSI measurement (Received Signal Strength Indication) and the ED measurement (Energy Detection) can be obtained 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 symbols, i.e. the measurement duration results to tTR26=8*tsym. Due to the internal processing in the radio transceiver, an ED measurement is finished after tED.

Parameters:
rssi The current RF input power is calculated by:
- PHY_RSSI = 0: PRF < RSSI_BASE_VAL [dBm]
- 0 < PHY_RSSI < 28 : PRF = RSSI_BASE_VAL + 3 * (PHY_RSSI- 1) [dBm]
- 0 < PHY_RSSI = 28 : PRF>= RSSI_BASE_VAL + 81 [dBm]

Parameters:
ed The 8 bit value indicating the ED value is read from RG_PHY_ED_LEVEL. It has a valid range from ed = [0...84], all values from 85...255 are reserved. The RF signal power level during the 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 RSSI value of an incoming frame needs to be evaluated it is recommended to use the ED value as described in PHY_ED_FRAME_END. The ED value is more reliable since it contains less variations caused by noise.
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_61
Code example
    /* AT86RF231::[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_62
Code example
    /* AT86RF231::[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 holds the ED value for the currently received frame.

Note:
If the transceiver is in the RX_AACK mode, the register RG_PHY_ED_LEVEL can be read immediately after interrupt TRX_IRQ_AMI or tReadED after the interrupt TRX_IRQ_RX_START.
inline_mscgraph_63
Code example
    /* AT86RF231::[RX_ACTIVE] */
    delay(tPSDU);
    ed = trx_reg_read(RG_PHY_ED_LEVEL);

Generated on Mon Jan 12 18:32:17 2009 for SWPM AT86RF231 by  doxygen 1.5.2