STM32F446 Core Board V1.1

Overview

The WeAct STM32F446 Core Board is an extremely low cost and bare-bones development board featuring the STM32F446RE, see STM32F446RE website [4]. This is the 64-pin variant of the STM32F446x series, see STM32F446x reference manual [5]. More info about the board available on WeAct Github [2].

Hardware

The STM32F446RE based Core Board provides the following hardware components:

  • STM32F446RE in QFPN64 package

  • ARM® 32-bit Cortex® -M4 CPU with FPU, Adaptive real-time accelerator (ART Accelerator) allowing 0-wait state execution from Flash memory

  • 180 MHz max CPU frequency

  • VDD from 1.7 V to 3.6 V

  • 512 KB Flash

  • 128 Kbytes of SRAM

  • GPIO with external interrupt capability

  • 3x12-bit, 2.4 MSPS ADC up to 16 channels

  • 2x12-bit D/A converters

  • 16-stream DMA controller

  • Up to 17 Timers (twelve 16-bit, two 32-bit, two watchdog timers and a SysTick timer)

  • USART/UART (4)

  • I2C (4)

  • SPI/I2S (4)

  • CAN (2)

  • SDIO

  • USB 2.0 full-speed device/host/OTG controller with on-chip PHY

  • SAI (Serial Audio Interface)

  • SPDIFRX interface

  • HDMI-CEC

  • CRC calculation unit

  • 96-bit unique ID

  • RTC with hardware calendar

Supported Features

The weact_stm32f446_core 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.
weact_stm32f446_core
/
stm32f446xx

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M4F CPU1

arm,cortex-m4f

ADC

on-chip

STM32F4 ADC1

st,stm32f4-adc

on-chip

STM32 ADC2

st,stm32-adc

CAN

on-chip

STM32 CAN controller1 1

st,stm32-bxcan

Clock control

on-chip

STM32 RCC (Reset and Clock controller)1

st,stm32-rcc

on-chip

STM32 HSE Clock1

st,stm32-hse-clock

on-chip

Generic fixed-rate clock provider1 2

fixed-clock

on-chip

STM32F4 Main PLL1

st,stm32f4-pll-clock

on-chip

STM32F411 PLL I2S1

st,stm32f411-plli2s-clock

on-chip

STM32 Microcontroller Clock Output (MCO)2

st,stm32-clock-mco

Counter

on-chip

STM32 counters7

st,stm32-counter

DAC

on-chip

STM32 family DAC1

st,stm32-dac

DMA

on-chip

STM32 DMA controller (V1)2

st,stm32-dma-v1

Flash controller

on-chip

STM32 Family flash controller1

st,stm32-flash-controller

GPIO & Headers

on-chip

STM32 GPIO Controller8

st,stm32-gpio

I2C

on-chip

STM32 I2C V1 controller1 2

st,stm32-i2c-v1

I2S

on-chip

STM32 I2S controller3

st,stm32-i2s

Input

on-board

Group of GPIO-bound input keys1

gpio-keys

Interrupt controller

on-chip

ARMv7-M NVIC (Nested Vectored Interrupt Controller)1

arm,v7m-nvic

on-chip

STM32 External Interrupt Controller1

st,stm32-exti

LED

on-board

Group of GPIO-controlled LEDs1

gpio-leds

Memory controller

on-chip

STM32 Battery Backed RAM1

st,stm32-bbram

on-chip

STM32 Flexible Memory Controller (FMC)1

st,stm32-fmc

on-chip

STM32 Flexible Memory Controller (SDRAM controller)1

st,stm32-fmc-sdram

MMC

on-chip

STM32 SDMMC Disk Access1

st,stm32-sdmmc

MTD

on-chip

STM32F4 flash memory1

st,stm32f4-nv-flash

PHY

on-chip

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

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 PWM8

st,stm32-pwm

Reset controller

on-chip

STM32 Reset and Clock Control (RCC) Controller1

st,stm32-rcc-rctl

RTC

on-chip

STM32 RTC1

st,stm32-rtc

Sensors

