Gdy pinów brakuje, ekspander IO sytuację ratuje

Gdy pinów brakuje, ekspander IO sytuację ratuje
5 (100%) 3 votes

PC8575CTS zaadaptowany do testówZapewne już nie raz każdy budujący układ oparty o µC stanął w obliczu faktu, gdy zaczęło brakować pinów i portów komunikacyjnych do monitorowania „otoczenia” lub sterowania peryferiami. Pierwszy raz miałem takową potrzebę gdy zechciałem zbudować układ prezentujący informacje na siedmiosegmentowych wyświetlaczach LED. Pole odczytowe zbudowane było z 4 takich wyświetlaczy ale dwukolorowych 😉 Jak każdy wtedy szybko policzy mamy 8 pinów na poszczególne segmenty i dwa zasilające, w moim przypadku Anody, dla każdej pozycji cyfry. Mnogość połączeń uprościłem stosując obsługę multipleksową, niemniej i tak zostało jeszcze sporo wyprowadzeń do obsługi. Wtedy to zdecydowałem się na zastosowanie jednoportowego ekspandera IO o oznaczeniu PCF8574P oraz dekodera z kodu BCD na 7-seg. Będąc zaciekawionym takich rozwiązań zakupiłem kiedyś też układ PC8575CTS w małej obudowie SSOP24 (dwa pełne porty I/O).

 

Jak widać na załączonej fotce raster wyprowadzeń drobniutki – 0,65mm. Postanowiłem wtedy przetestować się i swoje domowe możliwości. Metodą żelazkową wyprodukowałem takie przejściowe PCB, aby można układ było wetknąć do płytki testowej i cokolwiek próbować z nim zrobić. Żeby było weselej wszytko montowałem lutownicą pistoletową z grotem drucianym. Stara poczciwa Lutola 🙂 dała radę i kaktus oczywiście też. Pod powiększeniem aparatu wszystko widać jak na dłoni i to super wyraźnie. Najestetyczniej może to i nie wygląda ale jak widać da się 😆 bez flux-ów itp bo wtedy jeszcze takowych nie posiadałem.:-P Tak sobie zaglądam na tą radosną twórczość z przed półtora roku i z perspektywy czasu dodał bym jeszcze do wyposażenia zworki na piny adresowe, dla zminimalizowania ilości połączeń zewnętrznych.

 Wybrany ekspander IO, zarówno jeden jak i drugi w swojej budowie i funkcjonalności stanowi maksimum prostoty w działaniu i minimum komplikacji w obsłudze.

ekspander I/O 8bit opis wyprowadzeń

ekspander I/O 8bit opis wyprowadzeń

ekspander I/O 16bit opis wyprowadzeń

ekspander I/O 16bit opis wyprowadzeń

ekspander IO PCF8574

Więc do dyspozycji mamy:
– dwie linie magistrali TWI (I²C)SDA i SCL,
– wyjście generujące sygnał przerwania dla µC, po zmianie stany jednego z wyjść – /INT,
– trzy linie do konfiguracji adresu A0 A1 i A2,
– piny I/O określone jako quasi-bidirectional I/O P0 do P7 lud do P17 w ekspanderze dwubajtowym (PCF8575C).

