Dwukanałowy multiplekser magistrali I2C

Dwukanałowy multiplekser magistrali I2C

Minimoduł multipleksera magistrali I2C będzie przydatny, gdy współpracujący układ slave nie ma możliwości zmiany adresu. Dobrym przykładem jest czujnik gazu SGP30 czy czujnik oświetlenia VEML. Gdy zależy nam na użyciu pary takich układów, musimy zastosować zaprezentowany multiplekser.

Podstawowe parametry:
  • zastosowane różne typy złączy umożliwiają łatwe podłączenie do wielu popularnych grup modułów,
  • multiplekser widoczny jest na magistrali pod adresem 0x70 i zapis pod ten adres ustala aktywną magistralę,
  • szeroki zakres napięcia zasilania – 2,33...5,5 V, dzięki czemu układ współpracuje poprawnie z Arduino, STM Nucleo, Raspberry PI i nie tylko.

Moduł zawiera układ dwukanałowego multipleksera magistrali I2C typu PCA9540B, którego schemat wewnętrzny został pokazany na rysunku 1. Aktywny kanał jest wybierany poprzez bezpośrednią konfigurację jednego rejestru i nie wymaga dodatkowych wyprowadzeń sterujących.

Rysunek 1. Schemat wewnętrzny PCA9540B (za notą NXP)

Budowa i działanie

Schemat ideowy modułu został pokazany na rysunku 2. Sygnały magistrali I2C wraz z zasilaniem części cyfrowej doprowadzone są do złączy I2CA...I2CE umożliwiających podłączenie zgodne ze standardami spotykanymi w najpopularniejszych zestawach uruchomieniowych.

Rysunek 2. Schemat ideowy multipleksera

Magistrala I2C doprowadzona jest do wyprowadzeń SCL/SDA, a z multipleksera wyprowadzona jest na dwie grupy złączy I2C0 A...E i I2C1 A...E. Dioda LD sygnalizuje obecność zasilania, rezystory R2...R7 podciągają wstępnie magistralę I2C, ich wartość można zoptymalizować w zależności od docelowego napięcia zasilania układu. Układ PCA9540B widoczny jest na magistrali pod adresem 0x70 i ma tylko jeden rejestr kontrolny, który można odczytywać i zapisywać. Domyślnie po włączeniu zasilania obie magistrale są odłączone i w rejestrze inicjowana jest wartość 0x00, zapis wartości 0x04 wybiera magistralę I2C0, zapis 0x05 magistralę I2C1, zapis pozostałych wartości wyłącza obie magistrale.

Montaż i uruchomienie

Moduł zmontowany jest na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 3. Sposób montażu jest klasyczny i nie wymaga opisu.

Rysunek 3. Schemat płytki PCB

Dla sprawdzenia modułu podłączonego do Raspberry Pi można zastosować narzędzia z pakietu i2ctools. Dla testów do wyjść I2C0/I2C1 modułu podłączone są dwa identyczne multiczujniki środowiskowe, w których nie ma możliwości zmiany adresu. Poleceniem
i2cdetect -y 1 sprawdzamy obecność modułu na magistrali (listing 1).

Listing 1. Sprawdzenie obecności modułu na magistrali

0 1 2 3 4 5 6 7 8 9 a  b c d e f
00: -- 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --

Po włączeniu zasilania PCA9540B widoczny jest pod adresem 0x70 i ma odłączone wyjścia multipleksera. Wybieramy aktywny kanał I2C0 poleceniem: i2cset -y 1 0x70 0x04. Po ponownym skanowaniu magistrali poleceniem i2cdetect -y 1 widoczne są wszystkie zainstalowane na module przetworniki dostępne poprzez I2C0 oraz układy dostępne po „pierwotnej” stronie multipleksera (listing 2).

Listing 2. Widoczne wszystkie zainstalowane na module przetworniki dostępne poprzez I2C0 oraz układy dostępne po „pierwotnej” stronie multipleksera

0 1 2 3 4 5 6 7 8 9 a  b c d e f
00: -- 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- 29 -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU 49 -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- 58 -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- 76 --

Aby wybrać drugi kanał I2C1, wykonujemy polecenie: i2cset -y 1 0x70 0x05 i ponownie sprawdzamy magistralę. Tym razem widoczne będą czujniki z kanału I2C1. Jeżeli wszystko działa poprawnie można modułu użyć we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2, R3, R4, R5, R6, R7: 4,7 kΩ 1% (SMD0603)
Kondensatory:
  • C1: 0,1 μF (SMD0603)
  • C2, C3: 1 μF (SMD0603)
Półprzewodniki:
  • LD: LED zielona (SMD0805)
  • U1: PCA9540BDP (TSSOP8)
Pozostałe:
  • I2C0E, I2C1E, I2CE: złącze SIP4, 2,54 mm
  • I2C0A, I2C1A, I2CA: złącze EH kątowe
  • I2C0B, I2C1B, I2CB: złącze JST 1 mm
  • I2C0C, I2C1C, I2CC: złącze PH 2 mm
  • I2C0D, I2C1D, I2CD: złącze Grove proste
Artykuł ukazał się w
Elektronika Praktyczna
luty 2022
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik maj 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje kwiecień 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna maj 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów