Znovu STM32, tentokrát F030F4P6

Mezi deskami, které lze programovat v Arduino IDE jsem hledal takovou, která by uměla měřit analogové signály s lepší přesností. Standardní Arduina mají vstupy 10b, což je pro některá měření nepřesné. Již dřív jsem zkoušel desku BluePile, zkoušené kusy ale vykazovaly ne příliš stabilní měření (přestože 12b, což by nebylo zlé). S jakýmsi rušením, či nestabilitou měření z analogových vstupů jsem se setkal i u desek xDuino Nano z Aliexpressu - hold asi Čína. Nyní mám tedy k vyzkoušení vývojovou desku z rodiny STM32, konkrétně s CPU STM32F030F4P6.

Popis desky

Tato deska obsahuje pouze procesor STM32F030F4P6 a několik podpůrných prvků. Napájecí napětí CPU je 3,3 V. CPU je jedním z mnoha CPU využívajících ARM architekturu (přesněji Cortex-M0). Pro ladění lze připojit externí ladicí rozhraní. Na desce je zásuvka micro-USB, ale lze ji použít pouze k napájení (datové piny nejsou vůbec zapojeny). Na lince PA_4 je připojena LED dioda. Pokud je potřeba vedení PA_4, lze LED odpojit odstraněním jejího předřadného odporu. ?PA_13 a ?PA_14 se běžně používají v ladicím rozhraní a nelze je použít pro jiné účely. Linky PA_0 až PA_7 a PB_1 jsou analogové, ale maximálně tolerují 3,3V. Řádky PA_9, PA_10, ?PA_13, ?PA_15, PF_0 a PF_1 jsou tolerantní k 5V.

Tento procesor je zajímavý, protože se jedná o jeden z nejlevnějších 32bitových procesorů a bude proto pravděpodobně docela populární. Nevýhodou je malá paměť pro program (16k), což bude limitovat především toho, kdo jej bude programovat pomocí Arduino IDE.

Připojení k IDE, zavedení programu

Zavedení programu je poněkud komplikovanější, než v případě standardního arduina:

  1. V IDE do správce dalších desek (menu "Soubor\Vlastnosti", karta "Nastavení" do pole skoro dole) je třeba vložit URL:
    https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
  2. V manažeru desek (menu "Nástroje\Vývojová deska..\Manažer desek") doinstalovat podporu desek "STM32 Cores".
  3. V menu "Nástroje\Vývojová deska.." vybrat "Generic STM32F0 series", v "Nástroje\Upload method.." vybrat "STM32CubeProgrammer (Serial)".
  4. Do OS nainstalovat nástroj STM32CubeProgrammer (bez toho Arduino IDE zkompilovaný projekt neumí do desky zavést; nástroj dále potřebuje nainstalovat JAVU).
  5. Dále potřebujeme převodník USB > UART (TTL). Čtveřici pinů 3V3/GND/TX/RX vývojové desky propojíme s odpovídajícími piny převodníku, vodiče RX/TX ale překřížíme.
  6. Při zavádění programu je třeba jumper BOOT přepnout do pozice 3V3 a desku resetovat, jakmile je zaveden, je možné jej vrátit do pozice GND a opět provést reset (platí při programování pomocí UART, v případě použití ST-Link to bude jednodušší - bez jumperování).

Pokusy o vytvoření programu

Abych ověřil, jak na tom tato deska je s přesností měření, potřeboval jsem vytvořit program, kde takové měření zprovozním. Abych nějak odečetl naměřené hodnoty, výsledky jsem hodlal odeslat do sériového portu a přečíst monitorem z Arduino IDE. Bohužel knihovna integrovaná v IDE je příliš náročná - program se po překladu nevejde do flash paměti. Bylo tedy nutné nainstalovat knihovnu miniSerial.

Výsledek je bohužel podobný jako v případě BluePill, spíš ale ještě kapku horší - na desce také chybí přesná reference.

Odkazy