Fastbit STM32 Nano

Overview

The Fastbit STM32 Nano is a compact development board based on the STM32F303CCT6 microcontroller (ARM Cortex-M4 with FPU). It integrates a Bosch BMI2xx motion sensor, a USB Type-C connector with an on-board CH340N USB-to-UART bridge and three 2x5 expansion headers. The Fastbit Nano LCD Shield, with a 1.28” round LCD, a touch controller and a microSD card slot, plugs onto these headers.

Hardware

  • STM32F303CCT6 in LQFP48 package

  • ARM Cortex-M4 CPU with FPU, up to 72 MHz

  • 256 KB flash, 40 KB SRAM and 8 KB core-coupled memory (CCM)

  • 8 MHz external crystal (HSE)

  • USB Type-C connector with a slide switch (SW4) that routes the USB data lines either to the MCU USB peripheral or to the on-board CH340N UART bridge

  • Bosch BMI2xx 6-axis motion sensor on I2C1 at address 0x68 (a BMI270 or a BMI260, depending on the production batch; the IMU is not enabled in the devicetree yet)

  • Three 2x5 expansion headers (P1, P2 and P3)

  • Three user LEDs, one power LED, a user button, a reset button and a BOOT0 button

  • External SWD header for programming and debugging

Supported Features

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

fastbit_stm32_nano/stm32f303xc target

On-target memory for this board target: 40 KiB of RAM, 256 KiB of Flash.

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M4F CPU1

arm,cortex-m4f

ADC

on-chip

STM32 ADC1

st,stm32-adc

CAN

on-chip

STM32 CAN controller1

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 provider2

fixed-clock

on-chip

STM32 LSE Clock1

st,stm32-lse-clock

on-chip

STM32F0/F3 Main PLL1

st,stm32f0-pll-clock

Counter

on-chip

STM32 counters10

st,stm32-counter

CRC

on-chip

STM32 CRC calculation unit1

st,stm32-crc

DAC

on-chip

STM32 family DAC1

st,stm32-dac

DMA

on-chip

STM32 DMA controller (V2bis) for the stm32F0, stm32F1 and stm32L1 soc families2

st,stm32-dma-v2bis

Flash controller

on-chip

STM32 Family flash controller1

st,stm32-flash-controller

GPIO & Headers

on-chip

STM32 GPIO Controller6

st,stm32-gpio

on-board

GPIO pins exposed on the Fastbit STM32 Nano 2x5 expansion headers1

fastbit,nano-header

I2C

on-chip

STM32 I2C V2 controller11

st,stm32-i2c-v2

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

MTD

on-chip

STM32 flash memory1

st,stm32-nv-flash

NVMEM

on-chip

Fixed layout for Non-Volatile memory1

fixed-layout

OTP memory

on-chip

STM32 embedded NVM OTP1

st,stm32-nvm-otp

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

st,stm32-usart

on-chip

STM32 UART2

st,stm32-uart

SMbus

on-chip

STM32 SMBus controller2

st,stm32-smbus

SPI

on-chip

STM32 SPI controller with embedded Rx and Tx FIFOs21

st,stm32-spi-fifo

Timer

on-chip

ARMv7-M System Tick1

arm,armv7m-systick

on-chip

STM32 timers10

st,stm32-timers

USB

on-chip

STM32 USB controller1

st,stm32-usb

Watchdog

on-chip

STM32 system window watchdog1

st,stm32-window-watchdog

on-chip

STM32 watchdog1

st,stm32-watchdog

Connections and IOs

Default Zephyr Peripheral Mapping:

  • USART1_TX : PA9

  • USART1_RX : PA10

  • I2C1_SCL : PB6

  • I2C1_SDA : PB7

  • SPI1_SCK : PA5

  • SPI1_MISO : PA6

  • SPI1_MOSI : PA7

  • SPI2_SCK : PB13

  • SPI2_MISO : PB14

  • SPI2_MOSI : PB15

  • USER_PB : PA0

  • LED1 (blue) : PA1

  • LED2 (green) : PA2

  • LED3 (red) : PA3

Other board signals that are wired but not yet described in the devicetree:

  • IMU_INT : PA8

  • USB_DM : PA11

  • USB_DP : PA12

Expansion Headers

The headers P1, P2 and P3 are described by the nano_header connector node. The parent pin index of a header pin is (header number - 1) * 10 + (header pin number - 1), and the power pins are not mapped. The buses of the headers are available under the labels nano_spi1 (SPI1 on P1), nano_spi2 (SPI2 on P2), nano_i2c1 (I2C1 on P3) and nano_uart1 (USART1 on P2). See fastbit,nano-header for the complete pin list. The Fastbit Nano LCD Shield uses this interface.

System Clock

The system clock is driven by the main PLL at 72 MHz, fed by the 8 MHz external crystal.

Serial Port

The Zephyr console is assigned to USART1 (115200 8N1). USART1 is connected to the on-board CH340N when the SW4 slide switch is in the UART position, so the console is available through the USB Type-C connector as a virtual COM port.

Programming and Debugging

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

flash debug attach debugserver rtt reset
jlink ✅ ✅ ✅ ✅ ✅ ✅
openocd ✅ ✅ (default) ✅ ✅ ✅
stlink_gdbserver ✅ ✅ ✅
stm32cubeprogrammer ✅ (default)

The board has no on-board debug probe. Connect an external ST-LINK/V2 (or compatible) probe to the 6-pin SWD header (SWCLK, SWDIO, NRST, GND, 3V3).

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

Flashing

The board is configured to be flashed using the west STM32CubeProgrammer [1] runner, so its installation is required.

Alternatively, OpenOCD or J-Link can also be used to flash the board using the --runner (or -r) option:

$ west flash --runner openocd
$ west flash --runner jlink

Flashing an application to the Fastbit STM32 Nano

Here is an example for the Blinky application.

# From the root of the zephyr repository
west build -b fastbit_stm32_nano samples/basic/blinky
west flash

Debugging

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

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

References