STM32 dla początkujących (i nie tylko)

STM32 dla początkujących (i nie tylko)
Pobierz PDF Download icon
Łatwy do wykonania panel edukacyjny, który jest przeznaczony do nauki programowania oraz eksperymentowania z mikrokontrolerem z rodziny STM32F. Zgodnie z zamierzeniami, ma pomóc początkującym, którzy chcą poznać nową rodzinę układów, ale przyda się również zaawansowanym programistom poszukującym taniej platformy sprzętowej do testowania oprogramowania. Krótki cykl artykułów pozwoli poznać podstawy budowy i sposoby wykorzystania mikrokontrolerów STM32F. Rekomendacje: zestaw ewaluacyjny umożliwiający naukę programowania oraz testowanie pomysłów układowych.

Istnieje wiele rodzin mikrokontrolerów wytwarzanych przez wielu producentów, więc zanim rozpoczniemy naukę warto rozważyć czy opłaca się inwestować swój czas i środki w poznanie mikrokontrolerów STM32. Opinii na ten temat można poszukać chociażby w Internecie. Ja zwrócę uwagę na kilka "za" i "przeciw", tak aby początkujący mogli sobie wyrobić własny pogląd.

Za poznaniem STM32 przemawiają:

  • Stale powiększająca się rodzina mikrokontrolerów i skalowalność jej członków. Mikrokontrolery STM to zarówno niewielkie, wyposażone w niezbędne peryferia, 20-wyprowadzeniowe układy, jak i te ze 176 wyprowadzeniami o dużej mocy obliczeniowej. Ponieważ są wyposażone w ten sam rdzeń ARM Cortex-Mx, oprogramowanie napisane dla "mniejszego" STM łatwo daje się przenieść i uruchomić na "większym". Dla użytkownika różnice sprowadzają się do liczby portów i dostępnych bloków peryferyjnych.
  • Duże możliwości. Mikrokontrolery STM32 mają szybki, 32-bitowy rdzeń. Zależnie od podrodziny producent - firma STMicroelectronics - wyposaża je w różne bloki funkcjonalne: układy czasowo-licznikowe, zegar RTC, interfejsy I², SPI, UART, przetworniki A/C i D/A, sprzętowe wsparcie dla Ethernetu, modułów kamer i inne.
  • Dostępność kompilatorów - zarówno komercyjnych z ograniczeniami w okresie próbnego użytkowania, jak i bezpłatnych, wolnych od ograniczeń. Możliwość korzystania z bibliotek zgodnych z CMSIS (Cortex Microcontroller Software Interface Standard) ułatwiających i ujednolicających sposób pisania oprogramowania.
  • Dobra dokumentacja, liczne przykłady oprogramowania, literatura także w języku polskim.
  • Dostępność u wielu dystrybutorów.

Przeciw zastosowaniu STM32 przemawiają:

  • Zasilanie napięciem z zakresu 1,8...3,6 V, co zmusza do przemyślenia aplikacji, w których stosowane są również starsze układy zasilane napięciem +5 V.
  • Dla efektywnego programowania konieczna jest znajomość języka C.

Wykaz elementów

Rezystory: (SMD 0805):
R1, R12...R19: 1 kΩ
R2: 10 kΩ
R3, R4: 100 kΩ
R5, R6: 27 Ω
R7: 47 kΩ
R8: 3 kΩ
R9, R20: 10 kΩ/potencjometr nastawny
R10: 47 Ω
R11: 100 Ω

Kondensatory: (SMD 0805):
C1...C4: 15 pF
C5...C11, C15, C19...C21: 100 nF
C12...C14: 10 µF/16 V (elektrolit.)
C16: 10 nF
C17, C18: 47 pF

