PHY Limitations and Timing Optimization#
Supported profiles#
Connect supports a wide range of radio configurations, including pre-configured and customized PHYs. The pre-configured PHYs are under the following profiles:
Connect Profile
Connect OFDM Profile
Long Range Profile
Under these profiles, any customization is supported by Connect. Note, however, that using the radio configurator requires basic knowledge of digital modulations. It is possible to misconfigure modulation parameters to the level where communication might be impossible.
Base Profile#
The Base profile allows the widest configuration options. However, Connect is only compatible with the IEEE 802.15.4 frame configuration. For the modulations available in the Base Profile, Connect only supports 1 Byte PHR frame configurations. To set this up, follow these settings:
Check Header Enable
Set Header Size to 1
Set Frame Length Encoding to VARIABLE_LENGTH
Set Frame Bit Endian to LSB_FIRST
Check Length Includes CRC Bytes
Set Minimum Length to 0
Set Maximum Length to 127
Set Variable Length Bit Size to 7
Set Variable Frame Length Adjust to 0
Set Variable Length Bit Endian to LSB_FIRST
Set Variable Length Bit Location to 0
The frame setting also requires a 2 Byte long CRC, so make sure to select a 2 Byte long CRC Polynomial.
Although Connect can handle 2 Byte PHR and the PHR required for OFDM, those settings can only be activated by selecting a PHY from the Connect profiles.
OFDM Settings#
The Connect OFDM PHYs are essentially same as Wi-SUN OFDM PHYs. However, without the limitation of the Wi-SUN spec, we allow changing the channel map and carrier frequency.
OFDM bitrate depends on bandwidth and MCS (modulation coding scheme). The
bandwidth can be configured on the radio configurator, while MCS can be changed
run-time, with the emberOfdmSetMcs()
API. The default MCS is 0.
The available bitrates in kb/s, depending on bandwidth and MCS:
0.2 MHz | 0.4 MHz | 0.8 MHz | 1.2 MHz | |
---|---|---|---|---|
MCS=0 | 12.5 | 25 | 50 | 100 |
MCS=1 | 25 | 50 | 100 | 200 |
MCS=2 | 50 | 100 | 200 | 400 |
MCS=3 | 100 | 200 | 400 | 800 |
MCS=4 | 150 | 300 | 600 | 1200 |
MCS=5 | 200 | 400 | 800 | 1600 |
MCS=6 | 300 | 600 | 1200 | 2400 |
Multi-PHY Considerations#
Connect has limited support for the Multi-PHY capabilities of EFR32. Channel-based Multi-PHY (i.e., configuration changes are applied by changing the channel) is fully supported. However, Connect always loads the first protocol in a protocol-based Multi-PHY configuration. For more details on this term, see AN1253 (PDF).
Optimizing Connect for a PHY#
Although Connect is set up to be usable with a wide range of PHYs, there are certain features that depend on the PHY. These are usually configured conservatively, so it will probably work with most configurations, but not all. Furthermore, even if it works, it might be necessary to optimize these parameters for more effective operation.
CSMA/CA#
The default configuration in Connect follows the recommendation from IEEE
802.15.4. All timing parameters are symbolrate dependent, while the threshold is
-65dBm. All of the parameters can be changed via emberSetMacParams()
. These
parameters very rarely need modification. Perhaps, on a very low symbolrate, it
is worth setting an overall timout via csmaTimeout
.
Turnaround Time and Acknowledgement Timeout#
Turnaround time (delay between received packet and transmitted acknowledgement) in Connect is not configurable; it is always 12 symbol time.
Acknowledgement timeout by default is 25ms. This is much more than most PHY
needs. Turnaround time + acknowledgement frame transmission time should be
enough in theory. This can be tuned via emberSetMacParams()
, with the
ackTimeout
argument.
Note though that in practice, optimizing the timeout doesn't improve efficiency much. The timeout only blocks the stack to transmit another packet while waiting on the acknowledgement.
Active Scan Duration#
Active scan is used when a device joins a network. The joining device sends a beacon request, and waits a predefined duration for beacons of the joinable devices. This is the active scan duration, which is 960*2^5=30720 symbol time by default. This is however way too much for low bitrate; e.g. at 9.6kbps, this results in 3.2s.
This can be configured via emberSetActiveScanDuration()
. The beacons are
transmitted with a 50ms jitter after the beacon request frame (with additional
delay caused by CSMA/CA).