Wi-Fi Coexistence with Other 2.4 GHz Radio Protocols
This document describes the impact of 2.4 GHz radio protocols on Wi-Fi and methods to improve Coexistence with these protocols. These techniques are applicable to the WF(M)200 Wi-Fi transceiver and the WGM160P Wi-Fi module . First, design considerations to improve Coexistence without direct interaction between 2.4 GHz radios and Silicon Labs Wi-Fi solutions are described. Next, Silicon Labs Packet Traffic Arbitration (PTA) support to coordinate 2.4 GHz RF traffic for co-located 2.4 GHz radios and Silicon Labs Wi-Fi solutions is described.
This document applies for both WF200 and WFM200S. For simplicity, both devices are referred to as WF(M)200. WGM160P embeds the WF200 Wi-Fi solution and is by extension affected by the document.
Introduction
The 2.4 GHz ISM (Industrial Scientific and Medical) band supports Wi-Fi (IEEE 802.11b/g/n), Zigbee/Silicon Labs Thread (IEEE 802.15.4), Bluetooth®, and Bluetooth low energy. The simultaneous and co-located operation of these different 2.4 GHz radio standards can degrade performance of one or more of the radio protocols. To improve interference robustness , each of the 2.4 GHz ISM radio standards support some level of collision avoidance and/or message retry capability.
This document covers the impact of 2.4 GHz radio protocols on a Wi-Fi solution and methods to improve coexistence with those protocols on the following Silicon Labs solutions:
- WF200 Wi-Fi transceiver
- WFM200S Wi-Fi transceiver module
- WGM160P Wi-Fi application module
The document describes the initial 2.4 GHz Coexistence problematic and solutions to work around challenges brought up by more and more complex designs.
- Radio Protocols Impact on Wi-Fi describes the initial issue related to designs incorporating several 2.4 GHz radio protocols.
- Unmanaged Coexistence describes design considerations to improve coexistence without direct interaction between Wi-Fi and the other 2.4 GHz radios.
- Managed Coexistence describes Silicon Labs PTA (Packet Traffic Arbitration) support to coordinate 2.4 GHz RF traffic for co-located Wi-Fi and 2.4 GHz radios.
Radio Protocols Impact on Wi-Fi
World-wide, Wi-Fi (IEEE 802.11b/g/n) supports up to 14 overlapping 20/22MHz bandwidth channels across the 2.4 GHz ISM band with transmit power levels up to +30dBm. Bluetooth supports 40 non-overlapping channels at 2 MHz spacing with transmit power levels up to +20dBm (Bluetooth Core Specification v5.0). 2.4 GHz Zigbee and Thread (based on IEEE 802.15.4) support 16 non-overlapping 2MHz bandwidth channels at 5MHz spacing with transmit powers up to +20dBm. These Wi-Fi, Bluetooth, and Zigbee/Thread channel map-pings are shown in the following Figure.
2.4 GHz Channel Map
Actual channels available vary by country . For example, in Japan, Wi-Fi channels 1 through 14 are available when in Europe only Wi-Fi channels 1 through 13 are allowed. Finally, in the USA, the Wi-Fi channels are restricted between 1 and 11.
Unmanaged Coexistence
The unmanaged coexistence recommendations that follow provide guidance on how to maximize the WF(M)200 message success with nearby 2.4 GHz radio protocols.
Implement Frequency Separation
If possible, maximize the frequency separation between channels used by the WF(M)200 and the CoEx device. If the Wi-Fi and 2.4 GHz radios are implemented with a common host (MCU controlling both radios), the host should attempt to maximize the frequency separation. Acting as a station, the WF(M)200 must comply with the channel used by the access point it is connected to. Acting as an AP (Access Point), the WF(M)200 host selects the channel.
Similarly, most of the 2.4 GHz protocols can be restricted on the channels used. BLE uses a frequency channel hopping algorithm. When the device is master, it can specify a channel map to avoid the channels used by the WF(M)200 Wi-Fi interface.
Use Retry Mechanisms
If the radio protocol allows it, maximize the retry attempts to improve the individual message’s success rate. However, under high-interference conditions, message latency increases and in a mesh network scenario, there is a risk of flooding the network with identical messages.
Hardware Design Considerations
Minimizing the interfering energy seen by the Wi-Fi RF input port improves the Wi-Fi receive range. This can be achieved by:
- Increasing the distance between Wi-Fi antenna and interfering antenna. In open-space, far-field, power received is proportional to 1/R2, where R is the distance between antennas.
- Taking advantage of antenna directionality . For example, a monopole Wi-Fi antenna provides a null along the axis of the antenna, which can be directed towards the main lobe of the interfering antenna.
- Taking advantage of linear antenna cross polarization between horizontal and vertical plane. For example, a monopole Wi-Fi antenna which radiates horizontally has much lower gain in vertical polarization to be used by the interfering antenna.
Managed Coexistence
The market trends of higher Wi-Fi transmit power, higher Wi-Fi throughput, and integration of Wi-Fi and other 2.4 GHz radio protocols into the same device has the following impacts.
Advantages :
- Host can implement frequency separation between Wi-Fi and CoEx.
- Co-located Wi-Fi and CoEx radios can communicate pending and/or in-progress activity on 2.4 GHz ISM transmits and receives.
Disadvantages :
- Higher Wi-Fi transmit power requires greater antenna isolation.
- Higher Wi-Fi throughput results in higher Wi-Fi duty cycle.
- Antenna isolation is usually limited by the size of the product (only 15-20dB isolation is not unusual).
Managed Coexistence takes advantage of communication between the co-located Wi-Fi and CoEx radios to coordinate each radio’s access to the 2.4 GHz ISM band for transmit and receive.
Warning : The current PTA support for the WF(M)200 is limited to specific use cases. It is recommended to enable the PTA only in station mode . In Wi-Fi access point or simultaneous mode (acting as station and AP), enabling/using the PTA is not recommended .
PTA Modes
Several options offer various benefits and trade-offs between ease-of-use and performances. There are 5 PTA hardware modes which are defined by the number of wires used between the RF devices:
- 1-Wire CoEx (i.e., the CoEx radio is master)
- 1-Wire WLAN (i.e., the WLAN is master)
- 2-Wire
- 3-Wire
- 4-Wire
- Combined mode applying to 3-Wire and 4-Wire modes
Each mode and the GPIOs usage is explained in detail below.
1-Wire Coex master PTA
In 1-Wire CoEx master PTA , the CoEx device asserts a REQUEST signal when the CoEx radio wants to transmit or receive. When REQUEST is asserted, the Wi-Fi radio can transmit or receive. This mode does not allow the PTA block to grant the 2.4 GHz ISM to the CoEx and is not recommended.
1-Wire WLAN master PTA
In 1-Wire WLAN master PTA , the Wi-Fi/PTA device asserts a GRANT signal when Wi-Fi is not busy transmitting or receiving. When GRANT is asserted, the CoEx radio can transmit or receive. This mode does not allow the CoEx radio to request the 2.4 GHz ISM and is not recommended.
2-Wire PTA
In 2-Wire PTA , the REQUEST signal is added, allowing the CoEx radio to request the 2.4 GHz ISM band. The Wi-Fi/PTA device internally controls the prioritization between CoEx and Wi-Fi interfaces. On a conflict, the PTA can choose to either GRANT the CoEx or Wi-Fi.
3-Wire PTA
In 3-Wire PTA , the PRIORITY signal is added, allowing the CoEx radio to signify a high- or low-priority message is either being received or transmitted. The Wi-Fi/PTA device compares this external priority request against the internal Wi-Fi priority, which may be high/low and can choose to either GRANT the CoEx or Wi-Fi.
4-Wire PTA
In 4-Wire PTA , the FREQ signal is added, allowing the CoEx radio to signify an “in-band” or “out-of-band” message is either being received or transmitted. The channel used by the WLAN interface needs to be shared with the CoEx device to allow it to assert or not FREQ. It allows the two RF devices to receive simultaneously but never to send at the same time. Thus the 4-Wire only makes sense when the “combined” / “simultaneous RX access” mode is enabled.
3/4-Wire PTA Combined
The “combined” / “simultaneous RX access” mode allows the PTA to grant simultaneously the RX requests of the CoEx device and the Wi-Fi. It can be applied to the 3-Wire and is mandatory in the 4-Wire PTA modes. When enabled, the PTA samples over the request duration the PRIORITY signal to update the directionality information. If both the CoEx and Wi-Fi requests are RX and the combined mode is enabled, the PTA grants both requests.
PTA Support Options
This section describes the APIs available to configure and use the PTA feature . In addition, it goes over how to configure the PTA using the FMAC driver on microcontroller hosts and the LMAC driver on Linux hosts.
PTA GPIOs Configuration through the PDS
The PDS (Platform Data Set) configures the WF(M)200 hardware. This configuration is sent during the WF(M)200 initialization phase. To learn more about the PDS overall process, refer to the UG404: WF(M)200 Configuration Guide with PDS .
In the PTA context, the WF(M)200 PTA GPIOs need to be configured. It is done using the PDS as described in this section. Depending on the PTA mode used, the required GPIOs to enable differ. The GPIOs associated to the PTA modes are indicated in their respective sections.
This configuration step is mandatory at each WF(M)200 power on reset . The PDS configuration is not maintained through the shutdown/reset state. Without this step, the PTA GPIOs are not functional and none of the signals are going in or out of the WF(M)200.
GRANT Signal GPIO
For PTA modes using the GRANT signal (1-Wire WLAN, 2/3/4-Wire), edit/add the GPIO_PTA_STATUS section in the PROG_PINS_CFG section of the PDS.
GPIO_PTA_TX_CONF: {
SLEW_RATE: 4,
PULL_UP_DOWN: none,
SLEEP_CFG: down, // “down” or “up”, matching “Grant Signal Active Level” setting
PIN_MODE: func, // “func” to enable the PTA GPIO
GPIO_ID: H
},
“SLEEP_CFG” is configured to match the “Grant Signal Active Level” setting (cf. PTA Settings Request, 0<->“down”, 1<->”up”). Thus, when the WF(M)200 is sleeping, the GPIO_PTA_TX_CONF GPIO maintains the level to grant the CoEx requests.
REQUEST Signal GPIO
For PTA modes using the REQUEST signal (1-Wire CoEx, 2/3/4-Wire), edit/add the GPIO_PTA_RF_ACT section in the PROG_PINS_CFG section of the PDS.
GPIO_PTA_RF_ACT: {
SLEW_RATE: 4,
PULL_UP_DOWN: down, // “down” or “up”, matching “Request Signal Active Level” setting
SLEEP_CFG: none,
PIN_MODE: func, // “func” to enable the PTA GPIO
GPIO_ID: I
},
“PULL_UP_DOWN” is configured to match the opposite of the “Request Signal Active Level” setting (cf. PTA Settings Request, 1<->“down”, 0<->”up”). Thus, when the CoEx is sleeping, the GPIO_PTA_RF_ACT GPIO maintains a level where the REQUEST signal is not asserted.
PRIORITY Signal GPIO
For PTA modes using the PRIORITY signal (3/4-Wire), edit/add the GPIO_PTA_TX_CONF section in the PROG_PINS_CFG section of the PDS.
GPIO_PTA_STATUS: {
SLEW_RATE: 4,
PULL_UP_DOWN: none,
SLEEP_CFG: none,
PIN_MODE: func, // “func” to enable the PTA GPIO
GPIO_ID: J
},
FREQ Signal GPIO
For PTA modes using the FREQ signal (4-Wire), edit/add the GPIO_PTA_FREQ section in the PROG_PINS_CFG section of the PDS.
GPIO_PTA_FREQ: {
SLEW_RATE: 4,
PULL_UP_DOWN: none,
SLEEP_CFG: none,
PIN_MODE: func, // “func” to enable the PTA GPIO
GPIO_ID: K
},
Finally, the pull-up/-down resistor and the sleep configuration of each GPIOs can be configured to optimize the application power consumption. Once edited, the PDS file can be compressed using pds_compress.py and used by the application host (cf. UG404: WF(M)200 Configuration Guide with PDS ).
PTA Firmware Requests
The WF(M)200 PTA module relies on three different requests:
PTA Priority Request
The PTA priority request defines the balance used to arbitrate the Wi-Fi and 2.4 GHz radio interfaces. To ease the use of this command, an enumeration is provided (cf. Table below).
PTA priority enumeration | Behavior |
---|---|
PTA_PRIORITY_COEX_MAXIMIZED | Maximizes priority to CoEx, WLAN connection is not ensured |
PTA_PRIORITY_COEX_HIGH | High priority to CoEx, targets low latency to CoEx |
PTA_PRIORITY_BALANCED | Balanced PTA arbitration, WLAN acknowledge receptions are protected |
PTA_PRIORITY_WLAN_HIGH | High priority to WLAN, protects WLAN transmissions |
PTA_PRIORITY_WLAN_MAXIMIZED | Maximizes priority to WLAN |
Those enumerations should cover most of the common use cases. The PTA priority level applies differently depending on the PTA mode used. The PTA priority request can only be sent when the PTA mechanism is turned off (cf. PTA state request ). If the PTA is on, the host must call the PTA state request to turn the PTA off first. It calls the PTA priority request with the update configuration. Finally, the PTA can be turned back on.
After the WF(M)200 initialization, the PTA is by default configured with the PTA_PRIORITY_BALANCED priority. If the PTA priority request is not issued, it keeps this configuration.
PTA Settings Request
The PTA settings request allows the host to configure the PTA mode, the combined mode, the active levels on the PTA signals, define the different timings and quotas. To understand the effect of each settings, refer to Table 5, Figure 7. PTA Signal Chronogram using PTA 3-Wire, and Figure 8. PTA Signal Chronogram using PTA 4-Wire. The PTA settings request must be called prior to calling PTA state request .
The PTA settings request can only be sent when the PTA mechanism is turned off (cf. PTA state request ). If the PTA is on, the host must call the PTA state request to turn the PTA off first. It calls the PTA settings request with the updated configuration. Finally, the PTA can be turn back on.
PTA settings | Comments | Size (bits) | 1-Wire CoEx | 1-Wire WLAN | 2-Wire | 3-Wire | 4-Wire |
---|---|---|---|---|---|---|---|
PTA Mode |
The PTA mode:
- 1 wire WLAN master - 1 wire CoEx master - 2 wires - 3 wires - 4 wires |
8 | x | x | x | x | x |
Request Signal Active Level | Active level on REQUEST signal (PTA_RF_ACT pin), provided by CoEx to request the RF. | 8 | x | x | x | x | |
Priority Signal Active Level | Active level on PRIORITY signal (PTA_STATUS pin), provided by CoEx to set the priority of the request | 8 | x | x | |||
Frequency Signal Active Level | Active level on FREQ signal (PTA_FREQ pin), provided by CoEx when CoEx and WLAN share the same band | 8 | x | ||||
Grant Signal Active Level | Active level on GRANT signal (PTA_TX_CONF pin), generated by PTA to grant the RF access to CoEx | 8 | x | x | x | x | |
CoEx Type | The CoEx type: · Generic · BLE | 8 | |||||
Default Grant State | The state of the GRANT signal before arbitration at ‘Grant Valid Time’ | 8 | x | x | x | x | |
Simultaneous RX Access | Boolean to allow both CoEx and WLAN to receive concurrently, also named Combined mode | 8 | x | x mandatory | |||
Priority Sampling Time | The time (in µs) from the CoEx request to the sampling of the priority on PRIORITY signal (1 to 31 µs) | 8 | x | x | |||
TX RX Sampling Time | The time (in µs) from the CoEx request to the sampling of the directionality on PRIORITY signal (Priority Sampling Time to 63 µs) | 8 | (x) | x | |||
Frequency Sampling Time | The time (in µs) from the CoEx request to the sampling of freq-match information on FREQ signal (1 to 127 µs) | 8 | x | ||||
Grant Valid Time | The time (in µs) from CoEx request to the GRANT signal assertion (MAX(Directionality Sampling Time, Frequency Sampling Time) to 255 µs) | 8 | x | x | |||
FEM Control Time | The time (in µs) from CoEx request to the control of FEM (Grant Valid Time to 255 µs) | 8 | x | x | |||
First Slot Time | The time (in µs) from the CoEx request to the beginning of reception or transmission (Grant Valid Time to 255 µs) | 8 | (x) | x | |||
Periodic TX RX Sampling Time | The period (in µs) between each directionality samplings on PRIORITY signal (1 to 1023 µs). Starts from First Slot Time. | 8 | (x) | x | |||
CoEx Quota | The duration (in µs) for which RF is granted to CoEx before it is passed back to WLAN | 16 | x | x | |||
WLAN Quota | The duration (in µs) for which RF is granted to WLAN before it is passed back to CoEx | 16 | x | x |
(x) : required if “Simultaneous RX Access”/Combined mode is enabled
Depending on the PTA mode and if the combined mode is enabled, all settings are not applicable. You can refer to the PTA mode columns in the table above to know if a setting applies in a specific PTA mode.
In addition to the information provided in this table, the timings settings are shown on the chronograms below. All the timings have as a reference the CoEx request (t = 0) except for the “Periodic TX RX Sampling Time” which has its reference from “First Slot time”. Rules and links between timings are listed below. If not followed, the WF(M)200 overwrites erroneous/impossible timing settings. The following assertions must be followed:
- Priority Sampling Time < TX RX Sampling Time < Grant Valid Time <= First Slot Time
- Frequency Sampling Time < Grant Valid Time < FEM Control Time
In addition to following the rules above, those timings have also to match the CoEx timings. In the chronograms below, a standard CoEx request is shown and the PTA wires are represented as well as the CoEx TX, CoEx RX, FEM TX and FEM RX signals (FEM implying the WLAN interface).
PTA Signal Chronogram using PTA 3-Wire Combined
3w timings sequence
PTA Signal Chronogram using PTA 4-Wire Combined
4w timings sequence
PTA State Request
The PTA state Request allows the application host to enable or disable the PTA mechanism. It can be dynamically called by the host. The PTA is disabled by default after a WF(M)200 reset.
While the PTA state is on, the two other PTA requests (priority and settings) cannot be issued to the WF(M)200. The host needs to disable the PTA to send those requests.
PTA Software Implementation
Silicon Labs provides two ways to interact with the WF(M)200 Wi-Fi transceiver. A first solution is based on the LMAC API and is meant for powerful application hosts (e.g., Linux hosts) already embedding an Upper MAC layer. The second solution in based on the FMAC API and is designed for memory constrained application hosts (e.g., microcontroller hosts). To access the PTA APIs described in the PTA Firmware Requests section, each solution provides its own interface .
Using the PTA API with the LMAC Driver
The PTA configuration on a Linux host using the LMAC API relies on the Linux driver and a dedicated PTA Python module:
- The Linux driver is available here: https://github.com/SiliconLabs/wfx-linux-driver
- The PTA configuration Python module is available here: https://github.com/SiliconLabs/wfx-common-tools
The first step is to run the Linux driver on your platform, initialize the WF(M)200 and send a PDS with the PTA GPIOs enabled (cf. PTA GPIOs Configuration through the PDS). Finally, use the PTA Python tools to configure the PTA on the WF(M)200. Refer to the associated README.md files to get started with both resources.
Using the PTA API with the FMAC Driver
The PTA configuration on a microcontroller using the FMAC API relies on the Wi-Fi FMAC driver. The FMAC driver is available on a GitHub repository: https://github.com/SiliconLabs/wfx-fullMAC-driver It exposes 3 functions tied with the WF(M)200 firmware APIs:
- sl_wfx_pta_priority() (cf. PTA Priority Request )
- sl_wfx_pta_settings() (cf. PTA Settings Request )
- sl_wfx_pta_state() (cf. PTA State Request )
Those C functions are used by the host application to configure the PTA mechanism. Here are the steps to follow to be able to call those APIs:
- Port the FMAC driver on your microcontroller platform
- Initialize the WF(M)200 using the sl_wfx_init() API
- Configure the PTA with sl_wfx_pta_priority() and sl_wfx_pta_settings()
- Enable the PTA by calling sl_wfx_pta_state()
WF200 Configuration Setup for Different Coexistence Applications
Example 1: WF(M)200 - EFR32 running BLE - 3-Wire PTA - Balanced Priority
In this example, the WF(M)200 PTA is configured to operate with a single BLE EFR32 using 3-Wire PTA mode. The example uses a balanced arbitration between the two radios (i.e., PTA_PRIORITY_BALANCED).
Using the Wi-Fi FMAC Driver
- Use in your application a PDS with the PTA GPIOs functional (cf. PTA GPIOs Configuration through the PDS ).
- Call the sl_wfx_init() function to initialize the FMAC driver and the WF(M)200.
- In this example, the priority is by default at the desired value. No need to call sl_wfx_pta_priority() .
- Call the sl_wfx_pta_settings() function to provide the mandatory settings before enabling the PTA mechanism.
status = sl_wfx_pta_settings(SL_WFX_PTA_3W, //PTA Mode: 3-Wire
SL_WFX_SIGNAL_HIGH, //Request Signal Active Level: high
SL_WFX_SIGNAL_HIGH, //Priority Signal Active Level: high
SL_WFX_SIGNAL_HIGH, //Freq Signal Active Level: not used
SL_WFX_SIGNAL_LOW, //Grant Signal Active Level: low
SL_WFX_COEX_TYPE_BLE, //CoEx type : BLE
SL_WFX_GRANT, //Default Grant State: granted
0, //Simultaneous RX: false
10, //Priority Sampling Time: 10 µs
0, //TX/RX Sampling Time: NA
0, //Freq Sampling Time: NA
72, //Grant Valid Time: 72 µs
140, //FEM Control Time: 140 µs
0, //First Slot Time: NA
0, //Periodic TX/RX Sampling Time: NA
0, //CoEx Quota: NA
0); //WLAN Quota: NA
if(status == SL_STATUS_OK)
{
printf("PTA settings configured\r\n");
}else{
printf("PTA settings command error\r\n");
}
In this example, the PTA settings are configured for a BLE CoEx device connected to 3 PTA wires (Request, Grant, Priority). In this 3-Wire PTA mode, only the Priority sampling, Grant valid and FEM control times apply (respectively 10 µs, 72 µs and 140 µs). Those timings are dependent on the PTA CoEx configuration as well.
- The last step is to enable the PTA by calling sl_wfx_pta_state() function as shown below:
status = sl_wfx_pta_state(SL_WFX_PTA_ON); //Turn the PTA ON
if(status == SL_STATUS_OK)
{
printf("PTA Enabled\r\n");
}else{
printf("PTA Command error\r\n");
}
The PTA mechanism is active and starts granting the CoEx requests if the RF medium is not used by the Wi-Fi interface or the CoEx requests have a higher priority.
Using the Wi-Fi Linux Driver
Similarly, there are the steps to configure the PTA in the configuration 3-Wire PTA mode/balanced priority on a Linux platform.
- Install the driver on your target. The driver is hosted on GitHub .
- Load a PDS with the PTA GPIOs functional (cf. PTA GPIOs Configuration through the PDS ).
- Install Python3 and get the wfx-common-tools on GitHub . Follow the PTA tools readme to set the PTA Python tools up.
- Priority is by default at the desired value (e.g., balanced priority).
- To configure the PTA settings, call the Python line below.
>>> dut.settings('--pta_mode 3w //PTA Mode: 3-Wire
--request_signal_active_level high //Request Signal Active Level: high
--priority_signal_active_level high //Priority Signal Active Level: high
--grant_signal_active_level low //Grant Signal Active Level: low
--coex_type ble //CoEx type : BLE
--default_grant_state grant //Default Grant State: granted
--simultaneous_rx_accesses false //Simultaneous RX: false
--priority_sampling_time 10 //Priority Sampling Time: 10 µs
--grant_valid_time 72 //Grant Valid Time: 72 µs
--fem_control_time 140 //FEM Control Time: 140 µs
')
Below the line to be copy-pasted.
>>> dut.settings('--pta_mode 3w --request_signal_active_level high --priority_signal_active_level high --grant_signal_active_level low --coex_type ble --default_grant_state grant --simultaneous_rx_accesses false --priority_sampling_time 10 --grant_valid_time 72 --fem_control_time 140')
In this example, the PTA settings are configured for a BLE CoEx device connected to 3 PTA wires (Request, Grant, Priority). In this 3-Wire PTA mode, only the Priority sampling, Grant valid and FEM control times apply (respectively 10 µs, 72 µs and 140 µs). Those timings are dependent on the PTA CoEx configuration as well.
-
The last step is to enable the PTA by calling the line below.
>>> dut.state('--state on') //Turn on the PTA
The PTA mechanism is active and starts granting the CoEx requests if the RF medium is not used by the Wi-Fi interface or the CoEx requests have a higher priority.
Example 2: WF(M)200 - EFR32 running ZigBee - 4-Wire PTA - CoEx High Priority
In this example, the WF(M)200 PTA is configured to operate with a single ZigBee EFR32 using 4-Wire PTA mode. The example uses an arbitration favoring the CoEx interface (i.e., PTA_PRIORITY_COEX_HIGH).
Using the Wi-Fi FMAC Driver
It is considered that the configuration steps of "Example 1: WF(M)200 - EFR32 running BLE - 3-Wire PTA - Balanced Priority" have already been applied.
- Call sl_wfx_pta_priority() to set the PTA priority to COEX_HIGH.
status = sl_wfx_pta_priority(SL_WFX_PTA_PRIORITY_COEX_HIGH); //Set PTA priority to COEX_HIGH
if(status == SL_STATUS_OK)
{
printf("PTA priority configured\r\n");
}else{
printf("PTA priority command error\r\n");
}
- Call the sl_wfx_pta_settings() function to provide the mandatory settings before enabling the PTA mechanism.
status = sl_wfx_pta_settings(SL_WFX_PTA_4W, //PTA Mode: 4-Wire
SL_WFX_SIGNAL_HIGH, //Request Signal Active Level: high
SL_WFX_SIGNAL_HIGH, //Priority Signal Active Level: high
SL_WFX_SIGNAL_HIGH, //Freq Signal Active Level: high
SL_WFX_SIGNAL_LOW, //Grant Signal Active Level: low
SL_WFX_COEX_TYPE_GENERIC,//CoEx type : generic
SL_WFX_GRANT, //Default Grant State: granted
1, //Simultaneous RX: true
10, //Priority Sampling Time: 10 µs
15, //TX/RX Sampling Time: 15 µs
15, //Freq Sampling Time: 15 µs
20, //Grant Valid Time: 20 µs
21, //FEM Control Time: 21 µs
20, //First Slot Time: 20 µs
5, //Periodic TX/RX Sampling Time: 5 µs
0, //CoEx Quota: NA
0); //WLAN Quota: NA
if(status == SL_STATUS_OK)
{
printf("PTA settings configured\r\n");
}else{
printf("PTA settings command error\r\n");
}
In this example, the PTA settings are configured for a ZigBee CoEx device connected to the 4 PTA wires (Request, Grant, Priority, Freq). In this 4-Wire PTA mode, all the timing configurations apply. The simultaneous mode is enabled thus the PTA allows both the CoEx and the Wi-Fi to receive at the same time. The PTA is informed by the PRIORITY signal about the CoEx request directionality. In one request, the CoEx directionality can change and affect the PTA arbitration. Settings “TX/RX Sampling Time”, “First Slot Time” and “Periodic TX/RX Sampling Time” are involved in sampling the directionality information on the PRIORITY signal (cf. PTA Settings Requests ).
In addition, the “FEM Control Time” is set as close as possible to the “Grant Valid Time” to allow the ZigBee device to take the RF medium quickly after the PTA has granted a CoEx request. This is motivated by the fact that unlike BLE, the ZigBee protocol requires a CCA (Clear Channel Assessment) period before transmitting. Here again, those timings are dependent on the PTA CoEx configuration as well.
- The last step is to enable the PTA by calling sl_wfx_pta_state() function as shown below:
status = sl_wfx_pta_state(SL_WFX_PTA_ON); //Turn the PTA ON
if(status == SL_STATUS_OK)
{
printf("PTA Enabled\r\n");
}else{
printf("PTA Command error\r\n");
}
The PTA mechanism is active and starts granting the CoEx requests if the RF medium is not used by the Wi-Fi interface or the CoEx requests have a higher priority.
Using the Wi-Fi Linux Driver
The assumption is that the configuration steps of “Example 1: WF(M)200 - EFR32 running BLE - 3-Wire PTA - Balanced Priority” have already been applied.
- To configure the PTA priority to COEX_HIGH priority, call the Python line below.
>>> dut.priority('--priority_mode coex_high') //Set PTA priority to coex_high
- To configure the PTA settings, call the Python line below.
>>> dut.settings('--pta_mode 4w //PTA Mode: 4-Wire
--request_signal_active_level high //Request Signal Active Level: high
--priority_signal_active_level high //Priority Signal Active Level: high
--freq_signal_active_level high //Freq Signal Active Level: high
--grant_signal_active_level low //Grant Signal Active Level: low
--coex_type generic //CoEx type: generic
--default_grant_state grant //Default Grant State: granted
--simultaneous_rx_accesses true //Simultaneous RX: true
--priority_sampling_time 10 //Priority Sampling Time: 10 µs
--tx_rx_sampling_time 15 //TX/RX Sampling Time: 15 µs
--freq_sampling_time 15 //Freq Sampling Time: 15 µs
--grant_valid_time 20 //Grant Valid Time: 72 µs
--fem_control_time 21 //FEM Control Time: 140 µs
--first_slot_time 20 //First Slot Time: 20 µs
--periodic_tx_rx_sampling_time 5 //Periodic TX/RX Sampling Time: 5 µs
')
Below the line to be copy-pasted.
>>> dut.settings('--pta_mode 4w --request_signal_active_level high --priority_signal_active_level high --freq_signal_active_level high --grant_signal_active_level low --coex_type generic --default_grant_state grant --simultaneous_rx_accesses true --priority_sampling_time 10 --tx_rx_sampling_time 15 --freq_sampling_time 15 --grant_valid_time 20 --fem_control_time 21 --first_slot_time 20 --periodic_tx_rx_sampling_time 5')
In this example, the PTA settings are configured for a ZigBee CoEx device connected to the 4 PTA wires (Request, Grant, Priority, Freq). In this 4-Wire PTA mode, all the timing configurations apply. The simultaneous mode is enabled thus the PTA allows both the CoEx and the Wi-Fi to receive at the same time. The PTA is informed by the PRIORITY signal about the CoEx request directionality. In one request, the CoEx directionality can change and affect the PTA arbitration. Settings “TX/RX Sampling Time”, “First Slot Time” and “Periodic TX/RX Sampling Time” are involved in sampling the directionality information on the PRIORITY signal (cf. PTA Settings Requests ).
In addition, the “FEM Control Time” is set as close as possible to the “Grant Valid Time” to allow the ZigBee device to take the RF medium quickly after the PTA has granted a CoEx request. This is motivated by the fact that unlike BLE, the ZigBee protocol requires a CCA (Clear Channel Assessment) period before transmitting. Here again, those timings are dependent on the PTA CoEx configuration as well.
-
The last step is to enable the PTA by calling the line below.
>>> dut.state('--state on') //Turn on the PTA
The PTA mechanism is active and starts granting the CoEx requests if the RF medium is not used by the Wi-Fi interface or the CoEx requests have a higher priority.
Example 3: WF(M)200 - EFR32 running BLE - 2-Wire PTA - WLAN Maximized Priority
In this example, the WF(M)200 PTA is configured to operate with a single BLE EFR32 using 2-Wire PTA mode. The example uses an arbitration maximizing the Wi-Fi access to the RF medium (i.e., PTA_PRIORITY_WLAN_MAXIMIZED).
Using the Wi-Fi FMAC Driver
The assumption is that the configuration steps of “Example 1: WF(M)200 - EFR32 running BLE - 3-Wire PTA - Balanced Priority” have already been applied.
- Call sl_wfx_pta_priority() to set the PTA priority to WLAN_MAXIMIZED.
status = sl_wfx_pta_priority(SL_WFX_PTA_PRIORITY_WLAN_MAXIMIZED); //Set PTA priority to WLAN_MAXIMIZED
if(status == SL_STATUS_OK)
{
printf("PTA priority configured\r\n");
}else{
printf("PTA priority command error\r\n");
}
- Call the sl_wfx_pta_settings() function to provide the mandatory settings before enabling the PTA mechanism.
status = sl_wfx_pta_settings(SL_WFX_PTA_2W, //PTA Mode: 2-Wire
SL_WFX_SIGNAL_HIGH, //Request Signal Active Level: high
SL_WFX_SIGNAL_HIGH, //Priority Signal Active Level: not used
SL_WFX_SIGNAL_HIGH, //Freq Signal Active Level: not used
SL_WFX_SIGNAL_LOW, //Grant Signal Active Level: low
SL_WFX_COEX_TYPE_BLE, //CoEx type : BLE
SL_WFX_GRANT, //Default Grant State: granted
0, //Simultaneous RX: NA
0, //Priority Sampling Time: NA
0, //TX/RX Sampling Time: NA
0, //Freq Sampling Time: NA
0, //Grant Valid Time: NA
0, //FEM Control Time: NA
0, //First Slot Time: NA
0, //Periodic TX/RX Sampling Time: NA
7500, //CoEx Quota: 7500 µs
15000); //WLAN Quota: 15000 µs
if(status == SL_STATUS_OK)
{
printf("PTA settings configured\r\n");
}else{
printf("PTA settings command error\r\n");
}
In this example, the PTA settings are configured for a BLE CoEx device connected to 2 PTA wires (Request, Grant). In this 2-Wire PTA mode, a quota mechanism is used to share the RF medium. If no request is issued by the CoEx device, the Wi-Fi interface has the medium for 15000 µs. After this period, the access is granted to the CoEx for 7500 µs. if a request is issued by the CoEx and no WLAN action is on-going, the PTA allows the CoEx to access the RF medium. In case of a WLAN request, the WLAN request is given priority over an on-going CoEx action and is protected for the action duration.
- The last step is to enable the PTA by calling sl_wfx_pta_state() function as shown below:
status = sl_wfx_pta_state(SL_WFX_PTA_ON); //Turn the PTA ON
if(status == SL_STATUS_OK)
{
printf("PTA Enabled\r\n");
}else{
printf("PTA Command error\r\n");
}
The PTA mechanism is active and starts sharing the RF medium using the quotas provided.
Using the Wi-Fi Linux Driver
The assumption is that the configuration steps of “Example 1: WF(M)200 - EFR32 running BLE - 3-Wire PTA - Balanced Priority” have already been applied.
- To configure the PTA priority to WLAN_MAXIMIZED priority, call the Python line below.
>>> dut.priority('--priority_mode wlan_maximized') //Set PTA priority to wlan_maximized
- To configure the PTA settings, call the Python line below.
>>> dut.settings('--pta_mode 2w //PTA Mode: 2-Wire
--request_signal_active_level high //Request Signal Active Level: high
--grant_signal_active_level low //Grant Signal Active Level: low
--coex_type ble //CoEx type: BLE
--default_grant_state grant //Default Grant State: granted
--coex_quota 7500 //CoEx Quota: 7500 µs
--wlan_quota 15000 //WLAN Quota: 15000 µs
')
Below the line to be copy-pasted.
>>> dut.settings('--pta_mode 2w --request_signal_active_level high --grant_signal_active_level low --coex_type ble --default_grant_state grant --coex_quota 7500 --wlan_quota 15000')
In this example, the PTA settings are configured for a BLE CoEx device connected to 2 PTA wires (Request, Grant). In this 2-Wire PTA mode, a quota mechanism is used to share the RF medium. If no request is issued by the CoEx device, the Wi-Fi interface has the medium for 15000 µs. After this period, the access is granted to the CoEx for 7500 µs. if a request is issued by the CoEx and no WLAN action is on-going, the PTA allows the CoEx to access the RF medium. In case of a WLAN request, the WLAN request is given priority over an on-going CoEx action and is protected for the action duration.
-
The last step is to enable the PTA by calling the line below.
>>> dut.state('--state on') //Turn on the PTA
The PTA mechanism is active and starts sharing the RF medium using the quotas provided.