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ówRezystory: (SMD 0805): Kondensatory: (SMD 0805): Półprzewodniki: Inne: |
Od czego zacząć?
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
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