Ekspander IO z układem PCA9531

Ekspander IO z układem PCA9531

Ekspander z układem PCA9531 wyróżnia się wśród innych rozwiązań tego typu. Każde z ośmiu wyprowadzeń IO uzupełnione jest o układ sterowania diodą sygnalizacyjną LED, z możliwością sprzętowego ustawienia dwóch niezależnych częstotliwości migania. Sterowanie stanem IO odbywa się poprzez zmianę stanu tylko jednego rejestru, co upraszcza sterowanie. Układ znakomicie ułatwia projektowanie prostych interfejsów użytkownika, w których konieczna jest jednoczesna obsługa przycisków, GPIO i LED.

Podstawowe parametry:
  • osiem wyprowadzeń IO,
  • wyjścia uzupełnione o układ sterowania diodą sygnalizacyjną LED,
  • możliwość ustawienia dwóch niezależnych częstotliwości sprzętowego migania w zakresie od 0,59 do 152 Hz,
  • sterowanie poprzez interfejs I2C,
  • możliwość zastosowania do 8 układów na jednej magistrali.

Schemat wewnętrzny układu PCA9531 został pokazany na rysunku 1. Wyjścia IO układu są typu otwarty dren i mogą być obciążone prądem do 25 mA w stanie niskim. To umożliwia bezpośrednie sterowanie diodą LED, oczywiście z odpowiednio dobranym rezystorem szeregowym. Całkowity prąd wyprowadzeń nie może przekraczać 100 mA. Układ może być zasilany napięciami z zakresu 2,3...5,5 V. Po włączeniu zasilania wszystkie IO ustawione są w stan wysokiej impedancji. Wyprowadzenia niewykorzystane do sterowania LED, po odpowiedniej konfiguracji układu, mogą zostać użyte jako uniwersalne linie IO.

Rysunek 1. Schemat wewnętrzny układu PCA9531

Budowa i działanie

Schemat ekspandera IO został pokazany na rysunku 2. Zawiera układ U1 typu PCA9531 połączony z trzema zworkami A0...A2 umożliwiającymi ustalenie adresu, zgodnie z tabelą 1. Dzięki temu możliwe jest zastosowanie do 8 układów na jednej magistrali. Zwora PU umożliwia aktywację rezystorów podciągających magistralę I2C.

Rysunek 2. Schemat ideowy modułu

Sygnały portów GPIO wraz z zasilaniem i magistralą I2C doprowadzone są do złączy J1 i J2. Na złączu J2 dostępny jest też sygnał sprzętowego resetu układu U1. Magistrala I2C wyprowadzona jest dodatkowo na złącza I2C (EH4), I2C1 (JST 1 mm).

Układ PCA9531 ma siedem rejestrów sterujących – tabela 2.

Procedurę zapisu do układu PCA9531 ilustruje rysunek 3. Po adresie slave zapisywany jest bajt sterujący, adresujący rejestr do zapisu (B2, B1, B0) oraz określający tryb autoinkrementacji adresu AI (AI=1).

Rysunek 3. Procedura zapisu do układu PCA9531
Rysunek 4. Procedura odczytu z układu PCA9531

Procedura odczytu z układu PCA9531 została pokazana na rysunku 4.

Montaż i uruchomienie

Ekspander IO jest zmontowany na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 5. Sposób montażu jest klasyczny i nie wymaga szczegółowego opisu.

Rysunek 5. Schemat płytki PCB

Dla sprawdzenia modułu można użyć Raspberry Pi. Po podłączeniu modułu do zasilania 3,3 V i magistrali I2C sprawdzamy obecność układu na magistrali poleceniem: i2cdetect -y 1. W modelu ustawiony jest adres 0x67 – wszystkie zwory A2, A1, A0 =1 i pod takim adresem powinien być widoczny. Dla odczytu stanu wejść konieczny jest zapis do rejestrów 0x05/0x06 wartości 0x00, odpowiadającej ustawieniu wyjść w stan wysokiej impedancji. Wpisujemy polecenia:

i2cset -y 1 0x67 0x05 0x00
i2cset -y 1 0x67 0x05 0x00

Następnie należy odczytać rejestr wejściowy INPUT (0x00) po uprzednim ustaleniu stanów 0/1 wyprowadzeń IO:

i2cget -y 1 0x67 0x00

Dla prostego sterowania wyjść wystarczająca jest ich odpowiednia konfiguracja w rejestrach LS0/LS1, zgodnie z tabelą 3.

Przypisanie LED do rejestrów LS jest następujące:

LS0 [0x05, B7..0] : LED3|LED2|LED1|LED0
LS1 [0x06, B7..0] : LED7|LED6|LED5|LED4

Po podłączeniu diod LED dla sprawdzenia ustawiamy wyjścia w stan niski (załączenie LED):

i2cset -y 1 0x67 0x05 0x55
i2cset -y 1 0x67 0x06 0x55

Następnie ustawiamy stan wysoki (wyłączenie LED), konieczne są zewnętrzne rezystory podciągające linie IO:

i2cset -y 1 0x67 0x05 0x00
i2cset -y 1 0x67 0x06 0x00

w celu konfiguracji migania konieczne jest ustawienie rejestrów PSCx, PWMx, okres migania określony jest wzorem:

BLINK0 = (PSC0 + 1) / 152
BLINK1 = (PSC1 + 1) / 152

a wypełnienie:

BLINK0 = PWM0 / 256
BLINK1 = PWM1 / 256

Dla przykładu ustalamy okres BLINK0 na 1,5 Hz (0xE3), BLINK1 na 0,75 Hz (0x71) oraz wypełnienie na 50% (0x80). Dla sprawdzenia podłączamy diody LED do wyprowadzeń IO0, IO4 i konfigurujemy układ:

i2cset -y 1 0x67 0x01 0xE3
i2cset -y 1 0x67 0x02 0x80
i2cset -y 1 0x67 0x03 0x71
i2cset -y 1 0x67 0x04 0x80

Wyjście IO0 ustawiamy na sterowanie z BLINK0, a IO4 na BLINK1:

i2cset -y 1 0x67 0x05 0x02
i2cset -y 1 0x67 0x06 0x03

Diody powinny migać z określonymi parametrami. Bez zmiany parametrów PSC/PWM diody można wyłączyć (LSx=00), załączyć (LSx=01) lub zmienić częstotliwość migania (LSx=10/11) tylko przez zapis rejestrów LS0/LS1, bez potrzeby ponownej konfiguracji układu.

Jeżeli wszystko działa, można układ zastosować we własnych projektach.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2, R4: 10 kΩ 5% (SMD0805)
  • R3: 2,2 kΩ 5% (SMD0805)
Kondensatory:
  • C1: 0,1 μF ceramiczny (SMD0805)
Półprzewodniki:
  • LD: dioda LED (SMD0805)
  • U1: PCA9531PW (SSOP16)
Pozostałe:
  • A0, A1, A2: listwa 1×3, 2,54 mm + zwory
  • I2C1: złącze JST 1 mm
  • I2C: złącze EH kątowe
  • J1: listwa 1×8, 2,54 mm
  • J2: listwa 1×9, 2,54 mm
  • PU: listwa 2×2, 2,54 mm + zwory
Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2022
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów