Skip to content

Commit a81840c

Browse files
committed
boards: st: add nucleo_u385rg board support
add board support for nucleo_u385rg Signed-off-by: Khaoula Bidani <[email protected]>
1 parent d3151b1 commit a81840c

9 files changed

+523
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 STMicroelectronics
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_NUCLEO_U385RG
5+
select SOC_STM32U385XX
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright (c) 2025 STMicroelectronics
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/ {
8+
arduino_header: connector {
9+
compatible = "arduino-header-r3";
10+
#gpio-cells = <2>;
11+
gpio-map-mask = <0xffffffff 0xffffffc0>;
12+
gpio-map-pass-thru = <0 0x3f>;
13+
gpio-map = <0 0 &gpioa 0 0>, /* A0 */
14+
<1 0 &gpioa 1 0>, /* A1 */
15+
<2 0 &gpioa 4 0>, /* A2 */
16+
<3 0 &gpiob 0 0>, /* A3 */
17+
<4 0 &gpioc 1 0>, /* A4 */
18+
<5 0 &gpioc 0 0>, /* A5 */
19+
<6 0 &gpioa 3 0>, /* D0 */
20+
<7 0 &gpioa 2 0>, /* D1 */
21+
<8 0 &gpioa 10 0>, /* D2 */
22+
<9 0 &gpiob 3 0>, /* D3 */
23+
<10 0 &gpiob 5 0>, /* D4 */
24+
<11 0 &gpiob 4 0>, /* D5 */
25+
<12 0 &gpiob 10 0>, /* D6 */
26+
<13 0 &gpioa 8 0>, /* D7 */
27+
<14 0 &gpioa 9 0>, /* D8 */
28+
<15 0 &gpioc 7 0>, /* D9 */
29+
<16 0 &gpiob 6 0>, /* D10 */
30+
<17 0 &gpioa 7 0>, /* D11 */
31+
<18 0 &gpioa 6 0>, /* D12 */
32+
<19 0 &gpioa 5 0>, /* D13 */
33+
<20 0 &gpiob 9 0>, /* D14 */
34+
<21 0 &gpiob 8 0>; /* D15 */
35+
};
36+
};
37+
38+
arduino_serial: &usart1 {};

boards/st/nucleo_u385rg/board.cmake

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# keep first
2+
board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw")
3+
4+
board_runner_args(pyocd "--target=stm32u385rgtx")
5+
6+
board_runner_args(jlink "--device=STM32U385RG" "--reset-after-load")
7+
8+
# keep first
9+
include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake)
10+
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
11+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

boards/st/nucleo_u385rg/board.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: nucleo_u385rg
3+
full_name: Nucleo U385RG
4+
vendor: st
5+
socs:
6+
- name: stm32u385xx
Loading

boards/st/nucleo_u385rg/doc/index.rst

