Radio Control Layer (RCL)
|
The RCL component supports 3-wire coexistence with other RF devices (typically a WiFi device). The interface can also be 1-wire or 2-wire by using only a subset of the signals. The RCL supports a client role for the coexistence interface and assumes connection with a device implementing the host role.
The three signals used are:
An example diagram with some timing definitions is shown below:
The timing requirements for the module are listed in the table below. T1 and T2 are configurable, while the remaining timing will be within the limits, or requires that external signaling is within the limits.
Parameter | Minimal (µs) | Maximal (µs) | Default (µs) |
---|---|---|---|
T1 | 90 | 150 | 120 |
T2 | 01 | 30 | 20 |
T3 | 502 | T1 − T2 | - |
T4 | 0 | Tidle3 | - |
T5 | 0 | 25 | - |
1 A non-zero time needs to be at least 3 µs
2 In practice, much lower values will work, down to around 1 µs
3 Note that if the LNA enable signal is used to see Rx activity, it is deasserted some microseconds after the end of Rx
The Coexistence feature can be enabled using SysConfig. When the RCL module is added, the checkbox Enable RF Coexistence can be checked to enable coexistence.
The signals used is selected using the Coex Mode dropdown. This will decide which of the signals are used. The signals can be mapped to IO pins using the PinMux box.
The RF Coexistence Configuration box holds parameters to be set. The signal levels can be selected for each signal; by default, REQUEST and PRIORITY are active high, and GRANT is active low (low means grant given). This is as shown in the figure.
The T1 and T2 values can be specified using the Coex RF Activity Latency Time and Priority Indication Time settings, respectively. The default values are given in the table. A value of 0 for T2 is achieved by deselecting Enable Priority Indication.
If Coex Configuration Changeable is checked, the parameters may be changed at runtime, using code as shown below. If unchecked the parameters are constants. This may give code size savings.
The parameters should only be modified when no RCL command is running.
RCL commands that support coexistence will have have a coexControl
field of the type RCL_Command_CoexControl. This field enables and controls the coexistence feature for each command.
grantEnable
is 1, the GRANT pin is used, provided it was configured. Otherwise, the GRANT signal is ignoredrequestPriorityEnable
is 1, the REQUEST and PRIORITY pins are used if configured. To use only one of these pins (normally REQUEST), the other should not be configured. Otherwise, these pins will stay at zero level. If the pins are not configured, the field is ignored.priority
field tells the priority signaled on the PRIORITY line for T2 µs after rising edge on REQUEST.rxMode
field tells how the REQUEST signal is treated during Rx. Details of this operation depends on the command.If enabled, the REQUEST signal will be asserted by the radio when needed. In all cases, it will be asserted during Tx. In some cases, it will also be asserted under Rx. This is the case if coexControl.rxMode
is RCL_CoexRxMode_AlwaysRequest, and under some circumstances also when it is RCL_CoexRxMode_RequestOnPacket.
At a positive edge of REQUEST, the PRIORITY signal will tell the priority of the request for the time T2 (if T2 is 0, this is not done). The priority is interpreted by the coexistence host. High priority is signaled with a high output level. After this, the PRIORITY signal changes its role and signals whether the radio is doing Tx or Rx; a high signal means Tx. When REQUEST is low, PRIORITY is also always low.
The GRANT input signal should be sent by the coexistence host to indicate if the client is allowed to do RF operations. The RCL implementation only checks the GRANT signal when doing Tx. It will check that the signal is low (meaning grant given) before starting to output any Tx power and constantly during transmission. If the signal changes to high (grant not given), transmission will stop as soon as possible. This situation is signaled to the user in one of two ways:
The way of signaling in use depends on the situation and is described for each command.
NOTE: Currently, the only command that supports coexistence is RCL_CMD_IEEE_RX_TX.
Coexistence is supported with RCL_CMD_IEEE_RX_TX.
If REQUEST is configured, it will be asserted in the following situations:
coexControl.rxMode
is RCL_CoexRxMode_AlwaysRequest, it is asserted for the entire duration of the command.coexControl.rxMode
is RCL_CoexRxMode_RequestOnPacket, it is asserted in the following cases:The PRIORITY signal behaves as described above. A Tx action may have a different priority than the command it belongs to. The priority of the Tx action is set in the coexPriority
field of the TX action struct (RCL_CmdIeee_TxAction_t). If this priority is different from the priority of the command, the updated priority will be used during transmission and ACK reception. Note that if coexControl.rxMode
is RCL_CoexRxMode_AlwaysRequest, the REQUEST signal will go low and high again in order for the priority to be signaled. There will then also be a T1 wait time before transmission of the frame. REQUEST will also go low and high again after the Tx action is done in order to set the original priority before continuing.
Note that if coexControl.rxMode
is RCL_CoexRxMode_RequestOnPacket, REQUEST will not be asserted during CCA. If this is required, it is recommended to do the following procedure:
coexControl
should be set with rxMode
as RCL_CoexRxMode_AlwaysRequest and priority
as the same priority as in the Tx action. The Tx action should have endCmdWhenDone
set.coexControl
.The GRANT signal is checked before and during transmission of a frame using a Tx action or an ACK frame. If grant is denied (from start of transmission or during the frame) for a frame transmitted with a Tx action, the Tx action will end with RCL_CommandStatus_CoexNoGrant as the status. If grant is denied for an ACK (Enh-ACK or Imm-Ack) transmitted in response to a received frame, the event RCL_EventCoexNoTx is asserted, and the command continues with Rx.