Sipeed Longan Nano board

Support for the Sipeed Longan Nano board. More...

Detailed Description

Support for the Sipeed Longan Nano board.

Gunar Schorcht


The Sipeed Longan Nano is a development board for the GigaDevice GD32VF103CBT6 MCU with the following on-board components:

Sipeed Longan Nano


MCU GD32VF103CBT6 Supported
Family RISC-V with ECLIC
Vendor GigaDevice
RAM 32 kByte
Flash 128 KByte
Frequency 108 MHz
Power Modes 3 (Sleep, Deep Sleep, Standby) no
GPIOs 37 yes
Timers 5 x 16-bit timer yes
RTC 1 x 32-bit counter, 20-bit prescaler yes
WDT 2 x 12-bit counter, 3-bit prescaler yes
ADC 2 x 12-bit units, 16 channels, 1 Msps no
DAC 2 x 12-bit channel no
UART - yes
USART 3 yes
SPI 3 no
I2C 2 x Fast Mode 400 kHz no
I2S 2 no
CAN 2 x CAN 2.0B with up to 1 Mbps no
PWM 6 Channels yes
Vcc 3.0V - 3.6V
Datasheet Datasheet
Reference Manual Reference Manual
Board Manual Board Manual
Board Schematic Board Schematic

Pin Layout / Configuration

The general pin layout is shown below.

Sipeed Longan Nano Pinout

The following table shows the connection of the on-board components with the MCU pins and their configuration in RIOT.

MCU Pin MCU Peripheral RIOT Peripheral Board Function Remark
PA1 PWM_DEV(0) CH0 LED1 green
PA2 PWM_DEV(0) CH1 LED2 blue
PB8 PWM_DEV(1) CH0 N/A if CAN is used
PB9 PWM_DEV(2) CH1 N/A if CAN is used
PC13 LED0 red

Flashing the Device

Using the DFU bootloader

The board is flashed via the in-ROM DFU bootloader by default. To enter bootloader mode, hold the BOOT0 button while pressing the RESET button.

BOARD=seeedstudio-gd32 make -C examples/hello-world flash

After flashing you need to leave bootloader mode again by pressing the RESET button.

Using an external debug adapter

The board can also be flashed via a JTAG interface with OpenOCD (at least release version 0.12.0). By default, an FTDI adapter according to the configuration defined in interface/openocd-usb.cfg is assumed.

PROGRAMMER=openocd BOARD=seeedstudio-gd32 make -C examples/hello-world flash

To use an FTDI adapter with a different configuration, the configuration can be defined using the variable OPENOCD_FTDI_ADAPTER, for example:

PROGRAMMER=openocd OPENOCD_FTDI_ADAPTER=tigard BOARD=seeedstudio-gd32 make -C examples/hello-world flash

If another adapter is used, it can be specified using variable OPENOCD_DEBUG_ADAPTER, for example for a Segger J-Link adapter:

PROGRAMMER=openocd OPENOCD_DEBUG_ADAPTER=jlink BOARD=seeedstudio-gd32 make -C examples/hello-world flash

Accessing STDIO via UART

The stdio is directly accessible through the first UART interface. If an external USB-to-UART interface is used, this interface is mapped to /dev/ttyUSB<n> on a Linux host, where <n> is the index of the UART interface, which is 0 by default.

Use the term target to connect to the board using /dev/ttyUSB0:

BOARD=seeedstudio-gd32 make -C examples/hello-world term

If the UART interface index of board's USB to UART bridge is not 0, use the following command to connect:

BOARD=seeedstudio-gd32 make -C examples/hello-world term PORT=/dev/ttyUSB<n>


file  board.h
 Board specific definitions for the Sipeed Longan Nano board.
file  gpio_params.h
 Configuration of SAUL mapped GPIO pins.
file  periph_conf.h
 Board specific definitions for the SeeedStudio GD32 RISC-V board.