STM32 Flight Controller Unit

Overview

The STEVAL-FCU001V1 is a Cortex M4 MCU-based flight controller unit for toy quad-copter drones.

Hardware

STM32 Flight Controller Unit provides the following hardware components:

  • STM32F401CC in UFQFPN48 package

  • ARM® 32-bit Cortex®-M4 MCU with FPU

  • 84MHz max MCU frequency

  • VDD from 1.7 V to 3.6 V

  • 256 KB FLASH

  • 64 KB SRAM

  • General Purpose Timers

  • Watchdog Timers (2)

  • On board sensors:

    • 3D Accelerometer and 3D Gyroscope: LSM6DSL

    • 3D Magnetometer: LIS2MDL

    • MEMS Pressure sensor: LPS22HD

  • 2 User LEDS

  • USART/UART (1)

  • I2C (1)

  • Bluetooth LE over SPI

More information about the STM32 Flight Controller Unit can be found in these documents:

Supported Features

The steval_fcu001v1 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.

steval_fcu001v1/stm32f401xc target

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M4F CPU1

arm,cortex-m4f

ADC

on-chip

STM32F4 ADC1

st,stm32f4-adc

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

STM32F4 PLL I2S1

st,stm32f4-plli2s-clock

on-chip

STM32 Microcontroller Clock Output (MCO)2

st,stm32-clock-mco

Counter

on-chip

STM32 counters7

st,stm32-counter

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 controller2

st,stm32-i2s

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

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 IP1

usb-nop-xceiv

Pin control

on-chip

STM32 Pin controller1

st,stm32-pinctrl

PWM

on-chip

STM32 PWM1 7

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 USART1 2

st,stm32-usart

SMbus

on-chip

STM32 SMBus controller3

st,stm32-smbus

SPI

on-chip

STM32 SPI controller4

st,stm32-spi

SRAM

on-chip

Generic on-chip SRAM description1

mmio-sram

Timer

on-chip

ARMv7-M System Tick1

arm,armv7m-systick

on-chip

STM32 timers1 7

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

Default Zephyr Peripheral Mapping:

  • UART_1 TX/RX : PA9/PA10

  • I2C2 SCL/SDA : PB10/PB3

  • PWM_2_CH1 : PA0

  • LD1 : PB5

  • LD2 : PB4

System Clock

The steval_fcu001v1 system clock can be driven by an internal or external oscillator, as well as by the main PLL clock. By default, the system clock is driven by the PLL clock at 84MHz, driven by a 16MHz high-speed external clock.

Serial Port

The steval_fcu001v1 board has one UART. The Zephyr console output is assigned to UART1. Default settings are 115200 8N1.

I2C

The steval_fcu001v1 board has one I2C. The default I2C mapping for Zephyr is:

  • I2C2_SCL : PB10

  • I2C2_SDA : PB3

Programming and Debugging

Applications for the steval_fcu001v1 board configuration can be built and flashed in the usual way (see Building an Application and Run an Application for more details).

Flashing

Flashing Zephyr onto the steval_fcu001v1 board requires an external ST-LINK/V2-1 programmer. The programmer is attached to the P8 programming header with ARM-JTAG-20-10-Plug-in Adapter.

Flashing an application to STEVAL_FCU001V1

Connect the FT232-to-USB port to host system, and RX, TX, Gnd pins to the P7 header of the steval_fcu001v1 board. Then run a serial host program to connect with your steval_fcu001v1 via the FT232 board:

$ minicom -D /dev/ttyUSB0

Now build and flash an application. Here is an example for Hello World

# From the root of the zephyr repository
west build -b steval_fcu001v1 samples/hello_world
west flash

You should see the following message on the console:

Hello World! steval_fcu001v1

Debugging

You can debug an application in the usual way. Here is an example for the Hello World application.

# From the root of the zephyr repository
west build -b steval_fcu001v1 samples/hello_world
west debug