STM32duino I. - Jak začít s STM32 jako Arduino
- March 25 2018
- STM32duino
- 14431x Přečteno
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