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 |
|
ADC |
on-chip |
STM32 ADC1 |
|
CAN |
on-chip |
STM32 CAN controller1 |
|
Clock control |
on-chip |
STM32 RCC (Reset and Clock controller)1 |
|
on-chip |
STM32 HSE Clock1 |
||
on-chip |
Generic fixed-rate clock provider2 |
||
on-chip |
STM32 LSE Clock1 |
||
on-chip |
STM32F0/F3 Main PLL1 |
||
Counter |
on-chip |
STM32 counters10 |
|
CRC |
on-chip |
STM32 CRC calculation unit1 |
|
DAC |
on-chip |
STM32 family DAC1 |
|
DMA |
on-chip |
STM32 DMA controller (V2bis) for the stm32F0, stm32F1 and stm32L1 soc families2 |
|
Flash controller |
on-chip |
STM32 Family flash controller1 |
|
GPIO & Headers |
on-chip |
STM32 GPIO Controller6 |
|
on-board |
GPIO pins exposed on the Fastbit STM32 Nano 2x5 expansion headers1 |
||
I2C |
on-chip |
||
Input |
on-board |
Group of GPIO-bound input keys1 |
|
Interrupt controller |
on-chip |
ARMv7-M NVIC (Nested Vectored Interrupt Controller)1 |
|
on-chip |
STM32 External Interrupt Controller1 |
||
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
Memory controller |
on-chip |
STM32 Battery Backed RAM1 |
|
MTD |
on-chip |
STM32 flash memory1 |
|
NVMEM |
on-chip |
Fixed layout for Non-Volatile memory1 |
|
OTP memory |
on-chip |
STM32 embedded NVM OTP1 |
|
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 |
|
PWM |
on-chip |
STM32 PWM8 |
|
Reset controller |
on-chip |
STM32 Reset and Clock Control (RCC) Controller1 |
|
RTC |
on-chip |
STM32 RTC1 |
|
Sensors |
on-chip |
STM32 quadrature decoder5 |
|
on-chip |
STM32 family TEMP node for production calibrated sensors with two calibration temperatures1 |
||
on-chip |
STM32 VREF+1 |
||
on-chip |
STM32 VBAT1 |
||
Serial controller |
on-chip |
||
on-chip |
STM32 UART2 |
||
SMbus |
on-chip |
STM32 SMBus controller2 |
|
SPI |
on-chip |
||
Timer |
on-chip |
ARMv7-M System Tick1 |
|
on-chip |
STM32 timers10 |
||
USB |
on-chip |
STM32 USB controller1 |
|
Watchdog |
on-chip |
STM32 system window watchdog1 |
|
on-chip |
STM32 watchdog1 |
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