1.. zephyr:board:: rd_rw612_bga
2
3Overview
4********
5
6The RW612 is a highly integrated, low-power tri-radio wireless MCU with an
7integrated 260 MHz ARM Cortex-M33 MCU and Wi-Fi 6 + Bluetooth Low Energy (LE) 5.3 / 802.15.4
8radios designed for a broad array of applications, including connected smart home devices,
9gaming controllers, enterprise and industrial automation, smart accessories and smart energy.
10
11The RW612 MCU subsystem includes 1.2 MB of on-chip SRAM and a high-bandwidth Quad SPI interface
12with an on-the-fly decryption engine for securely accessing off-chip XIP flash.
13
14The advanced design of the RW612 delivers tight integration, low power and highly secure
15operation in a space- and cost-efficient wireless MCU requiring only a single 3.3 V power supply.
16
17Hardware
18********
19
20- 260 MHz ARM Cortex-M33, tri-radio cores for Wifi 6 + BLE 5.3 + 802.15.4
21- 1.2 MB on-chip SRAM
22
23Supported Features
24==================
25
26+-----------+------------+-----------------------------------+
27| Interface | Controller | Driver/Component                  |
28+===========+============+===================================+
29| NVIC      | on-chip    | nested vector interrupt controller|
30+-----------+------------+-----------------------------------+
31| SYSTICK   | on-chip    | systick                           |
32+-----------+------------+-----------------------------------+
33| MCI_IOMUX | on-chip    | pinmux                            |
34+-----------+------------+-----------------------------------+
35| GPIO      | on-chip    | gpio                              |
36+-----------+------------+-----------------------------------+
37| USART     | on-chip    | serial                            |
38+-----------+------------+-----------------------------------+
39| DMA       | on-chip    | dma                               |
40+-----------+------------+-----------------------------------+
41| SPI       | on-chip    | spi                               |
42+-----------+------------+-----------------------------------+
43| I2C       | on-chip    | i2c                               |
44+-----------+------------+-----------------------------------+
45| FLEXSPI   | on-chip    | flash/memc                        |
46+-----------+------------+-----------------------------------+
47| TRNG      | on-chip    | entropy                           |
48+-----------+------------+-----------------------------------+
49| DMIC      | on-chip    | dmic                              |
50+-----------+------------+-----------------------------------+
51| LCDIC     | on-chip    | mipi-dbi                          |
52+-----------+------------+-----------------------------------+
53| WWDT      | on-chip    | watchdog                          |
54+-----------+------------+-----------------------------------+
55| USBOTG    | on-chip    | usb                               |
56+-----------+------------+-----------------------------------+
57| CTIMER    | on-chip    | counter                           |
58+-----------+------------+-----------------------------------+
59| SCTIMER   | on-chip    | pwm                               |
60+-----------+------------+-----------------------------------+
61| MRT       | on-chip    | counter                           |
62+-----------+------------+-----------------------------------+
63| OS_TIMER  | on-chip    | os timer                          |
64+-----------+------------+-----------------------------------+
65| PM        | on-chip    | power management; uses SoC Power  |
66|           |            | Modes 1 and 2                     |
67+-----------+------------+-----------------------------------+
68| BLE       | on-chip    | Bluetooth                         |
69+-----------+------------+-----------------------------------+
70| ADC       | on-chip    | adc                               |
71+-----------+------------+-----------------------------------+
72| DAC       | on-chip    | dac                               |
73+-----------+------------+-----------------------------------+
74| ENET      | on-chip    | ethernet                          |
75+-----------+------------+-----------------------------------+
76| Wi-Fi     | on-chip    | Wi-Fi                             |
77+-----------+------------+-----------------------------------+
78
79The default configuration can be found in the defconfig file:
80
81   :zephyr_file:`boards/nxp/rd_rw612_bga/rd_rw612_bga_defconfig/`
82
83Other hardware features are not currently supported
84
85
86Display Support
87***************
88
89The rd_rw612_bga board supports several in-tree display modules. Setup for
90each module is described below:
91
92GoWorld 16880 LCM
93=================
94
95This module does not connect directly to the board, and must be connected
96via an adapter board and jumper wires. Connections are described in
97:zephyr_file:`boards/nxp/rd_rw612_bga/dts/goworld_16880_lcm.overlay`. The
98display sample can be built for this board like so:
99
100.. zephyr-app-commands::
101   :board: rd_rw612_bga
102   :gen-args: -DDTC_OVERLAY_FILE=goworld_16880_lcm.overlay
103   :zephyr-app: samples/drivers/display
104   :goals: build
105   :compact:
106
107Adafruit 2.8 TFT
108================
109
110The :ref:`adafruit_2_8_tft_touch_v2` connects to the board's Arduino headers
111directly, but some modifications are required (see
112:zephyr_file:`boards/shields/adafruit_2_8_tft_touch_v2/boards/rd_rw612_bga.overlay`
113for a list). The display sample can be built for this module like so:
114
115.. zephyr-app-commands::
116   :board: rd_rw612_bga
117   :shield: adafruit_2_8_tft_touch_v2
118   :zephyr-app: samples/drivers/display
119   :goals: build
120   :compact:
121
122NXP LCD_PAR_S035
123================
124
125The :ref:`lcd_par_s035` does not connect directly to the board, and must be
126connected via jumper wires. Connections and required board changes are
127described in
128:zephyr_file:`boards/shields/lcd_par_s035/boards/rd_rw612_bga.overlay`. The
129display sample can be built for the module like so:
130
131.. zephyr-app-commands::
132   :board: rd_rw612_bga
133   :shield: lcd_par_s035_8080
134   :zephyr-app: samples/drivers/display
135   :goals: build
136   :compact:
137
138Fetch Binary Blobs
139******************
140
141To support Bluetooth or Wi-Fi, rd_rw612_bga requires fetching binary blobs, which can be
142achieved by running the following command:
143
144.. code-block:: console
145
146   west blobs fetch hal_nxp
147
148Programming and Debugging
149*************************
150
151Build and flash applications as usual (see :ref:`build_an_application` and
152:ref:`application_run` for more details).
153
154Configuring a Debug Probe
155=========================
156
157A debug probe is used for both flashing and debugging the board. This board is
158configured by default to use the JLink Firmware.
159
160Configuring a Console
161=====================
162
163Connect a USB cable from your PC to J7, and use the serial terminal of your choice
164(minicom, putty, etc.) with the following settings:
165
166- Speed: 115200
167- Data: 8 bits
168- Parity: None
169- Stop bits: 1
170
171Flashing
172========
173
174Here is an example for the :zephyr:code-sample:`hello_world` application. This example uses the
175:ref:`jlink-debug-host-tools` as default.
176
177.. zephyr-app-commands::
178   :zephyr-app: samples/hello_world
179   :board: rd_rw612_bga
180   :goals: flash
181
182Open a serial terminal, reset the board (press the RESET button), and you should
183see the following message in the terminal:
184
185.. code-block:: console
186
187   ***** Booting Zephyr OS v3.4.0 *****
188   Hello World! rd_rw612_bga
189
190Debugging
191=========
192
193Here is an example for the :zephyr:code-sample:`hello_world` application. This example uses the
194:ref:`jlink-debug-host-tools` as default.
195
196.. zephyr-app-commands::
197   :zephyr-app: samples/hello_world
198   :board: rd_rw612_bga
199   :goals: debug
200
201Open a serial terminal, step through the application in your debugger, and you
202should see the following message in the terminal:
203
204.. code-block:: console
205
206   ***** Booting Zephyr OS zephyr-v3.6.0 *****
207   Hello World! rd_rw612_bga
208
209Bluetooth
210*********
211
212BLE functionality requires to fetch binary blobs, so make sure to follow
213the ``Fetch Binary Blobs`` section first.
214
215rd_rw612_bga platform supports the monolithic feature. The required binary blob
216``<zephyr workspace>/modules/hal/nxp/zephyr/blobs/rw61x_sb_ble_a2.bin`` will be linked
217with the application image directly, forming one single monolithic image.
218
219Wi-Fi
220*****
221
222Wi-Fi functionality requires to fetch binary blobs, so make sure to follow
223the ``Fetch Binary Blobs`` section first.
224
225rd_rw612_bga platform supports the monolithic feature. The required binary blob
226``<zephyr workspace>/modules/hal/nxp/zephyr/blobs/rw61x_sb_wifi_a2.bin`` will be linked
227with the application image directly, forming one single monolithic image.
228
229Board variants
230**************
231
232Ethernet
233========
234
235To use ethernet on the RD_RW612_BGA board, you first need to make the following
236modifications to the board hardware:
237
238Add resistors:
239
240- R485
241- R486
242- R487
243- R488
244- R489
245- R491
246- R490
247
248Remove resistors:
249
250- R522
251- R521
252- R520
253- R524
254- R523
255- R508
256- R505
257
258Then, build for the board target ``rd_rw612_bga//ethernet``.
259
260Resources
261*********
262
263.. target-notes::
264
265.. _RW612 Website:
266   https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4/wireless-mcu-with-integrated-tri-radiobr1x1-wi-fi-6-plus-bluetooth-low-energy-5-3-802-15-4:RW612
267