From 494c8d440b3c3f0c7e406530d3b72eac5bd3e70f Mon Sep 17 00:00:00 2001 From: Bjarki Arge Andreasen Date: Thu, 12 Sep 2024 10:26:37 +0200 Subject: [PATCH 1/2] boards: shields: add nrf7002eb Add board support for the nrf7002eb shield. This shield uses the nordic edge-connector to be compatible with multiple boards. Signed-off-by: Bjarki Arge Andreasen --- boards/shields/nrf7002eb/Kconfig.shield | 8 ++ .../boards/thingy53_nrf5340_cpuapp.overlay | 19 +++++ boards/shields/nrf7002eb/doc/index.rst | 72 ++++++++++++++++++ boards/shields/nrf7002eb/doc/nrf7002eb.jpg | Bin 0 -> 62681 bytes boards/shields/nrf7002eb/nrf7002eb.overlay | 42 ++++++++++ .../shields/nrf7002eb/nrf7002eb_coex.overlay | 13 ++++ 6 files changed, 154 insertions(+) create mode 100644 boards/shields/nrf7002eb/Kconfig.shield create mode 100644 boards/shields/nrf7002eb/boards/thingy53_nrf5340_cpuapp.overlay create mode 100644 boards/shields/nrf7002eb/doc/index.rst create mode 100644 boards/shields/nrf7002eb/doc/nrf7002eb.jpg create mode 100644 boards/shields/nrf7002eb/nrf7002eb.overlay create mode 100644 boards/shields/nrf7002eb/nrf7002eb_coex.overlay diff --git a/boards/shields/nrf7002eb/Kconfig.shield b/boards/shields/nrf7002eb/Kconfig.shield new file mode 100644 index 00000000000000..e369cfe3de4266 --- /dev/null +++ b/boards/shields/nrf7002eb/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2024 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config SHIELD_NRF7002EB + def_bool $(shields_list_contains,nrf7002eb) + +config SHIELD_NRF7002EB_COEX + def_bool $(shields_list_contains,nrf7002eb_coex) diff --git a/boards/shields/nrf7002eb/boards/thingy53_nrf5340_cpuapp.overlay b/boards/shields/nrf7002eb/boards/thingy53_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..ee052ec68ae22c --- /dev/null +++ b/boards/shields/nrf7002eb/boards/thingy53_nrf5340_cpuapp.overlay @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * This uses gpio0 pin 8 which conflicts with STATUS pin of Wi-Fi SR coex + */ +&npm1100_force_pwm_mode { + status = "disabled"; +}; + +/* + * Pins P0.9, P0.10, P0.11, P0.12 conflict with SPI4 and nrf7002 host irq + */ +&uart0 { + status = "disabled"; +}; diff --git a/boards/shields/nrf7002eb/doc/index.rst b/boards/shields/nrf7002eb/doc/index.rst new file mode 100644 index 00000000000000..06f9f4d828da5c --- /dev/null +++ b/boards/shields/nrf7002eb/doc/index.rst @@ -0,0 +1,72 @@ +.. _nrf7002eb: + +nRF7002 EB +########## + +Overview +******** + +The nRF7002 EB is a versatile evaluation kit in the form of a thumbstick shield which connects to +compatible Nordic host boards, like the Thingy53, using the Nordic edge-connector. + +The nRF7002 EB unlocks low-power Wi-Fi 6 capabilities for your host device. It support dual-band Wi-Fi +2.4GHz and 5GHz, and is based on the nRF7002 SoC. +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:: nrf7002eb.jpg + :alt: nRF7002 EB + :align: center + + nRF7002 EB + +Requirements +************ + +The nRF7002 EB 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. + +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 hal_nordic + +Usage +***** + +The shield can be used in any application by setting ``--shield nrf7002eb`` when invoking ``west build``. + +Shield Variants +############### + +The nRF7002 EB has a variant which includes the COEX pins. These pins are not be routed to the +edge-connector on some boards, like earlier revisions of the Thingy53 than v1.0.0. + +- ``nrf7002eb``: The default variant. +- ``nrf7002eb_coex``: Variant which includes the COEX pins. + +SR Co-existence +############### + +The nRF7002 EB 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 `_ +- `nRF7002 EB product specification `_ +- `nRF7002 product specification `_ +- `nRF7002 Co-existence `_ diff --git a/boards/shields/nrf7002eb/doc/nrf7002eb.jpg b/boards/shields/nrf7002eb/doc/nrf7002eb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8afd6741354a604bc962fbce9d54ecb6d641a72 GIT binary patch literal 62681 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

