.. _olimex_stm32_h103:

OLIMEX-STM32-H103
#################

Overview
********

The OLIMEX-STM32-H103 is a simple development board based on the
STMicroelectronics STM32F103RBT6 ARM Cortex-M3 CPU, with all the MCU pins
populated and accessible through two male 26-pin connectors.

.. figure:: img/olimex_stm32_h103_top.jpg
   :width: 800px
   :align: center
   :alt: OLIMEX-STM32-H103 top

.. figure:: img/olimex_stm32_h103_bottom.jpg
   :width: 800px
   :align: center
   :alt: OLIMEX-STM32-H103 bottom

   OLIMEX-STM32-H103

Hardware
********

Information about the board can be found at the
`OLIMEX-STM32-H103 website`_ and `OLIMEX-STM32-H103 user manual`_.
The `OLIMEX-STM32-H103 schematic`_ is also available.

The `ST STM32F103RB Datasheet`_ contains the processor's
information and the datasheet.

Supported Features
==================

The OLIMEX STM32-H103 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                  |
+-----------+------------+----------------------+
| PWM       | on-chip    | pwm                  |
+-----------+------------+----------------------+
| SPI       | on-chip    | spi                  |
+-----------+------------+----------------------+
| USB       | on-chip    | USB device           |
+-----------+------------+----------------------+
| ADC       | on-chip    | adc                  |
+-----------+------------+----------------------+

Other hardware features are not supported by the Zephyr kernel.

Connections and IOs
===================

Default Zephyr Peripheral Mapping:
----------------------------------

- UART_1 TX/RX: PA9/PA10
- UART_2 TX/RX: PA2/PA3
- UART_3 TX/RX: PC10/PC11 (not enabled)
- I2C_1 SCL/SDA : PB6/PB7
- I2C_2 SCL/SDA : PB10/PB11
- PWM_1_CH1: PA8
- SPI_1 NSS_OE/SCK/MISO/MOSI: PA4/PA5/PA6/PA7
- SPI_2 NSS_OE/SCK/MISO/MOSI: PB12/PB13/PB14/PB15
- USB_DC DM/DP/DISC/PWR: PA11/PA12/PC11/PC4 (not enabled)
- ADC_1: PA1

System Clock
------------

The on-board 8 MHz crystal is used to produce a 72 MHz system clock with PLL.

Serial Port
-----------

The board has 3 U(S)ARTs, UART1 and UART2 are enabled by default, with UART2
used as Zephyr's console. Default settings are 115200 8N1.

On-Board LEDs
-------------

The board has one on-board green LED that is connected to PC12, which
is active low.

There is also a red power LED neither connected nor controlled by the MCU.

On-Board Button
---------------

The board has one user button connected to PA0.

USB
---

USB is not enabled by default, however PC4 is configured by default as an ADC
input to sense the USB voltage (see schematic). It is possible to disconnect
it by desoldering the appropriate pad in the PCB.

The board uses PC11 to disconnect the pull-up resistor on the USB-DP line.

External Connectors
-------------------

JTAG/SWD debug

+-------+----------------------+-------+--------------+
| PIN # | Signal Name          | PIN # | Signal Name  |
+=======+======================+=======+==============+
| 1     | +3.3V                | 2     | TVCC 3.3V    |
+-------+----------------------+-------+--------------+
| 3     | PB4 / TRST           | 4     | GND          |
+-------+----------------------+-------+--------------+
| 5     | PA15 / TDI           | 6     | GND          |
+-------+----------------------+-------+--------------+
| 7     | PA13 / TMS / SWDIO   | 8     | GND          |
+-------+----------------------+-------+--------------+
| 9     | PA14 / TCK / SWCLK   | 10    | GND          |
+-------+----------------------+-------+--------------+
| 11    | NC                   | 12    | GND          |
+-------+----------------------+-------+--------------+
| 13    | PB3 / TDO            | 14    | GND          |
+-------+----------------------+-------+--------------+
| 15    | RST                  | 16    | GND          |
+-------+----------------------+-------+--------------+
| 17    | NC                   | 18    | GND          |
+-------+----------------------+-------+--------------+
| 19    | NC                   | 20    | GND          |
+-------+----------------------+-------+--------------+

EXTENSION 1

