wersja mobilna | kontakt z nami

STM32CubeMX v 5.0

Numer: Luty/2019

Nowoczesne, skomplikowane i wydajne mikrokontrolery mają wiele wbudowanych bloków funkcjonalnych, od nieskomplikowanych układów GPIO poprzez moduły komunikacyjne UART, SPI, I2C, liczniki/timery, do najbardziej skomplikowanych interfejsów typu USB OTG. Konfigurowanie rozbudowanych peryferii jest zajęciem żmudnym i podatnym na możliwość popełnienia błędów. Dlatego producenci oprogramowania narzędziowego wbudowują w pakiety IDE konfiguratory, które znacznie redukują te niedogodności. Ich graficzne interfejsy pozwalają mocno przyspieszyć proces konfigurowania i znacząco redukują możliwość pomyłki przy zapisywaniu rejestrów konfiguracyjnych.

Pobierz PDFMateriały dodatkowe

rys-1Program STM32CubeMX to środowisko graficzne dobrze znane programistom wykorzystującym mikrokontrolery STM32, wspierające konfigurację bloków funkcjonalnych i generujące szkielet projektu dla dostępnych na rynku środowisk projektowych IDE. Ostatnio firma ST udostępniła odświeżoną wersję tego pakietu – STM32CubeMX v 5.0.0.

Pierwszą rzeczą, która zwraca uwagę w nowej wersji, jest zmodyfikowane okno startowe. To okno w poprzednich wersjach, delikatnie rzecz ujmując, nie było zbyt atrakcyjne. Teraz to się zmieniło według mojej opinii zdecydowanie na plus – rysunek 1.

Po uruchomieniu STM32CubeMX możemy:

  • Otworzyć istniejący projekt.
  • Utworzyć nowy projekt z kryterium wyboru mikrokontrolera lub płytki ewaluacyjnej ST.
  • Pobrać najnowszą wersję platformy programowej dla każdej z rodziny mikrokontrolerów (warstwa HAL plus middleware).
  • Zainstalować lub usunąć składniki programowe platformy programowej.

Pierwszą rzeczą, którą można zrobić po zainstalowaniu STM32CubeMX, jest zainstalowanie składników bibliotek właściwych dla każdej z rodzin mikrokontrolerów STM32. Jest to wykonywane po kliknięciu na przycisk „Install/Remove” w oknie Manage software installations ’ Installor Remove embedded software packages (rysunek 2). Aby mieć pewność, że są wgrywane biblioteki w najnowszej wersji, można przed ich zainstalowaniem wykonać uaktualnienie, jak to zostało pokazane na rysunku 3. Konfigurator łączy się z serwerem firmy ST, automatycznie sprawdza najnowszą, dostępną wersję i po kliknięciu na „Install Now” proces uaktualniania wykonuje się automatycznie.

rys-3Wybór mikrokontrolera w czasie tworzenia nowego projektu ułatwia selektor  działający w oparciu na kryterium doboru konkretnego modelu MCU (opcja Access to MCU Selector) lub płytki ewaluacyjnej (opcja Access To Board Selector), jak na rysunku 4.

Po kliknięciu na przykład na opcję „Access To Board Selector” oprogramowanie STM32CubeMX łączy się z serwerem ST i pobiera wykaz wszystkich dostępnych modułów. Dzięki temu mamy do dyspozycji zawsze aktualną listę modułów, łącznie z najnowszymi. Na rysunku 5 pokazano okno selektora modułów z wybranym modułem 32F429I DISCOVERY. Moduł można wybrać z listy umieszczonej na dole okna. Poszukiwania można zawęzić, używając okna „Board Filters” umieszczonego z lewej strony okna dzięki wybraniu dodatkowych opcji:

  • Dostawca (Vendor) – na razie jest możliwy tylko wybór STMicroelectronics.
  • Typ – Discovery, Nucleo itp.
  • Seria MCU – STM32F0, STM32F1 itp.
  • Cena.
  • Częstotliwość taktowania mikrokontrolera.
  • Niezbędne układy peryferyjne.

rys-4Fotografia wybranego modułu z krótkim opisem i wypunktowanymi właściwościami jest wyświetlana w górnym oknie. Oprócz tego, w tym oknie można znaleźć informację o statusie dostępności, na przykład Acitve (produkt w produkcji masowej) i sugerowanej cenie w dolarach amerykańskich.

