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.
Skupię się na jego najważniejszej możliwości - dekodowaniu klawiatury matrycowej.
Zobaczmy najpierw jego wnętrze i wyprowadzenia:
Oraz przykładową aplikację z noty:
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:
Tabela przedstawiająca co oznaczają poszczególne ID eventów:
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
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
Moderatorzy:Jacek Bogusz, Grzegorz Becker, Moderatorzy
- Jacek Bogusz
- -
- Posty:470
- Rejestracja:12 maja 2010, o 17:37
- Lokalizacja:Poznań
- Kontaktowanie:
Re: ADP5585 - dekoder klawiatury i dodatkowe I/O
Super! Nieskomplikowany, użyteczny przykład. Dzięki za podzielenie się!
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości