This application provides the fastest and most intuitive way to start exploring UWB technology using the Plug-and-Play application. Designed to eliminate setup complexity, the application runs directly on the MCU and exposes the SR250 UCI interface through a Virtual COM port.
You will need:
- Python 3.x
- PySerial (install with
pip install pyserial)
-
FRDM-RW612 Development Board
⚠️ Requires a small rework because SPI is not exposed on the Arduino headers. See rework instruction here. -
Windows PC
-
Two USB-C cables (power + communication)
First, flash the SR250 UWB Plug-and-Play application to the FRDM-RW612.
- Connect two USB-C cables:
- One to MCU-Link USB-C (J10)
- One to High-Speed USB-C (J8)
- Hold ISP button (SW3) → press & release Reset button (SW1) → release ISP button. The board is now in ISP over USB mode.
- Run the flashing script from the application package:
FRDM-RW612_PnP/program_FRDM-RW612.batOnce flashing is complete, disconnect and reconnect both USB-C cables to reboot the board. The FRDM-RW612 will enumerate as a Virtual COM port.
Identify the COM port using Device Manager or by running: python -m serial.tools.list_ports -v
Before using the Python demo scripts, ensure that the SR250 firmware is up to date.
- Assemble the SR250-ARD board on top of the FRDM-RW612.
- Connect both USB-C cables to your computer.
- Run the update script from the application package:
SR250_FW/Update_SR250_FW.batThe Plug-and-Play package includes several Python-based demo scripts showcasing different UWB scenarios:
- ranging
- radar_ocpd
- radar_raw
Each demo communicates with the board through the SR250 UCI protocol using the detected COM port.
Demo scripts resides under "Simple_demos" folder. Run any demo using the following command:
python demo_<name>.py COM<X>Where:
<name>is one of: ranging, radar_ocpd, radar_raw<X>is the port identified in section 3.1 (e.g., COM3)
The UCI exchanges will appear in the console output, allowing you to observe the real-time communication between the host and the SR250 device.
The ranging demo showcases how the SR250 can be configured to perform DS-TWR ranging with a peer UWB device. It requires two FRDM-RW612 boards with SR250-ARD shields, one configured as a controller and one as a controlee thanks to a parameter of the python script: python demo_ranging.py COM<X> controller or python demo_ranging.py COM<X> controlee.
The radar On-Chip Presence Detection demo showcases how the SR250 can be configured to report presence detection using its On-Chip Presence Detection (OCPD) feature. During execution, the OCPD UCI notification outputs are automatically recorded in "radar_ocpd_results\ocpd_results_xxx.csv" file for further analysis.
The radar raw demo showcases how the SR250 can be configured to capture UWB radar Channel Impulse Responses (CIRs). During execution, the CIR data are automatically recorded in "radar_cirs\radar_cirs_xxx.csv" file for further post-processing.
The viki perl parser helps to interpret the UCI exchanges. It requires Perl tool installed (min v5). run it as:
python -u demo_<name>.py COM<X> | perl viki_SR250.plThe UCI exchanges are interpreted 'live' as shown below:
- Reach out to NXP Community page for more support - NXP Community
- Learn more about SR250 UWB IC for Industrial IoT Ranging and Radar Applications - Trimension® SR250
Questions regarding the content/correctness of this example can be entered as Issues within this GitHub repository.
| Version | Description / Update | Date |
|---|---|---|
| 1.0 | Initial release on Application Code Hub | February 18th 2026 |






