Instrukcja - ćwiczenie 5 - Wydział Elektroniki, Telekomunikacji i

Transkrypt

Instrukcja - ćwiczenie 5 - Wydział Elektroniki, Telekomunikacji i
LABORATORIUM
Procesory i komputery przemysłowe
Katedra Systemów Elektroniki Morskiej
Wydział Elektroniki Telekomunikacji
i Informatyki
Politechnika Gdańska
Temat nr 5
System czasu rzeczywistego bazujący na
stałopozycyjnym procesorze sygnałowym
Prowadzący:
Mariusz Rudnicki
Opracowali:
Jan H. Schmidt
Aleksander Schmidt
Cel ćwiczenia
Celem ćwiczenia jest zapoznanie studenta z możliwościami procesora sygnałowego
TMS320F2808 firmy Texas Instruments. Ćwiczenie realizowane będzie z wykorzystaniem zestawu
uruchomieniowego firmy Spectrum Digital zawierającego w/w procesor.
Omawiany układ stanowi hybrydę mikrokontrolera oraz procesora sygnałowego. Jego bogate
zasoby peryferyjne umożliwiają samodzielną pracę a znaczna moc obliczeniowa pozwala na
implementację złożonych algorytmów. Jest to przedstawiciel serii 32 bitowych procesorów z
wbudowaną pamięcią Flash oraz charakteryzujących się mocą obliczeniową 100 MIPS.
Płyta zestawu uruchomieniowego posiada złącza jak przedstawiono na poniższym zdjęciu:
Rys. 1. Rozmieszczenie elementów, wyprowadzeń oraz bloków funkcjonalnych na płycie zestawu uruchomieniowego
TMS320F2808 DSK
Płyta zawiera następujące elementy:
 procesor sygnałowy TMS320F2808, taktowany zegarem 100 MHz;
 2 układy interfejsów linii RS232C (SCI-A, SCI-B);
 2 układy interfejsów szyny eCAN (CAN-A, CAN-B);
 złącze rozszerzające analogowe;
 złącze rozszerzające wejścia/wyjścia;
 złącze interfejsu JTAG.
