Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział IEiT Katedra Elektroniki TECHNIKA MIKROPROCESOROWA II LAB 6 Moduł UART - współpraca z komputerem poprzez BlueTooth Mariusz Sokołowski http://www.fpga.agh.edu.pl/upt2 08.12.2015
1. WSTĘP 1.1. CEL Celem ćwiczenia jest: zapoznanie studenta z techniką poprawnej inicjalizacji uniwersalnego, asynchronicznego portu szeregowego UART (ang. Universal Asynchronous Receiver/Transmitter), nabycie umiejętności łączenia modułu UART z urządzeniami peryferyjnymi, na przykładzie układu BlueTooth HC-06 wykorzystanie techniki radiowej BlueTooth do bezprzewodowej łączności mikrokontrolera z komputerem klasy PC. 1.2. WYMAGANIA Sprzętowe: komputer klasy PC spełniający wymagania sprzętowe aplikacji KEIL v5, zestaw FRDMKL46Z Programowe: system operacyjny Windows XP lub wyższy środowisko Keil / uvision 5 MDK-ARM Doświadczenie: podstawowa umiejętność obsługi komputera klasy PC, podstawowa znajomość systemów operacyjnych rodziny Windows, podstawowa znajomość zagadnień z Techniki Mikroprocesorowej 1 podstawowa znajomość zagadnień z Techniki Cyfrowej Literatura: KL46 Sub-Family Reference Manual, Freescale Semiconductor Kinetis L Peripheral Module Quick Reference, Freescale Semiconductor HC-06 datasheet
2. MODUŁ PORTU SZEREGOWEGO UART Układ MKL46Z256VLL4, będący "sercem" zestawu FRDM-KL46Z, zawiera w swoich zasobach sprzętowych, trzy porty UART. Każdy port posiada w pełni buforowany odbiornik (rys.1) i nadajnik (rys. 2). Rys.1. Układ odbiornika UART Rys.2 Układ nadajnika UART Ramka odbieranej lub wysyłanej danej składa się z: bit startu (0), 8 lub 9 bitów danych (najmłodszy bit pierwszy), 1 lub 2 bity stopu (1). Aby przygotować układ UART do pracy, należy wykonać następujące czynności: upewnić się, czy stała CLOCK_SETUP, w zbiorze system_mkl46z4.c, ma wartość 1. Jeśli nie, to należy ją zmienić. Dla takiego ustawienia parametry podstawowych sygnałów zegarowych mają następujące wartości: zegar referencyjny dla modułu MCG - 8MHz, Core clock - 48MHz, BusClock - 24MHz, dołączyć sygnał taktujący do modułu UART, w rejestrze SIM->SCGC4 oraz do odpowiedniego portu, w rejestrze SIM->SCGC5, ustawić odpowiednią funkcję dla wykorzystywanych końcówek portu, w rejestrze PORTx- >PCR. Proponuje się, aby wykorzystać końcówki PTE16 (nadajnik TX) oraz PTE17 (odbiornik RX), realizujące transfer szeregowy w układzie UART2, zablokować nadajnik i odbiornik, w rejestrze UART2->C2, ustawić 13-bitową wartość dzielnika, będącego źródłem zegara dla odbiornika i nadajnika. Najpierw starsze 5 bitów ustawić w rejestrze UART2->BDH, a następnie
młodsze 8 bitów w rejestrze UART2->BDL (pole SBR). Dla celów ćwiczenia należy ustawić prędkość 9600 bit/s. Zależność pomiędzy wartością SBR a prędkością (BR=bit/s) nadawania/odbioru wyraża następujący wzór: BR = BusClock 16 SBR, ustawić jeden bit stopu, w rejestrze UART2->BDH (bit SBNS), ustawić długość danej na 8 bitów oraz brak sprzętowej obsługi sprawdzania parzystości, w rejestrze UART2->C1 (bity M i PE), w zależności od potrzeb, włączyć przerwania od nadajnika i/lub odbiornika, w rejestrze UART2->C2 (bity: TIE - rejestr nadajnika pusty i RIE - rejestr odbiornika pełny), włączyć nadajnik i odbiornik, rejestrze UART2->C2. W tym momencie układ UART2 jest gotowy pracy. Nadawanie polega na wpisaniu danej 8- bitowej do rejestru UART2->D, a odbiór poprzez odczyt tego rejestru. Jeśli nie używamy przerwań do komunikacji z nadajnikiem i odbiornikiem, stan nadajnika sprawdzamy poprzez odczyt wartości bitu TDRE w rejestrze UART2->S1, a stan odbiornika poprzez odczyt wartości bitu RDRF w tymże rejestrze. TDRE=1 - rejestr nadajnika pusty, RDRF=1 - odbiornik pełny. 3. MODUŁ BLUETOOTH HC-06 Łączność pomiędzy komputerem a mikrokontrolerem zapewni moduł BlueTooth HC-06 (rys.3). Moduł posiada tryb pracy wyłącznie jako "slave". Rys.3. Moduł BlueTooth HC-06 Niniejszy układ należy podłączyć do płytki FRDM-KL46Z w sposób jak na rysunku 4. Rys.4. Sposób podłączenia modułu HC-06 do systemu mikroprocesorowego. Po dołączeniu zasilania dioda LED na module HC-06 powinna pulsować. Oznacza to, że moduł nie jest sparowany i nie jest podłączony do komputera. W celu nawiązania łączności pomiędzy komputerem a modułem należy wykonać następujące czynności: Windows XP Start -> Panel Sterowania -> Urządzenia Bluetooth, w panelu Urządzenia Bluetooth (rys.5) kliknąć Dodaj,
Rys.5 Rys.6 Rys.7 zaznaczyć pole jak na rys.6 i kliknąć Dalej, zaznaczyć, znaleziony przez Kreatora, układ HC-06 i kliknąć dalej (rys.7), Rys.8 Rys.9 Rys.10 wprowadzić zmiany jak na rys.8 i kliknąć Dalej, po otrzymaniu komunikatu o poprawnej instalacji kliknąć Zakończ. System utworzy dwa porty szeregowe typu COMx (rys.9), Rys.11 Rys.12 w panelu Urządzenia Bluetooth zaznaczyć nasz moduł i kliknąć Właściwości (rys.10), w panelu Właściwości otworzyć zakładkę Usługi, w której powinna pojawić się aktywna usługa Port szeregowy (SPP), wraz z numerem portu COM przypisanego do naszego modułu (rys.11). Kliknąć OK, kliknąć OK w panelu Urządzenia Bluetooth oraz zamknąć Panel sterowania, uruchomić program terminalowy Termite, a następnie skonfigurować odpowiedni port COM oraz program wg rys.12. Po naciśnięciu OK program nawiąże łączność z układem
HC-06, co będzie zasygnalizowane odpowiednim komunikatem w polu danych odbiorczych programu oraz zaświeceniem na stałe diody LED modułu. W tym momencie układ Bluetooth staje się transparentny, tzn. z poziomu użytkownika komunikacja zachodzi wyłącznie poprzez łącze COM i układ UART w mikrokontrolerze. 4. ĆWICZENIE 1. Nie wykorzystując przerwań, napisać program, który będzie odczytywał znaki wysłane z Terminala i zwrotnie je do niego wysyłał. 2. Problem taki sam jak w zadaniu 1, tylko do obsługi należy wykorzystać przerwanie od odbiornika. 3. Zrealizować program, który pozwoli, poprzez Terminal, włączać i wyłączać każdą diodę LED z osobna. 4. ZADANIE DOMOWE Napisać program, który pozwoli wyświetlać liczby (maksymalnie czterocyfrowe), zadawane przez Terminal, na wyświetlaczu LCD. W przypadku za długiej liczby lub niedozwolonych znaków powinien być wyświetlany błąd.