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 |
|
ADC |
on-chip |
STM32 ADC2 |
|
CAN |
on-chip |
STM32 FDCAN CAN FD controller1 |
|
Clock control |
on-chip |
STM32U5 RCC (Reset and Clock controller)1 |
|
on-chip |
STM32 HSE Clock1 |
||
on-chip |
|||
on-chip |
|||
on-chip |
STM32 LSE Clock1 |
||
on-chip |
|||
on-chip |
STM32 Microcontroller Clock Output (MCO)1 |
||
Counter |
on-chip |
STM32 counters5 |
|
Cryptographic accelerator |
on-chip |
STM32 HASH Processor1 |
|
on-chip |
STM32 AES Accelerator1 |
||
DAC |
on-chip |
STM32 family DAC1 |
|
DMA |
on-chip |
STM32U5 DMA controller1 |
|
Flash controller |
on-chip |
STM32 Family flash controller1 |
|
GPIO & Headers |
on-chip |
STM32 GPIO Controller9 |
|
on-chip |
Serial Wire - JTAG Connector1 |
||
I2C |
on-chip |
||
I2S |
on-chip |
STM32 SAI controller2 |
|
Input |
on-board |
Group of GPIO-bound input keys1 |
|
Interrupt controller |
on-chip |
ARMv8-M NVIC (Nested Vectored Interrupt Controller)1 |
|
on-chip |
STM32G0 External Interrupt Controller1 |
||
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
Memory controller |
on-chip |
STM32 Flexible Memory Controller (FMC)1 |
|
on-chip |
STM32 Flexible Memory Controller (NOR Flash/PSRAM/SRAM controller)1 |
||
MMC |
on-chip |
STM32 SDMMC Disk Access2 |
|
MMU / MPU |
on-chip |
ARMv8-M MPU (Memory Protection Unit)1 |
|
MTD |
on-chip |
STM32 flash memory1 |
|
OCTOSPI |
on-chip |
STM32 OSPI Controller2 |
|
PHY |
on-chip |
This binding is to be used by all the usb transceivers which are built-in with USB IP1 |
|
Pin control |
on-chip |
STM32 Pin controller1 |
|
Power management |
on-chip |
STM32 power controller1 |
|
PWM |
on-chip |
||
Reset controller |
on-chip |
STM32 Reset and Clock Control (RCC) Controller1 |
|
RNG |
on-chip |
STM32 Random Number Generator1 |
|
RTC |
on-chip |
STM32 RTC1 |
|
Sensors |
on-chip |
STM32 family TEMP node for production calibrated sensors with two calibration temperatures1 |
|
on-chip |
|||
on-chip |
|||
Serial controller |
on-chip |
||
on-chip |
STM32 UART2 |
||
on-chip |
STM32 LPUART1 |
||
SMbus |
on-chip |
STM32 SMBus controller4 |
|
SPI |
on-chip |
||
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
USB Type-C Port Controller |
on-chip |
STM32 USB Type-C / Power Delivery1 |
|
Timer |
on-chip |
ARMv8-M System Tick1 |
|
on-chip |
|||
on-chip |
|||
USB |
on-chip |
STM32 OTGFS controller1 |
|
Watchdog |
on-chip |
STM32 watchdog1 |
|
on-chip |
STM32 system window watchdog1 |
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:
Press and hold the BOOT0 key.
While still holding the BOOT0 key, press and release the RESET key.
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