Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions boards/shields/nrf7002eb2/Kconfig.shield
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2025 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config SHIELD_NRF7002EB2
def_bool $(shields_list_contains,nrf7002eb2)

config SHIELD_NRF7002EB2_NRF7001
def_bool $(shields_list_contains,nrf7002eb2_nrf7001)

config SHIELD_NRF7002EB2_NRF7000
def_bool $(shields_list_contains,nrf7002eb2_nrf7000)

config SHIELD_NRF7002EB2_COEX
def_bool $(shields_list_contains,nrf7002eb2_coex)
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

#include "../nrf7002eb2_gpio_pins_1.dtsi"

/ {
chosen {
zephyr,wifi = &wlan0;
zephyr,console = &uart30;
zephyr,shell-uart = &uart30;
zephyr,uart-mcumgr = &uart30;
zephyr,bt-mon-uart = &uart30;
zephyr,bt-c2h-uart = &uart30;
};
};

&pinctrl {
spi22_default: spi22_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 11)>,
<NRF_PSEL(SPIM_MISO, 1, 7)>,
<NRF_PSEL(SPIM_MOSI, 1, 6)>;
bias-pull-down;
};
};

spi22_sleep: spi22_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 11)>,
<NRF_PSEL(SPIM_MISO, 1, 7)>,
<NRF_PSEL(SPIM_MOSI, 1, 6)>;
bias-pull-down;
low-power-enable;
};
};
};

&spi22 {
cs-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&spi22_default>;
pinctrl-1 = <&spi22_sleep>;
pinctrl-names = "default", "sleep";
};

&uart20 {
status = "disabled";
};

&uart30 {
status = "okay";
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

#include "../nrf7002eb2_gpio_pins_2.dtsi"

/ {
chosen {
zephyr,wifi = &wlan0;
zephyr,console = &uart30;
zephyr,shell-uart = &uart30;
zephyr,uart-mcumgr = &uart30;
zephyr,bt-mon-uart = &uart30;
zephyr,bt-c2h-uart = &uart30;
};

buttons {
/delete-node/ button_3;
};

aliases {
/delete-property/ sw3;
};
};

&gpio3 {
status = "okay";
};

&pinctrl {
spi22_default: spi22_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 3, 3)>,
<NRF_PSEL(SPIM_MISO, 3, 1)>,
<NRF_PSEL(SPIM_MOSI, 3, 0)>;
bias-pull-down;
};
};

spi22_sleep: spi22_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 3, 3)>,
<NRF_PSEL(SPIM_MISO, 3, 1)>,
<NRF_PSEL(SPIM_MOSI, 3, 0)>;
bias-pull-down;
low-power-enable;
};
};

uart30_default: uart30_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 6)>;
};

group2 {
psels = <NRF_PSEL(UART_RX, 0, 7)>;
bias-pull-up;
};
};

uart30_sleep: uart30_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 6)>,
<NRF_PSEL(UART_RX, 0, 7)>;
low-power-enable;
};
};
};

&spi22 {
status = "okay";
cs-gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&spi22_default>;
pinctrl-1 = <&spi22_sleep>;
pinctrl-names = "default", "sleep";
};

/* uart20 has pin conflicts with EB-II shield hence disabling that
* and enabling uart30 as console port.
*/
&uart20 {
status = "disabled";
};

&uart30 {
status = "okay";
};
72 changes: 72 additions & 0 deletions boards/shields/nrf7002eb2/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
.. _nrf7002eb2:

nRF7002 EB II
#############

Overview
********

The nRF7002 EB II is a versatile evaluation kit in the form of a thumbstick shield which connects to
compatible Nordic host boards using the Nordic edge-connector.

The nRF7002 EB II unlocks low-power Wi-Fi 6 capabilities for your host device. It supports dual-band Wi-Fi
2.4GHz and 5GHz, and is based on the nRF7002 SoC. The shield also supports nRF7001 and nRF7000 SoCs
through variant overlays.
Seamlessly connect to Wi-Fi networks and leverage Wi-Fi-based locationing, enabling advanced
features such as SSID sniffing of local Wi-Fi hubs.

.. figure:: nrf7002eb2.jpg
:alt: nRF7002 EB II
:align: center

nRF7002 EB II

Requirements
************

The nRF7002 EB II board is designed to fit straight into a Nordic edge-connector and uses SPI as the
communication interface. Any host board that supports the Nordic edge-connector can be used with
the nRF7002 EB II.

Prerequisites
-------------

The nRF70 driver requires firmware binary blobs for Wi-Fi operation. Run the command
below to retrieve those files.

.. code-block:: console

west update
west blobs fetch nrf_wifi

Usage
*****

The shield can be used in any application by setting ``--shield nrf7002eb2`` when invoking ``west build``.

Shield Variants
***************

The nRF7002 EB II has several variants to support different nRF70 SoCs and features:

- ``nrf7002eb2``: The default variant using the nRF7002 SoC.
- ``nrf7002eb2_nrf7001``: Variant using the nRF7001 SoC.
- ``nrf7002eb2_nrf7000``: Variant using the nRF7000 SoC.
- ``nrf7002eb2_coex``: Variant which includes the COEX pins. These pins are not routed to the
edge-connector on some boards, like earlier revisions of the Thingy53 than v1.0.0.

SR Co-existence
***************

The nRF7002 EB II supports SR co-existence provided the host board supports it. The SR co-existence
pins are connected to the host board's GPIO pins.

Two Kconfig options are available to enable SR co-existence:

- :kconfig:option:`CONFIG_NRF70_SR_COEX`: Enables SR co-existence.
- :kconfig:option:`CONFIG_NRF70_SR_COEX_RF_SWITCH`: Control SR side RF switch.

References
**********

- `Developing with nRF7002 EB II <https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/app_dev/device_guides/nrf70/nrf7002eb2_dev_guide.html>`_
24 changes: 24 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
chosen {
zephyr,wifi = &wlan0;
};
};

&wifi_spi {
status = "okay";

nrf70: nrf7002-spi@0 {
compatible = "nordic,nrf7002-spi";
status = "okay";

/* Include common nRF70 overlays */
#include "nrf7002eb2_common.dtsi"
#include "nrf7002eb2_common_5g.dtsi"
};
};
15 changes: 15 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_coex.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
nrf_radio_coex: coex {
compatible = "nordic,nrf7002-coex";
status = "okay";
status0-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
req-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
grant-gpios = <&gpio1 7 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>;
};
};
20 changes: 20 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_common.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <freq.h>

/* Common assignments for nRF70 EB-II shield */
reg = <0>;
spi-max-frequency = <DT_FREQ_M(8)>;

/* Maximum TX power limits for 2.4 GHz */
wifi-max-tx-pwr-2g-dsss = <21>;
wifi-max-tx-pwr-2g-mcs0 = <16>;
wifi-max-tx-pwr-2g-mcs7 = <16>;

/* List of interfaces */
wlan0: wlan0 {
compatible = "nordic,wlan";
};
12 changes: 12 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_common_5g.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

wifi-max-tx-pwr-5g-low-mcs0 = <13>;
wifi-max-tx-pwr-5g-low-mcs7 = <13>;
wifi-max-tx-pwr-5g-mid-mcs0 = <13>;
wifi-max-tx-pwr-5g-mid-mcs7 = <13>;
wifi-max-tx-pwr-5g-high-mcs0 = <12>;
wifi-max-tx-pwr-5g-high-mcs7 = <12>;
25 changes: 25 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_1.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
nrf_radio_coex: coex {
compatible = "nordic,nrf7002-coex";
status = "disabled";
status0-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
req-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
grant-gpios = <&gpio1 12 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>;
};
};

&nrf70 {
iovdd-ctrl-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
bucken-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
host-irq-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
};

&gpio1 {
status = "okay";
};
15 changes: 15 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_2.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

&nrf70 {
iovdd-ctrl-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
bucken-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
host-irq-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
};

&gpio1 {
status = "okay";
};
24 changes: 24 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_nrf7000.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
chosen {
zephyr,wifi = &wlan0;
};
};

&wifi_spi {
status = "okay";

nrf70: nrf7000-spi@0 {
compatible = "nordic,nrf7000-spi";
status = "okay";

/* Include common nRF70 overlays */
#include "nrf7002eb2_common.dtsi"
#include "nrf7002eb2_common_5g.dtsi"
};
};
23 changes: 23 additions & 0 deletions boards/shields/nrf7002eb2/nrf7002eb2_nrf7001.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright (c) 2025 Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
chosen {
zephyr,wifi = &wlan0;
};
};

&wifi_spi {
status = "okay";

nrf70: nrf7001-spi@0 {
compatible = "nordic,nrf7001-spi";
status = "okay";

/* Include common nRF70 overlays */
#include "nrf7002eb2_common.dtsi"
};
};