Aplikacje zestawu KwikStik: obsługa GPIO
Firma Freescale udostępnia biblioteki i przykładowe programy dla mikrokontrolerów Kinetis, niestety wszystkie bazują na systemie operacyjnym MQX, który w wielu aplikacjach może być zbędny i niepotrzebnie komplikować pracę. Brak bibliotek peryferyjnych na kształt tych dla mikrokontrolerów STM32 powoduje, że pierwsze kroki z Kinetisami mogą wydawać się trudne, dlatego aby ułatwić zadanie początkującym programistom przedstawię kilka prostych przykładów.
Sprzęt
Platformą sprzętową jest niedrogi zestaw startowy KwikStik K40 z mikrokontrolerem MK40X256 oraz płytka bazowa KwikStikBase dla tego zestawu. Na płytce KwikStikBase znajdują się złącza z wyprowadzonymi liniami I/O mikrokontrolera, złącza I2C oraz SPI zgodne z tymi, które stosowane są w modułach firmy Kamami, konwerter UART<->RS-232 z żeńskim gniazdem DB-9 oraz transceiver CAN L9616 z męskim gniazdem DB-9.
Przygotowanie
Przykłady przygotowane będą w środowisku Keil µVision, którego wersja ewaluacyjna (z ograniczeniem wielkości kodu wynikowego) jest dostępna na stronie internetowej producenta: www.keil.com. Instalacja przebiega standardowo, więc nie będę jej szczegółowo opisywał.
Kolejnym krokiem jest znalezienie dokumentacji mikrokontrolera, a konkretnie Reference Manuala, oczywiście jest on dostępny na stronie firmy Freescale, dodajemy go również jako załącznik do niniejszego artykułu, w nim opisane są bloki peryferyjne i ich rejestry, czyli wszystko, co jest potrzebne, aby programować mikrokontroler.
Nowy projekt
Pierwszy program przykładowy pokaże w jaki sposób konfigurować i sterować liniami I/O mikrokontrolera. Do tych linii dołączymy moduł KAmodLED8, dzięki któremu zobaczymy efekt działania programu, czyli naprzemiennie migające diody. Najpierw musimy stworzyć na dysku katalog, w którym umieścimy nowy projekt, ja nazwałem go Kinetis_GPIO. Aby stworzyć projekt wybieramy w menu środowiska Keil µVision pozycję Project>New µVision Project, następnie wskazujemy wcześniej utworzony katalog i wpisujemy nazwę projektu, tu ponownie użyłem nazwy Kinetis_GPIO. W kolejnym kroku musimy wskazać typ mikrokontrolera z którego będziemy korzystać – MK40X256VMD100, po zatwierdzeniu wyboru środowisko zapyta, czy życzymy sobie, aby do projektu został dodany plik z kodem rozruchowym mikrokontrolera, potwierdzamy, mamy w tej chwili gotowy pusty projekt. Musimy jeszcze skonfigurować projekt, aby mógł korzystać z debugera Segger J-Link, który jest wbudowany w zestaw uruchomieniowy KwikStik, w tym celu musimy otworzyć okno właściwości projektu (w menu Project>Options for Target ‘Target 1’), w zakładce Debug zgodnie z poniższą ilustracją.
Dzięki temu J-Link będzie wykorzystywany do debugowania. Aby można było za jego pomocą również programować pamięć Flash mikrokontrolera należy przejść do zakładki Utilities, tam ponownie wskazać J-Linka, kliknąć przycisk Settings, w nowym oknie za pomocą przycisku Add dodać algorytm programowania dla naszego mikrokontrolera. Po dodaniu algorytmu trzeba jeszcze w sekcji RAM for Algorithm zwiększyć wielkość pamięci udostępnianej debugerowi do 0x0F00. Ostatnią operacją jest zaznaczenie opcji Reset and Run w sekcji Download Function, co spowoduje, że po zaprogramowaniu pamięci mikrokontrolera program w niej zapisany będzie automatycznie uruchamiany.
Teraz do katalogu projektu kopiujemy plik C:\Keil\ARM\INC\Freescale\K40\MK40N512MD100.h, dzięki któremu będziemy mogli odwoływać się do rejestrów za pomocą ich nazw, co jest znacznie łatwiejsze i bardziej czytelne niż korzystanie z adresów. W końcu tworzymy plik właściwego programu (File>New), zapisujemy go jako main.c w katalogu projektu. Korzystając z menu kontekstowego okienka Project dodajemy plik main.c do projektu, w tej chwili jesteśmy gotowi do pisania programu. Polecam zachować taki pusty projekt na przyszłość, żeby nie powtarzać za każdym razem tych samych czynności.