2
Praca z modułem uruchomieniowym
1. Diagnostyka
Rozpoczęcie pracy z modułem uruchomieniowym należy rozpocząć od uruchomienia programu
diagnostycznego. Jego zadaniem jest przetestowanie połączenia pomiędzy komputerem PC
(zintegrowanych środowiskiem programistycznym) a modułem uruchomieniowym jak i pracę
najważniejszych elementów takich jak procesor oraz współpracujące z nim układy.
Aby uruchomić program diagnostyczny należy użyć ikony umieszczonej na pulpicie:
Rys. 2. Ikona programu diagnostycznego mudułu uruchomieniowego
Rys. 3. Okno rozpoczęcia procesu diagnostycznego
Rys. 4. Okno z poprawnym wynikiem diagnostyki
3
2. Zintegrowane środowisko programistyczne
W celu uruchomienia zintegrowanego środowiska programistycznego należy skorzystać z ikony
umieszczonej na pulpicie.
Rys. 5. Ikona zintegrowanego środowiska programistycznego
Rys. 6. Okno główne
4
Pierwszą czynnością po uruchomieniu środowiska jest nawiązanie połączenia z modułem
uruchomieniowym - można tego dokonać poprzez wybranie opcji z menu Debug →Connect
(Alt+C).
Rys. 7. Nawiązanie połączenia z modułem
Wszystkie pliki projektowe oraz program terminala są umieszczone
w następującej lokalizacji:
C:\CCStudio_v3.1\MyProject\
Aby odczytać wcześniej przygotowany projekt należy wybrać opcję Project→Open…
5
Rys. 8. Odczyt pliku projektowego
Po odczytaniu pliku projektowego z katalogu ProgramNr1 i wybraniu okna z plikiem źródłowym okno
środowiska będzie wyglądało następująco:
Rys. 9. Okno środowiska po odczycie pliku projektowego
6
Tworzenie programu wykonywalnego (*.out) – znajdującego się w podkatalogu Debug – dokonuje się
poprzez:
a.) Kompilację projektu:
- opcja „Rebuild All” ikona poziomego Toolbaru:
- opcja „Rebuild All” z menu Project:
b.) Weryfikację tworzenia pliku wykonywalnego w oknie wyjściowym:
7
Ładowanie programu do pamięci procesora sygnałowego dokonuje się poprzez wybranie opcji z
menu File→Load Program:
Plik wykonywalny (*.out) zwykle znajduje się w podkatalogu Debug tworzonego projektu.
8
Aby uruchomić program lub śledzić jego kod krok po kroku można użyć różnych ikon pionowego
Toolbara, skrótów klawiszowych lub opcji z menu Debug:
9
Zadanie 1.
Zmodyfikować szablon programu (Katalog projektu Program 1) tak, aby procesor zmieniał stan
zadanego przez prowadzącego pinu wejścia/wyjścia dla odpowiedniego portu procesora. Zadanie
wykonaj dla obu sposobów realizacji zadania – patrz przykłady. Zmierz uzyskane czasy.
Materiały pomocnicze zamieszczono w Załączniku 1.
W sprawozdaniu należy:
1. Umieścić zestawiony kod programu,
2. Umieścić zarejestrowane oscylogramy i zamieścić pomierzone czasy zmiany stanu
a.) wysoki→niski,
b.) niski→wysoki,
3. Skomentuj uzyskane czasy i ich różnice.
Powyższe czynności należy wykonać dla obu sposobów realizacji zadania
Przykład: Zestawić program tak aby pin GPIO0 zmieniał stan wysoki→niski, niski→wysoki,
wysoki→niski…). Stan wysoki poziom napięcia 3.3V, stan niski 0V. Poprawność działania
programu zweryfikować podglądając przebieg sygnału na pinie GPIO0 korzystając z oscyloskopu.
Fragment kodu programu (pierwszy sposób):
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
EDIS;
//Multiplekser ustawiono na funkcję GPIO
//GPIO0 ustawiono jako wyjście
while(1){
GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
}
//Zmiana stanu pinu GPIO0
Fragment kodu programu (sposób drugi):
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
//Multiplekser ustawiono na funkcję GPIO
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
//GPIO0 ustawiono jako wyjście
EDIS;
while(1){
GpioCtrlRegs.GPASET.bit.GPIO0 = 1;
//Ustaw stan wysoki na pinie GPIO0
GpioCtrlRegs.GPACLEAR.bit.GPIO0 = 1;
//Ustaw stan niski na pinie GPIO0
}
10
Zadanie 2.
Zmień szablon programu (Katalog projektu Program 2) tak, aby procesor, wykorzystując
układ Timer0, odmierzył czas – zadany przez prowadzącego.
Moment startu odliczania i jego zakończenie należy zasygnalizować zaświeceniem diody LED
sterowanej z pina GPIO34.
W szablonie programu zamieszczono odpowiednie funkcje do wykorzystania:
void LED_On(void);
void LED_Off(void);
void LED_Toggle(void);
Materiały pomocnicze zamieszczono w Załączniku 2.
W sprawozdaniu należy:
1. Umieścić zestawiony kod programu
11
Zadanie 3.
Zmodyfikować szablon programu (Katalog projektu Program 3) tak, aby procesor
wykorzystując interfejs SCI (RS232C) wysyłał zadany znak z określonymi parametrami transmisji –
zadanymi przez prowadzącego.
Używając programu Terminal na komputerze PC podejrzeć poprawność wysyłanych znaków.
Materiały pomocnicze zamieszczono w Załączniku 3,4 i 5.
W sprawozdaniu należy:
1. Zamieścić zestawiony kod programu.
2. Zamieścić zarejestrowane oscylogramy przebiegu linii TxD (RS232C) i zidentyfikować na
nim bit startu, stopu, parzystości oraz bity przesyłanego znaku.
3. Zamieścić „zrzut ekranu z odebranymi znakami” okna programu Terminal.
Rys. 10. Schemat połączeń
Przykład:




Zestawić programu z następującymi parametrami transmisji:
1 bit stopu,
bez kontroli parzystości,
dana 8-bitowa,
prędkość transmisji 9600 bitów/s.
Dla:
fCPU = 100 000 000 Hz
Prędkość transmisji = 9600 bit/s
12
Otrzymujemy:
SCIHBAUD = 0x01;
SCILBAUD = 0x44;
Fragment kod programu:
//Parametry transmisji
SciaRegs.SCICR.bit.STOPBITS = 0;
SciaRegs.SCICR.bit.PARITY = 0;
SciaRegs.SCICR.bit.PARITYENA=0;
SciaRegs.SCICR.bit.SCICHAR = 7;
//1 stop bit
//Odd Parity
//Parity enabled
//Character length control
//Prędkość transmisji:
SciaRegs.SCIHBAUD = 0x01;
SciaRegs.SCILBAUD = 0x44;
13
Zadanie 4.
Korzystając z interfejsu SCI (RS232C) zmodyfikować programu (Katalog projektu Program 4)
tak, aby realizował zadany program. Działanie programu polega na odbieraniu znaku, odpowiednim
zinterpretowaniu go i odpowiedzi. Parametry transmisji oraz schemat reakcji - wg wytycznych
prowadzącego.
Do komunikacji z modułem procesora należy na komputerze uruchomić program Terminal.
Materiał pomocnicze zamieszczono w Załączniku 3.
W sprawozdaniu należy:
1. Umieścić kod programu.
2. Umieścić „zrzut ekranu wyników transmisji” programu Terminal
Rys. 11. Schemat połączeń
Przykład:
Zestawić program, który będzie realizował, po odebraniu znaku, odpowiednie
zadania wg załączonej tabeli reakcji:
Odebrany znak w kodzie ASCII
„1”
„2”
Inne
Zadanie do realizacji
Zapal diodę LED i wyślij znak „A”
Zgać diodę LED i wyślij znak „B”
Wyślij znak „C”
14
Fragment kodu programu:
Status = SciaRegs.SCIFFRX.bit.RXFFST;
If(Status != 0){
//Jest odebrany znak w buforze odbiorczym
ReceivedChar = SciaRegs.SCIRXBUF.all;
If(ReceivedChar == ‘1’){
LED_On();
SCIA_WyslijZnak(‘A’);
while((SciaRegs.SCICTL2.bit.TXEMPTY != 1)&&(SciaRegs.SCIFFTX.bit.TXFFST >=16));
}
else if(ReceivedChar == ‘2’){
LED_Off();
SCIA_WyslijZnak(‘B’);
while((SciaRegs.SCICTL2.bit.TXEMPTY != 1)&&(SciaRegs.SCIFFTX.bit.TXFFST >=16));
}
else{
SCIA_wyslijZnak(‘C’);
while((SciaRegs.SCICTL2.bit.TXEMPTY != 1)&&(SciaRegs.SCIFFTX.bit.TXFFST >=16));
}
}
15
Załącznik 1
Sygnały portów procesora
Sygnały cyfrowe
Rys. 12. Widok złącza P8 z cyfrowymi sygnałami I/O DSP
Rys. 13. Szczegółowy opis pinów złącza P8
16
Sygnały analogowe
Rys. 14. Widok złącz P5 i P9 z analogowymi sygnałami wejściowymi DSP
Rys. 15. Szczegółowy opis pinów złącz P5 i P9
17
Procesor umożliwia multipleksowanie do 3 niezależnych sygnałów peryferyjnych na
pojedynczym pinie GPIO co przedstawia poniższy rysunek.
Rys. 16. Schemat blokowy konfiguracji pinu
Definiując pin do pracy należy określić jego funkcję oraz rodzaj (wejście/wyjście).
18
Tabela 1. Możliwe ustawienia multiplexera
19
Załącznik 2
Zegary procesora
Procesor posiada trzy 32-bitowe zegary, które mogą być użyte w aplikacjach użytkownika.
Rys. 17. Schemat funkcjonalny timera
Timer pracuje w następujący sposób:
32-bitowy rejestr licznika TIMH:TIM zostaje załadowany wartością z rejestru PRDH:PRD. Po
uruchomieniu licznika rejestr licznika jest dekrementowany z taktem zegara SYSCLKOUT. Po
osiągnięciu wartości zero generowane jest przerwanie.
Zależność na generacje przerwania po upływie określonego czasu:
PRD = fCPU[MHz]*żądany czas [us].
Maksymalna wartość PRD= 232;
20
Załącznik 3 Asynchroniczny port szeregowy SCI – RS232C
Rys. 18. Schemat blokowy modułu komunikacji szeregowej
21
Rys. 19. Rejestr parametrów transmisji
22
Załącznik 4




Ramka przesyłanej danej – interfejs RS232C
1 bit startu;
7 bitów danej znak „A” – 41HEX;
Bit parzystości;
dwa bity stopu.
23
Załącznik 5
Tabela ASCII
24