Półprzewodniki:
D1...D3: dioda LED SMD, czerwona
D4...D6, D9: dioda LED SMD, zielona
D7, D8: dioda LED SMD, niebieska
D10: mostek S380 0,8A/380 V (SMD)
U1: STM32F103RBT6 (LQFP64)
U2: LM1117MP-3.3 (SOT223)
U3: LM1117MP-5.0 (SOT223)
U4: FT230X (QFN16)
Q1: BC847 (SOT-23)

Inne:
BT1: bateria CR2032 z podstawką
J1: gniazdo DC2.5/5.5 (SMD)
J2: złącze ARK2/300
J3: wtyk IDC20 do druku
J4: mini USB, gniazdo do druku
J5: wyświetlacz LCD 2 linie × 16 znaków
J6...J8: goldpin 2×10 pin
JP1...JP4: goldpin 1×2+zworka
JP5: goldpin 7×2
JP6: goldpin 8×2
L1: dławik 10 mH (SMD 0805)
S1...S14: przycisk
U5: buzzer 3 V
X1: kwarc 8 MHz
X2: kwarc 32,768 kHz
Z1: zwora

Od czego zacząć?

Rysunek 1. Schemat ideowy Panelu Edukacyjnego

Aby rozpocząć praktyczne poznawanie STM32 jest niezbędny sprzęt i oprogramowanie narzędziowe. Sprzęt to przede wszystkim płytka z mikrokontrolerem STM32, pozwalająca na jego programowanie i dołączanie sterowanych lub nadzorowanych obwodów do portów i interfejsów. To zadanie spełnia nasz Panel Edukacyjny.

Jest alternatywą dla podobnych płytek, jak choćby układów uruchomieniowych Discovery sygnowanych przez firmę STMicroelectronics, producenta mikrokontrolerów. Panel Edukacyjny jest łatwy w budowie i wygodny w użyciu, co ma ogromne znaczenie dla osób dopiero rozpoczynających naukę programowania mikrokontrolerów STM32.

W pamięci Flash mikrokontrolerów STM32 oprogramowanie można zapisywać na co najmniej dwa sposoby: poprzez port szeregowy UART lub za pomocą interfejsu JTAG. Panel umożliwia skorzystanie z obydwu sposobów.

Zamontowany na płytce konwerter USB/UART pozwala na dołączenie do portu USB komputera i w ten sposób, za pomocą programu narzędziowego, można zapisać plik wynikowy do pamięci Flash mikrokontrolera. Ma to jednak sens przy oprogramowaniu albo bardzo prostym, albo już sprawdzonym, którego nie trzeba testować. W każdym innym wypadku warto zaopatrzyć się w dodatkowy programator, dołączany do gniazda JTAG na płytce Panelu. Może to być na przykład dostępny w handlu programator zgodny z firmowym ST-Link/V2.

Jest to mała płytka ze złączem pozwalającym na bezpośrednie umieszczenie w gnieździe JTAG. Programator jest połączony kablem z portem USB komputera. W takiej konfiguracji oprogramowanie narzędziowe uruchomione na komputerze może nie tylko zapisywać pamięć Flash, ale także debugowanie, a więc nadzór nad uruchomionym na mikrokontrolerze programem, co ułatwia wychwycenie jego błędów. Użytkownik w każdej chwili może np. zatrzymać wykonywanie programu, podejrzeć wartości umieszczone w używanych zmiennych, zmienić je, a następnie wznowić działanie programu. Możliwość debugowania, którą daje programator, znacznie usprawnia i przyśpiesza testowanie nowego kodu.

Poznając STM-y poza sprzętem potrzebujemy trochę dodatkowego oprogramowania narzędziowego i dokumentacji. Niektóre rzeczy są tylko przydatne inne po prostu niezbędne.

Kompilator

