Rozpoczęcie programowania STM32 z użyciem bibliotek HAL oraz kreatora graficznego Cube nie jest możliwe bez odpowiedniego oprogramowania.
W tej części kursu przygotujemy sobie niezbędne narzędzia. Wcześniej omówimy jednak dokładnie zestaw Discovery, na którym będziemy pracować podczas kolejnych części kursu.
Uwaga! Ten kurs został zarchiwizowany. Sprawdź najnowszy kurs STM32 »
Płytka STM32F411E Discovery
W celu ułatwienia zapoznawania się z możliwościami swoich produktów, firma ST stworzyła dwie serie płytek rozwojowych: Nucleo oraz Discovery. O tej pierwszej więcej informacji znajdziecie w poprzednim kursie STM32 - opartym o biblioteki STD. Podczas tej serii zajmiemy się płytkami Discovery, a konkretnie tą z serii F4.
Gotowe zestawy do kursów Forbota
Komplet elementów Gwarancja pomocy Wysyłka w 24h
Zestaw elementów do przeprowadzenia wszystkich ćwiczeń z kursu STM32 F4 można nabyć u naszego dystrybutora! Zestaw zawiera m.in. płytkę Discovery, wyświetlacz OLED, joystick oraz enkoder.
Masz już zestaw? Zarejestruj go wykorzystując dołączony do niego kod. Szczegóły »
Płytki rozwojowe z serii Discovery są bardzo tanią i przystępną formą dostarczenia mikrokontrolera w stanie umożliwiającym prawie natychmiastowe rozpoczęcie pracy.
Poza samym obiektem naszego zainteresowania, jakim jest mikrokontroler, na płytce znajduje się wiele przydatnych dodatków. Całość składa się na przyjazną platformę, skutecznie ułatwiającą wejście w świat programowania STM32.
Wyposażenie płytki Discovery STM32F411E
Na płytce o wymiarach 97×66 mm otrzymujemy całkiem pokaźny zestaw dodatkowych modułów, układów scalonych i złącz. Przyjrzyjmy się teraz im z bliska. Na poniższym zdjęciu zaznaczyłem najważniejsze elementy. Dalszy przegląd dokonany jest z góry na dół, od lewej do prawej.
Najważniejsze elementy płytki Discovery. Foto: Botland.com.pl
Podczas czytania tej sekcji warto mieć płytkę przed sobą
i przyglądać się z bliska opisywanym elementom.
Wbudowany programator ST-Link
Jednym z elementów wyposażenia każdej płytki Discovery jest programator/debugger ST-Link. Jest to urządzenie pozwalające na wgranie stworzonego wcześniej programu do mikrokontrolera oraz na podglądanie wnętrza układu podczas jego pracy.
Sekcja programatora na płytce Discovery.
Część płytki widoczna na powyższym zdjęciu, to programator ST-Link. Kolorem pomarańczowymzaznaczone jest gniazdo mini USB (opisane jako USB ST-LINK), przez które łączy się płytkę z komputerem podczas programowania układu.
Programowanie układów poza płytką
Bardzo przydatną funkcją zawartego tu programatora jest możliwość programowania układów zewnętrznych. Służy do tego zaznaczona na niebiesko listwa kołkowa (oznaczenie na płytce: SWD, listwa CN2), do której podpina się wyprowadzenia zewnętrznego mikrokontrolera, który ma zostać zaprogramowany. Aby przekierować programator na tę właśnie listwę, należy zdjąć obydwie zworki zaznaczone na fioletowo (listwa CN3).
Aby programować główny mikrokontroler zawarty na płytce
zworki muszą być założone.
Zaletą tego rozwiązania jest fakt, że tworząc własny projekt oparty na mikrokontrolerze STM32 nie musimy do niego dokupywać programatora. Dostajemy taki wraz z każdą z płytką Discovery.
Dostarczony wraz z płytką Discovery programator będzie współpracował ze wszystkimi mikrokontrolerami z rodziny STM32!
Pomiar prądu pobieranego przez układ
Pod obszarem programatora kolorem brązowym zaznaczono zworkę odpowiadającą za zasilanie mikrokontrolera oraz wszystkich peryferiów na płytce (zworka JP2).
Miejsce, w którym można dokonać pomiaru prądu.
Miejsce to służy do pomiaru prądu pobieranego przez układ podczas pracy. Po zdjęciu zworki można w odkryte goldpiny wpiąć amperomierz i tym samym wygodnie, bez mechanicznych ingerencji w płytkę, zmierzyć prąd. Informacje na temat pomiarów multimetrem opisane zostały w kursie elektroniki.
Pamiętaj! Jeżeli którakolwiek z powyżej pokazanych zworek będzie zdjęta, zaprogramowanie mikrokontrolera na płytce Discovery będzie niemożliwe!
Dostępne przyciski
Na płytce znajdują się dwa przyciski, które zaznaczyłem kolorem żółtym. Przycisk po lewej ma kolor niebieski i podłączony jest do standardowego wyprowadzenia mikrokontrolera, co pozwala użytkownikowi na jego oprogramowanie. Przycisk znajdujący się po prawej ma kolor czarny i jest to przycisk resetu.
Przycisk użytkownika oraz reset na płytce Discovery.
Wbudowane diody świecące (LED)
Pomiędzy przyciskami znajdują się cztery niewielkie fioletowe prostokąty. Są nimi zaznaczone diody świecące, oddane do użytku programisty.
Poza nimi, na płytce umieszczono jeszcze 4 inne LEDy, które pełnią funkcje informacyjne i użytkownik nie ma wpływu (a przynajmniej nie programowo) na ich działanie. Nie zostały one tu zaznaczone, ponieważ zajmiemy się nimi dokładniej podczas uruchamiania płytki.
Cztery dostępne diody świecące.
Akcelerometr i magnetometr
Pomiędzy diodami LED, na czerwono zaznaczony jest trzyosiowy akcelerometr z magnetometrem. Z mikrokontrolerem komunikuje się za pomocą interfejsu I2C, a jego dokładniejszą specyfikację można znaleźć w dokumentacji modułu LSM303DLHC.
Wbudowany akcelerometr z magnetometrem.
Żyroskop
Pod lewym przyciskiem widoczny jest kolejny układ scalony, zaznaczony szarym kwadratem. Jest to trzyosiowy czujnik prędkości kątowej, czyli inaczej żyroskop.
Do komunikacji z tym modułem użyty został interfejs SPI, a dokładniejsze informacje na jego temat znaleźć można w dokumentacji modułu L3GD20.
Wbudowany żyroskop.
Cyfrowo-analogowy konwerter audio
Na prawo od żyroskopu, kolorem niebieskim zaznaczyłem CS43L22. Jest to przetwornik DAC pozwalający na generowanie sygnału dźwiękowego. Komunikacja z tym układem zrealizowana jest za pomocą protokołu I2S.
Wbudowany konwerter cyfrowo-analogowy.
Zaraz pod tym układem znajduje się znaczących rozmiarów prostopadłościan, stanowiący wyjście układu DAC w postaci standardowego złącza audio jack 3.5mm.
Mikrofon
Ostatni wyróżniony układ (na fioletowo), to mikrofon. Po więcej szczegółów warto zajrzeć do dokumentacji modułu MP45DT02.
Mikrofon wbudowany w płytkę Discovery.
Złącze micro USB
Na samym dole płytki, pomarańczowym kolorem zaznaczono kolejne złącze USB, tym razem w wersji micro. Wyprowadzenia tego złącza podłączone są do mikrokontrolera, pozwalając tym samym na wykorzystanie możliwości kontrolera USB będącego na wyposażeniu STM32.
Kolejne gniazdo USB, tym razem micro.
Dzięki temu jesteśmy w stanie przesyłać dane za pomocą wirtualnego portu COM lub wgrywać program do mikrokontrolera z wykorzystaniem bootloadera. Oczywiście to tylko niektóre z zastosowań dostępnych dzięki zintegrowanemu kontrolerowi USB.
Podłączanie zewnętrznych elementów
Po bokach płytki znajdują się listwy typu goldpin, do których doprowadzono wszystkie linie mikrokontrolera. Dzięki temu można podłączyć zewnętrzne układy bezpośrednio do STM32.
Pozwala to na dołączenie do płytki praktycznie dowolnych układów, bez konieczności jakiejkolwiek mechanicznej ingerencji w postaci rozcinania ścieżek lub wlutowywania się w płytkę.
Niektóre ścieżki podłączone są do znajdujących się na płytce układów scalonych. Skutkuje to obecnością dodatkowych rezystorów i kondensatorów na tych liniach.
Może mieć to wpływ na pracę zewnętrznie podłączanych układów, dlatego przed podłączeniem czegokolwiek warto sprawdzić schematy płytki DiscoveryF4.
Mikrokontroler
Na sam koniec serce całej płytki Discovery - mikrokontroler STM32F411VET6. Na samym środku płytki, w 100 pinowej obudowie LQFP umieszczono mikrokontroler z bardzo wydajnej rodziny F4. Informacje na temat wydajności układu warto porównać z pozostałymi STMami:
Porównanie maksymalnych wydajności rodzin STM32. Źródło: materiały prasowe STM32.
W poniższym zestawieniu postarałem się zebrać najbardziej interesujące informacje na jego temat:
rdzeń układu jest stworzony w architekturze ARM Cortex-M4 z jednostką wspierającą obliczenia zmiennoprzecinkowe (FPU),
maksymalna częstotliwość taktowania tego mikrokontrolera to 100 MHz,
wbudowane 512 Kb pamięci programu - pamięci Flash,
wbudowane 128 Kb pamięci danych - pamięci SRAM,
pełna gama peryferiów w postaci zaawansowanych timerów, przetworników ADC oraz interfejsów komunikacyjnych (I2C, I2S, SPI, USART, SDIO, USB),
mikrokontroler może być zasilany napięciem z zakresu 1.7 - 3.6V.
77 na 81 portów IO deklarowane jest jako "5V-tolerant". Oznacza, że na te piny mikrokontrolera możemy bezpiecznie podać sygnał o wartości 5V.
Dzięki temu ostatniemu do mikrokontrolera można podłączyć np. konwerter UART/USB pracujący w standardzie napięciowym 0-5V.
Trzeba jednak bardzo uważać w jakim trybie znajduje się pin mikrokontrolera, na który może zostać podane wyższe napięcie. Dla przykładu: podanie napięcia 5V na pin generujący sygnał PWM najprawdopodobniej spowoduje spalenie całego układu.
Jak widać, niewielkich rozmiarów płytka Discovery daje użytkownikowi spore możliwości. Mając na wyposażeniu wydajny mikrokontroler, 9DOF IMU oraz układy audio pozwalające zarówno na pobieranie (mikrofon) jak i generowanie (przetwornik DAC) sygnału dźwiękowego, stanowi ciekawą platformę do nauki programowania mikrokontrolerów.
Na tym zakończymy ogólny przegląd płytki, na której będziemy pracować w ramach tego kursu. Wszystkie niezbędne szczegóły zostaną omówione przy okazji konkretnych zastosowań.
Oprogramowanie potrzebne do pracy z STM32
W tej części artykułu opisany zostanie proces instalacji głównych narzędzi, które będą pomagać nam podczas tworzenia aplikacji na mikrokontrolery STM32.
ST-Link Utility
Program dostarczony przez firmę ST. Pozwala on między innymi na testowanie poprawności instalacji sterowników programatora, wgrywanie programu oraz czyszczenie jego pamięci.
Aktualną wersję oprogramowania można uzyskać na stronie producenta – przycisk Get Software na dole strony (aby móc pobierać oprogramowanie ze strony ST musimy posiadać tam konto). Instalacja przebiega standardowo. Na samym końcu procesu powinien uruchomić się dodatkowy instalator sterowników do obsługi ST-Link. Należy je zainstalować.
Jeśli instalator sterowników nie uruchomi się automatycznie,
należy je pobrać stąd i zainstalować ręcznie.
Sprawdzenie poprawności działania sterowników
Aby przetestować poprawność instalacji sterowników należy wykonać poniższe działania.
Krok 1.Za pomocą złącza mini USB podłączamy płytkę Discovery do komputera.
W tym momencie warto zwrócić uwagę na diody informacyjne na płytce.
Na prawo od złącza mini USB mała dioda LD2 z podpisem PWR informuje o obecności zasilania. Po podłączeniu powinna się świecić na czerwono.
Położenie diod sygnalizujących pracę płytki.
Dioda LD1 znajdująca się na lewo od złącza mini USB oznaczona jest napisem COM. Domyślnie świeci się na czerwono. Jej zadaniem jest informowanie o połączeniu pomiędzy płytką, a komputerem. Jeżeli komunikacja jest w toku, dioda zaświeci się na zielono.
Krok 2. Wchodzimy do menadżera urządzeń (prawy przycisk myszy na Mój Komputer > Menadżer urządzeń lub Mój komputer > Zarządzaj > Menadżer urządzeń).
Krok 3. W zakładce Urządzenia uniwersalnej magistrali szeregowej powinna widnieć pozycja o nazwie STM32 STLink.
Programator ST-Link wykryty przez system.
Jeżeli na tym etapie komputer nic takiego nie wykrył,
należy ponownie spróbować zainstalować sterowniki programatora ST-Link.
Krok 4. Uruchamiamy program ST-Link Utility. Z menu wybierz opcję Target > Connect.
Panel główny programu ST-Link
Krok 5. Jeżeli wszystko poszło dobrze, to naszym oczom powinien ukazać się taki obraz:
Ekran programu ST-Link Utility po poprawnym połączeniu z płytką Discovery
Jeżeli program ST-Link pokazał błąd dotyczący połączenia, to należy sprawdzić, czy wszystkie 3 zworki, o których była mowa wcześniej są założone. Bez którejkolwiek z nich nawiązanie połączenia z mikrokontrolerem będzie niemożliwe.
Interesujące będą tu dla nas dwie sekcje. Pierwsza znajduje się w prawym górnym rogu panelu. Znajdują się w niej informacje dotyczące podłączonego mikrokontrolera.
Drugie warte uwagi miejsce to znajdująca się na samym dole konsola. Najbardziej interesującą dla nas (na ten moment) informacją jest to, że mamy nieaktualny firmware w programatorze na płytce i należy go zaktualizować.
Warto zwrócić również uwagę na diodę COM, która powinna wskazywać na aktywne połączenie programatora z komputerem, migając na czerwono i zielono.
Krok 6. Wedle zaleceń wypisanych w konsoli, z paska menu należy wybrać:
ST-LINK > Firmware update > Device Connect
Prawdopodobnie wyświetli się komunikat, że programator nie jest w trybie Firmware Update i należy go zrestartować. Aby to zrobić, należy odłączyć płytkę od zasilania i podłączyć ponownie. Jeżeli się udało, panel powinien wyświetlać informacje jak na obrazku poniżej.
Panel aktualizacji firmware'u programatora.
Po kliknięciu przycisku Yes aktualizacja powinna przebiec do końca bez żadnych problemów.
Krok 7. Odłączamy płytkę i podłączamy ponownie do komputera. Testujemy połączenie z ST-Link Utility. W konsoli nie powinna już wyświetlać się informacja o konieczności aktualizacji.
Narzędzie St-Link przydaje się szczególnie podczas testowania autorskich płytek w celu sprawdzenia czy programator jest się w stanie połączyć z mikrokontrolerem.
STM32CubeMX
Zapowiedziany w poprzednim artykule generator kodu od ST można zainstalować na dwa sposoby.
jako osobny program,
jako wtyczkę do Eclipse.
Różnica występuje tylko w okienkowości / modułowości, więc osobiście polecam zainstalować go na obydwa przedstawione sposoby i korzystać z tego wygodniejszego (dla Was).
Jeśli ktoś jednak od razu wie, że chce korzystać z dodatku do Eclipse, może pominąć poniższą sekcję. Instalacja pluginu została omówiona niżej (w części dotyczącej SW4STM32).
Instalacja jako osobny program
Instalator można pobrać ze strony producenta (tak jak poprzednio, na samym dole strony).
Po rozpoczęciu instalacji może wyświetlić się komunikat o braku Javy w konkretnej wersji. Nie należy się przejmować sugerowanym numerem wersji, tylko zainstalować najnowszą dostępną ze strony, na którą prawdopodobnie przekieruje nas instalator.
Dokończyć instalację w standardowy sposób.
Instalacja w System Workbench for STM32
SW4STM32 jest nakładką na środowisko Eclipse. Pozwala na rozwijanie oprogramowania na mikrokontrolery z rodziny STM32.
Jest to jedyne w pełni darmowe środowisko oficjalnie wspierane przez ST, z możliwością importowania kodu wygenerowanego przez STM32CubeMX.
Instalacja Eclipse
Jeżeli na Twoim komputerze jest już zainstalowany Eclipse, możesz pominąć tę sekcję.
Pobieramy Eclipse w wersji odpowiadającej systemowi operacyjnemu. Oficjalne źródła można znaleźć na stronie środowiska (odpowiednią wersję można wybrać klikając w odnośniki z prawej strony podanej witryny).
Po rozpakowaniu należy przenieść pliki w wygodne dla siebie miejsce (środowiska Eclipse nie trzeba instalować).
Jeżeli Eclipse nie chce się uruchomić z powodu braku odpowiedniej wersji Javy, należy pobrać JDK w odpowiedniej dla systemu wersji i zainstalować. W moim przypadku (Windows 10x64) zainstalowanie najnowszej wersji rozwiązało problem.
Instalacja SW4STM32
Sposób 1 - dedykowany instalator
Tworzymy konto na stronie OpenSTM32 (bez konta nie będziemy mieli dostępu do niezbędnych części forum). Następnie z działu download pobieramy instalator odpowiadający posiadanej przez nas wersji systemu (nie przejmujemy się tym, że instalator jest tylko pod Windows 7 - działa również z W8 i W10). Instalacja powinna przebiec standardowo.
Sposób 2 - nakładka na Eclipse
Krok 1. Po uruchomieniu środowiska Eclipse wybieramy Help > Install New Software...
Krok 2. W nowym panelu wybieramy znajdujący się z prawej strony przycisk Add:
Panel dodawania nowego oprogramowania w środowisku Eclipse.
Krok 3. Okno które pojawi się następnie wypełniamy podanymi niżej danymi:
Name: System Workbench for STM32 - Bare Machine edition
Location: http://www.ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.site
Dołączanie wtyczki SW4STM32 do Eclipse
Krok 4. Dalej należy zaznaczyć pozycje External Tools oraz OpenSTM32Tools i kliknąć Next.
Elementy do instalacji w Eclipse.
Krok 5. Instalator przeanalizuje wszystkie składniki i wyświetli nam komunikat o tym, że nie może zainstalować niektórych z nich, ponieważ nie są zgodne z wersją systemu (tak powinno być). Przeklikujemy się przez dalszą część instalacji, akceptujemy warunki licencyjne i czekamy na zakończenie instalacji.
Krok 6. Na końcu Eclipse zasugeruje restart programu. Po nim wszystko powinno już być gotowe. Jeżeli podczas całego procesu pojawiły się jakieś błędy, to warto zajrzeć na stronę OpenSTM32 po więcej informacji.
Aby mieć dostęp do sekcji z powyższego odnośnika,
trzeba założyć darmowe konto i zalogować się na stronie OpenSTM32.
Plugin STM32CubeMX
W tej sekcji opisana została instalacja pluginu STM32CubeMX dla SW4STM32. Jeżeli postanowiłeś korzystać z samodzielnej instancji programu CubeMX, możesz pominąć tę sekcję.
Z belki głównego menu wybieramy Help > Install new software.
Dodawanie nowego oprogramowania do Eclipse.
W nowym panelu wybieramy Add.
W kolejnym oknie klikamy Archive.
Dodawanie pluginu z pobranego archiwum.
Teraz należy odnaleźć na dysku i wybrać pobrane wcześniej archiwum.
Potwierdzamy poprawność przyciskiem Ok.
W panelu dodawania nowego oprogramowania powinna pojawić się pozycja STM32CubeMX_Eclipse_Plugin. Należy ją zaznaczyć jak poniżej:
Panel dodawania nowego oprogramowania.
Przeklikujemy resztę instalacji, zgadzając się po drodze na warunki licencyjne.
Restartujemy Eclipse.
Otwieramy zakładkę Window > Open Perspective > Other:
Otwieranie panelu wyboru perspektyw.
Jedną z możliwych do wybrania perspektyw powinna być STM32CubeMX:
Wybór perspektywy STM32CubeMX.
Podsumowanie
W tej części kursu dokonaliśmy przeglądu wyposażenia płytki STM32F411E-Discovery, na której będziemy pracować w trakcie trwanie kursu. Zainstalowaliśmy także podstawowe oprogramowanie przydatne podczas pracy z mikrokontrolerami STM32.
W następnym artykule nauczymy się generować kod z programu STM32CubeMX, importować go do Eclipse'a oraz wgrywać tak stworzony program na płytkę Discovery. Tym samym napiszemy swój pierwszy program z wykorzystaniem bibliotek HAL! Jeśli nie zaopatrzyliście się jeszcze w elementy, to teraz jest ostatni moment na zakup zestawu - dalsza nauka bez równoległych testów praktycznych nie będzie miała sensu!
Uwaga! Ten kurs został zarchiwizowany. Sprawdź najnowszy kurs STM32 »
Dzięki za uwagę! Mam nadzieję że udało się Wam zainstalować wszystkie potrzebne programy bez większych problemów. W razie problemów, piszcie w komentarzach!
Autor kursu: Bartek (Popeye) Kurosz Redakcja: Damian (Treker) Szymański
Uwaga! Po podłączeniu płytki Discovery do zasilania uruchamia się na niej fabrycznie wgrany program. Co on robi? Na odpowiedzi czekam w komentarzach!
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY na bazie Arduino i Raspberry Pi.
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY z Arduino i RPi.
Trwa ładowanie komentarzy...