From db0e8a6ff35d800124cb1fc8e2df738cc9a99e4b Mon Sep 17 00:00:00 2001 From: Michal Piekos Date: Sat, 12 Jul 2025 11:17:58 +0200 Subject: [PATCH] boards: weact: add weact stm32u585ci core board Low cost STM32U585CI development board in blackpill package. Signed-off-by: Michal Piekos --- .../blackpill_u585ci/Kconfig.blackpill_u585ci | 5 + .../blackpill_u585ci/blackpill_u585ci.dts | 237 ++++++++++++++++++ .../blackpill_u585ci/blackpill_u585ci.yaml | 20 ++ .../blackpill_u585ci_defconfig | 17 ++ boards/weact/blackpill_u585ci/board.cmake | 7 + boards/weact/blackpill_u585ci/board.yml | 6 + .../doc/img/blackpill_u585ci.webp | Bin 0 -> 13584 bytes boards/weact/blackpill_u585ci/doc/index.rst | 166 ++++++++++++ 8 files changed, 458 insertions(+) create mode 100644 boards/weact/blackpill_u585ci/Kconfig.blackpill_u585ci create mode 100644 boards/weact/blackpill_u585ci/blackpill_u585ci.dts create mode 100644 boards/weact/blackpill_u585ci/blackpill_u585ci.yaml create mode 100644 boards/weact/blackpill_u585ci/blackpill_u585ci_defconfig create mode 100644 boards/weact/blackpill_u585ci/board.cmake create mode 100644 boards/weact/blackpill_u585ci/board.yml create mode 100644 boards/weact/blackpill_u585ci/doc/img/blackpill_u585ci.webp create mode 100644 boards/weact/blackpill_u585ci/doc/index.rst diff --git a/boards/weact/blackpill_u585ci/Kconfig.blackpill_u585ci b/boards/weact/blackpill_u585ci/Kconfig.blackpill_u585ci new file mode 100644 index 00000000000..c7745deef2d --- /dev/null +++ b/boards/weact/blackpill_u585ci/Kconfig.blackpill_u585ci @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Michal Piekos +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_BLACKPILL_U585CI + select SOC_STM32U585XX diff --git a/boards/weact/blackpill_u585ci/blackpill_u585ci.dts b/boards/weact/blackpill_u585ci/blackpill_u585ci.dts new file mode 100644 index 00000000000..92456baf03a --- /dev/null +++ b/boards/weact/blackpill_u585ci/blackpill_u585ci.dts @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2025 Michal Piekos + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include + +/ { + model = "WeAct Studio Black Pill STM32U585 Core Board"; + compatible = "weact,blackpill-u585ci"; + + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,canbus = &fdcan1; + }; + + aliases { + led0 = &led_0; + sw0 = &button_0; + watchdog0 = &iwdg; + volt-sensor0 = &vref1; + volt-sensor1 = &vbat4; + die-temp0 = &die_temp; + }; + + leds { + compatible = "gpio-leds"; + + led_0: led0 { + gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>; + label = "User LED"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + + button_0: button0 { + label = "User Button"; + gpios = <&gpioa 0 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>; + zephyr,code = ; + }; + }; + + zephyr,user { + io-channels = <&adc1 16>, <&adc4 18>; + }; +}; + +&clk_hsi48 { + status = "okay"; +}; + +&clk_lse { + status = "okay"; +}; + +&clk_hse { + clock-frequency = ; + status = "okay"; +}; + +&clk_msis { + status = "okay"; + msi-range = <4>; + msi-pll-mode; +}; + +&pll1 { + div-m = <5>; + mul-n = <32>; + div-q = <2>; + div-r = <1>; + clocks = <&clk_hse>; + status = "okay"; +}; + +&rcc { + clocks = <&pll1>; + clock-frequency = ; + ahb-prescaler = <1>; + apb1-prescaler = <1>; + apb2-prescaler = <1>; + apb3-prescaler = <1>; +}; + +&lpuart1 { + pinctrl-0 = <&lpuart1_tx_pa2 &lpuart1_rx_pa3>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart1 { + pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&i2c1 { + pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb3>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = ; +}; + +&i2c2 { + pinctrl-0 = <&i2c2_scl_pb10 &i2c2_sda_pb14>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = ; +}; + +&spi1 { + pinctrl-0 = <&spi1_nss_pa4 &spi1_sck_pa1 + &spi1_miso_pa6 &spi1_mosi_pa7>; + pinctrl-names = "default"; + status = "okay"; +}; + +&fdcan1 { + clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00000200>, + <&rcc STM32_SRC_PLL1_Q FDCAN1_SEL(1)>; + pinctrl-0 = <&fdcan1_rx_pb8 &fdcan1_tx_pb9>; + pinctrl-names = "default"; + status = "okay"; +}; + +&adc1 { + pinctrl-0 = <&adc1_in16_pb1>; + pinctrl-names = "default"; + st,adc-clock-source = "ASYNC"; + st,adc-prescaler = <4>; + status = "okay"; +}; + +&adc4 { + pinctrl-0 = <&adc4_in18_pb0>; + pinctrl-names = "default"; + st,adc-clock-source = "ASYNC"; + st,adc-prescaler = <4>; + status = "okay"; +}; + +&dac1 { + /* CAUTION: DAC on PA4 may conflict with SPI1 NSS on same pin */ + pinctrl-0 = <&dac1_out1_pa4>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&timers3 { + st,prescaler = <10000>; + status = "okay"; + + pwm3: pwm { + pinctrl-0 = <&tim3_ch1_pb4>; + pinctrl-names = "default"; + status = "okay"; + }; +}; + +&timers4 { + st,prescaler = <10000>; + status = "okay"; + + pwm4: pwm { + pinctrl-0 = <&tim4_ch2_pb7>; + pinctrl-names = "default"; + status = "okay"; + }; +}; + +zephyr_udc0: &usbotg_fs { + pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>; + pinctrl-names = "default"; + status = "okay"; + + cdc_acm_uart0: cdc_acm_uart0 { + compatible = "zephyr,cdc-acm-uart"; + }; +}; + +&iwdg { + status = "okay"; +}; + +&rng { + status = "okay"; +}; + +&gpdma1 { + status = "okay"; +}; + +&die_temp { + status = "okay"; +}; + +&rtc { + clocks = <&rcc STM32_CLOCK_BUS_APB3 0x00200000>, + <&rcc STM32_SRC_LSE RTC_SEL(1)>; + status = "okay"; +}; + +&vref1 { + status = "okay"; +}; + +&vbat4 { + status = "okay"; +}; + +&clk_lsi { + status = "okay"; +}; + +stm32_lp_tick_source: &lptim1 { + clocks = <&rcc STM32_CLOCK_BUS_APB3 0x00000800>, + <&rcc STM32_SRC_LSI LPTIM1_SEL(1)>; + status = "okay"; +}; + +&backup_sram { + status = "okay"; +}; diff --git a/boards/weact/blackpill_u585ci/blackpill_u585ci.yaml b/boards/weact/blackpill_u585ci/blackpill_u585ci.yaml new file mode 100644 index 00000000000..888bb7d8864 --- /dev/null +++ b/boards/weact/blackpill_u585ci/blackpill_u585ci.yaml @@ -0,0 +1,20 @@ +identifier: blackpill_u585ci +name: WeAct Studio Black Pill STM32U585 Core Board +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb +supported: + - can + - adc + - gpio + - i2c + - spi + - usart + - watchdog + - dma + - rtc +ram: 784 +flash: 2048 +vendor: weact diff --git a/boards/weact/blackpill_u585ci/blackpill_u585ci_defconfig b/boards/weact/blackpill_u585ci/blackpill_u585ci_defconfig new file mode 100644 index 00000000000..c4fcc282ee9 --- /dev/null +++ b/boards/weact/blackpill_u585ci/blackpill_u585ci_defconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable GPIO +CONFIG_GPIO=y + +# Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y diff --git a/boards/weact/blackpill_u585ci/board.cmake b/boards/weact/blackpill_u585ci/board.cmake new file mode 100644 index 00000000000..fc5b7772400 --- /dev/null +++ b/boards/weact/blackpill_u585ci/board.cmake @@ -0,0 +1,7 @@ +# keep first +board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") +board_runner_args(blackmagicprobe "--gdb-serial=/dev/ttyACM0") + +# keep first +include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) +include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) diff --git a/boards/weact/blackpill_u585ci/board.yml b/boards/weact/blackpill_u585ci/board.yml new file mode 100644 index 00000000000..4abf4758c34 --- /dev/null +++ b/boards/weact/blackpill_u585ci/board.yml @@ -0,0 +1,6 @@ +board: + name: blackpill_u585ci + full_name: WeAct Studio Black Pill STM32U585 Core Board + vendor: weact + socs: + - name: stm32u585xx diff --git a/boards/weact/blackpill_u585ci/doc/img/blackpill_u585ci.webp b/boards/weact/blackpill_u585ci/doc/img/blackpill_u585ci.webp new file mode 100644 index 0000000000000000000000000000000000000000..ccf23ff96329bd0a4c6d9325e1821ff9540c6177 GIT binary patch literal 13584 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 WlK=s$Ie-8K>tPM%09O0}0000iAaHE} literal 0 HcmV?d00001 diff --git a/boards/weact/blackpill_u585ci/doc/index.rst b/boards/weact/blackpill_u585ci/doc/index.rst new file mode 100644 index 00000000000..1b57b7ffbb2 --- /dev/null +++ b/boards/weact/blackpill_u585ci/doc/index.rst @@ -0,0 +1,166 @@ +.. zephyr:board:: blackpill_u585ci + +Overview +******** + +The WeAct Black Pill STM32U585CI Core Board is an extremely low cost and bare-bone +development board featuring the STM32U585CI, see `STM32U585CI website`_. +This is the 48-pin variant of the STM32U585C series, +see `STM32U5 reference manual`_. More info about the board available +on `WeAct Github`_. + +Key Features + +- STM32U585CI microcontroller in UFQFPN48 package +- ARM |reg| 32-bit Cortex |reg| -M33 with TrustZone |reg|, MPU, DSP and FPU +- 160 MHz max CPU frequency, 1.5 DMPIS/MHz, 4.07 CoreMark |reg| /MHz +- 2 MB Flash with ECC and 2 banks +- 784 KB SRAM +- GPIO with external interrupt capability +- 1x14-bit 2.5 MSPS ADC, 1x12-bit 2.5 MSPS ADC +- 2x12-bit DAC +- USB OTG 2.0 full-speed controller +- 1 user LED +- User, boot, and reset push-buttons +- 32.768 kHz and 8MHz HSE crystal oscillators +- Board connectors: + + - USB Type-C |reg| Connector + - SWD header for external debugger + - 2x 20-pin GPIO connector + +Hardware +******** + +The STM32U585xx devices are an ultra-low-power microcontrollers family (STM32U5 +Series) based on the high-performance Arm |reg| Cortex |reg| -M33 32-bit RISC core. +They operate at a frequency of up to 160 MHz. +More information about STM32U585CI can be found here: + +- `STM32U585CI website`_ +- `STM32U5 reference manual`_ + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Pin Mapping +=========== + +Default Zephyr Peripheral Mapping: +---------------------------------- + +- USER_LED : PC13 +- USER_PB : PA0 +- USB DM/DP : PA11/PA12 (USB CDC ACM) +- UART : RX/TX - PA10/PA9 +- LPUART : RX/TX - PA3/PA2 +- I2C1 : SCL/SDA - PB6/PB3 +- I2C2 : SCL/SDA - PB10/PB14 +- SPI1 : SCK/MISO/MOSI/NSS - PA1/PA6/PA7/PA4 +- FDCAN : RX/TX - PB8/PB9 + +System Clock +============ + +The STM32U585CI System Clock could be driven by internal or external oscillator, +as well as main PLL clock. By default System clock is driven by PLL clock at +160MHz, driven by 25MHz external clock. + +Serial Port (USB CDC ACM) +========================= + +The Zephyr console output is assigned to the USB CDC ACM virtual serial port. +Virtual COM port interface. Default communication settings are 115200 8N1. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +The ``blackpill_u585ci`` board facilitates firmware flashing via the USB DFU +bootloader. This method simplifies the process of updating images, although +it doesn't provide debugging capabilities. However, the board provides header +pins for the Serial Wire Debug (SWD) interface, which can be used to connect +an external debugger, such as ST-Link. + +Flashing +======== + +To activate the bootloader, follow these steps: + +1. Press and hold the BOOT0 key. +2. While still holding the BOOT0 key, press and release the RESET key. +3. Wait for 0.5 seconds, then release the BOOT0 key. + +Upon successful execution of these steps, the device will transition into +bootloader mode and present itself as a USB DFU Mode device. You can program +the device using the west tool or the STM32CubeProgrammer. + + +Flashing an application to ``blackpill_u585ci`` +----------------------------------------------- + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +First, put the board in bootloader mode as described above. Then build and flash +the application in the usual way. Just add ``CONFIG_BOOT_DELAY=5000`` to the +configuration, so that USB CDC ACM is initialized before any text is printed, +as below: + +.. zephyr-app-commands:: + :zephyr-app: samples/subsys/usb/console + :board: blackpill_u585ci + :goals: build flash + :gen-args: -DCONFIG_BOOT_DELAY=5000 + +Run a serial host program to connect with your board: + +.. code-block:: console + + $ minicom -D -b 115200 + +Then, press the RESET button, you should see the following message after few seconds: + +.. code-block:: console + + Hello World! arm + +Replace :code:`` with the port where the board can be found. +For example, under Linux, :code:`/dev/ttyACM0`. + +Debugging +--------- + +There is support for `Black Magic Probe`_ debugger. +At minimum connect GND, SWDIO and SWCLK lines. +Here is an example for the :zephyr:code-sample:`blinky` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: blackpill_u585ci + :goals: debug + +References +********** + +.. target-notes:: + +.. _Zadig: + https://zadig.akeo.ie/ + +.. _WeAct Github: + https://github.com/WeActStudio/WeActStudio.STM32U585Cx_CoreBoard + +.. _dfu-util: + http://dfu-util.sourceforge.net/build.html + +.. _STM32U585CI website: + https://www.st.com/en/microcontrollers-microprocessors/stm32u585ci.html + +.. _STM32U5 reference manual: + https://www.st.com/resource/en/reference_manual/rm0456-stm32u5-series-armbased-32bit-mcus-stmicroelectronics.pdf + +.. _Black Magic Probe: + https://black-magic.org/index.html