Sdílejte chiptron.cz na sociálních sítích



RSS feeds

STM32duino I. - Jak začít s STM32 jako ArduinoTisk

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

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
10,748,276 návštěv