[NOWY FRAMEWORK] Microchip Harmony dla PIC32, część 2
Pierwsza część artykułu jest dostępna w naszym serwisie.
Nie ma lepszego sposobu poznania możliwości frameworka Harmony niż zrealizowanie za jego pomocą projektu. Przykładową realizację przedstawiamy w artykule.
Zgodnie z zapowiedzią z pierwszej części artykułu pokażemy jak zrealizować prosty projekt na mikrokontrolerze PIC32 z wykorzystaniem Harmony. Aplikacja została zrealizowana na module PIC32 USB Starter KIT II z mikrokontrolerem PIC32MX795F512L. Jest to jeden z najbardziej zaawansowanych mikrokontrolerów rodziny PIC32MX.
Pierwszą czynnością konfiguracyjną będzie ustalenie źródła i częstotliwości taktowania mikrokontrolera. System zegarowy powinien dostarczać trzy niezależnie programowane częstotliwości:
- SYSCLK do taktowania rdzenia,
- PBCLK do taktowania układów peryferyjnych,
- częstotliwość 48MHz do taktowania interfejsu USB.
Do taktowania układu zegarowego wykorzystuje się zasadniczo 2 źródła sygnału zegarowego:
- oscylator kwarcowy Primary Oscillator i
- wbudowany precyzyjny oscylator RC o częstotliwości 8MHz.
Primary Oscillator może pracować w trybach EC, XT, lub HS. Typowo wybiera się tryb HS i kwarc o częstotliwości 8 MHz lub 12 MHz. Częstotliwość źródła (oscylator kwarcowy lub RC) może być następnie powielana w układach PLL do częstotliwości 80 MHz, czyli maksymalnej częstotliwości z jaką pracuje rdzeń PIC32MX795F512L.
Konfigurowanie zegara w MHC jest tak proste jak to można sobie tylko wyobrazić. Służy do tego zakładka MPLAB Harmony Clock Configurator (rysunek 9).
Rys. 9. Okno konfiguratora systemu taktowania
Najpierw w oknie FNOST wybieramy źródło sygnału zegarowego. Oprócz Primary Oscillator i FRC 8MHz można wybrać też Secondary oscillator lub generator LPRC. Są to oscylatory o niskiej częstotliwości i w normalnych warunkach nie będą używane.
Mikrokontroler może być taktowany wprost z POSC lub FRC, sygnały taktujące mogą być powielane przez układ PLL. Ja wybrałem oscylator FRC z układem PLL, czyli FNOST=FRCPLL. Żeby uzyskać żądaną częstotliwość trzeba zaprogramować współczynniki FPLLIDIV, FPLLMULT i FPLLODIV. Można to zrobić ręcznie, lub automatycznie klikając na przycisk Auto-Calculate. W oknie Desired System Frequency wpisujemy interesująca nas częstotliwość taktowania rdzenia i zostanie wyliczona częstotliwość możliwa do uzyskania z układu PLL i błąd częstotliwości w %. Dla FRC =8MHz i SYSCLK=80MHz Auto-Calculate wylicza współczynniki FPLLIDIV=DIV_2, FPLLMULT=MUL_20 i FPLLODIV=DIV_1.
Częstotliwość zegara taktującego układy peryferyjne PBCLK jest uzyskiwana z SYSCLK po podzieleniu przez 1, 2, 4 lub 8 (FPBDIV). Jeżeli w projekcie jest używany interfejs USB, to jego taktowanie również trzeba zaprogramować, tak by USB Clock był równy 48MHz. W Harmony Clock Configurator nieprawidłowa częstotliwość USB Clock jest sygnalizowana na czerwono.
Po ustawieniu systemu taktowania trzeba zapisać konfigurację i wygenerować pliki projektu z poziomu MPLAB Harmony Configurator (Generate). Definicje bitów konfiguracyjnych zostaną automatycznie zaktualizowane i można je obejrzeć w oknie Device&Project Configuration -> PIC32MX795F512L Configuration. Zmiany są zaznaczane przez podświetlenie na fioletowo, jak widać na rysunku 10.
Rys. 10. Zmiany w konfiguracji układu taktowania