RD-RW612-BGA
Overview
The RW612 is a highly integrated, low-power tri-radio wireless MCU with an integrated 260 MHz ARM Cortex-M33 MCU and Wi-Fi 6 + Bluetooth Low Energy (LE) 5.3 / 802.15.4 radios designed for a broad array of applications, including connected smart home devices, gaming controllers, enterprise and industrial automation, smart accessories and smart energy.
The RW612 MCU subsystem includes 1.2 MB of on-chip SRAM and a high-bandwidth Quad SPI interface with an on-the-fly decryption engine for securely accessing off-chip XIP flash.
The advanced design of the RW612 delivers tight integration, low power and highly secure operation in a space- and cost-efficient wireless MCU requiring only a single 3.3 V power supply.
Hardware
260 MHz ARM Cortex-M33, tri-radio cores for Wifi 6 + BLE 5.3 + 802.15.4
1.2 MB on-chip SRAM
Supported Features
The rd_rw612_bga
board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo
-
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
Type |
Location |
Description |
Compatible |
---|---|---|---|
CPU |
on-chip |
ARM Cortex-M33F CPU1 |
|
ADC |
on-chip |
||
ARM architecture |
on-chip |
LPC Flexcomm node2 |
|
on-chip |
RW SOC controller node2 |
||
on-chip |
NXP NBU interruption information1 |
||
Audio |
on-chip |
NXP DMIC1 |
|
Bluetooth |
on-chip |
NXP BLE HCI information1 |
|
Clock control |
on-chip |
LPC SYSCON & CLKCTL IP node2 |
|
Counter |
on-chip |
Driver that uses the NXP LPC RTC High resolution counter1 |
|
on-chip |
|||
on-chip |
NXP Multirate Timer2 |
||
on-chip |
|||
DAC |
on-chip |
NXP GAU DAC1 |
|
DMA |
on-chip |
NXP LPC DMA controller1 |
|
Ethernet |
on-chip |
NXP ENET IP Module1 |
|
on-chip |
NXP ENET MAC/L2 Device1 |
||
on-chip |
NXP ENET PTP (Precision Time Protocol) Clock1 |
||
GPIO & Headers |
on-chip |
LPC GPIO1 |
|
on-chip |
LPC GPIO port device2 |
||
on-board |
GPIO pins exposed on Arduino Uno (R3) headers1 |
||
on-board |
GPIO pins exposed on NXP LCD 8080 interface (e.g., used on LCD-PAR-035 panel)1 |
||
IEEE 802.15.4 HDLC RCP interface |
on-chip |
NXP HDLC RCP interface node1 |
|
I2C |
on-chip |
LPC I2C1 |
|
Input |
on-board |
Group of GPIO-bound input keys1 |
|
Interrupt controller |
on-chip |
ARMv8-M NVIC (Nested Vectored Interrupt Controller)1 |
|
on-chip |
NXP Pin interrupt and pattern match engine (PINT)1 |
||
MDIO |
on-chip |
NXP ENET MDIO Features1 |
|
MIPI-DBI |
on-chip |
NXP LCDIC Controller1 |
|
MMU / MPU |
on-chip |
ARMv8-M MPU (Memory Protection Unit)1 |
|
MTD |
on-board |
NXP FlexSPI NOR1 |
|
on-board |
Fixed partitions of a flash (or other non-volatile storage) memory1 |
||
on-board |
ISSI IS66WVQ8M4 pSRAM on NXP FlexSPI bus1 |
||
Pin control |
on-chip |
MCI IO MUX Pin Controller1 |
|
Power management |
on-chip |
NXP RW PMU1 |
|
on-chip |
Some NXP SoC’s have pins dedicated to generate a wakeup interrupt1 1 |
||
on-chip |
Properties for NXP power management through the PDCFG register1 1 |
||
Power domain |
on-chip |
This power domain will Turn On and Off devices when transitioning in and out a specified Power State1 |
|
PWM |
on-chip |
NXP SCTimer PWM1 |
|
Reset controller |
on-chip |
NXP RSTCTL Peripheral reset controller2 |
|
RNG |
on-chip |
Kinetis TRNG (True Random Number Generator)1 |
|
RTC |
on-chip |
NXP LPC RTC1 |
|
Serial controller |
on-chip |
LPC USART1 |
|
SPI |
on-chip |
NXP FlexSPI controller1 |
|
on-chip |
NXP LPC SPI controller1 |
||
SRAM |
on-chip |
Generic on-chip SRAM description2 |
|
Timer |
on-chip |
ARMv8-M System Tick1 |
|
on-chip |
NXP OS Timer on i.MX-RT5xx/6xx1 |
||
USB |
on-chip |
NXP EHCI USB device mode1 |
|
Watchdog |
on-chip |
LPC Windowed Watchdog Timer1 |
Display Support
The rd_rw612_bga board supports several in-tree display modules. Setup for each module is described below:
GoWorld 16880 LCM
This module does not connect directly to the board, and must be connected via an adapter board and jumper wires. Connections are described in boards/nxp/rd_rw612_bga/dts/goworld_16880_lcm.overlay. The display sample can be built for this board like so:
west build -b rd_rw612_bga samples/drivers/display -- -DDTC_OVERLAY_FILE=goworld_16880_lcm.overlay
Adafruit 2.8 TFT
The Adafruit 2.8” TFT Touch Shield v2 connects to the board’s Arduino headers directly, but some modifications are required (see boards/shields/adafruit_2_8_tft_touch_v2/boards/rd_rw612_bga.overlay for a list). The display sample can be built for this module like so:
west build -b rd_rw612_bga --shield adafruit_2_8_tft_touch_v2 samples/drivers/display
NXP LCD_PAR_S035
The NXP LCD_PAR_S035 TFT LCD Module does not connect directly to the board, and must be connected via jumper wires. Connections and required board changes are described in boards/shields/lcd_par_s035/boards/rd_rw612_bga.overlay. The display sample can be built for the module like so:
west build -b rd_rw612_bga --shield lcd_par_s035_8080 samples/drivers/display
Fetch Binary Blobs
To support Bluetooth or Wi-Fi, rd_rw612_bga requires fetching binary blobs, which can be achieved by running the following command:
west blobs fetch hal_nxp
Programming and Debugging
Build and flash applications as usual (see Building an Application and Run an Application for more details).
Configuring a Debug Probe
A debug probe is used for both flashing and debugging the board. This board is configured by default to use the JLink Firmware.
Configuring a Console
Connect a USB cable from your PC to J7, and use the serial terminal of your choice (minicom, putty, etc.) with the following settings:
Speed: 115200
Data: 8 bits
Parity: None
Stop bits: 1
Flashing
Here is an example for the Hello World application. This example uses the J-Link Debug Host Tools as default.
# From the root of the zephyr repository
west build -b rd_rw612_bga samples/hello_world
west flash
Open a serial terminal, reset the board (press the RESET button), and you should see the following message in the terminal:
***** Booting Zephyr OS v3.4.0 *****
Hello World! rd_rw612_bga
Debugging
Here is an example for the Hello World application. This example uses the J-Link Debug Host Tools as default.
# From the root of the zephyr repository
west build -b rd_rw612_bga samples/hello_world
west debug
Open a serial terminal, step through the application in your debugger, and you should see the following message in the terminal:
***** Booting Zephyr OS zephyr-v3.6.0 *****
Hello World! rd_rw612_bga
Bluetooth
BLE functionality requires to fetch binary blobs, so make sure to follow
the Fetch Binary Blobs
section first.
rd_rw612_bga platform supports the monolithic feature. The required binary blob
<zephyr workspace>/modules/hal/nxp/zephyr/blobs/rw61x_sb_ble_a2.bin
will be linked
with the application image directly, forming one single monolithic image.
Wi-Fi
Wi-Fi functionality requires to fetch binary blobs, so make sure to follow
the Fetch Binary Blobs
section first.
rd_rw612_bga platform supports the monolithic feature. The required binary blob
<zephyr workspace>/modules/hal/nxp/zephyr/blobs/rw61x_sb_wifi_a2.bin
will be linked
with the application image directly, forming one single monolithic image.
Board variants
Ethernet
To use ethernet on the RD_RW612_BGA board, you first need to make the following modifications to the board hardware:
Add resistors:
R485
R486
R487
R488
R489
R491
R490
Remove resistors:
R522
R521
R520
R524
R523
R508
R505
Then, build for the board target rd_rw612_bga//ethernet
.
Support Resources for Zephyr
MCUXpresso for VS Code [2], wiki [3] documentation and Zephyr lab guides [4]
NXP’s Zephyr landing page [6] (including training resources)