Generator funkcyjny

Transkrypt

Generator funkcyjny
Projekt z przedmiotu MARM
Generator funkcyjny
Na układzie STM32F4DISCOVERY.
Stanisław Hanasz
Założenia projektowe:
Generowane sygnały: sygnał trójkątny, prostokątny sinusoidalny
Amplituda: 0…2.5V
Częstotliwość 0…10MHz
Wypełnienie sygnału prostokątnego 0…100%
Obsługa za pomocą przycisków i przez USART
Schemat funkcyjny:
ZMIANA USTAWIEŃ
–
MENU
-wyświetlanie menu i
parametrów na wyświetlaczu
-operacje na wartościach
roboczych: amplituda,
czestotliwosc, krztalt,
ZMIANA USTAWIEŃ
USART
zmiana_ustawien==true
odebrano_dane==true
Wprowadzanie
ustawień
-przepisanie tablicy z której
pobiera próbki DMA (krztałt,
amplituda)
-zmiana częstotliwości
sygnału taktującego DMA
(częstotliwość)
Obsługa:
Opisany poniżej generator zrealizowany został na płytce ewaluacyjnej STM32F4DISCOVERY. Jest
wyposażony wyświetlane na wyświetlaczu 2x16 menu i obsługę przez USART. Menu jest obsługiwane
przez 3 przyciski: góra/inkrementacja, dół/dekrementacja, menu/zatwierdź. Dłuższe przyciskanie przycisku
powoduje szybką zmianę wartości (normalnie zmienia się o jednostkę co każde przyciśnięcie).
Realizacja techniczna przycisków: po przyciśnięciu dowolnego przycisku (przerwanie z linii EXTI 0, 2 lub 3)
uruchamiany jest TIM2. Akcja związana z przyciskiem wykonywana jest dopiero po odliczeniu czasu jeżeli
przycisk jest nadal wciśnięty (redukcja drgań styków). Włączany jest również TIM3. Jeżeli po przepełnieniu
TIM3 przycisk jest nadal wciśnięty, następuje szybka zmiana ustawianej wartości (1/100 SysTick), tak
długo aż go nie puścimy.
Realizacja techniczna menu: plik menu.c . Funkcja wyświetl() odpowiada za wyświetlanie ustawionych
parametrów lub menu na wyświetlaczu. Menu pracuje jako maszyna stanów opisana zmiennymi bool:
menu_on, ok, ustawianie, prawo, lewo, increment, decrement, zmiana_ust, oraz uint_8t: pozycja,
krztalt_wybrany, jednostka_wybrana_rz, jednostka_wybrana_u. Na potrzeby menu wartości parametrów
generowanego sygnału są zapisywane w zmiennych amplituda, częstotliwość, wypełnienie. Funkcje
edycja_cz(), edycja_a(), edycja_w(), edycja_k() odpowiadają za funkcjonalność ustawiania parametrów.
STRONA 1 Z 2
Projekt z przedmiotu MARM
Ekran parametrów.
menu
Wybór
edytowanego
parametru.
Edycja wartości
liczbowej parametru.
ok
ok
Ekran parametrów.
Wartość wybranego
parametru została
zmieniona
Rozkazy odbierane przez USART są zapisywane w 16-elementowej tablicy bufor_Rx. Następnie (po
wystawieniu flagi odebrano_dane) są dekodowane za pomocą funkcji usart_ustawienia():
Akcja
Rozkaz
Zmiana kształtu na sinus
s:si************
Zmiana kształtu na prostokąt
s:sq************
Zmiana kształtu na trójkąt
s:t*************
Zmiana amplitudy na 95 (%)
a:95************
Zmiana wypełnienia na 80 (%)
w:80************
Zmiana czestotliwosci na 800 (HZ)
f:99999*********
Po zatwierdzeniu zmiany w danego parametru w menu lub odebraniu i rozkodowaniu rozkazu przez
USART ustawiana jest flaga zmiana_ust. Wtedy (w pętli głównej):
-Deinicjalizowane są DAC, DMA i timer taktujący DMA
-zmienne krztalt_wybrany, amplituda, wypelnienie dopiowane są do zmiennych opisujących aktualnie
generowany sygnał, liczony jest okres sygnału na potrzeby timera taktującego DAC,
-tablica z próbkami prostokąta jest zapełniana próbkami sygnału o zadanym wypełnieniu
-próbki sygnału który ma być generowany są kopiowane do tablicy Act_wav12bit, przeskalowane
przez amplitudę
-Inicjalizowane są DAC, DMA i timer taktujący DAC.
Generacja:
Próbki wczytane do tablicy Act_wav12bit, wysyłane są za pomocą DMA1_Stream6 channel7 i
DMA1_Stream5 channel7 do kanałów 1 i 2 DAC. Oba DAC są taktowane przez TIM6.
Załączniki:
Do sprawozdania załączam projekt w środowisku keil wraz ze wszystkimi plikami źródłowymi.
Bibliografia:
[1] Galewski Marek, STM32 w praktyce, BTC 2009
[2] Materiały do przedmiotu MARM, strona przedmiotu.
STRONA 2 Z 2

Podobne dokumenty