Interfejs klawiatury bezstykowej TSI/TSS w mikrokontrolerach Kinetis firmy Freescale
Moduł TSI (Touch Sensing Input) to zintegrowane w mikrokontrolerach firmy Freescale (rodziny układów Coldfire+ oraz Kinetis) peryferium, które umożliwia współpracę układów z pojemnościowymi klawiaturami dotykowymi. Oprócz zasobu sprzętowego wbudowanego w strukturę układów, producent opracował również biblioteką programistyczną TSS (Touch Sensing Software), która przeznaczona jest do obsługi modułu TSI. Moduł TSI wraz biblioteką TSS stanowi kompletne rozwiązanie umożliwiające projektantom budowanie interfejsów użytkownika wykorzystujących klawiatury pojemnościowe.
Jak działa TSI
Do wykrywania zbliżenia palca do przycisku pojemnościowego (elektrody) moduł TSI używa mechanizmu wykorzystującego dwa sygnały zegarowe, jeden wewnętrzny, drugi zewnętrzny. Służą one do ładowania i rozładowywania elektrody, która w ujęciu elektrycznym jest kondensatorem. Zbliżenie do elektrody palca zwiększa pojemność kondensatora, zatem wykrycie naciśnięcia przycisku można wykryć poprzez pomiar czasu ładowania i rozładowania pojemności (czas ładowania jest inny dla pojemności ze zbliżonym palcem i bez niego). Oba sygnały zegarowe mogą być konfigurowane z poziomu modułu TSI, przy czym sygnał zewnętrzny musi mieć mniejszą częstotliwość niż wewnętrzny (rysunek 1).
Rys. 1. Przebieg sygnałów zegarowych wykorzystywanych przez moduł TSI (sygnał wewnętrzny – kolor niebieski, sygnał zewnętrzny – kolor czarny)
Wszystkie parametry dotyczące sygnałów zegarowych są zapisywane w rejestrach modułu TSI (aktualizacja w każdym cyklu skanowania), dzięki czemu aplikacja główna ma na bieżąco dostęp do informacji o tym, czy wykryte zostało zbliżenie do któregokolwiek z przycisków klawiatury. Bardziej szczegółowy opis mechanizmu działania modułu TSI został przedstawiony w artykule „Obsługa kontrolera klawiatur pojemnościowych w mikrokontrolerach Freescale Kinetis”.
Przewaga modułu TSI nad implementacjami programowymi
Poniżej przedstawiono szereg cech modułu TSI, które są jednocześnie zaletami, jakimi nie mogą się pochwalić programowe implementacje obsługi klawiatur pojemnościowych:
- Redukcja czasu przetwarzania mikrokontrolera
- Większa odporność przed zakłóceniami
- Większa czułość
- Możliwość pracy w trybie uśpienia (o obniżonym poborze prądu)
- Brak konieczności stosowania dodatkowych układów zewnętrznych
- Szerszy zakres konfiguracji
Dodatkowo funkcjonalność modułu TSI jest zwiększona przez bibliotekę TSS, która szczegółowo opisana została w nocie aplikacyjnej TSSAPIRM (Touch Sensing Software API Reference Manual) firmy Freescale.
Projekt wykorzystujący moduł TSI i biblioteki TSS
Powody, dla których warto używać bibliotekę TSS
Bibioteka TSS to modułowe oprogramowanie, które w zależności od potrzeb może zostać wkomponowane w projekt autora w całości, bądź tylko częściowo. Poprzez dołączenie tylko wybranych fragmentów biblioteki i nieuwzględnienie tych niepotrzebnych, można efektywnie zmniejszyć rozmiar kodu źródłowego aplikacji. Biblioteka TSS umożliwia wykonywanie następujących operacji na module TSI:
- Inicjalizacja modułu TSI
- Auto-kalibracja modułu TSI
- Wybudzanie mikrokontrolera ze stanu uśpienia pod wpływem wykrycia zbliżenia palca do czujnika
- Konfiguracja różnych trybów wyzwalania
- Wykonanie pomiaru pojemności na danej linii mikrokontrolera, przetwarzanie wyników
Stworzenie projektu wykorzystującego bibliotekę TSS
W dalszej części artykułu wybiórczo opisana została konfiguracja i dostępne opcje oferowane przez bibliotekę TSS. Szczegółowy przewodnik dotyczący tworzenia i konfiguracji projektów wykorzystujących bibliotekę TSS został zawarty w nocie firmy Freescale o nazwie TSSUG (Touch Sensing Software Users Guide).
Konfiguracja wyprowadzeń
Konfiguracja bibliotek TSS obejmuje przypisanie wyprowadzeniom mikrokontrolera trybu pracy odpowiadającego modułowi TSI. Na rysunku 2 przedstawiono proces konfiguracji za pomocą narzędzia System Setup Creator, natomiast na rysunku 3 pokazano konfigurację z wykorzystaniem programu Processor Expert.
Rys. 2. Xxx Konfiguracja za pomocą narzędzia System Setup Creator
Rys. 3. Xxx Konfiguracja z wykorzystaniem programu Processor Expert
Plik nagłówkowy TSS_SystemSetup.h powinien wyglądać tak, jak na listingu 1.
Listing 1.
#define TSS_E0_TYPE TSI0_CH0 /* Electrode measurement method specification */ #define TSS_E1_TYPE TSI0_CH6 /* Electrode measurement method specification */ #define TSS_E2_TYPE TSI0_CH7 /* Electrode measurement method specification */ #define TSS_E3_TYPE TSI0_CH8 /* Electrode measurement method specification */ #define TSS_E4_TYPE TSI0_CH13 /* Electrode measurement method specification */ #define TSS_E5_TYPE TSI0_CH14 /* Electrode measurement method specification */ #define TSS_E6_TYPE TSI0_CH15 /* Electrode measurement method specification */ #define TSS_E7_TYPE TSI0_CH5 /* Electrode measurement method specification */ #define TSS_E8_TYPE TSI0_CH9 /* Electrode measurement method specification */ #define TSS_E9_TYPE TSI0_CH11 /* Electrode measurement method specification */ #define TSS_E10_TYPE TSI0_CH10 /* Electrode measurement method specification */ #define TSS_E11_TYPE TSI0_CH12 /* Electrode measurement method specification */