WeAct Studio Black Pill STM32U585 Core Board

Overview

The WeAct Black Pill STM32U585CI Core Board is an extremely low cost and bare-bone development board featuring the STM32U585CI, see STM32U585CI website [2]. This is the 48-pin variant of the STM32U585C series, see STM32U5 reference manual [3]. More info about the board available on WeAct Github [1].

Key Features

  • STM32U585CI microcontroller in UFQFPN48 package

  • ARM® 32-bit Cortex® -M33 with TrustZone®, MPU, DSP and FPU

  • 160 MHz max CPU frequency, 1.5 DMPIS/MHz, 4.07 CoreMark® /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® 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® Cortex® -M33 32-bit RISC core. They operate at a frequency of up to 160 MHz. More information about STM32U585CI can be found here:

Supported Features

The blackpill_u585ci board supports the hardware features listed below.

on-chip / on-board
Feature integrated in the SoC / present on the board.
2 / 2
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files.
vnd,foo
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.

blackpill_u585ci/stm32u585xx target

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M33 CPU1

arm,cortex-m33

ADC

on-chip

STM32 ADC2

st,stm32-adc

CAN

on-chip

STM32 FDCAN CAN FD controller1

st,stm32-fdcan

Clock control

on-chip

STM32U5 RCC (Reset and Clock controller)1

st,stm32u5-rcc

on-chip

STM32 HSE Clock1

st,stm32-hse-clock

on-chip

Generic fixed-rate clock provider2 1

fixed-clock

on-chip

STM32U5 Multi Speed Internal Clock1 1

st,stm32u5-msi-clock

on-chip

STM32 LSE Clock1

st,stm32-lse-clock

on-chip

STM32U5 PLL1 2

st,stm32u5-pll-clock

on-chip

STM32 Microcontroller Clock Output (MCO)1

st,stm32-clock-mco

Counter

on-chip

STM32 counters5

st,stm32-counter

Cryptographic accelerator

on-chip

STM32 HASH Processor1

st,stm32-hash

on-chip

STM32 AES Accelerator1

st,stm32-aes

DAC

on-chip

STM32 family DAC1

st,stm32-dac

DMA

on-chip

STM32U5 DMA controller1

st,stm32u5-dma

Flash controller

on-chip

STM32 Family flash controller1

st,stm32-flash-controller

GPIO & Headers

on-chip

STM32 GPIO Controller9

st,stm32-gpio

on-chip

Serial Wire - JTAG Connector1

swj-connector

I2C

on-chip

STM32 I2C V2 controller2 2

st,stm32-i2c-v2

I2S

on-chip

STM32 SAI controller2

st,stm32-sai

Input

on-board

Group of GPIO-bound input keys1

gpio-keys

Interrupt controller

on-chip

ARMv8-M NVIC (Nested Vectored Interrupt Controller)1

arm,v8m-nvic

on-chip

STM32G0 External Interrupt Controller1

st,stm32g0-exti

LED

on-board

Group of GPIO-controlled LEDs1

gpio-leds

Memory controller

on-chip

STM32 Flexible Memory Controller (FMC)1

st,stm32-fmc

on-chip

STM32 Flexible Memory Controller (NOR Flash/PSRAM/SRAM controller)1

st,stm32-fmc-nor-psram

MMC

on-chip

STM32 SDMMC Disk Access2

st,stm32-sdmmc

MMU / MPU

on-chip

ARMv8-M MPU (Memory Protection Unit)1

arm,armv8m-mpu

MTD

on-chip

STM32 flash memory1

st,stm32-nv-flash

OCTOSPI

on-chip

STM32 OSPI Controller2

st,stm32-ospi

PHY

on-chip

This binding is to be used by all the usb transceivers which are built-in with USB IP1

usb-nop-xceiv

Pin control

on-chip

STM32 Pin controller1

st,stm32-pinctrl

Power management

on-chip

STM32 power controller1

st,stm32-pwr

PWM

on-chip

STM32 PWM2 9

st,stm32-pwm

Reset controller

on-chip

STM32 Reset and Clock Control (RCC) Controller1

st,stm32-rcc-rctl

RNG

on-chip

STM32 Random Number Generator1

st,stm32-rng

RTC

on-chip

STM32 RTC1

st,stm32-rtc

Sensors

on-chip

STM32 family TEMP node for production calibrated sensors with two calibration temperatures1

st,stm32-temp-cal

on-chip

STM32 VREF+1 1

st,stm32-vref

on-chip

STM32 VBAT1 1

st,stm32-vbat

Serial controller

on-chip

STM32 USART1 2

st,stm32-usart

on-chip

STM32 UART2

st,stm32-uart

on-chip

STM32 LPUART1

st,stm32-lpuart

SMbus

on-chip

STM32 SMBus controller4

st,stm32-smbus

SPI

on-chip

STM32H7 SPI controller1 2

st,stm32h7-spi

SRAM

on-chip

Generic on-chip SRAM1

mmio-sram

USB Type-C Port Controller

on-chip

STM32 USB Type-C / Power Delivery1

st,stm32-ucpd

Timer

on-chip

ARMv8-M System Tick1

arm,armv8m-systick

on-chip

STM32 low-power timer (LPTIM)1 3

st,stm32-lptim

on-chip

STM32 timers2 9

st,stm32-timers

USB

on-chip

STM32 OTGFS controller1

st,stm32-otgfs

Watchdog

on-chip

STM32 watchdog1

st,stm32-watchdog

on-chip

STM32 system window watchdog1

st,stm32-window-watchdog

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

The blackpill_u585ci board supports the runners and associated west commands listed below.

flash debug attach
blackmagicprobe ✅ (default)
dfu-util ✅ (default)

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 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:

# From the root of the zephyr repository
west build -b blackpill_u585ci samples/subsys/usb/console -- -DCONFIG_BOOT_DELAY=5000
west flash

Run a serial host program to connect with your board:

$ minicom -D <tty_device> -b 115200

Then, press the RESET button, you should see the following message after few seconds:

Hello World! arm

Replace <tty_device> with the port where the board can be found. For example, under Linux, /dev/ttyACM0.

Debugging

There is support for Black Magic Probe [4] debugger. At minimum connect GND, SWDIO and SWCLK lines. Here is an example for the Blinky application.

# From the root of the zephyr repository
west build -b blackpill_u585ci samples/basic/blinky
west debug

References