Vývojová deska ARM M3 je další možnost základní desky pro Arduino. Tato deska je založena na mikrokontrolérech řady STM32, v tomto případě se jedná o čip STM32F103C8T6.
Tento čip pracuje na frekvenci 72 MHz, má 32bitový procesor a obsahuje 33 vstupně/výstupních pinů. Tyto I/O piny pracují na napěťových úrovních 3,3 Voltu, stejně jako je napájecí napětí pro celou desku. Pro napájení pak můžeme připojit buď napětí na piny desky nebo ji napájet z existujícího konektoru microUSB.

Vývojová deska ARM STM32F103C8T6 STM32

Abychom mohli začít s programováním desek STM32 za pomoci Arduino IDE, je zapotřebí udělat několik jednoduchých kroků.
Prvním krokem je dohrání podpory ARM M3 překladače do Arduino IDE. Po jeho otevření zvolíme v nabídce volbu Nástroje-Vývojová deska-Manažér desek.

Vývojová deska ARM STM32F103C8T6 STM32 1

Po otevření manažeru napíšeme do horní řádky název „sam“. Poté nám Manažér nabídne více možností, z kterých vybereme Arduino SAM Boards (32-bits ARM Cortex-M3) a stiskneme tlačítko Instalace. Po stisknutí tlačítka se nám postupně stáhne a nainstaluje balíček s překladačem pro ARM M3.

Vývojová deska ARM STM32F103C8T6 STM32 2

Nyní vypneme Arduino IDE a stáhneme balíček s podporou STM32. Po stažení rozbalíme jeho obsah a celou složku Arduino_STM32-master přesuneme do cesty C:\Users\<Váš_účet>\Dokumenty\Arduino\hardware. Pokud složka hardware neexistuje, stačí ji vytvořit. A pokud máte přesměrovanou složku pro Arduino projekty a knihovny jinam, vytvořte složku hardware tam. Pro kontrolu správnosti byste tedy po nakopírování měli vidět například soubor v cestě C:\Users\<Váš_účet>\Dokumenty\Arduino\hardware\Arduino_STM32-master\README.md.

 

V tuto chvíli máme nainstalovanou podporu pro desky STM32 a můžeme ji otestovat. Po zapnutí Arduino IDE si můžete zkontrolovat, že v nabídce Nástroje-Vývojová deska můžete nově zvolit desku Generic STM32F103C series. Po jejím zvolení je pak ještě nutné zkontrolovat, že v nabídce Nástroje-Variant máte zvolenou desku STM32F103C8 (20k RAM, 64k Flash).

Vývojová deska ARM STM32F103C8T6 STM32 3

Pro nahrání nového programu bude zapotřebí použít USB převodník na UART, jako například tento typ ze staršího návodu. Abychom mohli nahrávat program přes sériovou linku, zvolíme v nabídce Nástroje-Upload method možnost Serial.

Vývojová deska ARM STM32F103C8T6 STM32 4

V tuto chvíli máme připraveno prostředí Arduino IDE a můžeme si propojit desku STM32 a UART převodník. Podle schématu níže stačí propojit celkem čtyři piny. Propojíme 3V3 s pinem 3V3 STM32, GND s pinem GND STM32, TXD s pinem A10 a RXD s pinem A9.
Pro programování desky STM32 je také důležitá poloha přepínače BOOT0. Pokud je tento přepínač v poloze nula jako na obrázku, deska po zapnutí napájení nahraje program z paměti. Pokud tedy chceme nahrát nový program do paměti, je nutné přepnout přepínač BOOT0 do polohy jedna a restartovat desku pomocí tlačítka RESET. Po tomto přepnutí můžeme nahrát nový program z Arduino IDE. A až budeme mít nahraný správný program a budeme chtít používat desku běžným způsobem, stačí přepnout přepínač BOOT0 zpět na polohu nula a provést restart.

Schéma zapojení Vývojové desky ARM STM32F103C8T6 STM32

Pro otestování desky STM32 jsem vytvořil jednoduchý ukázkový kód, který pracuje se sériovou linkou a vestavěnou LED diodou.  Na jeho začátku nastavíme číslo pinu s LED diodou a vytvoříme proměnné pro uložení stavu LED diody a načtení znaku ze sériové linky.
V podprogramu setup provedeme zahájení komunikace po sériové lince a nastavíme vestavěnou LED diodu jako výstup.
V nekonečné smyčce loop v první kroku kontrolujeme, jestli není k dispozici nějaký znak na sériové lince. Pokud ano, provedeme jeho načtení do proměnné a poté vytištění po sériové lince. V dalším kroku zapíšeme na pin LED diody aktuální stav. Tento stav je poté znegován pomocí znaku „!“ a po nastavené pauze po dobu jedné sekundy se program opakuje.

// Arduino STM32F103C8 test program

// nastavení čísla pinu LED diody
#define pinLED PC13
// uložení stavu LED diody a znaku
bool stav = 0;
char znak;

void setup() {
  // zahájení komunikace po sériové lince
  // rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení pinu pro LED jako výstup
  pinMode(pinLED, OUTPUT);
  // vytištění startovní zprávy po sériové lince
  Serial.println("Zahajeni komunikace STM32..");
}

void loop() {
  // pokud je načtený nějaký znak,
  // vytiskneme ho po sériové lince
  while (Serial.available()) {
    znak = Serial.read();
    Serial.print(znak);
  }
  // zapíšeme na LED pin aktuální stav
  digitalWrite(pinLED, stav);
  // pro další běh smyčky uložíme pomocí
  // "!" do proměnné opačný stav
  stav = !stav;
  // pauza 1000 ms
  delay(1000);
}

Pro nahrání programu do desky STM32 tedy přepneme BOOT0 na jedničku, provedeme reset a pak už pouze stiskneme v Arduino IDE tlačítko Nahrát. A pokud budeme chtít program používat po odpojení programátoru, přepneme BOOT0 na nulu.

 

Vývojová deska STM32F103C8 je zajímavou alternativou oproti běžně používaným Arduino deskám s čipy Atmel. Tato deska obsahuje procesor ARM M3, který je mnohonásobně rychlejší a silnější než 8bitové Atmely a proto se může hodit do projektů, kde využijeme ať už větší výkon nebo velké množství propojovacích pinů. Zároveň je tato deska prodávána za rozumnou cenu a proto je často používána u pokročilejších uživatelů. Pro ukázku využití sběrnice I2C a SPI doporučuji tento  anglický návod.

 

Seznam použitých komponent:
https://dratek.cz/arduino/1135-vyvojova-deska-arm-stm32f103c8t6-stm32-1449882767.html
https://dratek.cz/arduino/1158-prevodnik-6pin-usb-ttl-uart-reset-pin-1449940303.html

FB tw

Další podobné články