STM32CubeMX – graficzny konfigurator STM32 krok-po-kroku (2)

Bezpłatny pakiet narzędziowy Atollic TrueSTUDIO for STM32 zapewnia programistom kompletne wsparcie w zakresie edycji, kompilacji i debugowania kodu. Jego atrakcyjnym i przyspieszającym prace uzupełnieniem jest pakiet konfiguracyjny STM32CubeMX, którego możliwości i sposób obsługi przedstawiamy w artykule.

Zakładka Configuration

Po tym jak w zakładce Pinouts wybierzemy moduł peryferyjny i zostanie dla niego przydzielone wyprowadzenie, można będzie skonfigurować szczegółowe parametry pracy tego modułu w zakładce Configurations – rysunek 23. Moduły peryferyjne, które na liście okna Pinout są oznaczone na zielono są automatycznie umieszczane w odpowiednich dla nich polach zakładki Configuration. Przy każdym symbolu modułu umieszczono znacznik określający stan konfiguracji. Na rysunku 23 przy module UART i ADC1 jest celowo wygenerowany do celów testowych wskaźnik błędu.

Rys. 23. Zakładka okna Configuration

Kliknięcie na ikonę modułu peryferyjnego w zakładce Configuration otwiera okno z parametrami do konfiguracji modułu. Na rysunku 24 pokazano okno dla modułu USART2 zawierające zakładki:

  • Parameter settings – przeznaczona do ustawiania paramentów transmisji: prędkość, ilość bitów/ramkę, parzystość, oraz kierunku przesyłania danych.
  • User Constans – przeznaczona do definiowania stałych użytkownika.
  • NVIC Settings – przeznaczona do konfigurowania przerwań powiązanych z pracą modułu USART2.
  • DMA Settings przeznaczona do konfigurowania kanału DMA (jeżeli ma być użyty).
  • GPIO Settings – przeznaczona do uzupełniającego konfigurowania linii I/O modułu USART2.

Rys. 24. Okno konfiguracji modułu USART2 z zakładką Parameter Settings

W taki sposób można skonfigurować dla własnych potrzeb wszystkie używane moduły konfiguracyjne.

Wróćmy na chwilę do zakładki Pinouts. Umieszczono tam, oprócz listy Peripherials, również listę Middlewares z możliwością dodawania do projektu modułów programowych warstwy wyższej. Do celów testowych dodamy obsługę systemu plików FATFS – rysunek 25. Podobnie jak w przypadku układów peryferyjnych moduł programowy FATFS jest dodawany do okna Configuration, gdzie można go skonfigurować zależnie od potrzeb.

Rys. 25. Dodanie modułu programowego FATFS

Okno konfiguracji FATFS, otwierane po kliknięciu na ikonę FATFS umieszczoną w oknie konfiguracji (Middlewares), zostało pokazane na rysunku 26.

Rys. 26. Konfigurowanie modułu FATFS

Konfigurowanie układu taktowania

Do konfigurowania układu taktowania jest przeznaczone okno Clock Configuration pokazane na rysunku 27.

Rys. 27. Okno konfiguracji taktowania

Ustawanie parametrów taktowania jest powiązane z modułem konfiguracyjnym RCC ,umieszczonym na liście Peripherials okna Pinoutsrysunek 28.

Rys. 28. Powiązanie ustawień okna Pinouts i okna ClockConfiguration

Źródłem zegara taktującego mikrokontrolera może być:

  • Wewnętrzny precyzyjny oscylator RC o częstotliwości 16MHz
  • Oscylator stabilizowany zewnętrznym rezonatorem kwarcowym o częstotliwości z zakresu od 1 do 50 MHz – w praktyce jest to najczęściej 8 MHz.

Rdzeń mikrokontrolera z rodziny STM32F4, zastosowanego w naszym projekcie, może być taktowany z maksymalną częstotliwością 84 MHz. Taką wartość można uzyskać z częstotliwości oscylatorów wbudowanych w mikrokontroler (wewnętrznego RC lub zewnętrznego stabilizowanego kwarcem) przez powielanie ich częstotliwości pracy w układzie PLL. Wbudowany w układ taktowania moduł PLL umożliwia ustawianie częstotliwości w szerokim zakresie. Sygnał z jego wyjścia może być źródłem taktowania rdzenia i magistral układów peryferyjnych, taktowania układu USB (jeżeli jest wbudowany) i modułu komunikacyjnego I2S przeznaczonego do przesyłania danych audio.

Rys. 29. Układy PLL

Ustawianie częstotliwości odbywa się z poziomu okna przez kliknięcie na ikony mnożnika *N i dzielnika /P – rysunek 30.

Rys. 30. Programowanie układu PLL taktującego rdzeń i peryferie

Rys. 31. Graficzne przedstawienie częstotliwości taktowania rdzenia i magistrali APBx

Graficzny interfejs programujący taktowanie jest bardzo intuicyjny. Pozwala na proste i szybkie dobranie częstotliwości taktowania do swoich potrzeb. Bardzo pomocne jest graficzne przedstawienie ustawionych częstotliwości taktowania: rdzenia, magistrali AHB i układów peryferyjnych. Pokazano to na rysunku 31.

Ustawienia są wyświetlane online. Kiedy konfigurator wykryje błędy w konfiguracji taktowania, to są one sygnalizowane na czerwono, tak jak to zostało pokazane na rysunku 32. Błędy te mogą wynikać na przykład z przekroczenia maksymalnej częstotliwości dopuszczalnej dla danego typu rdzenia czy magistrali peryferiów.

Rys. 32. Sygnalizacja błędów przekroczenia maksymalnych częstotliwości taktowania

Oprócz taktowania rdzenia i peryferiów można wybierać źródło sygnału taktującego małej częstotliwości dla układu zegara RTC. Może to być zewnętrzny oscylator stabilizowany kwarcem zegarkowym 32,768kHz, lub wbudowany oscylator RC o częstotliwości 32kHz.

Obliczanie poboru mocy

W układach z mikrokontrolerami coraz częściej pojawia się wymaganie redukowania pobieranej mocy ze źródła zasilania. Jest to naturalne w układach zasilanych z baterii. STM32CubeMX ma wbudowany kalkulator do wyliczania poboru mocy umieszczony w zakładce Power Consumption Calculator.

Consumption Calculator umożliwia obliczenie:

  • Średniego zużycia prądu,
  • Żywotności baterii,
  • Wydajności mikrokontrolera wyrażonej w DMPIS,
  • Maksymalnej temperatury otoczenia zapewniającej dobre warunki pracy układu.

Okno kalkulatora oprócz wizualizacji szacunkowego zużycia energii, umożliwia też projektantowi wybieranie metod jej obniżania poprzez stosowanie trybów obniżonego poboru mocy (jeżeli są dostępne) , doboru minimalnej możliwej częstotliwości taktowania do wykonania zadania i włączanie zasilania tylko tych układów peryferyjnych, które są w danej chwili niezbędne. Każda z tych metod może być oddzielnie konfigurowana zależnie od potrzeb. Symulacja może uwzględniać zasilanie układu z magistrali USB (VBUS) lub z baterii. W przypadku użycia baterii można wykonać symulację z różnymi napięciami baterii odpowiednimi do stanu naładowania.

Wyliczanie poboru mocy odbywa się w krokach (step) definiowanych przez użytkownika. W oknie zakładki po lewej stronie jest obszar zaznaczony na niebiesko, w którym można wybrać napięcie zasilania Vdd pomiędzy wartością +1,8V a +3,3V oraz wybrać rodzaj baterii zasilającej – rysunek 33.


Rys. 33. Obszar wyboru napięcia zasilającego i zasilania bateryjnego

Wybór napięcia zasilania nie wymaga komentarza. Można wybrać z menu wartości +3,3V lub +1,8V. W przypadku baterii mamy możliwość wybrania jednego z predefiniowanych ustawień lub zdefiniować własną „baterię” – pokazano to na rysunku 34.


Rys. 34. Wybór baterii zasilającej i opcjonalne definiowanie własnej baterii

Podajemy własną nazwę definicji, pojemność w mAh, procent rozładowania/miesiąc, napięcie nominalne, maksymalny ciągły prąd obciążenia i maksymalny impulsowy prąd obciążenia (rysunek 35).

Rys. 35. Definiowanie własnego ogniwa

Wybrane ogniwa można łączyć szeregowo lub równolegle. Na rysunku 36 jest pokazana definicja baterii zbudowanego z szeregowego połączenia 3 ogniw alkalicznych o nominalnym napięciu +1,5V.

Rys. 36. bateria 3 ogniw typu AA (LR6)

Krok wyliczania poboru mocy dla konkretnej konfiguracji zasilania i pracy mikrokontrolera jest definiowany po kliknięciu na ikonkę zielonego plusa w oknie Step. Otwiera się wtedy okno New Step, w którym możemy wybrać w oknie Power/memory:

  • Power Mode – czyli rodzaj pracy mikrokontrolera z uwzględnieniem trybów oszczędzania energii na przykład RUN, SLEEP, STANDBY, BATTERY,
  • Power Scale – do wyboru są dwie opcje SCALE2-Medium i SCALE3–Low,
  • Memory FetchType – czyli sposób pobierania wykonywanego kodu: z pamięci SRAM, lub z pamięci Flash,
  • VDD – do wyboru jest napięcie +3,3V lub +1,8V,
  • Voltage Source – możemy symulować zasilanie z baterii lub z magistrali Vbus.

 

Tomasz Jabłoński