Ekspander I/O z interfejsem I2C

Ekspander I/O z interfejsem I2C

Prezentowany moduł jest ekspanderem GPIO sterowanym z magistrali I2C, o znacznie większej funkcjonalności niż popularny PCF8574. Zastosowany układ XRA1200 (Maxlinear) daje duże możliwości konfiguracji i pracuje przy napięciu 1,65...3,6 V, dzięki czemu jest odpowiedni m.in. dla Raspberry Pi czy STM32.

Podstawowe parametry:
  • wyjścia mogą być obciążone prądem do 8 mA,
  • wejścia tolerują napięcie 5 V,
  • zasilanie napięciem z zakresu 1,65…3,6 V.

Układ daje możliwość definiowania kierunku każdego z wyprowadzeń IO, sterowania rezystorami podciągającymi, konfiguracji buforów wyjściowych w trybie trójstanowym oraz elastycznej konfiguracji generowanych przerwań. Schemat wewnętrzny układu XRA1200 został pokazany na rysunku 1.

Rysunek 1. Schemat wewnętrzny XRA1200

Układ dostępny jest w dwóch wersjach: XRA1200 z załączonymi oraz XRA1200P z domyślnie wyłączonymi po resecie rezystorami podciągającymi.

Budowa i działanie

Schemat ideowy modułu został pokazany na rysunku 2.

Rysunek 2. Schemat modułu I2C_DIO8

Oprócz układu U1-XRA1200(P) zawiera trzy zworki A0...A2 umożliwiające ustalenie adresu oraz zworę PU umożliwiającą odłączenie rezystorów podciągających I2C – R1, R2. Pełna adresacja U1 umożliwia zastosowanie do 32 układów na jednej magistrali, w module ustawienie adresów jest ograniczone do 8 zgodnie z tabelą 1. Adresy nie pokrywają się z popularnym PCF8574, można więc stosować ekspandery na jednej magistrali.

Tabela 1. Adresacja układu XRA1200(P)
A2 A1 A0 Adres
GND SCL SCL 0x30 (0011 000X)
GND SCL SDA 0x32 (0011 001X)
GND SDA SCL 0x34 (0011 010X)
GND SDA SDA 0x36 (0011 011X)
VCC SCL SCL 0x38 (0011 100X)
VCC SCL SDA 0x3A (0011 101X)
VCC SDA SCL 0x3C (0011 110X)
VCC SDA SDA 0x3E (0011 111X)

Sygnały GPIO doprowadzone są do złączy J1 i J2, dodatkowo wyprowadzono sygnał przerwania J2-9. Wyjścia mogą być obciążone prądem do 8 mA w każdym ze stanów logicznych, co umożliwia bezpośrednie sterowanie niskoprądowymi LED zarówno stanem niskim, jak i wysokim, pod warunkiem nieprzekraczania traconej w układzie mocy (200 mW). PCF8574 ma większą wydajność prądową tylko dla stanu niskiego. Sygnały magistrali I2C i zasilanie doprowadzone są do czteropinowego złącza typu EH – I2C zgodnego z Arduino oraz do złącza I2C1 JST o rozstawie 1 mm.

Uwaga: niektóre fabryczne kable EH4 maja przeplot 1-4,2-3, aby je wykorzystać, należy zamienić kolejność wyprowadzeń w jednym złączu EH.

Moduł może być zasilany napięciami z zakresu 1,65...3,6 V. Dioda LD sygnalizuje obecność zasilania. Wyprowadzenie IO XRA1200 tolerują napięcie 5 V, ale należy zachować ostrożność podczas konfiguracji układu.

Montaż i uruchomienie

Moduł zmontowany jest na dwustronnej płyt-
ce drukowanej. Rozmieszczenie elementów zostało pokazane na rysunku 3. Sposób montażu jest klasyczny i nie wymaga opisu. Zmontowany moduł pokazuje fotografia tytułowa.

Rysunek 3. Schemat płytki PCB z rozmieszczeniem elementów: a) strona TOP, b) strona BOTTOM

Konstrukcja mechaniczna modułu umożliwia bezproblemową współpracę z płytkami stykowymi lub prototypowymi, zalecam stosowanie długich (30...40 mm) złączy SIP, wlutowanych tak, aby wyprowadzenia wystawały po obu stronach płytki drukowanej. Taki sposób montażu umożliwia wygodne stosowanie modułu w płytkach stykowych, ułatwia wyprowadzenie sygnałów oraz rozszerzanie magistrali I2C.

Sterowanie układem

XRA1200(P) ma osiem rejestrów ustalających tryb pracy GPIO oraz konfigurujących przerwania; skrócony opis rejestrów pokazano w tabeli 2, pełny opis dostępny jest w karcie katalogowej.

Dla szybkiego sprawdzenia działania moduł można podłączyć do Raspberry Pi i użyć funkcjonalności biblioteki i2ctools. Po ustawieniu adresu bazowego zworami A0...A2 moduł powinien być widoczny po odczycie magistrali poleceniem i2cdetect -y 1, co pokazano na rysunku 4 (ustawiony adres bazowy 7-bitowy 0x1F).

Rysunek 4. Detekcja XRA1200 na magistrali I2C

Poniżej kilka przydatnych poleceń:

  • Stan wejść może być odczytany bez dodatkowej konfiguracji (przy ustawieniach domyślnych) poleceniem: i2cget -y 1 0x1F 0x00
  • Wejścia mogą zostać zanegowane poleceniem: i2cset -y 1 0x1F 0x02 0xFF
  • Ustawienie wyprowadzeń jako wyjścia wykonujemy poleceniem: i2cset -y 1 0x1F 0x03 0x00
  • Stan wyjść zmieniamy poleceniem: i2cset -y 1 0x1F 0x01 0xFF
  • Ustawienie wyjścia w stan wysokiej impedancji: i2cset -y 1 0x1F 0x06 0xFF
  • Odczyt stanu rejestru wyjściowego GPIO: i2cget -y 1 0x1F 0x00

W przypadku ustawienia wyjść w tryb tri-State, odczyt rejestru GSR może różnić się od fizycznego stanu wyprowadzeń, warto o tym pamiętać.

Adam Tatuś

adam.tatus@ep.com.pl

Wykaz elementów:
Rezystory:
  • R1, R2, R3, R4, R5, R6: 4,7 kΩ SMD0805
Kondensatory:
  • C1, C2: 0,1 μF SMD0805
Półprzewodniki:
  • U1: ADUM1250ARZ SO8
Inne:
  • I2CAI, I2CAO: złącze EH4 kątowe
  • I2CBI, I2CBO: złącze SIP4 proste męskie
  • I2CCI, I2CCIA, I2CCO, I2CCOA: złącze JST 2 mm proste
  • I2CDI, I2CDI1, I2CDO, I2CDO1: złącze Grove proste
  • I2CEI, I2CEO: złącze JST4 1 mm
  • I2CGI, I2CGO: złącze śrubowe 2,54 mm MPT0.5/4-2.54
Artykuł ukazał się w
Czerwiec 2020
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich sierpień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów