Enabling GPIO mode support for nRF21540
The nRF21540 device is a range extender that you can use with nRF52 and nRF53 Series devices. The nRF21540 GPIO mode implementation of FEM is compatible with the nRF21540 device and implements the 3-pin PA/LNA interface.
The nRF Connect SDK provides code that configures FEM based on devicetree (DTS) and Kconfig information using the Multiprotocol Service Layer (MPSL) library.
The FEM hardware description in the application’s devicetree file is an essential part of the configuration.
To enable FEM support, an nrf_radio_fem
node must be present in the application’s devicetree file.
The node can be provided by the devicetree file of the target board, by an overlay file, or through the SHIELD CMake variable (see Providing CMake options).
See Devicetree Guide for more information about the DTS data structure, and Devicetree versus Kconfig for information about differences between DTS and Kconfig.
Note
See also Optional FEM properties for nRF21540 GPIO and GPIO+SPI when enabling support for nRF21540.
In the naming convention used in the API of the MPSL library, the functionalities designated as
PA
andLNA
apply to thetx-en-gpios
andrx-en-gpios
pins listed below, respectively.
To use nRF21540 in GPIO mode, complete the following steps:
Add the following node in the devicetree file:
/ { nrf_radio_fem: name_of_fem_node { compatible = "nordic,nrf21540-fem"; tx-en-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; rx-en-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>; pdn-gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; }; };
Optionally replace the node name
name_of_fem_node
.Replace the pin numbers provided for each of the required properties:
tx-en-gpios
- GPIO characteristic of the device that controls theTX_EN
signal of nRF21540.rx-en-gpios
- GPIO characteristic of the device that controls theRX_EN
signal of nRF21540.pdn-gpios
- GPIO characteristic of the device that controls thePDN
signal of nRF21540.
These properties correspond to
TX_EN
,RX_EN
, andPDN
pins of nRF21540 that are supported by software FEM.Type
phandle-array
is used here, which is common in Zephyr’s devicetree to describe GPIO signals. The first element&gpio0
refers to the GPIO port (“port 0” has been selected in the example shown). The second element is the pin number on that port. The last element must beGPIO_ACTIVE_HIGH
for nRF21540, but for a different FEM module you can useGPIO_ACTIVE_LOW
.The state of the remaining control pins should be set in other ways and according to nRF21540 Product Specification.
On nRF53 devices, you must also apply the same devicetree node mentioned in step 1 to the network core. To do so, apply the overlay to the correct network core child image by creating an overlay file named
child_image/*childImageName*.overlay
in your application directory, for examplechild_image/multiprotocol_rpmsg.overlay
.The
*childImageName*
string must be one of the following values:multiprotocol_rpmsg
for multiprotocol applications having support for both 802.15.4 and Bluetooth.802154_rpmsg
for applications having support for 802.15.4, but not for Bluetooth.hci_ipc
for application having support for Bluetooth, but not for 802.15.4.
Note
This step is not needed when testing with Bluetooth: Direct Test Mode and Radio test (short-range) on the nRF53 Series devices.