Obsługa kontrolera klawiatur pojemnościowych w mikrokontrolerach Freescale Kinetis

Cechy TSI

W module TSI zaimplementowano funkcjonalności umożliwiające prosty i zarówno wydajny odczyt stanów przycisków klawiatur pojemnościowych. Główne cechy modułu TSI to:

  • Możliwość odczytu stanu przycisków we wszystkich trybach pracy mikrokontrolera,
  • Automatyczny cykliczny odczyt stanu przycisków z konfigurowalnym czasem przerwy między odczytami lub pojedynczy odczyt,
  • Tryb działania z obniżonym poborem prądu (poniżej 1 µA),
  • Współpraca z wieloma przyciskami (do 16 niezależnych elektrod z oddzielnymi rejestrami),
  • Automatyczna detekcja zmiany pojemności z konfigurowalnym górnym i dolnym poziomem pojemności oddzielnie dla każdej z elektrod,
  • Praca w trybie przerwań – generowanie przerwania po każdym zakończonym procesie skanowania elektrod,
  • Wykrycie zwarcia elektrody do napięcia zasilania lub masy,
  • Wykrycie przekroczenia czasu konwersji.

Tryby pracy TSI

Moduł TSI może pracować w trzech różnych trybach: tryb ciągły aktywny (continuous active mode), tryb aktywny wyzwalany programowo (software triggered active mode), tryb ciągły o obniżonym poborze prądu (continuous low power mode).

Tryb ciągły aktywny

Cechy trybu ciągłego aktywnego:

  • Wszystkie włączone elektrody są skanowane w sposób ciągły,
  • Okres skanowania jest określany przez wartość rejestru SMOD,
  • Tryb dedykowany do pracy mikrokontrolera w trybie aktywnym.
Tryb aktywny wyzwalany programowo

Cechy trybu aktywnego wyzwalanego programowo:

  • Wszystkie elektrody są skanowane jeden raz,
  • Brak okresu skanowania.
Tryb ciągły o obniżonym poborze prądu

Cechy trybu ciągłego o obniżonym poborze prądu:

  • Tylko jedna elektroda jest skanowana w sposób ciągły,
  • Elektroda może zostać użyta do wybudzenia mikrokontrolera z trybu uśpienia,
  • Okres skanowania jest niezależny od okresu skanowania w trybie ciągłym aktywnym,
  • Tryb jest aktywowany gdy mikrokontroler przechodzi do trybu uśpienia (bit STPE musi być ustawiony),
  • Tryb umożliwia obniżenie poboru prądu pobieranego przez moduł TSI.

Konfiguracja TSI

Przykładowy kod źródłowy do konfiguracji modułu TSI przedstawiono w listingu:

 

Przedstawiony kod można podzielić na kilka podpunktów:

  1. Na początku odbywa się włączenia zegarów – dla modułu TSI oraz portu PORTA. Włączenie sygnału zegarowego dla portu PORTA jest wymagane, gdyż jeden z konfigurowanych kanałów TSI (channel 5) jest dołączony do wyprowadzenia PORTA 4, którego podstawową funkcją nie jest praca jako wejście modułu TSI.
  2. W kolejnym etapie konfigurowany jest rejestr kontrolny (control register) i statusowy  (status register) GENCS. Ustawiana jest liczba procesów skanowania i preskaler. Dodatkowo skonfigurowany może zostać tryb pracy, przerwania, wykrywanie błędów oraz możliwość generowania przerwania po każdorazowym zakończeniu skanowania elektrod. Jeśli używany jest tryb o niskim poborze prądu, konieczne jest wskazanie zegara referencyjnego (LPCLKS) oraz interwał skanowania (LPSCNITV).
  3. Następnie konfigurowany jest kontrolny rejestr skanowania (scan control register) (SCANC). Określa on parametry elektryczne ładowania i rozładowywania kondensatora elektrody, w tym prąd ładowania i źródło odniesienia (EXTCHRG, REFCHRG) oraz parametry czasowe jak okres skanowania, który zależny jest od zegara (AMCLKCS), preskalera (AMPSC) i dzielnika zegara (SMOD).
  4. Kolejny krok polega na ustawieniu rejestru PEN (pin enable register) włączającego piny TSI. 16 najmniej znaczących bitów 32-bitowego rejestru odpowiada za aktywowanie 16 wyprowadzeń elektrod. Tryb o obniżonym poborze prądu konfigurowany jest przez bity 16 – 19.
  5. Następnie konfigurowane są poziomy pojemności: maksymalny i minimalny. Wartości poziomów przechowywane są w rejestrach THRESHLDx. Każda elektroda ma przyporządkowany jeden rejestr. 16 najmniej znaczących bitów rejestru określa poziom wysoki pojemności, natomiast kolejne 16 najbardziej znaczących bitów określa poziom niski pojemności.
  6. Ostatnim etapem konfiguracji jest włączenie modułu TSI (ustawienie bitu TSIEN).

Przykładowe oprogramowanie

Firma Freescale przygotowała przykładowe oprogramowanie dla modułu TSI (zostało ono zamieszczone w załączniku do artykułu). Jest ono przeznaczone na platformę Freescale Tower. Jej działanie polega na odczycie stanu czterech przycisków klawiatury pojemnościowej i sygnalizacji wciśnięcia lub braku wciśnięcia przycisków za pomocą diod LED. Schemat konfiguracji modułu TSI przedstawiono na rysunku 4.

 

Rys. 4. Przykładowa procedura inicjalizacji modułu TSI

Rys. 4. Przykładowa procedura inicjalizacji modułu TSI

 

Do pobrania

O autorze