Najwygodniejsze w użyciu jest zintegrowane środowisko zawierające: edytor kontrolujący składnię pisanego programu, kompilator (asembler, linker itd.), debugger, interfejs programatora. Poniżej przykłady dostępnych do pobrania pakietów programistycznych działających pod kontrolą systemu operacyjnego Windows:

  • Keil (aktualna wersja MDK-ARM v5). Płatny. Wersja darmowa, której można też używać w celach komercyjnych, ma ograniczenie wielkości kodu wynikowego do 32 kB. Do pobrania spod adresu http://goo.gl/LR7wb8. Po wypełnieniu formularza zostajemy przekierowani na stronę z linkiem do pobierania pliku instalacyjnego.
  • Atollic TrueStudio (aktualna wersja TrueStudio for ARM Lite). Płatny. Do testów i nauki dostępny bezpłatnie z ograniczeniami. Do pobrania spod adresu http://goo.gl/cCOueY.
  • CooCox (aktualna wersja CoIDE 1.7.5). Bezpłatny, przed pobraniem wymaga rejestracji. W czasie instalowania jest wymagana integracja z pakietem bezpłatnego kompilatora GCC. Do pobrania spod adresu http://goo.gl/Gckijl.

Dokumentacja i biblioteki

Do pisania oprogramowania potrzebna jest elementarna chociażby wiedza o sposobie działania i budowie mikrokontrolera. Potrzebne informacje znajdziemy w dokumentacji. Używając Panelu Edukacyjnego trzeba zaopatrzyć się w informacje o zamontowanym mikrokontrolerze STM32F103. Dokumentację o tym konkretnym typie można pobrać ze strony producenta: http://goo.gl/Ppt5IJ i jest ona oznaczona CD00191185.pdf. Szczegółowy opis rodziny w tym budowę wewnętrzną, opis rejestrów, interfejsów, adresowania itp. znajdziemy pod adresem http://goo.gl/X64BIf.

Pisząc oprogramowanie można bezpośrednio odwoływać się do wewnętrznych rejestrów mikrokontrolera i poprzez ustawianie odpowiednich bitów sterować jego działaniem. To samo, ale prościej można osiągnąć używając bibliotek programistycznych. Biblioteki są zbiorem procedur, które w sposób ujednolicony i bardziej czytelny dla człowieka sterują działaniem mikrokontrolera. Dla STM32F103 takimi bibliotekami zgodnymi ze standardem CMSIS są biblioteki STM32F10x Standard Peripherals Library. Należy je pobrać ze strony producenta http://goo.gl/Qwekdx.

W pakiecie znajdują się pliki bibliotek, przykłady oprogramowania różnych interfejsów mikrokontrolera, opis bibliotek a nawet pakiety przystosowane do bezpośredniej kompilacji np. przez kompilatory KEIL, ATOLLIC czy IAR.

Narzędzia do zapisu Flash

Jak to zostało wcześniej napisane, Panel umożliwia zapisanie pamięci Flash mikrokontrolera na dwa sposoby: poprzez port UART lub JTAG. W obu przypadkach potrzebne jest oprogramowanie narzędziowe uruchamiane na komputerze. Z jego pomocą zawartość pliku HEX z kodem przekształcana jest na dane binarne przesyłane do pamięci Flash STM-a.

Do zapisu poprzez UART można wykorzystać firmowy program Flash Loader Demonstrator. Umożliwia on zarówno zapis, jak i odczyt z pamięci FLASH oraz ustawianie bitów zabezpieczeń. Program można pobrać spod adresu http://goo.gl/Sr9Nvw.

Alternatywą może być prosty w użyciu programik FlyMcu. Zapis do pamięci realizowany jest bez żadnych ograniczeń natomiast do aktywacji opcji odczytu z pamięci FLASH program żąda rejestracji użytkownika. Do pobrania http://goo.gl/Oy84TM.

Jeżeli jako programator będzie używane urządzenie zgodne z ST-Link/V2 do jego sterowania można użyć programu narzędziowego STM32 ST-LINK Utility. Program pozwala na zapis i odczyt z pamięci FLASH, ustawianie bitów konfiguracyjnych i zabezpieczeń. Na stronie http://goo.gl/U3iuAD są linki zarówno do pliku samego programu jak i sterowników do różnych wersji Windows.