7Q8{Kg>p$t?pK%@fJgRpB)SPGAHye7)zoK_jf zuy`^`h~Or~Q35;K-)0tp49K2#bxF&u;ZvhS=Y3&d?9O$hQ7{9#t--XtwiQ5L9*lS_ zjNAVI0Hz?c0{(HfLQGBY0e17e66#5Efgq(5o^S>|PcHGO5EXZ!eeHt*H!dblclpUq z{{R>pt8%FZhn}#Vk7H4n&v{5`-Ay?2a&~2pslBj%*OfVI&@y={3&r_!W zJoaPE(oB5u*0FRJXAWTb!Q5{-E|)hC)Sa!U>ARb5IhCN;7xvU zJ}K)Rtoy@{c{$z%c-xdN>5`v2&i=TpSo4E_I)i5j0Xbd)tO%?fL^;Sg1=#N;xcH$$ zqN^y=jp4;rMjDcRr9+Yn@rGBL{{V7ExJ7K; zn7vzl6-p3jl#SyzF@fV0ZlF|30=!|^Xm$@zr#B^n)y!aPaPG814i)(`WBbBF`R6R! z0^%{Zhk)-GCRVBM9GAmEtK7#RN@7X00MOU0;}Y*GLXd(+9dH+g)sWK76hot3WP?V^ z5diG`8u(QZXuuUC@1>%J|I6T(!y2T18 zWrLmCF7KBM3aSF6DHh&drf~`b{{ZlkW6eTCvo2g7=ligr?XK~3b>j`TKOS&K^kf{B zG(@DN?2YddZ9IoMrag$>HHP$#jY4jKZFCqChhf6J{_(|TAXgTW^x_q13Kx3~3E6L0 z^g%0DF4B>`uMR+RDS$eFp;uP$H~10uGPD(Wy2;E35McJfeSj-pUxa#&^s96*4inpkn2t+~X$iMWK^`_6|{-9?`xP zX1usTu9bhVI z&V}2#qjXIeqAuwnwJ=>v>kB6xm3s%I(Ky>?Yn4MG({gcx%1CY-^yS+(PKL>}BO4p} z!RfOW!`!SyjXLVMWgr`t1TQ<`teoOShoKo4Qg?$7Y|SZi1@05&cPV)82l~P-4DpE@ zJ>|NyHp019A*mXv0z2y#uM;cJ2PuB0K0(zWn*mzQmEIyy5#U4XdEcV&kSIZEo9dAu z{{UE&0x|ypTi7KsXP^OH+>9e)=ic~f3i z>b)8>o{p>_MY|_iI8=V%{>TYu?bZ;mbRM$d zR+RDo0GKKQTiidqX|Sl*Q_ed!0Ra8Ju^?`~6wMQ)n&VvKT7LQZ#*>mLd&|1C!<2); z&Iu8|v4#=L!J9nyilrOg*yZfgxCH=+{ta3oDF4)MB4)E+RcmUl8lPm`R|LHrqB#p^`gNV@Nj z8K6y9CM$A&mh!IRbBelJgz3RBF0?5J8;P8m%Q#Q| zWI}4nTE5D6Lg7(CLOqLY9!CV2$bdW{ecmxdMBq{$5N~*r(x^v$@?vd$x%1~CBg%`g zGkR%%E-?{z2UwAO_&L5XCY=mN7DnOgjL`^3dg~N8Qt)?`pwMp!3RAO;^8P=LD2~xX zxJ(e6frHQ-VipZN4)JPnd1rXiZPKVB2=Kf<@SXb(BVZpqrUdzJKcQK6s+0KEFM++nC=+?1> zZ0FYub<8&09VGQN`^ZEB{eE){bZ4+Tv8`}TbLHAfjvlk5ZZYPS)17*58Z(8p{{Vhn zCHmHLiEeX;ld}*<;F2iq)?fAhKjG&)$2|W4$^B!G2mGJ@96A30hpc)0f5*T7*`*4~ An*aa+ literal 0 HcmV?d00001 diff --git a/boards/shields/nrf7002eb/nrf7002eb.overlay b/boards/shields/nrf7002eb/nrf7002eb.overlay new file mode 100644 index 00000000000000..d580a2efb8c006 --- /dev/null +++ b/boards/shields/nrf7002eb/nrf7002eb.overlay @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/ { + chosen { + zephyr,wifi = &wlan0; + }; +}; + +&edge_connector_spi { + status = "okay"; + + nrf70: nrf7002@0 { + compatible = "nordic,nrf7002-spi"; + status = "okay"; + reg = <0>; + spi-max-frequency = ; + + bucken-gpios = <&edge_connector 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; + iovdd-ctrl-gpios = <&edge_connector 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; + host-irq-gpios = <&edge_connector 19 GPIO_ACTIVE_HIGH>; + + wlan0: wlan0 { + compatible = "nordic,wlan"; + }; + + wifi-max-tx-pwr-2g-dsss = <21>; + wifi-max-tx-pwr-2g-mcs0 = <16>; + wifi-max-tx-pwr-2g-mcs7 = <16>; + 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>; + }; +}; diff --git a/boards/shields/nrf7002eb/nrf7002eb_coex.overlay b/boards/shields/nrf7002eb/nrf7002eb_coex.overlay new file mode 100644 index 00000000000000..a8925c2556752f --- /dev/null +++ b/boards/shields/nrf7002eb/nrf7002eb_coex.overlay @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf7002eb.overlay" + +&nrf70 { + status0-gpios = <&edge_connector 5 GPIO_ACTIVE_HIGH>; + req-gpios = <&edge_connector 6 GPIO_ACTIVE_HIGH>; + grant-gpios = <&edge_connector 15 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>; +}; From cda8b97ec27027f20d83ce6cafaffa8314c1aad2 Mon Sep 17 00:00:00 2001 From: Bjarki Arge Andreasen Date: Thu, 12 Sep 2024 10:43:45 +0200 Subject: [PATCH 2/2] samples: net: wifi: add build of nrf7002eb Add build for nrf7002eb shield on thingy53 board. Signed-off-by: Bjarki Arge Andreasen --- samples/net/wifi/sample.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/samples/net/wifi/sample.yaml b/samples/net/wifi/sample.yaml index 694a4d68f92fce..1c106e4897a68e 100644 --- a/samples/net/wifi/sample.yaml +++ b/samples/net/wifi/sample.yaml @@ -62,3 +62,11 @@ tests: integration_platforms: - nrf5340dk/nrf5340/cpuapp - nucleo_h723zg + sample.net.wifi.nrf7002eb: + extra_args: + - CONFIG_NRF_WIFI_BUILD_ONLY_MODE=y + - SHIELD=nrf7002eb + platform_allow: + - thingy53/nrf5340/cpuapp + integration_platforms: + - thingy53/nrf5340/cpuapp