zephyr/boards/arm/olimexino_stm32/doc/olimexino_stm32.rst

453 lines
16 KiB
ReStructuredText

.. _olimexino_stm32:
OLIMEXINO-STM32
###############
Overview
********
Zephyr applications use the olimexino_stm32 board configuration
to run on the OLIMEXINO-STM32 open source hardware. It based on
the STMicroelectronics STM32F103RB ARM Cortex-M3 CPU.
.. figure:: img/olimexino-stm32.png
:width: 540px
:align: center
:height: 454px
:alt: OLIMEXINO-STM32
OLIMEXINO-STM32
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 configuration supports the following
hardware features:
+-----------+------------+----------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================+
| NVIC | on-chip | nested vectored |
| | | interrupt controller |
+-----------+------------+----------------------+
| SYSTICK | on-chip | system clock |
+-----------+------------+----------------------+
| UART | on-chip | serial port |
+-----------+------------+----------------------+
| GPIO | on-chip | gpio |
+-----------+------------+----------------------+
| I2C | on-chip | i2c |
+-----------+------------+----------------------+
| SPI | on-chip | spi |
+-----------+------------+----------------------+
| USB | on-chip | USB device |
+-----------+------------+----------------------+
Other hardware features are not supported by the Zephyr kernel.
Pin Mapping
===========
.. figure:: img/olimexino-stm32-front.png
:width: 739px
:align: center
:height: 530px
:alt: 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 / | PA5 / SPI1_SCK / |
| | LED1) | 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 / | PA5 / SPI1_SCK / |
| | LED1) | ADC12_IN5 |
+-------+--------------+-------------------------+
| 7 | GND | N/A |
+-------+--------------+-------------------------+
| 8 | D14 (CANRX) | PB8 / TIM4_CH3 / |
| | | I2C1_SCL / CANRX |
+-------+--------------+-------------------------+
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
===
OLIMEXINO-STM32 board has up to 1 I2C. The default I2C mapping for Zephyr is:
- 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
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:
#. Checkout the stm32flash tool's code from the repository.
.. code-block:: console
$ git clone http://git.code.sf.net/p/stm32flash/code stm32flash
$ cd stm32flash
#. Build the stm32flash tool.
.. code-block:: console
$ make
#. The resulting binary is available at :file:`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
:ref:`button-sample` sample application.
#. To build the Zephyr kernel and application, enter:
.. zephyr-app-commands::
:zephyr-app: samples/basic/button
:board: olimexino_stm32
:goals: build
#. Connect the serial cable to the UEXT lines of the UART
interface (pin #3=TX and pin #4=RX).
#. Power the OLIMEXINO-STM32 via the mini USB.
#. Reset the board while holding the button (BUT).
#. Flash the application using the stm32flash tool. Start
by navigating to the build directory containing zephyr.bin.
.. code-block:: console
$ stm32flash -w zephyr.bin -v -g 0x0 <tty_device>
Replace :code:`<tty_device>` with the port where the board
OLIMEXINO-STM32 can be found. For example, under Linux,
:code:`/dev/ttyUSB0`.
#. Run your favorite terminal program to listen for output.
.. code-block:: console
$ minicom -D /dev/ttyUSB0 -b 115200
The :code:`-b` option sets baud rate ignoring the value
from config.
#. 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.
.. _OLIMEXINO-STM32 website:
https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/
.. _OLIMEXINO-STM32 user manual:
https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/resources/OLIMEXINO-STM32.pdf
.. _ST STM32F103xB Datasheet:
http://www.st.com/resource/en/datasheet/stm32f103tb.pdf
.. _stm32flash tool:
https://sourceforge.net/p/stm32flash/wiki/Home/