1.. _olimexino_stm32: 2 3OLIMEXINO-STM32 4############### 5 6Overview 7******** 8 9The OLIMEXINO-STM32 board is based on the STMicroelectronics STM32F103RB ARM 10Cortex-M3 CPU. 11 12.. figure:: img/olimexino_stm32.jpg 13 :align: center 14 :alt: OLIMEXINO-STM32 15 16 OLIMEXINO-STM32 17 18More information about the board can be found at the 19`OLIMEXINO-STM32 website`_ and `OLIMEXINO-STM32 user manual`_. 20The `ST STM32F103xB Datasheet`_ contains the processor's 21information and the datasheet. 22 23Supported Features 24================== 25 26The olimexino_stm32 board configuration supports the following 27hardware features: 28 29+-----------+------------+-------------------------+ 30| Interface | Controller | Driver/Component | 31+===========+============+=========================+ 32| NVIC | on-chip | nested vectored | 33| | | interrupt controller | 34+-----------+------------+-------------------------+ 35| SYSTICK | on-chip | system clock | 36+-----------+------------+-------------------------+ 37| UART | on-chip | serial port | 38+-----------+------------+-------------------------+ 39| GPIO | on-chip | gpio | 40+-----------+------------+-------------------------+ 41| I2C | on-chip | i2c | 42+-----------+------------+-------------------------+ 43| SPI | on-chip | spi | 44+-----------+------------+-------------------------+ 45| USB | on-chip | USB device | 46+-----------+------------+-------------------------+ 47| WATCHDOG | on-chip | independent watchdog | 48+-----------+------------+-------------------------+ 49| CAN | on-chip | Controller Area Network | 50+-----------+------------+-------------------------+ 51 52Other hardware features have not been enabled yet for this board. 53 54Pin Mapping 55=========== 56 57.. figure:: img/olimexino-stm32-front.jpg 58 :align: center 59 :alt: OLIMEXINO-STM32 connectors 60 61 OLIMEXINO-STM32 connectors 62 63LED 64--- 65 66* LED1 (green) = PA5 67* LED2 (yellow) = PA1 68* PWR_LED (red) = power 69 70Push buttons 71------------ 72 73* BUT = PC9 / TIM3CH4 / BOOT0 74* RST = NRST 75 76External Connectors 77------------------- 78 79SWD 80 81+-------+--------------+-------------------------+ 82| PIN # | Signal Name | STM32F103RB Functions | 83+=======+==============+=========================+ 84| 1 | VCC | N/A | 85+-------+--------------+-------------------------+ 86| 2 | TMS / SWDIO | JTMS / SWDIO / PA13 | 87+-------+--------------+-------------------------+ 88| 3 | GND | N/A | 89+-------+--------------+-------------------------+ 90| 4 | TCK / SWCLK | JTCK / SWCLK / PA14 | 91+-------+--------------+-------------------------+ 92| 5 | GND | N/A | 93+-------+--------------+-------------------------+ 94| 6 | TDO / SWO | JTDO /TIM2_CH2 / PB3 / | 95| | | TRACESWO / SPI1_SCK | 96+-------+--------------+-------------------------+ 97| 7 | Cut off | N/A | 98+-------+--------------+-------------------------+ 99| 8 | TDI | JTDI / TIM2_CH1_ETR / | 100| | | PA15 / SPI1_NSS | 101+-------+--------------+-------------------------+ 102| 9 | GND | N/A | 103+-------+--------------+-------------------------+ 104| 10 | RESET | NRST | 105+-------+--------------+-------------------------+ 106 107UEXT 108 109+-------+--------------+-------------------------+ 110| PIN # | Signal Name | STM32F103RB Functions | 111+=======+==============+=========================+ 112| 1 | VCC | N/A | 113+-------+--------------+-------------------------+ 114| 2 | GND | N/A | 115+-------+--------------+-------------------------+ 116| 3 | D7 (TXD1) | PA9 / USART1_TX / | 117| | | TIM1_CH2 | 118+-------+--------------+-------------------------+ 119| 4 | D8 (RXD1) | PA10 / USART1_RX / | 120| | | TIM1_CH3 | 121+-------+--------------+-------------------------+ 122| 5 | D29 (SCL2) | PB10 / I2C2_SCL / | 123| | | USART3_TX / TIM2_CH3 | 124+-------+--------------+-------------------------+ 125| 6 | D30 (SDA2) | PB11 / I2C2_SDA / | 126| | | USART3_RX / TIM2_CH4 | 127+-------+--------------+-------------------------+ 128| 7 | D12 (MISO1) | PA6 / SPI1_MISO / | 129| | | ADC12_IN6 / TIM3_CH1 / | 130| | | TIM1_BKIN | 131+-------+--------------+-------------------------+ 132| 8 | D11 (MOSI1) | PA7 / SPI1_MOSI / | 133| | | ADC12_IN7 / TIM3_CH2 / | 134| | | TIM1_CH1N | 135+-------+--------------+-------------------------+ 136| 9 | D13 (SCK / | PA5 / SPI1_SCK / | 137| | LED1) | ADC12_IN5 | 138+-------+--------------+-------------------------+ 139| 10 | UEXT_#CS | N/A | 140+-------+--------------+-------------------------+ 141 142EXT 143 144+-------+--------------+-------------------------+ 145| PIN # | Signal Name | STM32F103RB Functions | 146+=======+==============+=========================+ 147| 1 | D23_EXT | PC15 / OSC32_OUT | 148+-------+--------------+-------------------------+ 149| 2 | D24 (CANTX) | PB9 / TIM4_CH4 / | 150| | | I2C1_SDA / CANTX | 151+-------+--------------+-------------------------+ 152| 3 | D25 (MMC_CS) | PD2 / TIM3_ETR | 153+-------+--------------+-------------------------+ 154| 4 | D26 | PC10 / USART3_TX | 155+-------+--------------+-------------------------+ 156| 5 | D27 | PB0 / ADC12_IN8 / | 157| | | TIM3_CH3 / TIM1_CH2N | 158+-------+--------------+-------------------------+ 159| 6 | D28 | PB1 / ADC12_IN9 / | 160| | | TIM3_CH4 / TIM1_CH3N | 161+-------+--------------+-------------------------+ 162| 7 | D29 (SCL2) | PB10 / I2C2_SCL / | 163| | | USART3_TX / TIM2_CH3 | 164+-------+--------------+-------------------------+ 165| 8 | D30 (SDA2) | PB11 / I2C2_SDA / | 166| | | USART3_RX / TIM2_CH4 | 167+-------+--------------+-------------------------+ 168| 9 | D31 (#SS2) | PB12 / SPI2_NSS / | 169| | | I2C2_SMBAI / USART3_CK /| 170| | | TIM1_BKIN | 171+-------+--------------+-------------------------+ 172| 10 | D32 (SCK2) | PB13 / SPI2_SCK/ | 173| | | USART3_CTS / TIM1_CH1N | 174+-------+--------------+-------------------------+ 175| 11 | D33 (MISO2) | PB14 / SPI2_MISO / | 176| | | USART3_RTS / TIM1_CH2N | 177+-------+--------------+-------------------------+ 178| 12 | D34 (MOSI2) | PB15 / SPI2_MOSI / | 179| | | TIM1_CH3N | 180+-------+--------------+-------------------------+ 181| 13 | D35 | PC6 / TIM3_CH1 | 182+-------+--------------+-------------------------+ 183| 14 | D36 | PC7 / TIM3_CH2 | 184+-------+--------------+-------------------------+ 185| 15 | D37 | PC8 / TIM3_CH3 | 186+-------+--------------+-------------------------+ 187| 16 | GND | N/A | 188+-------+--------------+-------------------------+ 189 190Arduino Headers 191--------------- 192 193CON1 power 194 195+-------+--------------+-------------------------+ 196| PIN # | Signal Name | STM32F103RB Functions | 197+=======+==============+=========================+ 198| 1 | RESET | NRST | 199+-------+--------------+-------------------------+ 200| 2 | VCC (3V3) | N/A | 201+-------+--------------+-------------------------+ 202| 3 | VDD (3V3A) | N/A | 203+-------+--------------+-------------------------+ 204| 4 | GND | N/A | 205+-------+--------------+-------------------------+ 206| 5 | GND | N/A | 207+-------+--------------+-------------------------+ 208| 6 | VIN | N/A | 209+-------+--------------+-------------------------+ 210 211CON2 analog 212 213+-------+--------------+-------------------------+ 214| PIN # | Signal Name | STM32F103RB Functions | 215+=======+==============+=========================+ 216| 1 | D15 (A0) | PC0 / ADC12_IN10 | 217+-------+--------------+-------------------------+ 218| 2 | D16 (A1) | PC1 / ADC12_IN11 | 219+-------+--------------+-------------------------+ 220| 3 | D17 (A2) | PC2 / ADC12_IN12 | 221+-------+--------------+-------------------------+ 222| 4 | D18 (A3) | PC3 / ADC12_IN13 | 223+-------+--------------+-------------------------+ 224| 5 | D19 (A4) | PC4 / ADC12_IN14 | 225+-------+--------------+-------------------------+ 226| 6 | D20 (A5) | PC5 / ADC12_IN15 | 227+-------+--------------+-------------------------+ 228 229CON3 digital 230 231+-------+--------------+-------------------------+ 232| PIN # | Signal Name | STM32F103RB Functions | 233+=======+==============+=========================+ 234| 1 | D0 (RXD2) | PA3 / USART2_RX / | 235| | | ADC12_IN3 / TIM2_CH4 | 236+-------+--------------+-------------------------+ 237| 2 | D1 (TXD2) | PA2 / USART2_TX / | 238| | | ADC12_IN2 / TIM2_CH3 | 239+-------+--------------+-------------------------+ 240| 3 | D2 | PA0 / WKUP / | 241| | | USART2_CTS / ADC12_IN0 /| 242| | | TIM2_CH1 | 243+-------+--------------+-------------------------+ 244| 4 | D3 (LED2) | PA1 / USART2_RTS / | 245| | | ADC12_IN1 / TIM2_CH2 | 246+-------+--------------+-------------------------+ 247| 5 | D4 | PB5 / I2C1_SMBAI / | 248| | | TIM3_CH2 / SPI1_MOSI | 249+-------+--------------+-------------------------+ 250| 6 | D5 | PB6 / I2C1_SCL / | 251| | | TIM4_CH1 / USART1_TX | 252+-------+--------------+-------------------------+ 253| 7 | D6 | PA8 / USART1_CK / | 254| | | TIM1_CH1 / MCO | 255+-------+--------------+-------------------------+ 256| 8 | D7 (TXD1) | PA9 / USART1_TX / | 257| | | TIM1_CH2 | 258+-------+--------------+-------------------------+ 259 260CON4 digital 261 262+-------+--------------+-------------------------+ 263| PIN # | Signal Name | STM32F103RB Functions | 264+=======+==============+=========================+ 265| 1 | D8 (RXD1) | PA10 / USART1_RX / | 266| | | TIM1_CH3 | 267+-------+--------------+-------------------------+ 268| 2 | D9 | PB7 / I2C1_SDA / | 269| | | TIM4_CH2 / USART1_RX | 270+-------+--------------+-------------------------+ 271| 3 | D10 (#SS1) | PA4 / SPI1_NSS / | 272| | | USART2_CK / ADC12_IN4 | 273+-------+--------------+-------------------------+ 274| 4 | D11 (MOSI1) | PA7 / SPI1_MOSI / | 275| | | ADC12_IN7 / TIM3_CH2 / | 276| | | TIM1_CH1N | 277+-------+--------------+-------------------------+ 278| 5 | D12 (MISO1) | PA6 / SPI1_MISO / | 279| | | ADC12_IN6 / TIM3_CH1 / | 280| | | TIM1_BKIN | 281+-------+--------------+-------------------------+ 282| 6 | D13 (SCK1 / | PA5 / SPI1_SCK / | 283| | LED1) | ADC12_IN5 | 284+-------+--------------+-------------------------+ 285| 7 | GND | N/A | 286+-------+--------------+-------------------------+ 287| 8 | D14 (CANRX) | PB8 / TIM4_CH3 / | 288| | | I2C1_SCL / CANRX | 289+-------+--------------+-------------------------+ 290 291CAN 292 293+-------+-------------+ 294| PIN # | Signal Name | 295+=======+=============+ 296| 1 | GND | 297+-------+-------------+ 298| 2 | CAN L | 299+-------+-------------+ 300| 3 | CAN H | 301+-------+-------------+ 302 303System Clock 304============ 305 306OLIMEXINO-STM32 has two external oscillators. The frequency of 307the slow clock is 32.768 kHz. The frequency of the main clock 308is 8 MHz. The processor can setup HSE to drive the master clock, 309which can be set as high as 72 MHz. 310 311Serial Port 312=========== 313 314OLIMEXINO-STM32 board has up to 3 U(S)ARTs. The Zephyr console output is 315assigned to USART1. Default settings are 115200 8N1. 316 317SPI 318=== 319 320OLIMEXINO-STM32 board has up to 2 SPIs. The default SPI mapping for Zephyr is: 321 322- SPI1_NSS : PA4 323- SPI1_SCK : PA5 324- SPI1_MISO : PA6 325- SPI1_MOSI : PA7 326 327I2C 328=== 329 330The OLIMEXINO-STM32 board supports two I2C devices. The default I2C mapping for 331Zephyr is: 332 333- I2C1_SCL : PB6 334- I2C1_SDA : PB7 335- I2C2_SCL : PB10 336- I2C2_SDA : PB11 337 338USB 339=== 340 341OLIMEXINO-STM32 board has a USB 2.0 full-speed device interface available 342through its mini USB connector. 343 344- USB_DM : PA11 345- USB_DP : PA12 346 347CAN 348=== 349 350OLIMEXINO-STM32 board has a CAN interface with transceiver on board. 351CAN is accessible through a screw terminal. 352 353- CAN_RX : PB8 354- CAN_TX : PB9 355 356Jumpers 357======= 358 359The Zephyr kernel uses the OLIMEXINO-STM32 default jumper 360settings. Note that all jumpers on the board are SMD type. 361You will need to solder, unsolder, or cut them in order to 362reconfigure them. 363 364The default jumper settings for the OLIMEXIMO-STM32E are: 365 366+---------------+------------+---------------+ 367| Jumper Name | Open | Close | 368+===============+============+===============+ 369| LED1_E | | x | 370+---------------+------------+---------------+ 371| LED2_E | | x | 372+---------------+------------+---------------+ 373| D23_E | x | | 374+---------------+------------+---------------+ 375| R-T | x | | 376+---------------+------------+---------------+ 377| P10_E | | x | 378+---------------+------------+---------------+ 379 380+---------------+------------+---------------+ 381| Jumper Name | D10 | D4 | 382+===============+============+===============+ 383| D10/D4 | | x | 384+---------------+------------+---------------+ 385 386Flashing Zephyr onto OLIMEXINO-STM32 387************************************ 388 389Flashing the Zephyr kernel onto OLIMEXINO-STM32 requires the 390`stm32flash tool`_. 391 392Building stm32flash command line tool 393===================================== 394 395To build the stm32flash tool, follow the steps below: 396 397#. Checkout the stm32flash tool's code from the repository. 398 399 .. code-block:: console 400 401 $ git clone http://git.code.sf.net/p/stm32flash/code stm32flash 402 $ cd stm32flash 403 404#. Build the stm32flash tool. 405 406 .. code-block:: console 407 408 $ make 409 410#. The resulting binary is available at :file:`stm32flash`. 411 412Flashing an Application to OLIMEXINO-STM32 413========================================== 414 415To upload an application to the OLIMEXINO-STM32 board a TTL(3.3V) 416serial adapter is required. This tutorial uses the 417:zephyr:code-sample:`button` sample application. 418 419#. Connect the serial cable to the UEXT lines of the UART 420 interface (pin #3=TX and pin #4=RX). 421 422#. Power the OLIMEXINO-STM32 via the mini USB. 423 424#. Reset the board while holding the button (BUT). 425 426#. To build the application and flash it, enter: 427 428 .. zephyr-app-commands:: 429 :zephyr-app: samples/basic/button 430 :board: olimexino_stm32 431 :goals: flash 432 433#. Run your favorite terminal program to listen for output. 434 435 .. code-block:: console 436 437 $ minicom -D /dev/ttyUSB0 -b 115200 438 439 The :code:`-b` option sets baud rate ignoring the value 440 from config. 441 442#. Press the Reset button and you should see the output of 443 button application in your terminal. The state of the BUT 444 button's GPIO line is monitored and printed to the serial 445 console. When the input button gets pressed, the interrupt 446 handler prints information about this event along with its 447 timestamp. 448 449.. note:: 450 Make sure your terminal program is closed before flashing 451 the binary image, or it will interfere with the flashing 452 process. 453 454.. _OLIMEXINO-STM32 website: 455 https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/ 456 457.. _OLIMEXINO-STM32 user manual: 458 https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/resources/OLIMEXINO-STM32.pdf 459 460.. _ST STM32F103xB Datasheet: 461 https://www.st.com/resource/en/datasheet/stm32f103tb.pdf 462 463.. _stm32flash tool: 464 https://sourceforge.net/p/stm32flash/wiki/Home/ 465