W górnym oknie można wyświetlić powiększone zdjęcie modułu, uzyskać dostęp do dokumentów, takich jak instrukcja użytkownika lub noty aplikacyjne i zamówić moduł przez Internet. Jeżeli wybrany moduł spełnia wszystkie kryteria, można przejść do kreatora projektu przez kliknięcie na przycisk „Start Project”. Do wygenerowania przykładowego projektu wybrałem moduł 32F429IDISCOVERY.

Kreator projektu jest zbudowany z kilku okien wybieranych poprzez zakładki: Pinout&Configuration, Clock Configuration, Project Manager, Tools.

rys-5Okno menedżera projektu jest podzielone na trzy kolejne okna: Project, Code Generator, Advanced Settings. W oknie Project (rysunek 6) użytkownik wybiera nazwę projektu, lokalizację na dysku komputera, IDE, dla którego STM32CubeMX wygeneruje szkielet projektu, ustawienia linkera (rozmiar sterty i stosu) oraz typ wybranego mikrokontrolera i właściwe dla niego biblioteki programowe. Ja wybrałem projekt o nazwie test_LCD przeznaczony dla IDE TrueStudio.

Okna Code GeneratorAdvanced Settings przy pierwszych testach można pozostawić z ustawieniami domyślnymi.

Okno Clock Configurator pozwala na szybkie ustawienie układu taktowania rdzenia i układów peryferyjnych mikrokontrolera. Układy z rdzeniem ARM mają dość rozbudowany system taktowania. Użytkownik musi wybrać źródło głównego sygnału zegarowego. Może to być generator HSE stabilizowany zewnętrznym oscylatorem kwarcowym lub wbudowany oscylator RC (HSI RC) o częstotliwości 16 MHz. Sygnał zegarowy z HSE lub HSI RC jest podawany na układ PLL, gdzie jest modyfikowana jego częstotliwość. Dla zastosowanego mikrokontrolera ustawiono taktowanie rdzenia z częstotliwością 72 MHz. Programowany blok taktowania pozwala też na uzyskanie z układów PLL przebiegu o częstotliwości 48 MHz do taktowania bloku interfejsu USB, bloku komunikacyjnego I2S (na przykład 192 MHz) oraz bloku LTDC sterującego wyświetlaczem LCD TFT. Na rysunku 7 pokazano okno konfiguracji zegara dla mikrokontrolera modułu 32F429IDISCOVERY. Konfigurator, oprócz graficznej, intuicyjnej możliwości zaprogramowania taktowania wykrywa błędy konfiguracji i podświetla na czerwono nieprawidłowo ustawione wartości (rysunek 8).

rys-6Okno Pinout&Configuration jest zaawansowanym narzędziem konfiguracyjnym pozwalającym na włączanie i konfigurowanie bloków funkcjonalnych, dodawanie funkcji middleware oraz przypisywanie do wyprowadzeń mikrokontrolera funkcji alternatywnych. W lewej części okna jest pokazywana lista z kategoriami bloków funkcjonalnych, middleware i aplikacji. Każdą z kategorii można rozwinąć – wówczas jest wyświetlana lista wykorzystywanych bloków oraz komponentów middleware.

Nazwy bloków funkcjonalnych są oznaczane kolorami: czerwonym, zielonym i czarnym. Kolor czerwony oznacza, że nie można przypisać ich linii do wyprowadzeń mikrokontrolera, bo są już zajęte przez inne peryferie. Nazwa w kolorze zielonym z symbolem żółtego wykrzyknika informuje, że blok może być użyty, ale z ograniczeniami. Jeżeli nazwa bloku funkcyjnego jest wyświetlana bez symbolu i w kolorze czarnym, to można go użyć bez ograniczeń. Na rysunku 9 pokazano listę bloków komunikacyjnych (Connectivity) z przykładowymi konfiguracjami dla bloków niedostępnych, dostępnych z ograniczeniami i z pełnym dostępem. Z prawej strony rysunku pokazano opcje konfiguracji dla każdego z tych przypadków. Natychmiastowe wykrywanie kolizji konfiguracji bloków funkcjonalnych jest jedną z moich ulubionych funkcji STM32CubeMX. Przy rozbudowanych mikrokontrolerach wystarczy rzut oka, aby zorientować się, że mogą być problemy z użyciem potrzebnych bloków lub ich użycie w konkretnej konfiguracji w ogóle nie będzie możliwe.

Oprogramowanie STM32CubeMX potrafi podpowiedzieć przyczynę, dla której użycie bloku funkcjonalnego w danej konfiguracji nie jest możliwe lub może być ograniczone. Na rysunku 10 pokazano, że blok I2C1 nie może być konfigurowany, bo jego wyprowadzenia są zajęte przez już skonfigurowany blok LTDC służący do sterowania wyświetlaczami LCD-TFT oraz alternatywnie przez blok FMC. Jedyna dostępna opcja dla I2C1 to wyłączenie (Disable).

W selektorze projektu wybraliśmy moduł ewaluacyjny 32F429IDISCOVERY. Dla wybranej płytki ewaluacyjnej typu 32F429IDISCOVERY oprogramowanie STM32CubeMX domyślnie skonfigurowało kilka bloków funkcjonalnych oraz middleware RTOS (rysunek 11). Każdy z bloków funkcjonalnych wymagających połączenia z wyprowadzeniami mikrokontrolera ma takie połączenia definiowane automatycznie. Na rysunku 12 pokazano fragment okna z rysunkiem obudowy mikrokontrolera z rozwijaną lista dostępnych połączeń alternatywnych dla wyprowadzenia linii portu PB8 (dostępna po kliknięciu prawym przyciskiem myszy na wyprowadzenie), a na rysunku 13 sposób zmiany przypisanej etykiety.

rys-8Sposób konfiguracji nowego bloku funkcjonalnego pokażemy na przykładzie szeregowego interfejsu SPI3. W naszym wypadku jest to układ z dostępem bez ograniczeń (na liście bloków jego nazwa jest wyświetlana w kolorze czarnym). Po kliknięciu jego nazwy na liście jest wyświetlane okno SPI3 Mode and Configuration. W rozwijanym oknie Mode możemy wybrać tryb pracy interfejsu (rysunek 14). Dla przykładu, wybieramy Full-Duplex Master. Pod oknem SPI3 zostaje pokazane okno Configuration, w którym wykonujemy właściwą konfigurację interfejsu. W oknie konfiguracji jest kilka zakładek. Pierwsza to Parameter settings. Ustawiamy tu podstawowe parametry, a więc format ramki (Motorola/TI), długość słowa danych (8/16 bitów) i dosunięcie bitów w ramce danych (LSB/MSB). W następnej kolejności można zaprogramować prędkość transmisji przez ustawienie preskalera (od 2 do 256) oraz polaryzację CPOL i fazę CPHA zegara. Okno ustawień parametrów pokazano na rysunku 15. W oknie GPIO Settings są zdefiniowane przypisania linii portów mikrokontrolera do linii interfejsu SPI3. STM32CubeMX automatycznie przypisuje te linie do konfiguracji domyślnej (rysunek 16).

Jeżeli w zakładce NVIC Settings zaznaczymy pole Enabled, to zostanie odblokowane globalne przerwanie zgłaszane przez SPI3. W zakładce DMA Settings można zdefiniować pracę kanału DMA. Po kliknięciu na przycisk „Add” jest dodawany kanał DMA z dostępem SPI3_RX (dane odebrane przez SPI3) lub SPI3_TX (dane wysyłane przez SPI3). W okienku DMA Request Settings wybiera się tryb Normal lub Circural oraz inkrementację adresu. Można też zaznaczyć użycie bufora FIFO. Przykładową konfigurację kanału DMA dla interfejsu szeregowego SPI3 pokazano na rysunku 17. Jak widać, skonfigurowanie szeregowego interfejsu komunikacyjnego nie jest specjalnie trudne ani pracochłonne.

rys-10Dla bardziej zaawansowanych użytkowników istotna będzie możliwość dodawania funkcji warstwy middleware. W projekcie z wybranym modułem 32F429IDISCOVERY można dodawać i konfigurować: system plików FATFS, system czasu rzeczywistego FreeRTOS, zaawansowaną bibliotekę graficzną Graphics, bibliotekę kryptograficzną MBEDTLS, bibliotekę PDM2PCM do konwersji strumienia danych PDM z mikrofonu MEMS na strumień danych PCM, obsługę interfejsu USB_HOST.

Dodawanie i konfigurowanie middleware pokażemy na przykładzie biblioteki graficznej Graphics. Wybieramy ją z listy middleware i w oknie Graphics Mode and Configurations wskazujemy jedne z dostępnych bibliotek i środowisk narzędziowych: STemWin bezpłatną przygotowaną dla mikrokontrolerów STM32 przez firmę Segger lub również bezpłatną TouchGFX (rysunek 18). Każda z tych opcji oprócz bibliotek dostarcza wygodne graficzne środowisko projektowe służące do projektowania ekranów z umieszczonymi na nich widżetami, tekstem itp.

rys-11W kolejnym kroku trzeba wybrać interfejs komunikacyjny ze sterownikiem panelu LCD-TFT. Możliwy do wybrania interfejs LTDC  został dodany i domyślnie skonfigurowany przez STM32CubeMX po wybraniu modułu 32F429IDISCOVERY, który ma zamontowany wyświetlacz LCD TFT ze sterownikiem ILI9341. Oprogramowanie STM32CubeMX domyślnie konfiguruje również interfejs LTDC (rysunek 20).

Po wybraniu STemWin możemy przystąpić do konfigurowania biblioteki w oknie Configuration. Mamy tu do dyspozycji cztery zakładki: Parameter Settings, STemWin, User ConstansPlatform Settings.

Pierwsza zakładka Parameter Settings (rysunek 21) umożliwia:

  • Włączenie lub wyłączenie użycia graficznego narzędzia GUIBuilder, przeznaczonego do projektowania ekranów interfejsu użytkownika z użyciem widżetów.
  • Zmianę rozdzielczości użytego wyświetlacza (domyślnie x=240, y=320).
  • Zmianę liczby ekranów wirtualnych.
  • Wybranie rodzaju konwersji kolorów (domyślnie GUICC_565).
  • Rezerwowanie wielkości pamięci przeznaczonej dla GUI.
  • Włączanie i wyłączanie użycia systemu czasu rzeczywistego FreeRTOS.
  • Włączanie wsparcia dla sterownika wyświetlacza LCD-TFT typu ILI9341.

Jeżeli wybierzemy opcję FreeRTOS enable, to oprogramowanie STM32CubeMX przygotuje odpowiednią konfigurację domyślną systemu czasu rzeczywistego i utworzy odpowiedni wątek. Po wybraniu opcji wyłączenia RTOS wygenerowany projekt będzie działał na zasadzie poolingu.

Ustawienie możliwości użycia GUIBuilder w zakładce Parameter Settings umożliwia (po kliknięciu na przycisk Execute) otworzenia narzędzia emWin GUIBuilder z zakładki STemWIN (rysunek 22). Okno Platform Settings definiuje przypisanie linii dodatkowego interfejsu szeregowego używanego do komunikacji ze sterownikiem panelu LCD-TFT (rysunek 23). W podobny sposób możemy konfigurować pozostałe moduły z listy middleware.

rys-14Generowanie szkieletu projektu z wykonanymi przez nas konfiguracjami układów peryferyjnych i ewentualnie middleware jest wykonywane po kliknięciu na przycisk „Generate Code”. Na końcu procesu generowania kodu źródłowego jest wyświetlane okno, w którym  możemy otworzyć projekt w środowisku projektowym IDE (tu używamy TrueStudio) wybranym w zakładce Project Manager programu STM32CubeMX (rysunek 24).

W konfiguracji wybraliśmy bibliotekę Middleware Graphics, więc popatrzmy, jak wygląda obsługa wyświetlacza. Jak wiemy, wyświetlacz LCD-TFT jest sterowany przez kontroler ILI9341. To rozbudowany układ konfigurowany i sterowany przez zapisywanie wewnętrznych rejestrów. Zazwyczaj taki sterownik wymaga bardziej lub mniej zaawansowanej inicjalizacji polegającej na zapisywaniu rejestrów konfiguracyjnych. Należy się spodziewać, że w ramach biblioteki funkcji Middleware Graphics wykonano odpowiednią procedurę. W katalogu BSP umieszczono katalog ili9341, w którym są zapisane dwa pliki: ili9341.c i ili9341.h (rysunek 25). W pliku ili9341.c umieszczono między innymi funkcję ili9341_Init() pokazaną na listingu 1. Jak widać, inicjalizacja nie jest banalna i żeby samodzielnie wykonać odpowiednią procedurę, trzeba by było włożyć w to wiele pracy. Procedury obsługi warstwy HAL interfejsu LTDC wykorzystywanego  przez sterownik wyświetlacza są zapamiętane w katalogu STM32F4xx_HAL_Driver (rysunek 26).

Skompilowaną bibliotekę graficzną emWin w wersji STemWin umieszczono w katalogu MiddlewaresSTemWinLib, jak to pokazano na rysunku 27. Co ciekawe, katalog MiddlewaresST-STemWinSoftware zawiera programy wykorzystywane w trakcie pracy z biblioteką graficzną.

Na koniec

Oprogramowanie STM32CubeMX bardzo ułatwia konfigurowanie bloków funkcjonalnych i middleware. Po wygenerowaniu kodu otrzymujemy szkielet projektu z plikami konfigurującymi użyte bloki. To oczywiste i spore udogodnienie, ale aplikację musimy napisać sami. Aby jeszcze bardziej ułatwić pracę programiście, w plikach źródłowych umieszczane są sugestie, gdzie użytkownik może dopisać swój kod, jak pokazano na listingu 2 w funkcji main().

STM32CubeMX jest stale rozwijany przez ST, a jego kolejne wersje są coraz doskonalsze. Wersja piąta jest dojrzałym narzędziem pomagającym programiście w niewdzięcznej i uciążliwej fazie konfigurowania procesora. Dużą zaletą jest bezpłatny, pełny dostęp do wszystkich możliwości programu. Mimo tych niezaprzeczalnych zalet trochę niezrozumiały jest brak konfiguratora STM32CubeMX V5 w wariancie wtyczki plug-in instalowanej, na przykład, w IDE opartym na Eclipse. Wcześniejsze wersje wtyczki miały oczywiste błędy. Dla przykładu, nie można było poprawnie skonfigurować układu taktowania, podczas gdy wersja uruchamiana niezależnie pracowała bez problemu. Praca z IDE z zainstalowaną wtyczką konfiguratora jest jak dla mnie wygodniejsza i szybsza. Mimo wspomnianego mankamentu STM32CubeMX wykonuje bardzo dobrze powierzone mu zadanie i jego używanie może być standardem wśród programistów używających mikrokontrolerów STM32.

rys-17Tomasz Jabłoński, EP

Pozostałe artykuły

Sieć telefonii komórkowej 5G (2). Od teorii do praktykti budowania urządzeń

Numer: Maj/2019

Wydaje mi się, że większość inżynierów elektroników miała do czynienia z urządzeniami radiowymi przede wszystkim jako ich użytkownicy. To znaczy, konstruowali co prawda urządzenia transmitujące dane z wykorzystaniem fal radiowych, jednak używając z gotowych modułów lub innych urządzeń i co najwyżej dodając do nich jakąś antenę z oferty dystrybutorów. Ale ci, którzy choćby otarli się o zagadnienia związane z antenami ...

Bezpieczeństwo funkcjonalne ARM

Numer: Maj/2019

Warunkiem wprowadzenia na rynek wielu produktów w takich branżach, jak: sprzęt gospodarstwa domowego, motoryzacja, przemysł lub medyczna, jest spełnienie wymagań prawnych potwierdzających ich zgodność z normami bezpieczeństwa funkcjonalnego. Uzyskanie certyfikatu jest jednym z warunków dopuszczenia artykułu do sprzedaży i polega na spełnieniu norm bezpieczeństwa, co czyni dany produkt bezpiecznym dla użytkowników. Producentów ...

Wyświetlacze z serii HCMS-29xx firmy Avago Technologies

Numer: Maj/2019

W artykule zaprezentowano niezbyt popularne, głównie ze względu na cenę, wyświetlacze z serii HCMS. Moduł wyświetlacza zawiera nie tylko matryce LED 5×7, ale również wszystko to, co jest potrzebne do sterowania wyświetlaniem, czyli rejestry przesuwne, wewnętrzny oscylator multipleksowania, źródła prądowe oraz obwody kontroli parametrów pozwalające, na przykład, na zmianę jasności świecenia. W ofercie firmy są moduły ...

Ochrona podzespołów elektronicznych i maszyn przed wyładowaniami elektrostatycznymi

Numer: Maj/2019

Uwzględnianie wyładowań elektrostatycznych (ESD) podczas produkcji sprzętu elektronicznego może wydawać się stratą czasu i zasobów. Jednak zaniedbanie tego aspektu może doprowadzić do poważnych problemów z jakością, które ujawnią się kilka dni, tygodni lub nawet miesięcy po sprzedaży. W tym artykule wyjaśniono, dlaczego uwzględnienie ryzyka i wyzwań związanych z wyładowaniami elektrostatycznymi może zapobiec usterkom ...

Przemysłowe metody identyfikacji obiektów

Numer: Maj/2019

Coraz częściej napotykamy w otoczeniu różnorodne metody identyfikacji obiektów. Na co dzień posługują się nimi automatycy oraz osoby mające do czynienia z logistyką, ponieważ wymagają ich automatyczne metody transportu i wytwarzania. Bez naszej wiedzy mogą to robić kamery lub czujniki radarowe rozmieszczone w przestrzeni publicznej. Niewiele osób wie, że wprost nieprawdopodobną metodę rozpoznawania i oceny dają metadane ...

Mobilna
Elektronika
Praktyczna

Ze świata  Kobiety w elektronice    ...

Elektronika Praktyczna

Maj 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym