Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

ADP5585 - dekoder klawiatury i dodatkowe I/O

dambo
-
-
Posty: 9
Rejestracja: 6 lut 2017, o 23:56

ADP5585 - dekoder klawiatury i dodatkowe I/O

Postautor: dambo » 17 lut 2017, o 19:44

Witam wszystkich.

W ramach Klubu Aplikantów Próbek otrzymałem moduł ADP5585. Jest to malutki układzik występujący w obudowach 16-Ball WLCSP lub 16-Lead LFCSP. Jest on przeznaczony głównie jako dekoder klawiatur matrycowych, maksymalnie 5x5 (możliwe są wszystkie typy konfiguracji AxB, gdzie A i B mieszczą się w zakresie 1-5 np 2x3, 1x5, 4x3), a także dodatkowo każdy pin może być wejściem/wyjściem, lub nawet można do nich przypisać proste funkcje logiczne.
Z mikrokontrolerem komunikuje się za pomocą interfejsu I2C. Podczas jego testów przysporzył mi trochę problemów, co było spowodowane tym, że niestety na płytce był mały błąd i masa z goldpinu nie łączyła się z masą układu, po poprawieniu wszystko działa bez zarzutu.

Obrazek

Skupię się na jego najważniejszej możliwości - dekodowaniu klawiatury matrycowej.
Zobaczmy najpierw jego wnętrze i wyprowadzenia:
Obrazek
Oraz przykładową aplikację z noty:
Obrazek
Konfiguracja układu do tej pracy jest bardzo prosta.
Jak widzimy wyżej musimy podłączyć piny Rx do wierszy klawiatury, natomiast kolumny do Cx.
Domyślny adres układu na szynie i2c to 0x34, nie mamy pinów do jego zmiany jak to zazwyczaj występuje w układach z tego typu komunikacją, jeżeli jednak potrzebujemy innego, możemy kupić wersję ADP5585, która różni się jedynie adresem (wtedy ma 0x30).
Rozpoczęcie pracy wymaga ustawienia zaledwie kilku rejestrów (przykład dla klawiatury 4x4):
PIN_CONFIG_A (0x38) na wartość 0x0f - oznacza to uaktywnienie pinów R0-R3 jako dekoder klawiatury
PIN_CONFIG_B (0x39) na wartość 0x0f - oznacza to uaktywnienie pinów C0-C3 jako dekoder klawiatury
GENERAL_CFG (0x3B) na wartość 0x80 - uruchamiamy wewnętrzny oscylator taktujący układ
INT_EN (0x3C) na wartość 0x01 - uruchamiamy przerwanie od wystąpienia eventu

Czym jest event w tym układzie - w konfiguracji dekodera klawiatury jest to każde wciśnięcie i zwolnienie jakiegoś przycisku. ADP5585 posiada wewnętrzne FIFO przechowujące spis eventów, abyśmy mieli pewność, że niczego nie przeoczymy. Odczytujemy to z dowolnego rejestru FIFO (0x03-0x12). Format otrzymanej danej wygląda następująco:
Obrazek
Tabela przedstawiająca co oznaczają poszczególne ID eventów:
Obrazek
Działanie wygląda więc tak - po wciśnięciu przycisku pin !IRQ przechodzi do stanu niskiego informując nas o nowym evencie. Główny mikrokontroler odczytuje zawartość FIFO, a następnie gasi flagę przerwania w ADP585 (rejestr INT_STATUS).

Przykładowa aplikacja - filmik z działania:
https://youtu.be/VpZQOxsce0Y

Zastosowany układ to STM32F030F4P6, wyświetla on na LCD HD44780 informacje o ostatnim wygenerowanym evencie. Kod aplikacji (projekt z Atollica) dostępny jest do pobrania tutaj:
https://bitbucket.org/dambo11227/kap-adp5585

Awatar użytkownika
Jacek Bogusz
-
-
Posty: 394
Rejestracja: 12 maja 2010, o 17:37
Lokalizacja: redakcja

Re: ADP5585 - dekoder klawiatury i dodatkowe I/O

Postautor: Jacek Bogusz » 22 lut 2017, o 20:44

Super! Nieskomplikowany, użyteczny przykład. Dzięki za podzielenie się!

Wróć do „Opisy i oceny aplikacji”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość