STM32duino I. – Jak začít s STM32 jako Arduino

Arduino je velmi populární platforma s rozsáhlou komunitní podporou.

Kromě originálních vývojových kitů Arduino můžete zakoupit desítky typů klonů ať už se stejnými mikrokontroléry, které používá i Arduino – typicky ATmega328 a SAMD21, nebo jinými čipy jako je například ESP32 nebo ESP8266.

Mezi poslední jmenované patří i mikrokontroléry STM32. Pro některé STM32 mikrokontroléry vytvořila komunita podporu i pro jazyk Wiring, který se na Arduino platformě používá.

Prvním a základním mikrokontrolérem, pro který byla knihovna vytvořena, byl STM32F103. Tento mikrokrokontrolér využívají velmi levné vývojové desky nazvané Minimum System development board with STM32 (jinak nazvané také BluePill nebo BlackPill (novější verze)) nebo vývojové desky od LeafLabs nazvané Maple Mini. [zdroj a seznam klonů vývojových desek]

Všechny díly seriálu o STM32duino:
STM32duino I. – Jak začít s STM32 jako Arduino
STM32duino II. – Ovládáme GPIO
STM32duino III. – Komunikujeme pomocí Serial (USART)
STM32duino IV. – Čteme teplotu a vlhkost z Si7021 (I2C sběrnice)

Kromě komunitní podpory STM32F103, se podpora rozšířila i na další mikrokontroléry díky STMicroelectronics a knihovně STM32duino, které budou využity v této sérii článků o STM32 a Arduino.

Odkaz na github STM32duino je zde.

V tuto chvíli existuje podpora pro více než dvacet typů mikrokontrolérů STM32. Každý typ mikrokontroléru je něčím jiný – nízkoodběrový, vysoký výkon, hodně typů periférie, přesný timer, přesný analogově-digitální převodník, velikost FLASH a SRAM a jiné vlastnosti.

Přehled podporovaných STM32 je na
https://github.com/stm32duino/Arduino_Core_STM32#boards-available

Ne všechny periférie jsou podporované, ale ty nejčastější ano – GPIO, UART, SPI, I2C, Timer, ADC, DAC, USB HID a doplňuje se podpora CAN, USB CDC a další.

V tomto i následujících článcích budu používat originální vývojové desky Nucleo od firmy STMicroelectronics, jmenovitě STM32F411 Nucleo-64.

Ke koupi na TME.eu a také Farnell

Instalace knihovny do Arduino IDE

Instalace knihovny je velmi jednoduchá.

Proklikáte se na File -> Preferences -> a kliknete na ikonu, která je zvýrazněná na obrázku níže. Do okna Additional Boards Manager URLs pak zadáte následující řádek
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json

V záložce Tools -> Board -> Boards Manager se objeví následující knihovna

Po instalaci se objeví v záložce Tools další možnosti

V záložce Board vyberete Nucleo 64 (pokud máte jiný typ vývojové desky, pak zvolíte příslušnou desku Nucleo-144, Nucleo-32, Discovery )

V Board part number už vyberete přímo danou vývojovou desku s mikrokontrolérem

Mikrokontroléry STM32 mají typicky více UART rozhraní (Serial), v nabídce Serial interface si tedy můžete zvolit, jaké chcete.

Detailnější popis v jiném článku popisující UART rozhraní.

Záložka USB interface označuje možnost použití hardwarového USB rozhraní. Ne všechny STM32 mikrokontroléry toto rozhraní mají. Knihovny STM32duino zatím (25.3.2018) neobsahují podporu všech tříd USB. Prozatím pouze HID.

Vývojové desky Nucleo a Discovery obsahující programátor/debugger STLink v2.1 se připojí k počítači jako klasický FLASH disk. Zkompilovaný kód stačí zkopírovat do příslušného zařízení. To dělá Arduino IDE automaticky, při volbě Mass Storage.

Druhou variantou je STLink. Ten je použit pro starší typy STLink.

Po napsání vašeho kódu a následné kompilaci kódu si můžete zvolit jednu z variant, jak daný kód optimalizovat.

Po připojení desky Nucleo/Discovery by vás měl operační systém uvědomit, že bylo připojeno USB zařízení. Popřípadě přímo otevřít okno s obsahem, co se v daném zařízení nachází (v případě novějšího STLink v2.1).

Zda všechno funguje vyzkoušíme klasickým začátečnickým programem pro blikání vestavěné LED.

// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin LED_BUILTIN as an output

pinMode(LED_BUILTIN, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)

delay(500); // wait for a second

digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW

delay(500); // wait for a second

}

Funguje? Výborně. Tak v příštím článku si trochu víc “ošaháme” GPIO.

Pokud se vám článek líbil, pošlete odkaz i dalším bastlířům s hashtagem #STM32duino

Sdílejte článek:

Související články

Ve čtvrtém díle našeho seriálu o STM32duino se konečně podíváme na slibovanou I2C sběrnici.

Ve druhém díle o STM32duino si ukážeme práci s digitálními vstupy a výstupy.

Ve třetím díle si ukážeme použití snad nejpopulárnější sběrnice – USART, v Arduino světě je nazývána jako Serial.

Další články o STM32(F7): Tutorial: STM32F746 (STM32F7 Discovery) – Tlačítkem rozsvítit/zhasnout LED Tutorial: STM32F746 (STM32F7 Discovery) – jak zapnout LED (ovládání GPIO) STM32F746 discovery a IDE AC6 (System Workbench for STM32) Jak začít s moderními mikrokontroléry a proč – STM32…

Tento první článek ze série Tutoriál: STM32F746 (STM32F7 Discovery) bych chtěl věnovat rozsvícení LED resp.

STM32 zahrnuje celou plejádu 32bitových mikrokontrolérů.