on-chip

STM32 quadrature decoder5

st,stm32-qdec

on-chip

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

st,stm32-temp-cal

on-chip

STM32 VREF+1

st,stm32-vref

on-chip

STM32 VBAT1

st,stm32-vbat

Serial controller

on-chip

STM32 USART2 2

st,stm32-usart

on-chip

STM32 UART2

st,stm32-uart

SMbus

on-chip

STM32 SMBus controller3

st,stm32-smbus

SPI

on-chip

STM32 SPI controller1 3

st,stm32-spi

SRAM

on-chip

Generic on-chip SRAM1

mmio-sram

Timer

on-chip

ARMv7-M System Tick1

arm,armv7m-systick

on-chip

STM32 timers8

st,stm32-timers

USB

on-chip

STM32 OTGFS controller1

st,stm32-otgfs

on-chip

STM32 OTGHS controller1

st,stm32-otghs

Watchdog

on-chip

STM32 watchdog1

st,stm32-watchdog

on-chip

STM32 system window watchdog1

st,stm32-window-watchdog

Pin Mapping

Default Zephyr Peripheral Mapping:

  • UART_1 TX/RX : PA9/PA10 (also available on USB-C for console)

  • UART_2 TX/RX : PA2/PA3

  • I2C1 SCL/SDA : PB6/PB7

  • I2C2 SCL/SDA : PB10/PB11

  • SPI1 SCK/MISO/MOSI : PA5/PA6/PA7

  • SPI2 SCK/MISO/MOSI : PB13/PB14/PB15

  • CAN1 TX/RX : PB9/PB8

  • SDMMC1 D0/D1/D2/D3/CLK/CMD : PC8/PC9/PC10/PC11/PC12/PD2

  • USER_PB : PC13 (Active Low)

  • USER_LED : PB2 (Active High)

  • USB_DM/USB_DP : PA11/PA12

OnBoard Features

  • USB Type-C connector

  • User LED (PB2) - Active High

  • User Key (PC13) - Active Low

  • BOOT0 Key for DFU mode

  • RESET Key

  • 8MHz HSE crystal oscillator

  • 32.768kHz LSE crystal oscillator

  • MicroSD card slot (SDIO interface)

  • SWD debug header (3.3V, GND, SWCLK, SWDIO)

  • 30×2 pin headers exposing GPIO pins

Clock Sources

The board has two external oscillators. The frequency of the slow clock (LSE) is 32.768 kHz. The frequency of the main clock (HSE) is 8 MHz.

The default configuration sources the system clock from the PLL, which is derived from HSE, and is set at 180MHz, which is the maximum possible frequency for the STM32F446RE.

Programming and Debugging

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

flash debug rtt attach debugserver
dfu-util ✅ (default)
jlink ✅ (default)
openocd

There are 2 main entry points for flashing STM32F4X SoCs, one using the ROM bootloader, and another by using the SWD debug port (which requires additional hardware). Flashing using the ROM bootloader requires a special activation pattern, which can be triggered by using the BOOT0 pin.

Flashing

Installing dfu-util

It is recommended to use at least v0.8 of dfu-util [3]. The package available in debian/ubuntu can be quite old, so you might have to build dfu-util from source.

There is also a Windows version which works, but you may have to install the right USB drivers with a tool like Zadig [1].

Flashing an Application

Connect a USB-C cable and the board should power ON. Force the board into DFU mode by keeping the BOOT0 switch pressed while pressing and releasing the NRST switch.

The dfu-util runner is supported on this board and so a sample can be built and tested easily.

# From the root of the zephyr repository
west build -b weact_stm32f446_core samples/basic/blinky
west flash
# From the root of the zephyr repository
west build -b weact_stm32f446_core samples/basic/button
west flash
# From the root of the zephyr repository
west build -b weact_stm32f446_core samples/subsys/fs/fs_sample
west flash

Debugging

The board can be debugged by installing the included 100 mil (0.1 inch) header, and attaching an SWD debugger to the 3V3 (3.3V), GND, SCK, and DIO pins on that header.

References