Krótko mówiąc układ PCF8574 to 8-bitowy ekspander I/O (układ wejścia/wyjścia) dla magistrali dwukierunkowej dwuprzewodowej (I²C). Jest przeznaczony do pracy przy napięciu zasilania VCC z przediału 2,5 V do 6V.
PCF8574 funkcjonuje jako zdalny port I/O ogólnego przeznaczenia współpracując z  większości rodzin mikrokontrolerów. Urządzenie posiada 8-bitowy dwukierunkowy port quasi – quasi-bidirectional (P0-P7), w tym zatrzaski na wyjściach o dużej wydajności prądu umożliwiając  bezpośrednie sterowanie diody LED.
Każdy pin I/O może być stosowany jako wejście i wyjście, bez zastosowania sygnału sterującego dla kierunku danych. Po włączeniu zasilania wejścia/wyjścia są w stanie wysokim. W tym trybie pracy, źródło prądu jest aktywne tylko do VCC. Dodatkowy silny pullup do VCC umożliwi szybkie narastanie krawędzi przebiegu prostokątnego na mocno obciążonych wyjściach. Właśnie taką właściwość określa się mianem quasi-bidirectional.
Aby wykorzystać pin I/O jako wejście, wymagane jest by najpierw ustawić go w stan wysoki. Pamiętając że po uruchomieniu IC wejścia/wyjścia są już w stanie wysokim, nie wymaga to żadnych dodatkowych operacji w takim przypadku.

PCF8574 posiada wyjście (INT) typu otwarty dren, które może być podłączone do wejścia przerwania mikrokontrolera pełniącego funkcję MASTER w systemie. Przerwanie jest generowane przez zbocze narastające lub opadające na dowolnym pinie portu będącym w trybie wejściowym. Resetowanie i reaktywacje przerwania uzyskuje się, kiedy napięcia pinów na porcie powrócą do stanu pierwotnego (z przed wystąpienia przerwania), albo gdy dane są odczytywane lub zapisywane, do portu, który wygenerował przerwanie.
Kasowanie wyzwolonego przerwania odbywa się następująco:
dla trybu RAEAD – następuje z bitem potwierdzenia po zboczu narastającym sygnału SCL
dla trybu WRITE – następuje z bitem potwierdzenia po zmianie stanu z wysokiego na niski, na linii SCL.
Przerwanie, które wystąpi podczas impulsu ACK zegara może zostać utracone (lub być bardzo krótkie) z powodu wystąpienia impulsu kasującego.
Każda zmiana stanu dowolnych pinów I/O po zresetowaniu zostanie wykryta, a po następnym narastającym zboczu sygnału zegara, jest przekazywana jako sygnał INT.
Odczyt z lub zapis do innego urządzenia nie ma wpływu na sygnał przerwania.
Wysyłając sygnał przerwania na tej linii, układ zdalnego portu I/O może poinformować mikrokontroler o istniejących danych przychodzących na swoich pinach. A to wszystko bez konieczności komunikowania się za pośrednictwem magistrali I²C. Dlatego PCF8574 może pozostać prostym urządzeniem typu SLAVE.

 Rożnica pomiędzy układem PCF8574, a PCF8574A polega tylko i wyłącznie na odmiennie przygotowanym adresie sprzętowym. Detale można wypatrzeć na załączonym obrazku.

adres PCF8574 i PCF8574A

Bity opisane A0…A1 odpowiadają fizycznym pinom IC określając część adresu, którą konfigurujemy samodzielnie na PCB. Dla pina  zwartego do VCC podstawiamy 1, a dla połączonego do GND 0. Bil na pozycji przed literą A oznacza bit adresu odpowiedzialny za zapis/odczyt (1/0). JEgo wartość ustawiamy w kodzie, zależnie cod tego czy dane będą zapisywane (0) do ekspandera czy odczytywane (1). Bit najmniej znaczący znajduje się po prawej stronie.

Tym sposobem powoli zbliżam się do nieuniknionego … Znając adres można się dobrać do odczytu lub zapisu jakichś danych, wysterowywując wybrane piny. Będą tu pomocne tematy które opracowałem: I²C TWI – jak kaktus “dawał po garach” ;-D oraz Operacje na bitach w BASCOM – jak maskować lub ustawiać wybrane bity.
Pora na mały przykład kodu.

Po skonfigurowaniu komunikacji, i zapisaniu adresu odczytu do zmiennej Pcf8574r wykorzystując ten przykład spowodujemy zapisanie stanu portu do zmiennej Expander. To samo uzyskamy dzięki „nowszemu zapisowi”:

Więcej detali i polecenia do zapisu opisane są w przytoczonym wyżej artykule. Przykłądowe zastosowanie i kod do komunikacji można obejrzeć tu -> Impulsator i jego obsługa w Bascom według kaktusa 😉, DS1307 na “warsztacie”,

ekspander IO PCF8575C

Ten dwu portowy ekspander rządzi się prawami tymi samymi co PCF8574.

Warto przypomnieć że w tym przypadku prąd wyjściowy dla jednego pina IOL nie powinien przekraczać 20mA gdy pobierany będzie przez dłuższy czas. Dodatkowo suma prądu wyjściowego (w tym samym czasie) dla wszystkich pinów nie powinna przekraczać 100mA.

specyfikacja PCF8575C

Chymmm dlaczego zdecydowałem się opisać te nieskomplikowane i przydatne układy? … Chyba dlatego, że te nie młode rozwiązanie wydaje się być nieśmiertelne, a nowoczesne wersje ekspanderów mają wymyślne i zarazem rewelacyjne bloki funkcjonalne. Oczywiście te sprawdzone, wiekowe rozwiązania dalej są produkowane w swojej podstawowej formie.
I tak nowsze konstrukcje oprócz podstawowej funkcjonalności mogą zawierać:
– wyjścia dostosowane do sterowania większymi obciążeniami przez pojedynczy pin – nawet 100mA
– w pełni konfigurowalne kanały PWM o dużej rozdzielczości, do sterowania pracą silników w prostych układach napędowych, do regulacji jasności diod LED itp
– rozbudowane rejestry konfiguracyjne np Polarity Inversion Register, Input/Output Configuration Register
– konfigurowalne bloki do redukcji zjawiska drgania styków przycisku (Input Debouncing, with Selectable Debounce Time of 50 µs)
– wbudowaną nieulotną pamięć NV do dyspozycji użytkownika
– rozszerzony zakres napięć zasilających od 1.65V to 5.5 V
– zmniejszony pobór energii w stanie bezczynności – poniżej 1µA (Maxim 0.6µA)
– bardzo szybki interfejs komunikacyjny, np SPI działający z prędkością 10 MHz

W załączonych notach katalogowych można poczytać o tych nowalijkach, a w selektorach elementów jest możliwość wybrania ekspanderów o niezbędnej funkcjonalności.

Czasem warto się zastanowić czy takiej funkcjonalności nie da się uzyskać niewielkim nakładem pracy przy zastosowaniu niedrogiego µC.


Selektory IC różnych producentów, gdzie można przeglądnąć szeroką gamę produkowanych modeli ekspanderów I/O:

Texas Instruments

Maxim Intergrated

Microchip

NXP


Nota katalogowa układu scalonego PCF8574-expander_IO.pdf (240 pobrań) – magistrala TWI (I²C), 8bit
Nota katalogowa układu scalonego  PCF8575C.pdf (161 pobrań) – magistrala TWI (I²C), 16bit
Nota katalogowa układu scalonego PCA9535_PCA9535C.pdf (160 pobrań) – magistrala TWI (I²C)
Nota katalogowa układu scalonego PCA9536.pdf (160 pobrań) – magistrala TWI (I²C)
Nota katalogowa układu scalonego MCP23017-MCP23S17.pdf (160 pobrań) – magistrala TWI (I²C)
Nota katalogowa układu scalonego MAX7304.pdf (182 pobrania) – magistrala TWI (I²C)
Nota katalogowa układu scalonego TCA9534A.pdf (161 pobrań) – magistrala TWI (I²C)
Nota katalogowa układu scalonego CY8C95x0A_38-12036_0H_V.pdf (162 pobrania) – magistrala TWI (I²C)
Nota katalogowa układu scalonego MAX7317.pdf (182 pobrania) – magistrala SPI
Nota katalogowa układu scalonego MAX7301.pdf (160 pobrań) – magistrala SPI

Share Button
Tagi , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

5 × 3 =