Testing Modes#

Packet Error Rate Testing#

RAILtest can be used to determine the packet error rate (PER) for a given setup. To set up this test, a piece of test equipment needs to be configured to send a packet on the rising edge of a GPIO. The specific EFR32 pin and port to be used are identified by the defines PER_PIN and PER_PORT (RAILtest 2.8) or defines SL_RAIL_TEST_PER_PIN and SL_RAIL_TEST_PER_PORT (RAILtest 2.9). perRx 100 10000 configures the Packet Error Rate test to send 100 packets, waiting 10000 µs between each packet. At the end of the test, the app provides an output indicating that Per mode has finished, and the statistics on the test can be recovered with perStatus and status. Calling perRx 0 0 cancels an ongoing test, and calling perRx has the same effect as calling resetCounters.

Bit Error Rate Testing#

The EFR32 hardware can enter bit error rate (BER) receive mode for diagnostic purposes. In BER mode, the chip expects to receive a PN9 (x^9 + x^5 + 1) transmission. To run the BER test successfully, a radio configuration specific to BER mode must be generated by the radio configurator.

Use the setBerConfig command to specify how many bytes to receive in BER receive mode. The maximum number of bytes is 536870911. Specifying 0 or a number greater than the maximum possible value automatically configures the BER test to receive the maximum number of bytes for testing.

Use the berRx command to enter or exit BER receive mode. If the test is allowed to run to completion, there is no need to exit BER receive mode.

Use the berStatus command to query for test statistics during or after a test. The statistics are reset when setBerConfig is run or when berRx 1 is run. The statistics include:

  • BitsToTest (total bits to be tested)

  • BitsTested (the number of bits already received and tested)

  • PercentDone (percentage of how many configured bytes have been received)

  • RSSI (an instantaneous RSSI value corresponding to the last byte received)

  • BitErrors (the number of received bits determined to be in error)

  • PercentBitError (percentage of bit errors to bits tested)

Some examples:

> setberconfig 100000

> berrx 1

> berstatus
{{(berStatus)}{BitsToTest:800000}{BitsTested:0}{PercentDone:0.00}
{RSSI:0}{BitErrors:0}{PercentBitError:0.00}}

// PN9 transmission enabled here

> berstatus
{{(berStatus)}{BitsToTest:800000}{BitsTested:121312}{PercentDone:15.16}
{RSSI:-23}{BitErrors:0}{PercentBitError:0.00}}

> berstatus
{{(berStatus)}{BitsToTest:800000}{BitsTested:800000}{PercentDone:100.00}
{RSSI:-24}{BitErrors:0}{PercentBitError:0.00}}

> berrx 1

> berstatus
{{(berStatus)}{BitsToTest:800000}{BitsTested:363936}{PercentDone:45.49}
{RSSI:-23}{BitErrors:0}{PercentBitError:0.00}}

> setberconfig 1000000

> berrx 1

> berstatus
{{(berStatus)}{BitsToTest:8000000}{BitsTested:888672}{PercentDone:11.11}
{RSSI:-23}{BitErrors:0}{PercentBitError:0.00}}

// PN9 transmission disabled here

> berstatus
{{(berStatus)}{BitsToTest:8000000}{BitsTested:4418528}{PercentDone:55.23}
{RSSI:-96}{BitErrors:960478}{PercentBitError:21.74}}

> berstatus
{{(berStatus)}{BitsToTest:8000000}{BitsTested:8000000}{PercentDone:100.00}
{RSSI:-97}{BitErrors:2752908}{PercentBitError:34.41}}