OLIMEXINO-STM32

Overview

The OLIMEXINO-STM32 board is based on the STMicroelectronics STM32F103RB ARM Cortex-M3 CPU.

More information about the board can be found at the OLIMEXINO-STM32 website and OLIMEXINO-STM32 user manual. The ST STM32F103xB Datasheet contains the processor’s information and the datasheet.

Supported Features

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

olimexino_stm32/stm32f103xb target

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M3 CPU1

arm,cortex-m3

ADC

on-chip

STM32F1 ADC1

st,stm32f1-adc

CAN

on-chip

STM32 CAN controller1

st,stm32-bxcan

Clock control

on-chip

STM32F1/F3/7x RCC (Reset and Clock controller)1

st,stm32f1-rcc

on-chip

STM32 HSE Clock1

st,stm32-hse-clock

on-chip

Generic fixed-rate clock provider3

fixed-clock

on-chip

STM32F1 Main PLL for low-, medium-, high- and XL-density devices1

st,stm32f1-pll-clock

on-chip

STM32F1 Microcontroller Clock Output (MCO)1

st,stm32f1-clock-mco

Counter

on-chip

STM32 counters3

st,stm32-counter

DMA

on-chip

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

st,stm32-dma-v2bis

Flash controller

on-chip

STM32 Family flash controller1

st,stm32-flash-controller

GPIO & Headers

on-chip

STM32 GPIO Controller5

st,stm32-gpio

I2C

on-chip

STM32 I2C V1 controller2

st,stm32-i2c-v1

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

MTD

on-chip

STM32 flash memory1

st,stm32-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

on-board

Simple GPIO controlled CAN transceiver1

can-transceiver-gpio

Pin control

on-chip

STM32F1 Pin controller1

st,stm32f1-pinctrl

PWM

on-chip

STM32 PWM1 3

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 Internal Temperature Sensor1

st,stm32-temp

Serial controller

on-chip

STM32 USART1 2

st,stm32-usart

SMbus

on-chip

STM32 SMBus controller2

st,stm32-smbus

SPI

on-chip

STM32 SPI controller2

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 3

st,stm32-timers

USB

on-chip

STM32 USB controller1

st,stm32-usb

Watchdog

on-chip

STM32 watchdog1

st,stm32-watchdog

on-chip

STM32 system window watchdog1

st,stm32-window-watchdog

Pin Mapping

OLIMEXINO-STM32 connectors

OLIMEXINO-STM32 connectors

LED

  • LED1 (green) = PA5

  • LED2 (yellow) = PA1

  • PWR_LED (red) = power

Push buttons

  • BUT = PC9 / TIM3CH4 / BOOT0

  • RST = NRST

External Connectors

SWD

PIN #

Signal Name

STM32F103RB Functions

1

VCC

N/A

2

TMS / SWDIO

JTMS / SWDIO / PA13

3

GND

N/A

4

TCK / SWCLK

JTCK / SWCLK / PA14

5

GND

N/A

6

TDO / SWO

JTDO /TIM2_CH2 / PB3 / TRACESWO / SPI1_SCK

7

Cut off

N/A

8

TDI

JTDI / TIM2_CH1_ETR / PA15 / SPI1_NSS

9

GND

N/A

10

RESET

NRST

UEXT

PIN #

Signal Name

STM32F103RB Functions

1

VCC

N/A

2

GND

N/A

3

D7 (TXD1)

PA9 / USART1_TX / TIM1_CH2

4

D8 (RXD1)

PA10 / USART1_RX / TIM1_CH3

5

D29 (SCL2)

PB10 / I2C2_SCL / USART3_TX / TIM2_CH3

6

D30 (SDA2)

PB11 / I2C2_SDA / USART3_RX / TIM2_CH4

7

D12 (MISO1)

PA6 / SPI1_MISO / ADC12_IN6 / TIM3_CH1 / TIM1_BKIN

8

D11 (MOSI1)

PA7 / SPI1_MOSI / ADC12_IN7 / TIM3_CH2 / TIM1_CH1N

9

D13 (SCK / LED1)

PA5 / SPI1_SCK / ADC12_IN5

10

UEXT_#CS

N/A

EXT

PIN #

Signal Name

STM32F103RB Functions

1

D23_EXT

PC15 / OSC32_OUT

2

D24 (CANTX)

PB9 / TIM4_CH4 / I2C1_SDA / CANTX

3

D25 (MMC_CS)

PD2 / TIM3_ETR

4

D26

PC10 / USART3_TX

5

D27

PB0 / ADC12_IN8 / TIM3_CH3 / TIM1_CH2N

6

D28

PB1 / ADC12_IN9 / TIM3_CH4 / TIM1_CH3N

7

D29 (SCL2)

PB10 / I2C2_SCL / USART3_TX / TIM2_CH3

8

D30 (SDA2)

PB11 / I2C2_SDA / USART3_RX / TIM2_CH4

9

D31 (#SS2)

PB12 / SPI2_NSS / I2C2_SMBAI / USART3_CK / TIM1_BKIN

10

D32 (SCK2)

PB13 / SPI2_SCK/ USART3_CTS / TIM1_CH1N

11

D33 (MISO2)

PB14 / SPI2_MISO / USART3_RTS / TIM1_CH2N

12

D34 (MOSI2)

PB15 / SPI2_MOSI / TIM1_CH3N

13

D35

PC6 / TIM3_CH1

14

D36

PC7 / TIM3_CH2

15

D37

PC8 / TIM3_CH3

16

GND

N/A

Arduino Headers

CON1 power

PIN #

Signal Name

STM32F103RB Functions

1

RESET

NRST

2

VCC (3V3)

N/A

3

VDD (3V3A)

N/A

4

GND

N/A

5

GND

N/A

6

VIN

N/A

CON2 analog

PIN #

Signal Name

STM32F103RB Functions

1

D15 (A0)

PC0 / ADC12_IN10

2

D16 (A1)

PC1 / ADC12_IN11

3

D17 (A2)

PC2 / ADC12_IN12

4

D18 (A3)

PC3 / ADC12_IN13

5

D19 (A4)

PC4 / ADC12_IN14

6

D20 (A5)

PC5 / ADC12_IN15

CON3 digital

PIN #

Signal Name

STM32F103RB Functions

1

D0 (RXD2)

PA3 / USART2_RX / ADC12_IN3 / TIM2_CH4

2

D1 (TXD2)

PA2 / USART2_TX / ADC12_IN2 / TIM2_CH3

3

D2

PA0 / WKUP / USART2_CTS / ADC12_IN0 / TIM2_CH1

4

D3 (LED2)

PA1 / USART2_RTS / ADC12_IN1 / TIM2_CH2

5

D4

PB5 / I2C1_SMBAI / TIM3_CH2 / SPI1_MOSI

6

D5

PB6 / I2C1_SCL / TIM4_CH1 / USART1_TX

7

D6

PA8 / USART1_CK / TIM1_CH1 / MCO

8

D7 (TXD1)

PA9 / USART1_TX / TIM1_CH2

CON4 digital

PIN #

Signal Name

STM32F103RB Functions

1

D8 (RXD1)

PA10 / USART1_RX / TIM1_CH3

2

D9

PB7 / I2C1_SDA / TIM4_CH2 / USART1_RX

3

D10 (#SS1)

PA4 / SPI1_NSS / USART2_CK / ADC12_IN4

4

D11 (MOSI1)

PA7 / SPI1_MOSI / ADC12_IN7 / TIM3_CH2 / TIM1_CH1N

5

D12 (MISO1)

PA6 / SPI1_MISO / ADC12_IN6 / TIM3_CH1 / TIM1_BKIN

6

D13 (SCK1 / LED1)

PA5 / SPI1_SCK / ADC12_IN5

7

GND

N/A

8

D14 (CANRX)

PB8 / TIM4_CH3 / I2C1_SCL / CANRX

CAN

PIN #

Signal Name

1

GND

2

CAN L

3

CAN H

System Clock

OLIMEXINO-STM32 has two external oscillators. The frequency of the slow clock is 32.768 kHz. The frequency of the main clock is 8 MHz. The processor can setup HSE to drive the master clock, which can be set as high as 72 MHz.

Serial Port

OLIMEXINO-STM32 board has up to 3 U(S)ARTs. The Zephyr console output is assigned to USART1. Default settings are 115200 8N1.

SPI

OLIMEXINO-STM32 board has up to 2 SPIs. The default SPI mapping for Zephyr is:

  • SPI1_NSS : PA4

  • SPI1_SCK : PA5

  • SPI1_MISO : PA6

  • SPI1_MOSI : PA7

I2C

The OLIMEXINO-STM32 board supports two I2C devices. The default I2C mapping for Zephyr is:

  • I2C1_SCL : PB6

  • I2C1_SDA : PB7

  • I2C2_SCL : PB10

  • I2C2_SDA : PB11

USB

OLIMEXINO-STM32 board has a USB 2.0 full-speed device interface available through its mini USB connector.

  • USB_DM : PA11

  • USB_DP : PA12

CAN

OLIMEXINO-STM32 board has a CAN interface with transceiver on board. CAN is accessible through a screw terminal.

  • CAN_RX : PB8

  • CAN_TX : PB9

Jumpers

The Zephyr kernel uses the OLIMEXINO-STM32 default jumper settings. Note that all jumpers on the board are SMD type. You will need to solder, unsolder, or cut them in order to reconfigure them.

The default jumper settings for the OLIMEXIMO-STM32E are:

Jumper Name

Open

Close

LED1_E

x

LED2_E

x

D23_E

x

R-T

x

P10_E

x

Jumper Name

D10

D4

D10/D4

x

Flashing Zephyr onto OLIMEXINO-STM32

Flashing the Zephyr kernel onto OLIMEXINO-STM32 requires the stm32flash tool.

Building stm32flash command line tool

To build the stm32flash tool, follow the steps below:

  1. Checkout the stm32flash tool’s code from the repository.

$ git clone http://git.code.sf.net/p/stm32flash/code stm32flash
$ cd stm32flash
  1. Build the stm32flash tool.

$ make
  1. The resulting binary is available at stm32flash.

Flashing an Application to OLIMEXINO-STM32

To upload an application to the OLIMEXINO-STM32 board a TTL(3.3V) serial adapter is required. This tutorial uses the Button sample application.

  1. Connect the serial cable to the UEXT lines of the UART interface (pin #3=TX and pin #4=RX).

  2. Power the OLIMEXINO-STM32 via the mini USB.

  3. Reset the board while holding the button (BUT).

  4. To build the application and flash it, enter:

    # From the root of the zephyr repository
    west build -b olimexino_stm32 samples/basic/button
    west flash
    
  5. Run your favorite terminal program to listen for output.

    $ minicom -D /dev/ttyUSB0 -b 115200
    

    The -b option sets baud rate ignoring the value from config.

  6. Press the Reset button and you should see the output of button application in your terminal. The state of the BUT button’s GPIO line is monitored and printed to the serial console. When the input button gets pressed, the interrupt handler prints information about this event along with its timestamp.

Note

Make sure your terminal program is closed before flashing the binary image, or it will interfere with the flashing process.