Skip to content

Commit 3f25a14

Browse files
mathieuchopstmkartben
authored andcommitted
boards: st: nucleo_wb07cc: add support for Nucleo-WB07CC board
Add support for the STMicroelectronics Nucleo-WB07CC board. Signed-off-by: Mathieu Choplain <[email protected]>
1 parent 9844a45 commit 3f25a14

File tree

10 files changed

+399
-0
lines changed

10 files changed

+399
-0
lines changed
Lines changed: 5 additions & 0 deletions
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_WB07CC
5+
select SOC_STM32WB07XX
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+
14+
/* Some pins are not connected to the Arduino
15+
* connector in default hardware configuration.
16+
* Only the connected pins are provided here.
17+
*/
18+
gpio-map = <0 0 &gpiob 3 0>, /* A0 */
19+
<1 0 &gpiob 1 0>, /* A1 */
20+
<2 0 &gpioa 15 0>, /* A2 */
21+
<3 0 &gpioa 12 0>, /* A3 */
22+
<4 0 &gpioa 14 0>, /* A4 */
23+
<5 0 &gpioa 13 0>, /* A5 */
24+
/* D0 - N/C (PA8 via SB9) */
25+
/* D1 - N/C (PA9 via SB7) */
26+
<8 0 &gpiob 15 0>, /* D2 */
27+
/* D3 - N/C (PA0 via SB3) */
28+
<10 0 &gpiob 11 0>, /* D4 */
29+
<11 0 &gpiob 14 0>, /* D5 */
30+
<12 0 &gpioa 11 0>, /* D6 */
31+
<13 0 &gpiob 10 0>, /* D7 */
32+
<14 0 &gpiob 8 0>, /* D8 */
33+
<15 0 &gpioa 1 0>, /* D9 */
34+
<16 0 &gpioa 4 0>, /* D10 */
35+
<17 0 &gpioa 6 0>, /* D11 */
36+
<18 0 &gpioa 7 0>, /* D12 */
37+
<19 0 &gpioa 5 0>, /* D13 */
38+
<20 0 &gpiob 7 0>, /* D14 */
39+
<21 0 &gpiob 6 0>; /* D15 */
40+
};
41+
};
42+
43+
arduino_i2c: &i2c2 {};
44+
arduino_serial: &usart1 {};
45+
arduino_spi: &spi2 {};

boards/st/nucleo_wb07cc/board.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# keep first
3+
board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=sw" "--start-address=0x10040000")
4+
5+
# keep first
6+
include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake)
7+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)

boards/st/nucleo_wb07cc/board.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: nucleo_wb07cc
3+
full_name: Nucleo WB07CC
4+
vendor: st
5+
socs:
6+
- name: stm32wb07
Binary file not shown.

boards/st/nucleo_wb07cc/doc/index.rst

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
.. zephyr:board:: nucleo_wb07cc
2+
3+
Overview
4+
********
5+
6+
The Nucleo WB07CC board is a Bluetooth |reg| Low Energy wireless and ultra-low-power
7+
board featuring an ARM Cortex |reg|-M0+ based STM32WB07CCV MCU, embedding a
8+
powerful and ultra-low-power radio compliant with the Bluetooth |reg| Low Energy
9+
SIG specification v5.4.
10+
11+
More information about the board can be found on the `Nucleo WB07CC webpage`_.
12+
13+
Hardware
14+
********
15+
16+
Nucleo WB07CC provides the following hardware components:
17+
18+
- STM32WB07CCV in VFQFPN32 package
19+
- ARM |reg| 32-bit Cortex |reg|-M0+ CPU
20+
- 64 MHz maximal CPU frequency
21+
- 256 KB Flash
22+
- 64 KB SRAM
23+
24+
More information about STM32WB07CCV can be found here:
25+
26+
- `WB07CC on www.st.com`_
27+
- `STM32WB07 reference manual`_
28+
29+
30+
Supported Features
31+
==================
32+
33+
The Zephyr ``nucleo_wb07cc`` board target supports the following hardware features:
34+
35+
+-----------+------------+-------------------------------------+
36+
| Interface | Controller | Driver/Component |
37+
+===========+============+=====================================+
38+
| NVIC | on-chip | nested vector interrupt controller |
39+
+-----------+------------+-------------------------------------+
40+
| UART | on-chip | serial port-polling; |
41+
| | | serial port-interrupt |
42+
+-----------+------------+-------------------------------------+
43+
| PINMUX | on-chip | pinmux |
44+
+-----------+------------+-------------------------------------+
45+
| GPIO | on-chip | gpio |
46+
+-----------+------------+-------------------------------------+
47+
| FLASH | on-chip | internal flash memory |
48+
+-----------+------------+-------------------------------------+
49+
| I2C | on-chip | i2c |
50+
+-----------+------------+-------------------------------------+
51+
| SPI | on-chip | spi |
52+
+-----------+------------+-------------------------------------+
53+
| ADC | on-chip | adc |
54+
+-----------+------------+-------------------------------------+
55+
| RADIO | on-chip | Bluetooth Low Energy |
56+
+-----------+------------+-------------------------------------+
57+
58+
59+
Other hardware features are not yet supported on this Zephyr port.
60+
61+
The default configuration can be found in the defconfig file:
62+
:zephyr_file:`boards/st/nucleo_wb07cc/nucleo_wb07cc_defconfig`
63+
64+
Bluetooth support
65+
-----------------
66+
67+
BLE support is enabled; however, to build a Zephyr sample using this board,
68+
the Bluetooth controller library must be fetched into Zephyr as a binary blob.
69+
70+
To fetch the binary blobs:
71+
72+
.. code-block:: console
73+
74+
$ west blobs fetch hal_stm32
75+
76+
Connections and IOs
77+
===================
78+
79+
Default Zephyr Peripheral Mapping:
80+
----------------------------------
81+
82+
- USART1 TX/RX : PA9/PA8 (ST-Link Virtual COM Port)
83+
- BUTTON (B1) : PA0
84+
- BUTTON (B2) : PB5
85+
- BUTTON (B3) : PB9
86+
- LED (LD1/BLUE) : PB0
87+
- LED (LD2/GREEN) : PB4
88+
- LED (LD3/RED) : PB2
89+
90+
For more details, please refer to the `Nucleo WB07CC board User Manual`_.
91+
92+
Programming and Debugging
93+
*************************
94+
95+
Nucleo WB07CC board includes an ST-LINK-V3EC embedded debug tool interface.
96+
97+
Applications for the ``nucleo_wb07cc`` board target can be built and flashed
98+
in the usual way (see :ref:`build_an_application` and :ref:`application_run`
99+
for more details).
100+
101+
Flashing
102+
========
103+
104+
The board is configured to be flashed using the west `STM32CubeProgrammer`_ runner,
105+
so :ref:`it must be installed <stm32cubeprog-flash-host-tools>` beforehand.
106+
107+
Alternatively, OpenOCD can also be used to flash the board using the
108+
``--runner`` (or ``-r``) option:
109+
110+
.. code-block:: console
111+
112+
$ west flash --runner openocd
113+
114+
Flashing an application to Nucleo WB07CC
115+
----------------------------------------
116+
117+
Connect the Nucleo WB07CC to your host computer using the USB port,
118+
then run a serial host program to connect with your Nucleo board:
119+
120+
.. code-block:: console
121+
122+
$ minicom -D /dev/ttyACM0
123+
124+
Now build and flash an application. Here is an example for
125+
:zephyr:code-sample:`hello_world`.
126+
127+
.. zephyr-app-commands::
128+
:zephyr-app: samples/hello_world
129+
:board: nucleo_wb07cc
130+
:goals: build flash
131+
132+
You should see the following message on the console:
133+
134+
.. code-block:: console
135+
136+
Hello World! nucleo_wb07cc/stm32wb07
137+
138+
139+
Debugging
140+
=========
141+
142+
You can debug an application in the usual way. Here is an example for the
143+
:zephyr:code-sample:`hello_world` application.
144+
145+
.. zephyr-app-commands::
146+
:zephyr-app: samples/hello_world
147+
:board: nucleo_wb07cc
148+
:maybe-skip-config:
149+
:goals: debug
150+
151+
.. _`Nucleo WB07CC webpage`:
152+
https://www.st.com/en/evaluation-tools/nucleo-wb07cc.html
153+
154+
.. _`WB07CC on www.st.com`:
155+
https://www.st.com/en/microcontrollers-microprocessors/stm32wb07cc.html
156+
157+
.. _`STM32WB07 reference manual`:
158+
https://www.st.com/resource/en/reference_manual/rm0530--stm32wb07xc-and-stm32wb06xc-ultralow-power-wireless-32bit-mcus-armbased-cortexm0-with-bluetooth-low-energy-and-24-ghz-radio-solution-stmicroelectronics.pdf
159+
160+
.. _`Nucleo WB07CC board User Manual`:
161+
https://www.st.com/resource/en/user_manual/um3344-stm32wb07-nucleo64-board-mb1801-and-mb2119-stmicroelectronics.pdf
162+
163+
.. _STM32CubeProgrammer:
164+
https://www.st.com/en/development-tools/stm32cubeprog.html
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
/*
2+
* Copyright (c) 2025 STMicroelectronics
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
#include <st/wb0/stm32wb07Xc.dtsi>
9+
#include <st/wb0/stm32wb07ccvx-pinctrl.dtsi>
10+
#include <zephyr/dt-bindings/input/input-event-codes.h>
11+
12+
#include "arduino_r3_connector.dtsi"
13+
14+
/ {
15+
model = "STMicroelectronics STM32WB07CC-NUCLEO board";
16+
compatible = "st,stm32wb07cc-nucleo";
17+
18+
#address-cells = <1>;
19+
#size-cells = <1>;
20+
21+
chosen {
22+
zephyr,console = &usart1;
23+
zephyr,shell-uart = &usart1;
24+
zephyr,sram = &sram0;
25+
zephyr,flash = &flash0;
26+
zephyr,bt-c2h-uart = &usart1;
27+
};
28+
29+
leds: leds {
30+
compatible ="gpio-leds";
31+
blue_led_1: led_0 {
32+
gpios = <&gpiob 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
33+
};
34+
green_led_1: led_1 {
35+
gpios = <&gpiob 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
36+
};
37+
red_led_1: led_2 {
38+
gpios = <&gpiob 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
39+
};
40+
};
41+
42+
gpio_keys {
43+
compatible = "gpio-keys";
44+
user_button_1: button_0 {
45+
label = "SW1";
46+
gpios = <&gpioa 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
47+
zephyr,code = <INPUT_KEY_0>;
48+
};
49+
user_button_2: button_1 {
50+
label = "SW2";
51+
gpios = <&gpiob 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
52+
zephyr,code = <INPUT_KEY_1>;
53+
};
54+
user_button_3: button_2 {
55+
label = "SW3";
56+
gpios = <&gpiob 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
57+
zephyr,code = <INPUT_KEY_2>;
58+
};
59+
};
60+
61+
aliases {
62+
led0 = &blue_led_1;
63+
led1 = &green_led_1;
64+
led2 = &red_led_1;
65+
sw0 = &user_button_1;
66+
sw1 = &user_button_2;
67+
sw2 = &user_button_3;
68+
};
69+
};
70+
71+
&pwrc {
72+
smps-mode = "RUN";
73+
smps-bom = <3>;
74+
};
75+
76+
&clk_lse {
77+
status = "okay";
78+
};
79+
80+
&clk_hse {
81+
status = "okay";
82+
};
83+
84+
&clk_hsi {
85+
status = "okay";
86+
};
87+
88+
&pll {
89+
status = "okay";
90+
};
91+
92+
&rcc {
93+
clocks = <&pll>;
94+
clock-frequency = <DT_FREQ_M(64)>;
95+
clksys-prescaler = <1>;
96+
slow-clock = <&clk_lse>;
97+
};
98+
99+
&bt_hci_wb0 {
100+
status = "okay";
101+
};
102+
103+
&usart1 {
104+
pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa8>;
105+
pinctrl-names = "default";
106+
current-speed = <115200>;
107+
status = "okay";
108+
};
109+
110+
&i2c2 {
111+
pinctrl-0 = <&i2c2_scl_pb6 &i2c2_sda_pb7>;
112+
pinctrl-names = "default";
113+
status = "okay";
114+
};
115+
116+
&spi2 {
117+
pinctrl-0 = <&spi2_nss_pa4 &spi2_sck_pa5 &spi2_miso_pa7 &spi2_mosi_pa6>;
118+
pinctrl-names = "default";
119+
status = "okay";
120+
/* Select 32MHz clock for SPI2 */
121+
clocks = <&rcc STM32_CLOCK(APB1, 12)>,
122+
<&rcc STM32_SRC_SYSCLK SPI2_I2S2_SEL(1)>;
123+
};
124+
125+
&flash0 {
126+
partitions {
127+
compatible = "fixed-partitions";
128+
#address-cells = <1>;
129+
#size-cells = <1>;
130+
/* Set aside 16KB of storage at the end of 256KB flash */
131+
storage_partition: partition@3c000 {
132+
label = "storage";
133+
reg = <0x0003c000 DT_SIZE_K(16)>;
134+
};
135+
};
136+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
identifier: nucleo_wb07cc
2+
name: ST Nucleo WB07CC
3+
type: mcu
4+
arch: arm
5+
toolchain:
6+
- zephyr
7+
- gnuarmemb
8+
- xtools
9+
ram: 64
10+
flash: 256
11+
supported:
12+
- adc
13+
- arduino_i2c
14+
- arduino_spi
15+
- dma
16+
- gpio
17+
- i2c
18+
- spi
19+
- bluetooth
20+
vendor: st

0 commit comments

Comments
 (0)