+293
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
.. zephyr:board:: nucleo_u385rg
2+
3+
Overview
4+
********
5+
6+
The Nucleo U385RG board, featuring an ARM Cortex-M33 with Trust Zone based STM32U385RG MCU,
7+
provides an affordable and flexible way for users to try out new concepts and
8+
build prototypes by choosing from the various combinations of performance and
9+
power consumption features. Here are some highlights of the Nucleo U385RG
10+
board:
11+
12+
13+
- STM32U385RG microcontroller in an LQFP64 or LQFP48 package
14+
- Two types of extension resources:
15+
16+
- Arduino Uno V3 connectivity
17+
- ST morpho extension pin headers for full access to all STM32U3 I/Os
18+
19+
- On-board STLINK-V2EC debugger/programmer with USB re-enumeration
20+
capability: mass storage, Virtual COM port, and debug port
21+
- Flexible board power supply:
22+
23+
- USB VBUS or external source(3.3V, 5V, 7 - 12V)
24+
25+
- Two push-buttons: USER and RESET
26+
- 32.768 kHz crystal oscillator
27+
- Second user LED shared with ARDUINO |reg| Uno V3
28+
- External or internal SMPS to generate Vcore logic supply
29+
- 24 MHz or 48 MHz HSE
30+
- User USB Device full speed, or USB SNK/UFP full speed
31+
- Cryptography
32+
- CAN FD transceiver
33+
- Board connectors:
34+
35+
- External SMPS experimentation dedicated connector
36+
- USB Type-C |reg| , Micro-B, or Mini-B connector for the ST-LINK
37+
- USB Type-C |reg| user connector
38+
- MIPI |reg| debug connector
39+
- CAN FD header
40+
41+
More information about the board can be found at the `NUCLEO_U385RG website`_.
42+
43+
Hardware
44+
********
45+
46+
The STM32U385xx devices are an ultra-low-power microcontrollers family (STM32U3
47+
Series) based on the high-performance Arm |reg| Cortex |reg|-M33 32-bit RISC core.
48+
They operate at a frequency of up to 96 MHz.
49+
50+
- Includes ST state-of-the-art patented technology
51+
- Ultra-low-power with FlexPowerControl:
52+
53+
- 1.71 V to 3.6 V power supply
54+
- -40 °C to +105 °C temperature range
55+
- VBAT mode: supply for RTC, 32 x 32-bit backup registers
56+
- 1.6 μA Stop 3 mode with 8-Kbyte SRAM
57+
- 2.2 μA Stop 3 mode with full SRAM
58+
- 3.8 μA Stop 2 mode with 8-Kbyte SRAM
59+
- 4.5 μA Stop 2 mode with full SRAM
60+
- 9.5 μA/MHz Run mode @ 3.3 V (While(1) SMPS step-down converter mode)
61+
- 13 μA/MHz Run mode @ 3.3 V/48 MHz (CoreMark |reg| SMPS step-down converter mode)
62+
- 16 μA/MHz Run mode @ 3.3 V/96 MHz (CoreMark |reg| SMPS step-down converter mode)
63+
- Brownout reset
64+
65+
- Core:
66+
67+
- 32-bit Arm |reg| Cortex |reg|-M33 CPU with TrustZone |reg| and FPU
68+
69+
- ART Accelerator:
70+
71+
- 8-Kbyte instruction cache allowing 0-wait-state execution from flash and external memories:
72+
frequency up to 96 MHz, MPU, 144 DMIPS and DSP instructions
73+
74+
- Power management:
75+
76+
- Embedded regulator (LDO) and SMPS step-down converter supporting switch on-the-fly and voltage scaling
77+
78+
- Benchmarks:
79+
80+
- 1.5 DMIPS/MHz (Drystone 2.1)
81+
- 387 CoreMark |reg| (4.09 CoreMark/MHz at 56 MHz)
82+
- 500 ULPMark™-CP
83+
- 117 ULPMark™-CM
84+
- 202000 SecureMark™-TLS
85+
86+
- Memories:
87+
88+
- 1-Mbyte flash memory with ECC, 2 banks read-while-write
89+
- 256 Kbytes of SRAM including 64 Kbytes with hardware parity check
90+
- OCTOSPI external memory interface supporting SRAM, PSRAM, NOR, NAND, and FRAM memories
91+
92+
- General-purpose input/outputs:
93+
94+
- Up to 82 fast I/Os with interrupt capability most 5 V-tolerant and up to 14 I/Os with independent supply down to 1.08 V
95+
96+
- Clock management:
97+
98+
- 4 to 50 MHz crystal oscillator
99+
- 32.768 kHz crystal oscillator for RTC (LSE)
100+
- Internal 16 MHz factory-trimmed RC (±1 %)
101+
- Internal low-power RC with frequency 32 kHz or 250 Hz (±5 %)
102+
- 2 internal multispeed 3 MHz to 96 MHz oscillators
103+
- Internal 48 MHz with clock recovery
104+
- Accurate MSI in PLL-mode and up to 96 MHz with 32.768 kHz, 16 MHz, or 32 MHz crystal oscillator
105+
106+
- Security and cryptography:
107+
108+
- Arm |reg| TrustZone |reg| and securable I/Os, memories, and peripherals
109+
- Flexible life cycle scheme with RDP and password protected debug
110+
- Root of trust due to unique boot entry and secure hide protection area (HDP)
111+
- Secure firmware installation (SFI) from embedded root secure services (RSS)
112+
- Secure data storage with hardware unique key (HUK)
113+
- Secure firmware upgrade
114+
- Support of Trusted firmware for Cortex |reg| M (TF-M)
115+
- Two AES coprocessors, one with side channel attack resistance (SCA) (SAES)
116+
- Public key accelerator, SCA resistant
117+
- Key hardware protection
118+
- Attestation keys
119+
- HASH hardware accelerator
120+
- True random number generator, NIST SP800-90B compliant
121+
- 96-bit unique ID
122+
- 512-byte OTP (one-time programmable)
123+
- Antitamper protection
124+
125+
- Up to 15 timers and 2 watchdogs :
126+
127+
- 1x 16-bit advanced motor-control, 3x 32-bit and 3x 16-bit general purpose,
128+
2x 16-bit basic, 4x low-power 16-bit timers (available in Stop mode),
129+
2x watchdogs, 2x SysTick timer
130+
- RTC with hardware calendar, alarms, and calibration
131+
132+
- Up to 19 communication peripherals:
133+
134+
- 1 USB 2.0 full-speed controller
135+
- 1 SAI (serial audio interface)
136+
- 3 I2C FM+(1 Mbit/s), SMBus/PMBus™
137+
- 2 I3C (SDR), with support of I2C FM+ mode
138+
- 2 USARTs and 2 UARTs (SPI, ISO 7816, LIN, IrDA, modem), 1 LPUART
139+
- 3 SPIs (6 SPIs including 1 with OCTOSPI + 2 with USART)
140+
- 1 CAN FD controller
141+
- 1 SDMMC interface
142+
- 1 audio digital filter with sound-activity detection
143+
144+
- 12-channel GPDMA controller, functional in Sleep and Stop modes (up to Stop 2)
145+
- Up to 21 capacitive sensing channels:
146+
147+
- Support touch key, linear, and rotary touch sensors
148+
149+
- Rich analog peripherals (independent supply):
150+
151+
- 2x 12-bit ADC 2.5 Msps, with hardware oversampling
152+
- 12-bit DAC module with 2 D/A converters, low-power sample and hold, autonomous in Stop 1 mode
153+
- 2 operational amplifiers with built-in PGA
154+
- 2 ultralow-power comparators
155+
156+
- CRC calculation unit
157+
- Debug:
158+
159+
- Development support: serial-wire debug (SWD), JTAG, Embedded Trace Macrocell™ (ETM)
160+
161+
- ECOPACK2 compliant packages
162+
163+
More information about STM32U385RG can be found here:
164+
165+
- `STM32U385RG on www.st.com`_
166+
- `STM32U385RG reference manual`_
167+
168+
Supported Features
169+
==================
170+
171+
.. zephyr:board-supported-hw::
172+
173+
Connections and IOs
174+
===================
175+
176+
Nucleo U385RG Board has 14 GPIO controllers. These controllers are responsible
177+
for pin muxing, input/output, pull-up, etc.
178+
179+
For more details please refer to `STM32U385 User Manual`_.
180+
181+
Default Zephyr Peripheral Mapping:
182+
----------------------------------
183+
184+
- DAC1_OUT1 : PA4
185+
- LD1 : PA5
186+
- LPUART_1_TX : PA9
187+
- LPUART_1_RX : PA10
188+
- UART_4_TX : PA0
189+
- UART_4_RX : PA1
190+
- UART_5_TX : PC12
191+
- UART_5_RX : PD2
192+
- USER_PB : PC13
193+
194+
System Clock
195+
------------
196+
197+
Nucleo U385RG System Clock could be driven by internal or external oscillator,
198+
as well as main PLL clock. By default System clock is driven by PLL clock at
199+
48MHz, driven by 4MHz medium speed internal oscillator.
200+
201+
Serial Port
202+
-----------
203+
204+
Nucleo U385RG board has 4 U(S)ARTs, 1 LPUART. The Zephyr console output is assigned to
205+
USART1. Default settings are 115200 8N1.
206+
207+
208+
Programming and Debugging
209+
*************************
210+
211+
.. zephyr:board-supported-runners::
212+
213+
Nucleo U385RG board includes an ST-LINK/V3 embedded debug tool interface.
214+
This probe allows to flash the board using various tools.
215+
216+
Flashing
217+
========
218+
219+
The board is configured to be flashed using west `STM32CubeProgrammer`_ runner,
220+
so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required.
221+
222+
Alternatively, JLink or pyOCD can also be used to flash the board using
223+
the ``--runner`` (or ``-r``) option:
224+
225+
.. code-block:: console
226+
227+
$ west flash --runner pyocd
228+
$ west flash --runner jlink
229+
230+
For pyOCD, additional target information needs to be installed
231+
by executing the following pyOCD commands:
232+
233+
.. code-block:: console
234+
235+
$ pyocd pack --update
236+
$ pyocd pack --install stm32u3
237+
238+
239+
Flashing an application to Nucleo U385RG
240+
------------------------------------------
241+
242+
Connect the Nucleo U385RG to your host computer using the USB port.
243+
Then build and flash an application. Here is an example for the
244+
:zephyr:code-sample:`hello_world` application.
245+
246+
Run a serial host program to connect with your Nucleo board:
247+
248+
.. code-block:: console
249+
250+
$ minicom -D /dev/ttyACM0
251+
252+
Then build and flash the application.
253+
254+
.. zephyr-app-commands::
255+
:zephyr-app: samples/hello_world
256+
:board: nucleo_u385rg
257+
:goals: build flash
258+
259+
You should see the following message on the console:
260+
261+
.. code-block:: console
262+
263+
Hello World! nucleo_u385rg
264+
265+
Debugging
266+
=========
267+
268+
Default flasher for this board is openocd. It could be used in the usual way.
269+
Here is an example for the :zephyr:code-sample:`blinky` application.
270+
271+
.. zephyr-app-commands::
272+
:zephyr-app: samples/basic/blinky
273+
:board: nucleo_u385rg
274+
:goals: debug
275+
276+
Note: Check the ``build/tfm`` directory to ensure that the commands required by these scripts
277+
(``readlink``, etc.) are available on your system. Please also check ``STM32_Programmer_CLI``
278+
(which is used for initialization) is available in the PATH.
279+
280+
.. _NUCLEO_U385RG website:
281+
https://www.st.com/en/evaluation-tools/nucleo-u385rg.html
282+
283+
.. _STM32U385 User Manual:
284+
https://www.st.com/resource/en/user_manual/um3261-stm32u3-series-safety-manual-stmicroelectronics.pdf
285+
286+
.. _STM32U385RG on www.st.com:
287+
https://www.st.com/en/microcontrollers-microprocessors/stm32u385rg
288+
289+
.. _STM32U385RG reference manual:
290+
https://www.st.com/resource/en/reference_manual/rm0503-stm32u3-series-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
291+
292+
.. _STM32CubeProgrammer:
293+
https://www.st.com/en/development-tools/stm32cubeprog.html

0 commit comments

Comments
 (0)