- umożliwia pracę układów o tym samym adresie na jednej magistrali I2C,
- realizuje konwersję poziomów napięciowych,
- zasilanie w zakresie od 2,5 do 5 V.
Opisany minimoduł rozwiązuje problem adresacji, nie modyfikując pozostałej części transmisji. Idea działania jest prosta – port wejściowy modułu połączony jest z magistralą na której mamy już układ bez możliwości zmiany adresu, np. PCA9536D, a port wyjściowy połączony jest z drugim identycznym układem. Translator adresów powoduje logiczną zmianę adresu drugiego układu, tak aby był widoczny od strony wejścia pod innym adresem.
Budowa i działanie
Nie tylko idea działania jest prosta, realizacja również, ponieważ możemy zastosować dedykowany układ LT4316A Analog Devices. Jego strukturę wewnętrzną pokazano na rysunku 1.
Oprócz translacji adresów możliwa jest konwersja poziomów napięciowych pomiędzy magistralami, w zakresie 2,5 do 5 V.
Schemat minimodułu translatora adresu Został pokazany na rysunku 2.
Sygnał wejściowy z magistrali I2C jest doprowadzony do złącz I2CIA/I2CCIB, a następnie do rezystorów podwieszających z drabinki RP1 (sekcje A i D) i układu U1 LTC4316. Sygnał wyjściowy, po translacji adresów, dostępny jest na złączach I2COA/I2COB. Magistrala także jest podwieszona rezystorami RP1 (sekcje B iC). Rozdzielenie zasilania obu stron – VCCI i VCCO umożliwia translację napięć, gdy funkcja ta nie jest potrzebna, to należy połączyć potencjały VCCI i VCCO za zewnątrz płytki.
Rezystory Rht, Rhb, Rlt, Rlb służą do ustalenia bajtu translacji adresu, zgodnie z tabelą 1.
Zasadę działania translacji pokazano na rysunku 3.
Adres wyjściowy jest funkcją XOR adresu wejściowego i ustawionego bajtu translacji. W modelu wlutowane są zwory w miejsce Rhb i Rlt, co daje bajt translacji 0001111(RW).
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej. Rozmieszczenie elementów pokazano na rysunku 4.
Montaż jest typowy i nie wymaga opisu. Zmontowany układ nie wymaga uruchamiania, należy jedynie wlutować rezystory ustalające bajt translacji zgodnie z wymogami aplikacji. Po podłączeniu magistral i zasilania moduł jest gotowy do pracy.
Praktyczne sprawdzenie działania modułu można przeprowadzić używając Raspberry Pi i funkcji i2cdetect -y 1, w pierwszym przypadku pod adresem 0x41 znaleziony jest układ PCA9536, w drugim ten sam układ po translacji bajtem 0x0F znaleziony zostaje pod adresem 0x4e, co pokazuje rysunek 5.
Układ znaleziony pod adresem 0x04 włączony po stronie „wejściowej” translatora pozostanie z niezmienionym adresem.
Warto wspomnieć o układach LTC4317 i LTC4318 zawierających translatory o odpowiednio – jednym lub dwóch wejściach oraz dwóch wyjściach, które przydatne są przy realizacji translacji dla trzech jednakowych układów na jednej magistrali lub dwóch niezależnych magistral i jednym przesunięciu adresu.
Adam Tatuś
adam.tatus@ep.com.pl
- RP1: Drabinka rezystorowa CRA06S08 10 kΩ
- RHB, RHT, RLB, RLT: 1 MΩ SMD0805
- C1: 100 nF SMD0603
- U1: LTC4316CMS
- I2CIA, I2COA: Złącza goldpin 1×4 2,54 mm
- I2CCIB, I2COB: Złącza goldpin 1×4 2 mm