[KURS] Aplikacje DSP na przykładzie mikrokontrolerów C2000 firmy Texas Instruments inicjalizacja systemowa procesora serii Piccolo F2802x, część 3

23. Zobacz deklarację funkcji WDOG_disable. Przyciśnij klawisz Ctrl i najedź kursorem na nazwę funkcji WDOG_disable. Gdy nazwa jest podkreślona kliknij na nią lewym klawiszem myszy.

Deklaracja funkcji WDOG_disable jest zamieszczona w pliku wdog.h

24. Przejdź do linii (74) kodu w pliku głównym z wywołaniem funkcji WDOG_disable. Kliknij kilka razy na przycisk pracy krokowej Step Over  na pasku narzędziowym okna Debug. 25. Kliknij na przycisk pracy krokowej Step Into  na pasku narzędziowym okna Debug.

Definicja funkcji WDOG_disable jest zamieszczona w pliku wdog.c

Wykonanie funkcji WDOG_disable powoduje wpisanie jedynki do bitu WDDIS(WDCR[6]) czyli zablokowanie działania modułu CPU Watchdog. Opis rejestrów jest zamieszczony w tablicy 1. Można to zobaczyć w oknie Registers po rozwinięciu zestawu rejestrów SYSCTRL (rysunek 19).

 

  Rys. 19. Ustawienie na jedynkę bitu WDDIS(WDCR[6]) po wywołaniu funkcji WDOG_disable z biblioteki driverlib

Rys. 19. Ustawienie na jedynkę bitu WDDIS(WDCR[6]) po wywołaniu funkcji WDOG_disable z biblioteki driverlib

 

26. Kliknij kilka razy na przycisk pracy krokowej Step Over  aż wykonanie powróci do pliku głównego.

 

Inicjowanie układu generacji zegara systemowego

Układy procesorowe serii Piccolo F2802x posiadają dwa wewnętrzne oscylatory (INTOSC1 i INTOSC2), wewnętrzny oscylator dla zewnętrznego kwarcu oraz moduł PLL [5, 14]. Blok dostarcza sygnały zegarowe dla rdzenia układu procesorowego oraz sterowanie dla modułu LPM (obniżonej mocy), modułu CPU Watchdog, NMI Watchdog i CPU Timer2 (rysunek 20). Oscylatory wewnętrzne INTOSC1 i INTOSC2 nie wymagają elementów zewnętrznych.

 

Rys. 20. Sposoby generowania sygnału zegarowego dla układów procesorowych serii Piccolo F2802x [11]

Rys. 20. Sposoby generowania sygnału zegarowego dla układów procesorowych serii Piccolo F2802x [11]

 

Są cztery sposoby generowania sygnału zegarowego OSCCLK dla układów procesorowych serii Piccolo F2802x [14]:

  • Oscylator wewnętrzny INTOSC1 (10MHz): Pozwala na dostarczenie zegara dla modułu CPU Watchdog, rdzenia i licznika CPU TIMER2.
  • Oscylator wewnętrzny INTOSC2 (10MHz): Pozwala na dostarczenie zegara dla modułu CPU Watchdog, rdzenia i licznika CPU TIMER2.
  • Oscylator dla zewnętrznego rezonatora kwarcowego: Układ wewnętrznego oscylatora układów procesorowych serii Piccolo F2802x umożliwia generację sygnału zegarowego OSCCLK z zastosowaniem zewnętrznego rezonatora kwarcowego. Jest on dołączany do wyprowadzenia X1 oraz X2 układu procesorowego. Wyprowadzenia X1 i X2 są dostępne tylko w większej obudowie.
  • Zewnętrzny sygnał zegarowy dołączony do wejścia XCLKIN. Wejście XCLKIN jest multipleksowane pomiędzy wyprowadzeniami GPIO19 lub GPIO38 układu procesorowego.

Deklaracje dla obsługi układu generacji zegara systemowego znajdują się w pliku nagłówkowym clk.h w ścieżce C:\TI\controlSUITE\device_support\f2802x\v210\f2802x_common\include

Funkcje biblioteczne obsługi układu generacji zegara systemowego znajdują się z pliku źródłowym clk.c w ścieżce C:\TI\controlSUITE\device_support\f2802x\v210\f2802x_common\source

Struktura CLK_Obj opisu układu generacji zegara systemowego obejmuje wszystkie rejestry sterujące tego modułu układów procesorowych serii Piccolo F2802x (patrz tab.1).

Wskazanie na strukturę CLK_Obj (jako nowy typ) jest zdefiniowane w pliku clk.h

Następnie jest definiowana zmienna myCLK typu CLK_Handle określająca główny wskazanie (handle) na strukturę dla układu generacji zegara systemowego

Funkcja CLK_init realizuje inicjowanie zmiennej myCLK. Deklaracja funkcji CLK_init jest zamieszczona w pliku clk.h. Każda funkcja obsługi układu generacji zegara systemowego wymaga podania wskazania na strukturę opisu CLK_Obj jako pierwszy argument wywołania. Następne argumenty zależą od realizowanej funkcjonalności.

Linia wywołania funkcji CLK_setOscSrc w programie głównym projektu wygląda następująco

Definicja wartości wyliczanych dla drugiego argumentu jest zdefiniowana w pliku clk.h

Wykonanie funkcji CLK_setOscSrc z agrumentem CLK_OscSrc_Internal powoduje wybranie oscylatora wewnętrznego INTOSC1 (10MHz) jako źródło sygnału zegarowego OSCCLK.

Układ generacji sygnałów zegarowych, po włączeniu zasilania układu procesorowego serii Piccolo F2802x lub wykonaniu sprzętowej operacji RESET, jest domyślnie konfigurowany następująco (rysunek 21):

  • Sygnał na wejście PLL jest podawany z generatora wewnętrznego INTOSC1 (10MHz)
  • Układ PLL jest wyłączony
  • Dzielnik układu PLL jest ustawiony na dział przez 4 co oznacza, że systemowy sygnał zegarowy SYSCLKOUT jest ustawiony na 2.5MHz
  • Dzielnik podziału sygnału wyjściowego XCLKOUT jest ustawiony na dział przez 4.
  • Sygnał wyjściowy XCLKOUT nie jest podawany na wyprowadzenie układu procesorowego

Linia wywołania funkcji CLK_setOscSrc w programie nic nie zmienia, bo i tak domyślnie jest wybrany oscylator wewnętrzny INTOSC1.

 

Rys. 21. Generowanie systemowego sygnału zegarowego SYSCLKOUT oraz sygnału XCLKOUT układów procesorowych serii Piccolo F2802x [5]. Zacienione pola wskazują ustawienia domyślne

Rys. 21. Generowanie systemowego sygnału zegarowego SYSCLKOUT oraz sygnału XCLKOUT układów procesorowych serii Piccolo F2802x [5]. Zacienione pola wskazują ustawienia domyślne

 

Linia wywołania funkcji PLL_setup w programie głównym projektu wygląda następująco

Funkcja PLL_setup realizuje inicjowanie modułu PLL. Deklaracja funkcji PLL_setup jest zamieszczona w pliku pll .h

Wykonanie funkcji PLL_setup powoduje ustawienie mnożnika modułu PLL na 12 i podzielnika na 2. W rezultacie sygnał zegarowy OSCCLK=10MHz jest daje systemowy sygnał zegarowy SYSCLKOUT=60MHz.

O autorze