Budowa Panelu Edukacyjnego STM32F

Schemat ideowy Panelu pokazano na rysunku 1. Głównym elementem jest mikrokontroler STM32F103. Wszystkie dostępne porty zostały wyprowadzone na gniazda szpilkowe J6...J8. Gwiazdka przy nazwie portu oznacza, że port może współpracować z układami zasilanymi +5 V. Pogrubienie nazwy portu oznacza, że należy ostrożnie korzystać z takiego wyprowadzenia, bo może być podłączone do układów zamontowanych na Panelu. Układy te służą do testowania możliwości mikrokontrolera. Są to:

  • 8 diod LED D1...8,
  • przyciski multipleksowanej klawiatury S1...12,
  • przełącznik S13 montowany na rozłącznym gnieździe J5,
  • alfanumeryczny, 2-liniowy wyświetlacz LCD,
  • sygnalizator U5,
  • potencjometr R9 do testowania przetwornika A/D.

Zwory JP3, JP4, JP5, JP6, służą do podłączania elementów układów testujących do portów mikrokontrolera. Zamontowany na płytce konwerter USB U4 służy do programowania pamięci FLASH poprzez UART. Będzie to możliwe po połączeniu gniazda J4 kablem z portem USB komputera, zwarciu zwór Z1, JP1, JP2 i naciśnięciu klawisza Reset (S14). Jeżeli konwerter USB nie będzie używany można usunąć zwory JP1 i JP2 zwalniając porty PA9, i PA10.

Gniazdo JTAG J3 służy do podłączenia płytki programatora zgodnego z ST-Link/V2. Przy zapisie do pamięci Flash tą drogą, w czasie debugowania i normalnej pracy zwora Z1 powinna pozostać rozwarta.

Panel może być zasilany napięciem stałym o dowolnej polaryzacji i wartości 6...12 V. Stabilizator U3 dostarcza napięcia +5 V dla wyświetlacza LCD a stabilizator U2 napięcia 3,3 V dla mikrokontrolera i jego otoczenia. Bateria litowa 3 V BT1 służy do podtrzymania pracy układów zegara RTC w mikrokontrolerze gdy główne zasilanie Panelu zostanie odłączone.

Montaż i uruchomienie Panelu

Rysunek 2. Schemat montażowy Panelu Edukacyjnego

Schemat montażowy Panelu pokazano na rysunku 2. Montaż najlepiej rozpocząć od przylutowania mikrokontrolera U1 i układu interfejsu USB U4. W przypadku tego ostatniego należy pamiętać o zalutowaniu pola masy umieszczonego na spodzie obudowy poprzez otwór w płytce drukowanej pod układem. Do mocowania przełącznika S13 można użyć 8-stykowej podstawki. To ułatwi jego wymianę, gdyby na skutek intensywnego używania przestał prawidłowo działać.

Po zakończeniu montażu płytkę warto dokładnie obejrzeć dla wyeliminowania przypadkowych zwarć. Po dołączeniu zasilania należy sprawdzić napięcia na wyjściach stabilizatorów U2 i U3. Następnie należy zewrzeć 8 zwór w polu JP6 i ewentualnie do złącza J5 włożyć wyświetlacz. Dla sprawdzenia czy wszystko działa jak należy można do pamięci Flash mikrokontrolera zapisać program testowy PanEdutest. hex. Na wyświetlaczu powinny pojawić się czytelne napisy (należy pamiętać o ustawieniu właściwego kontrastu potencjometrem R20) a diody błysną w uporządkowany sposób.

Jeżeli wszystko działa Panel Edukacyjny STM32F gotów jest do eksperymentów. W kolejnych częściach zajmiemy się wykorzystaniem tego, w co jest wyposażony STM32F103.

Ryszard Szymaniak, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2014
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów