Jak korzystać z dokumentacji do STM32 – zestaw Nucleo

Każdy zaczynający swoją naukę mikrokontrolerów poszukuje gotowego zestawu deweloperskiego, na którym mógłby poznać podstawy programowania. W przypadku mikrokontrolerów STM32 mamy bardzo szeroki zakres dostępnym płytek rozwojowych – zarówno bezpośrednio od producenta, jak i zewnętrznych podmiotów. Ze względu na cenę, najczęściej wybieraną platformą są zestawy Nucleo. Co tak właściwie na takiej płytce znajdziemy i gdzie szukać informacji na jej temat? Na te pytania postaram się odpowiedzieć w poniższym artykule.

Artykuł został oparty na płytce z serii Nucleo-64, a konkretnie Nucleo-L476RG. Informacje zawarte w materiale są jednak na tyle uniwersalne, że z powodzeniem można je odnieść do innych zestawów Nucleo.

Dokumentacja do zestawów Nucleo

Na początku warto zastanowić się, gdzie znajdziemy dokumentację do naszej płytki. Dostępna jest ona na stronie producenta pod nazwą zestawu oraz w zakładce Documentation i CAD Resources.

W przypadku płytek Nucleo mamy do dyspozycji kilka dokumentów, przy czym bazuje się głównie na trzech: Data Brief, User Manual oraz schematy.

Data brief to plik, gdzie znajdziemy podstawowe informacje na temat zestawu. Co prawda mamy je dostępne również na stronie głównej, jednak odnoszą się one do całej serii Nucleo-64 i mogą być mylące, gdy szukamy informacji do konkretnej płytki. W tabeli 1. znajdziemy takie informacje, jak dokładne oznaczenie mikrokontrolera zastosowanego w płytce, wersję programatora ST-LINK, wsparcie dla Mbed, rodzaj oscylatora oraz możliwość wykorzystania SMPS. W tabeli 2. znajdziemy także informację na temat konwencji nazewnictwa stosowanego przy zestawach Nucleo. Zapoznanie się z tym znacznie ułatwi nam szukanie płytki z konkretnymi funkcjami w przyszłości.

Drugim, znacznie ważniejszym dokumentem, do którego będziemy często zaglądać w trakcie użytkowania płytek Nucleo, jest User Manual. Plik ten również odnosi się do całej serii Nucleo-64. Z jednej strony korzystając z kilku płytek nie potrzebujemy pobierać wielu dokumentacji, z drugiej czasami trzeba się dobrze wczytać, aby odseparować to, co dotyczy naszego Nucleo. W User Manual-u znajdziemy istotne informacje potrzebne właściwiej na każdym etapie tworzenia jakiegokolwiek prototypu – opis podłączenia zasilania, wyprowadzenia pinów oraz sposób konfiguracji zworek.

W trzecim dokumencie, a w zasadzie folderze z plikami znajdziemy szczegółowe informacje projektowe. Są dostępne zarówno w postaci plików PDF, jak i plików CAD dla Altium Designera. Do schematów sięgamy, gdy potrzebujemy dokładnych informacji o podłączeniu jakiegoś elementu na płytce. Jest też doskonałym źródłem, jeżeli tworzymy własny projekt i chcemy sprawdzić, jak powinno być podłączone zasilanie, kondensatory filtrujące czy kwarc.

Oczywiście w przypadku programowania płytek Nucleo często niezbędne będzie korzystanie z dokumentacji do konkretnego mikrokontrolera, którego używamy. W końcu to on jest sercem naszej płytki i jego wyjścia i wejścia chcemy obsługiwać. Opis najważniejszych dokumentów dostępnych do mikrokontrolerów STM32 można znaleźć z artykule Jak korzystać z dokumentacji do STM32 – Datasheet, Reference Manual i Errata.

Najważniejsze elementy znajdujące się na płytce deweloperskiej

Na pierwszy rzut oka może nam się wydawać, że płytki Nucleo są dość „ubogie”, jeżeli chodzi o ilość urządzeń peryferyjnych i elementów, jakie na nich znajdziemy. Rzeczywiście tak jest, jeżeli porównamy je np. do płytek z serii Discovery, czy bardziej profesjonalnych EVAL-Board-ów. Na Nucleo znajdziemy jednak najważniejsze elementy potrzebne do uruchomienia samego mikrokontrolera oraz wyprowadzone wszystkie wyjścia układu, dzięki czemu zestawy te znakomicie sprawdzają się jako baza pod każdy projekt. Poniższy rysunek przedstawia diagram blokowy płytki Nucleo-64.

Programator ST-LINK

Najważniejszą częścią (oczywiście zaraz po mikrokontrolerze) na płytce Nucleo, jest programator. W większości przypadków będzie to ST-LINK/V2-1, chociaż w najnowszych zestawach z układami z serii G4 będzie to STLINK-V3E.

ST-LINK/V2-1 to programator i debuger dedykowany do mikrokontrolerów STM32. Wspiera programowanie za pomocą interfejsu SWD. Wersja V2-1 oferuje nam możliwość pracy programatora w kilku trybach:

  • jako port wirtualny COM, co daje możliwość komunikacji za pomocą programatora i złącza mini USB np. z komputerem
  • jako pamięć masowa
  • port do programowania/debugowania

ST-LINK to tak naprawdę inny mikrokontroler z rodziny STM32 z odpowiednio przygotowanym oprogramowaniem. Programator w Nucleo został pomyślany w ten sposób, aby mógł programować nie tylko układ znajdujący się na płytce, ale także zewnętrzne mikrokontrolery. Aby zaprogramować uC na innej płytce, wystarczy podłączyć piny programatora do złącza CN4 oraz zdjąć zworki na złączu CN2.

Co ciekawe, jeżeli płytka do jakiegoś prototypu jest dla nas za duża, obszar z ST-LINK-iem możemy odłamać wzdłuż przygotowanych nacięć. Później, jeżeli chcemy ponownie zaprogramować mikrokontroler, musimy połączyć piny na złączu CN4 z odpowiednimi pinami na odłamanej płytce, dlatego wygodniej jest korzystać z zestawu w całości.

Istotnym elementem programatora jest trójkolorowa dioda LED umieszczona w prawym górnym rogu przy złączu USB. Informuje nas o stanie pracy ST-LINK-a oraz o ewentualnych błędach. Dioda może świecić się na jeden z poniższych sposobów:

  • Miga wolno na czerwono – po włączeniu zasilania przed inicjalizacją USB
  • Miga szybko na czerwono – po pierwszej poprawnej komunikacji między komputerem a ST-LINK/V2-1
  • Świeci na czerwono – po zakończeniu inicjalizacji między komputerem a ST-LINK/V2-1
  • Świeci na zielono – po pomyślnej inicjalizacji komunikacji docelowej
  • Miga na czerwono/zielono: podczas komunikacji z uC
  • Świeci na zielono – komunikacja zakończona i pomyślna
  • Świeci na pomarańczowo – błąd komunikacji

Warto zwrócić uwagę i zapamiętać w szczególności kolor pomarańczowy – jeżeli nie działa nam program poprawnie to być może mikrokontrolerem się po prostu nie zaprogramował.

Złącza Arduino Uno V3 i ST morpho

Miejscem, gdzie najczęściej będziemy zaglądali w trakcie pracy z zestawem Nucleo, jest rozdział dotyczący złącz dostępnych na płytce. Podłączenie jakiegokolwiek modułu wiąże się ze sprawdzeniem, gdzie dane piny zostały wyprowadzone. Producent przewidział dwa typy złącz: kompatybilne z Arduino Uno V3 oraz złącza ST morpho.

Wyprowadzenia pinów mogą się różnić w zależności od wybranej płytki Nucleo, dlatego zawsze warto sprawdzić, gdzie są szukane wyjścia. W dokumentacji znajdziemy je zarówno w postaci graficznej (jak na rysunku poniżej) na stronie 27., jak i w formie tabeli na stronie 37. (Arduino Uno V3) lub stronie 53. (ST morpho).

Złącza kompatybilne z Arduino Uno V3 to chyba najczęściej stosowany typ złącza w płytkach deweloperskich. Swoją popularność zawdzięcza platformie Arduino, ale jak możemy się domyślić, przydane jest nie tylko dla tego typu płytek. Złącza Arduino Uno V3 umieszczane są na innych zestawach deweloperskich, ponieważ dają możliwość korzystania z całej gamy modułów rozszerzeń (shieldów), jakie różni producenci tworzą z właśnie takim rozstawem pinów. Na Nucleo złącza Arduino Uno V3 wyprowadzone zostały w postaci dwóch rzędów czarnych goldpinów żeńskich i są oznaczone jako CN8 oraz CN9.

Złącza ST morpho są charakterystyczna dla zestawów Nucleo. Pod ich rozstaw tworzoną są shieldy projektowane pod te płytki. Na złączu ST morpho mamy wyprowadzone wszystkie piny mikrokontrolera oraz dodatkowe piny 3,3 V oraz 5 V, z których możemy zasilić nasze zewnętrzne moduły.

Urządzenia peryferyjne

Jak wspomniałem na początku artykułu, płytki Nucleo nie są wyposażone w zbyt bogaty zestaw urządzeń peryferyjnych. Mimo to znajdziemy na niej kilka przydatnych elementów, o których sposobie działania warto wiedzieć.

Na początku warto wspomnieć o zasilaniu. Przy pracy z zestawem Nucleo mamy do dyspozycji dwa sposoby zasilania: przez złącze mini USB lub przez piny VIN lub E5V (podłączenie zasilania zewnętrznego). Z zasilania USB korzystamy, gdy pobór prądu przez wszystkie elementy płytki nie będzie przekraczał 300 mA. Zasilanie przez pin E5V (5 V) pozwala nam dostarczyć do naszej aplikacji do 500 mA, a napięcie jest stabilizowane przez układ stabilizatora 3,3 V. Przez pin VIN możemy zasilać płytkę napięciem z zakresu od 7 do 12 V i dostarczyć do 800 mA. Przy wykorzystaniu tego pinu, linia zasilająca korzysta zarówno ze stabilizatora 5 V, jak i 3,3 V (szczegóły znajdziemy na schemacie). Należy pamiętać, że jeżeli chcemy skorzystać z zasilania przez źródło zewnętrzne (piny E5V lub VIN), należy zmienić położenie zworki JP5 na piny 2 i 3. Podłączenie zasilania zewnętrznego wymaga także, aby najpierw do płytki dołączyć zasilanie, a dopiero później podłączyć przewód USB. W przeciwnym wypadku zestaw może działać nieprawidłowo. Poprawne zasilanie uC sygnalizuje dioda LD3.

Opisując kwestię doprowadzanie napięcia, warto wspomnieć także o zworce IDD. Domyślnie jest ona założona, ale jej zdjęcie i podłączenie do pinów amperomierza pozwala w łatwy sposób kontrolować pobór prądu mikrokontrolera. Może to być przydatne, gdy korzystamy z trybów Low Power i chcielibyśmy zmierzyć pobór prądu.

Na płytce do dyspozycji użytkownik ma diodę LED (LD2) podłączoną do pinu PA5 oraz niebieski przycisk użytkownika (B1) podłączony do pinu PC13. Poza tym czarny przycisk pozwala na zresetowanie mikrokontrolera.

Na płytkach Nucleo producent przewidział dość elastyczny system korzystania z kwarców. Do dyspozycji mamy wewnętrzne oscylatory LSI oraz HSI, ale także zewnętrzny oscylator LSE o częstotliwości taktowania 32768 kHz. Poza tym oscylator LSE możemy podłączyć do pinu PC14 na złączu CN7. Jeżeli chodzi o oscylator HSE, możemy go podłączyć do dedykowanych pinów X3 lub przez piny PF0/PD0/PH0 na złączu CN7. Dodatkowo mamy możliwość skorzystania z sygnału taktującego z programatora (8 MHz). Przy wyborze oscylatorów należy zwrócić uwagę na odpowiednio skonfigurowane zworki Solder Bridges.

Ciekawą funkcjonalnością, jaką oferuje nam płytka Nucleo, jest możliwość korzystania z interfejsu USART2 za pomocą złącza USB. Jest on domyślnie w ten sposób skonfigurowany i znacznie ułatwia pierwsze uruchomienie komunikacji. Możemy w ten sposób użyć także innego interfejsu USART dostępnego na płytce, podłączając go do pinów TX i RX na złączu CN3 (część płytki związana z programatorem). Takie użycie wymaga właściwego skonfigurowania mostków SB13 i SB14.

W dokumentacji na stronie 26. znajdziemy także pełną tabelę z opisem konfiguracji zworek (Solder Bridges). Warto się z nią zapoznać, gdy chcemy użyć zestawu Nucleo w niestandardowy sposób.

Podsumowanie

Płytka deweloperska to podstawowe narzędzie każdego początkującego programisty mikrokontrolerów, dlatego warto zapoznać się z jej konfiguracją i możliwościami. Podstawowym źródłem informacji o płytkach Nucleo jest User Manual oraz schemat. Mam nadzieję, że przedstawione w artykule informacje ułatwią Ci zapoznanie się z tymi zestawami i pozwolą w pełni wykorzystać ich możliwości.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *