Aplikacje zestawu Freescale KwikStik K40: obsługa UART

 

 

 

Dla początkujących – co to jest przerwanie?
Pisząc program reagujący na takie akcje użytkownika jak naciśnięcie przycisku czy przesłanie danych przez interfejs UART w najprostszym przypadku moglibyśmy stworzyć pętlę, w której sprawdzalibyśmy, czy dane zdarzenie miało miejsce, ale jest to mało eleganckie i nieefektywne rozwiązanie. Lepszą drogą jest wykorzystanie mechanizmu przerwań, który
najprościej mówiąc umożliwia automatyczne wywołanie funkcji w odpowiedzi na zdarzenie. Nazwy tych funkcji zdefiniowane są w pliku z kodem rozruchowym, przykładowo dla zdarzeń związanych z transmisją interfejsu UART5 tworzymy funkcję UART5_RX_TX_IRQHandler.

 

Tak jak w poprzednim artykule wykorzystane zostaną: zestaw uruchomieniowy KwikStik, płytka bazowa KwikStikBase oraz moduł KAmodLED (moduł z 8 diodami LED i buforem 74LVC541). Niezbędny okaże się zapewne również konwerter RS-232<->USB, chyba że czytelnik posiada komputer ze złączem RS-232. Sposób połączenia przedstawiono na rysunku poniżej.

 

 

 

Przykładowy program po uruchomieniu wyśle przez UART5 krótką instrukcję obsługi, potem po odebraniu znaków 4, 5, 6 i 7 będzie zapalał lub gasił odpowiednie diody modułu KAmodLED. Do komunikacji z KwikStikiem potrzebny będzie programowy terminal (np. Bray Terminal), który konfigurujemy następująco: 9600 bps, 8 bitów danych, brak bitu parzystości.
Sposób konfiguracji linii GPIO służących do sterowania diodami LED (PTA14, PTA15, PTA16, PTA17) pominę, ponieważ ten temat został już omówiony w artykule <ART. O GPIO>. W płytce bazowej KwikStikBase linie interfejsu UART5 (PTE8/UART5_TX i  PTE9/UART5_RX) mikrokontrolera Kinetis są wyprowadzone na gniazdo DB-9 poprzez układ MAX232. Konfiguracja interfejsu UART składa się z kilku etapów.

Najpierw musimy odblokować zegary interfejsu UART5 i portu E. Kolejnym krokiem jest wybór funkcji linii I/O PTE8 i PTE9, linie konfigurujemy jako ALT3. Teraz czas na trochę bardziej skomplikowaną operację, czyli konfigurację baudrate’u. Baudrate interfejsu UART w mikrokontrolerach Kinetis zależy od trzech parametrów:

  • częstotliwości zegara taktującego blok peryferyjny. Interfejsy UART2..5 są dołączone do linii zegarowej Bus clock, której domyślna częstotliwość to 25 MHz.
  • Bitów SBR rejestrów UART5_BDL i UART5_BDH. Wartość SBR to wartość rejestru BDL zsumowana z pięcioma młodszymi bitami rejestru BDH przesuniętymi osiem pozycji w lewo.

 

 

 

  • Bitów BRFA (Baud rate fine adjust), wyznaczają one wartość BRFD, którą posłużymy się dalej we wzorze. Kilka kombinacji przedstawiam niżej, cała tabela znajduje się w Reference Manualu.

 

BRFA BRFD
00000 0/32 = 0
00001 1/32 = 0,03125
11000 24/32 = 0,75
11001 25/32 = 0,78125
11110 30/32 = 0,9375
11111 31/32 = 0,96875

 

Baudrate liczymy według wzoru:

 

Do pobrania

O autorze