+-------+-----------------------+-------+-----------------------+
| PIN # | Name / STM32F103 Port | PIN # | Name / STM32F103 Port |
+=======+=======================+=======+=======================+
| 1     | PA11 / USB_DM         | 2     | PA8 / **PWM_1_CH1**   |
+-------+-----------------------+-------+-----------------------+
| 3     | PA12 / USB_DP         | 4     | PA9 / **UART1_TX**    |
+-------+-----------------------+-------+-----------------------+
| 5     | +3.3V                 | 6     | GND                   |
+-------+-----------------------+-------+-----------------------+
| 7     | PA10 / **UART1_RX**   | 8     | PC10                  |
+-------+-----------------------+-------+-----------------------+
| 9     | PC11 / **USB_DISC**   | 10    | PC12 / **LED**        |
+-------+-----------------------+-------+-----------------------+
| 11    | PD2                   | 12    | PB5/I2C1_SMBA         |
+-------+-----------------------+-------+-----------------------+
| 13    | PB6 / **I2C1_SCL**    | 14    | PA6 / **SPI1_MISO**   |
+-------+-----------------------+-------+-----------------------+
| 15    | PB7 / **I2C1_SDA**    | 16    | PB8                   |
+-------+-----------------------+-------+-----------------------+
| 17    | PB9                   | 18    | PA5 / **SPI1_SCK**    |
+-------+-----------------------+-------+-----------------------+
| 19    | PC0                   | 20    | PC1                   |
+-------+-----------------------+-------+-----------------------+
| 21    | PB0                   | 22    | PA7 / **SPI1_MOSI**   |
+-------+-----------------------+-------+-----------------------+
| 23    | VBAT                  | 24    | PC13                  |
+-------+-----------------------+-------+-----------------------+
| 25    | RST                   | 26    | PB1                   |
+-------+-----------------------+-------+-----------------------+

EXTENSION 2

+-------+------------------------+-------+-----------------------+
| PIN # | Name / STM32F103 Port  | PIN # | Name / STM32F103 Port |
+=======+========================+=======+=======================+
| 1     | VDDA                   | 2     | PC2                   |
+-------+------------------------+-------+-----------------------+
| 3     | GNDA                   | 4     | PA0 / **BUTTON**      |
+-------+------------------------+-------+-----------------------+
| 5     | +3.3V                  | 6     | GND                   |
+-------+------------------------+-------+-----------------------+
| 7     | PA2 / **USART2_TX**    | 8     | PA1 / **ADC_1**       |
+-------+------------------------+-------+-----------------------+
| 9     | PC3                    | 10    | PA3 / **USART2_RX**   |
+-------+------------------------+-------+-----------------------+
| 11    | PA4 / **SPI1_NSS**     | 12    | PC4 / **USB-P**       |
+-------+------------------------+-------+-----------------------+
| 13    | PC5                    | 14    | PB10 / **I2C2_SCL**   |
+-------+------------------------+-------+-----------------------+
| 15    | P11 / **I2C2_SDA**     | 16    | PB13 / **SPI2_SCK**   |
+-------+------------------------+-------+-----------------------+
| 17    | PB12 / **SPI2_NSS**    | 18    | PB14 / **SPI2_MISO**  |
+-------+------------------------+-------+-----------------------+
| 19    | PB15 / **SPI2_MOSI**   | 20    | PC6                   |
+-------+------------------------+-------+-----------------------+
| 21    | PC7                    | 22    | PC8                   |
+-------+------------------------+-------+-----------------------+
| 23    | +5V USB                | 24    | PC9                   |
+-------+------------------------+-------+-----------------------+
| 25    | GND                    | 26    | VIN                   |
+-------+------------------------+-------+-----------------------+


Programming and Debugging
*************************

This board does not include any embedded debug tool interface, instead you
will have to use an external probe connected to the available 20-pin JTAG
connector to progran and debug the board. Both JTAG and SWD are supported.

By default when using ``west debug`` ST-Link will be used with OpenOCD's
SWD transport, but it is also possible to use JTAG with the Olimex ARM-USB-OCD-H
probe, for instance. For the latter, you should replace the file ``openocd.cfg``
by ``openocd_olimex_jtag.cfg``, located in the board's support directory.

Flashing
========

Here is an example for the :ref:`button-sample` application.

.. zephyr-app-commands::
   :zephyr-app: samples/basic/button
   :board: olimex_stm32_h103
   :goals: build flash

Debugging
=========

You can debug an application in the usual way.  Here is an example for the
:ref:`hello_world` application.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: olimex_stm32_h103
   :maybe-skip-config:
   :goals: debug

References
**********

.. _OLIMEX-STM32-H103 website:
   https://www.olimex.com/Products/ARM/ST/STM32-H103/

.. _OLIMEX-STM32-H103 user manual:
   https://www.olimex.com/Products/ARM/ST/STM32-H103/resources/STM32-H103.pdf

.. _OLIMEX-STM32-H103 schematic:
   https://www.olimex.com/Products/ARM/ST/STM32-H405/resources/STM32-H405_sch.pdf

.. _ST STM32F103RB Datasheet:
   https://www.st.com/resource/en/datasheet/stm32f103rb.pdf

.. _STM32f103RB:
   https://www.st.com/en/microcontrollers-microprocessors/stm32f103rb.html
