STM32 – poznámky začátečníka

Během seznamování se s procesory je potřeba pochopit strukturu dokumentace, najít vhodné aplikace k programování a získat návyky pro jejich rutinní používání. V této skupině článků je pár poznámek k mým začátkům. Text je psán jako přechod od osmibitových procesorů společnosti Atmel k 32-bitovým procesorům STM z pohledu člověka, který má programování jako koníček.

Proč zrovna STM32? Chtěl jsem se seznámit s procesory, které budou dostupné v pouzdrech LQFP, abych je mohl ručně pájet do svých desek. STM32 obsahuje obrovskou skupinu obvodů, jejichž cena začíná na 40Kč a lze jimi nahradit ATmega8 a končí výkonnými obvody, které pracují na 480MHz a obsahují spoustu vnitřních periferií. Chtěl jsem vývojové prostředí, ve kterém bude možné provádět debuggování, sledovat běh programu. STM32 se svými LL knihovnami nabízí možnost programovat na úrovni registrů a hardware, nebo lze do projektu zapojit HAL knihovny, díky kterým se hardware schová. Dokonce je možné tyto dva přístupy kombinovat a mít v jednom projektu obojí.

Na začátku práce je potřeba nastavit vlastnosti periferií procesoru, které budeme potřebovat v plánované aplikaci. Osmibitové procesory Atmel mají pro každou svoji periferii několik registrů, popsaných v datovém listu procesoru. Například I/O port ATmega16 má dva registry, lze nastavit vstup / výstup / pull-up rezistor. Popis je jednoduchý, nastavení lze provést ručně.

U STM32 jsou pro nastavení univerzálního I/O portu potřeba čtyři registry, další registry jsou nutné pro nastavení hodinového signálu aby bylo možné alespoň rozblikat LED diodu. Popis registrů je v referenčním manuálu, ale i nejméně výkonné procesory, např. STM32F0 mají manuál s 1000 stranami, takže cesta k prvnímu programu by byla hodně dlouhá. Přitom stačí malá chyba a procesor vůbec nezačne pracovat. Takže bude lepší nechat registry nastavit automaticky, programem STM32CubeMX.

STM32CubeMX

STMmicroelectronics má pro počáteční konfiguraci projektu nástroj STM32CubeMX. Ten je, podobně jako ostatní mnou používané programy k dispozici zdarma na stránkách www.st.com. Jenom je potřeba se zaregistrovat.

Při instalaci je potřeba zvolit adresář Workspace, to je místo, kde budou uloženy projekty.

STM32CubeMX vytvoří strukturu adresářů pro nový projekt, připraví knihovny pro počáteční inicializaci a ovládání periferií procesoru. Pracovní adresář by neměl být moc hluboko v adresářové struktuře, aby nevznikaly problémy s dlouhými názvy.

Podrobnější popis je v článku STM32CubeMX – první projekt.

STM32CubeIDE

Dalším programem, který je potřeba nainstalovat, je vývojové prostředí pro STM32.

Vyzkoušel jsem Visual Studio Code. To je univerzální nástroj pro psaní programů v různých jazycích pro různá zařízení. Pro práci s STM32 je nutné jej konfigurovat, nainstalovat několik pluginů. To se mi nepodařilo.

Další možností je Keil, který je zdarma pro 32kB přeloženého kódu.

STM má na svých stránkách k dispozici Atollic studio a STM32CubeIDE. Oba programy jsou postaveny na Eclipse, přitom STM32CubeIDE bude nejspíš podporováno dlouhodobě. Proto jej budu používat.

Podrobnější popis je v článku STM32CubeIDE.

STM32CubeProgrammer

Poslední program, který se občas hodí, je STM32CubeProgrammer. Ono to vypadá, že všechny vlastnosti procesoru lze nastavit v STM32Cube a registry pojistek (fuse) známé z ATmega zmizely. Některé vlastnosti, např. BOR_Level, úroveň napájecího napětí, při kterém dojde k aktivaci resetu zůstaly. Registry pojistek se tady jmenují Option bytes. Při prvních pokusech s vývojovou deskou nebude potřeba se tímto zabývat.

Dokumentace k procesorům

Ke každému procesoru existuje datový list, tam toho na rozdíl od datových listů Atmel o programování moc není.

Popis procesoru z pohledu programátora je v referenčním manuálu, jde o rozsáhlý dokument a pro listování v něm používám STM32Cube.

Seznam knihoven a jejich popis je v dokumentu Description of STM32F0 HAL and low-layer drives. Tento dokument je platný vždy pro jednu sérii procesorů, např. F0, F1, F4…

Můj hardware

STM má pro seznámení s procesory dvě řady vývojových desek, Discovery a Nucleo. Obě desky mají kromě hlavního procesoru ještě menší STM32, ve kterém je naprogramován programátor ST-LINK. Takže není potřeba mít mezi PC a vývojovou deskou programátor, jako byl např. AVR Dragon u Atmelu.

Já mám destičku 32F072BDISCOVERY, chtěl jsem vyzkoušet práci s dotykovým senzorem, používaným např. v indukčních deskách.

Další deskou s výkonnějším procesorem je NUCLEO-F446RE. Z této desky lze ulomit programátor ST-LINK a používat jej pro programování obvodů na mnou navržených deskách.

K programování vlastních aplikací jsem si později koupil programátor ST-link/V2.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Čeština‎EnglishFrançaisDeutschItalianoPolskiРусскийEspañol