From 655b9971c288808ec6795a732c658771d1afc508 Mon Sep 17 00:00:00 2001 From: Siratul Islam Date: Mon, 20 Oct 2025 13:33:04 +0600 Subject: [PATCH] boards: arm: add support for WeAct STM32G030 Core Board This patch adds support for the WeAct Studio STM32G030 Core Board, a compact and low-cost development platform based on the STM32G030F6P6 microcontroller. Main features: - STM32G030F6P6 MCU (32 KB Flash, 8 KB SRAM) - User LED - Exposed SWD header for programming/debugging - UART1 (PB6/PB7) as default console - I2C2 (PA11/PA12) and SPI1 (PA1/PA6/PA7) peripheral mapping - 3.3V or 5V input power options with onboard regulator The board has been tested with the following Zephyr samples: - samples/basic/blinky - samples/hello_world Signed-off-by: Siratul Islam --- boards/weact/stm32g030_core/Kconfig.defconfig | 12 ++ .../Kconfig.weact_stm32g030_core | 5 + boards/weact/stm32g030_core/board.cmake | 10 ++ boards/weact/stm32g030_core/board.yml | 6 + .../doc/img/weact_stm32g030_core.webp | Bin 0 -> 53700 bytes boards/weact/stm32g030_core/doc/index.rst | 138 ++++++++++++++++++ .../weact/stm32g030_core/support/openocd.cfg | 7 + .../stm32g030_core/weact_stm32g030_core.dts | 85 +++++++++++ .../stm32g030_core/weact_stm32g030_core.yaml | 14 ++ .../weact_stm32g030_core_defconfig | 12 ++ 10 files changed, 289 insertions(+) create mode 100644 boards/weact/stm32g030_core/Kconfig.defconfig create mode 100644 boards/weact/stm32g030_core/Kconfig.weact_stm32g030_core create mode 100644 boards/weact/stm32g030_core/board.cmake create mode 100644 boards/weact/stm32g030_core/board.yml create mode 100644 boards/weact/stm32g030_core/doc/img/weact_stm32g030_core.webp create mode 100644 boards/weact/stm32g030_core/doc/index.rst create mode 100644 boards/weact/stm32g030_core/support/openocd.cfg create mode 100644 boards/weact/stm32g030_core/weact_stm32g030_core.dts create mode 100644 boards/weact/stm32g030_core/weact_stm32g030_core.yaml create mode 100644 boards/weact/stm32g030_core/weact_stm32g030_core_defconfig diff --git a/boards/weact/stm32g030_core/Kconfig.defconfig b/boards/weact/stm32g030_core/Kconfig.defconfig new file mode 100644 index 0000000000000..9ce72a31a3514 --- /dev/null +++ b/boards/weact/stm32g030_core/Kconfig.defconfig @@ -0,0 +1,12 @@ +# STM32G030 Core V1.0 board configuration + +# Copyright (c) 2025 Siratul Islam +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_WEACT_STM32G030_CORE + +config SPI_STM32_INTERRUPT + default y + depends on SPI + +endif # BOARD_WEACT_STM32G030_CORE diff --git a/boards/weact/stm32g030_core/Kconfig.weact_stm32g030_core b/boards/weact/stm32g030_core/Kconfig.weact_stm32g030_core new file mode 100644 index 0000000000000..c4e4d385770c3 --- /dev/null +++ b/boards/weact/stm32g030_core/Kconfig.weact_stm32g030_core @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Siratul Islam +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_WEACT_STM32G030_CORE + select SOC_STM32G030XX diff --git a/boards/weact/stm32g030_core/board.cmake b/boards/weact/stm32g030_core/board.cmake new file mode 100644 index 0000000000000..611111dc2cdc5 --- /dev/null +++ b/boards/weact/stm32g030_core/board.cmake @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: Apache-2.0 + +# keep first +board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") +board_runner_args(jlink "--device=STM32G031K8" "--speed=4000") + +# keep first +include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd-stm32.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/weact/stm32g030_core/board.yml b/boards/weact/stm32g030_core/board.yml new file mode 100644 index 0000000000000..e4c00472d1553 --- /dev/null +++ b/boards/weact/stm32g030_core/board.yml @@ -0,0 +1,6 @@ +board: + name: weact_stm32g030_core + full_name: STM32G030 Core Board 1.0 + vendor: weact + socs: + - name: stm32g030xx diff --git a/boards/weact/stm32g030_core/doc/img/weact_stm32g030_core.webp b/boards/weact/stm32g030_core/doc/img/weact_stm32g030_core.webp new file mode 100644 index 0000000000000000000000000000000000000000..d18052f4c03d921f6bf9d6f954c72ed1798fde48 GIT binary patch literal 53700 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 Jxc~qF007#yk0Jm7 literal 0 HcmV?d00001 diff --git a/boards/weact/stm32g030_core/doc/index.rst b/boards/weact/stm32g030_core/doc/index.rst new file mode 100644 index 0000000000000..5579d09833c1a --- /dev/null +++ b/boards/weact/stm32g030_core/doc/index.rst @@ -0,0 +1,138 @@ +.. zephyr:board:: weact_stm32g030_core + +Overview +******** +The WeAct Studio STM32G030 Core Board provides an affordable and flexible way for +users to try out new concepts and build prototypes with the STM32G030F6 +microcontroller. This compact development board is designed for space-constrained +applications while maintaining essential functionality. + +The board requires an external ST-LINK or compatible SWD programmer +for flashing and debugging, as it does not include an onboard debugger. + +Hardware +******** +WeAct STM32G030 provides the following hardware components: + +- STM32G030F6P6 microcontroller in TSSOP-20 package featuring 32 Kbytes of Flash + memory and 8 Kbytes of SRAM +- Compact form factor optimized for embedded applications +- Exposed SWD header for programming and debugging (SWDIO, SWCLK, GND, 3V3) +- One user LED connected to PA4 (blue LED) +- NRST button for manual reset +- Flexible board power supply: + + - External 3.3V supply via power pins + - 5V input with onboard regulator + +- All GPIO pins broken out for maximum flexibility + +More information about STM32G030F6 can be found in the +`STM32G0x0 reference manual`_ and `STM32G030x6 datasheet`_. + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Connections and IOs +=================== + +Each of the GPIO pins can be configured by software as output (push-pull or open-drain), +as input (with or without pull-up or pull-down), or as peripheral alternate function. +Most of the GPIO pins are shared with digital or analog alternate functions. All GPIOs +are high current capable except for analog inputs. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +- UART_1 TX/RX : PB6/PB7 (Primary Console) +- UART_2 TX/RX : PA2/PA3 (Secondary UART) +- I2C2 SCL/SDA : PA11/PA12 +- SPI1 SCK/MISO/MOSI : PA1/PA6/PA7 +- User LED : PA4 (Blue LED) +- SWD Interface : PA13 (SWDIO), PA14 (SWCLK) + +System Clock +------------ + +The WeAct STM32G030 board is configured to use the internal HSI oscillator at 16 MHz +with PLL to generate a system clock of 64 MHz. The board also includes LSE crystal +support for RTC applications. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +WeAct STM32G030 board requires an external ST-LINK/V2 or compatible SWD debugger for +programming and debugging. Connect your debugger to the SWD header: + +- SWDIO (PA13) +- SWCLK (PA14) +- GND +- 3V3 (optional, for powering the board) + +Flashing +======== + +The board is configured to be flashed using west `STM32CubeProgrammer`_ runner, +so its :ref:`installation ` is required. + +Alternatively, OpenOCD or JLink can also be used to flash the board using +the ``--runner`` (or ``-r``) option: + +.. code-block:: console + + $ west flash --runner openocd + $ west flash --runner jlink + +Flashing an application to WeAct STM32G030 +------------------------------------------- + +Connect your ST-LINK or compatible programmer to the SWD header on the board. + +Here is an example for the :zephyr:code-sample:`blinky` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: weact_stm32g030_core + :goals: build flash + +You will see the blue LED on PA4 blinking every second. + +Debugging +========= + +You can debug an application in the usual way. Here is an example for the +:zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: weact_stm32g030_core + :maybe-skip-config: + :goals: debug + +Serial Console +============== + +The primary serial console is available on USART1 (PB6/PB7) at 115200 baud. Connect +a USB-to-serial adapter to these pins to access the Zephyr shell and console output: + +- TX: PB6 +- RX: PB7 +- GND: GND + +References +********** + +.. target-notes:: + +.. _STM32G0x0 reference manual: + https://www.st.com/resource/en/reference_manual/rm0454-stm32g0x0-advanced-armbased-32bit-mcus-stmicroelectronics.pdf + +.. _STM32G030x6 datasheet: + https://www.st.com/resource/en/datasheet/stm32g030c6.pdf + +.. _STM32CubeProgrammer: + https://www.st.com/en/development-tools/stm32cubeprog.html diff --git a/boards/weact/stm32g030_core/support/openocd.cfg b/boards/weact/stm32g030_core/support/openocd.cfg new file mode 100644 index 0000000000000..0001c39855b0d --- /dev/null +++ b/boards/weact/stm32g030_core/support/openocd.cfg @@ -0,0 +1,7 @@ +source [find interface/stlink.cfg] + +transport select hla_swd + +source [find target/stm32g0x.cfg] + +reset_config srst_only diff --git a/boards/weact/stm32g030_core/weact_stm32g030_core.dts b/boards/weact/stm32g030_core/weact_stm32g030_core.dts new file mode 100644 index 0000000000000..4f921dbc8aeee --- /dev/null +++ b/boards/weact/stm32g030_core/weact_stm32g030_core.dts @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2025 Siratul Islam + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include + +/ { + model = "WeAct Studio STM32G030 Core Board"; + compatible = "weact,stm32g030-core"; + + chosen { + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds: leds { + compatible = "gpio-leds"; + + blue_led: blue_led { + gpios = <&gpioa 4 GPIO_ACTIVE_HIGH>; + label = "User LED"; + }; + }; + + aliases { + led0 = &blue_led; + }; +}; + +&clk_hsi { + status = "okay"; +}; + +&clk_lse { + status = "okay"; +}; + +&pll { + div-m = <1>; + mul-n = <8>; + div-r = <2>; + clocks = <&clk_hsi>; + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; + ahb-prescaler = <1>; + apb1-prescaler = <1>; +}; + +&usart1 { + pinctrl-0 = <&usart1_tx_pb6 &usart1_rx_pb7>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart2 { + pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&i2c2 { + pinctrl-0 = <&i2c2_scl_pa11 &i2c2_sda_pa12>; + pinctrl-names = "default"; + clock-frequency = ; + status = "okay"; +}; + +&spi1 { + pinctrl-0 = <&spi1_sck_pa1 &spi1_miso_pa6 &spi1_mosi_pa7>; + pinctrl-names = "default"; + status = "okay"; +}; diff --git a/boards/weact/stm32g030_core/weact_stm32g030_core.yaml b/boards/weact/stm32g030_core/weact_stm32g030_core.yaml new file mode 100644 index 0000000000000..f743ba82d4829 --- /dev/null +++ b/boards/weact/stm32g030_core/weact_stm32g030_core.yaml @@ -0,0 +1,14 @@ +identifier: weact_stm32g030_core +name: WeAct Studio STM32G030 Core Board +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb +supported: + - gpio + - i2c + - spi +ram: 8 +flash: 32 +vendor: weact diff --git a/boards/weact/stm32g030_core/weact_stm32g030_core_defconfig b/boards/weact/stm32g030_core/weact_stm32g030_core_defconfig new file mode 100644 index 0000000000000..c60dfffbc3b86 --- /dev/null +++ b/boards/weact/stm32g030_core/weact_stm32g030_core_defconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Serial Drivers +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y + +# Enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# GPIO Controller +CONFIG_GPIO=y