I2C konwersja 3,3 na 5,0 V.

35

Próbuję połączyć urządzenie 3.3VI 2 C z 5V Arduino.

Nie mam żadnych problemów z linią SCL. Mogę użyć prostego dzielnika napięcia, ale mam problem z linią SDA, ponieważ jest ona dwukierunkowa.

W ogóle nie jestem pewien, jak sobie z tym poradzić. Zastanawiałem się nad dodaniem pary diod z dzielnikiem napięcia po stronie wejścia slave i niczym więcej na wejściu master.

Czy są jakieś inne rozwiązania?

JohnC
źródło
Przyszli czytelnicy powinni być świadomi, że chociaż OP może używać SCL tylko w jednym kierunku, I2C ogólnie pozwala SCL na dwukierunkową.
Photon

Odpowiedzi:

25

Dobrym dokumentem na ten temat jest dwukierunkowy przełącznik poziomu dla I2C-bus i innych systemów, które wykorzystują pojedynczy mosfet jako dwukierunkowy przełącznik poziomu.

sivu
źródło
Lubię obwód Philipsa. Sprytny. W pewnym sensie mogłoby być lepiej, gdyby wyjścia I2C nie musiały pochłaniać całego prądu ze wszystkich podciągnięć, ale zaprojektowanie aktywnego repeatera I2C jest trudne; Nie sądzę, że można tego dokonać przy pomocy normalnej logiki, ponieważ repeater musi być w stanie wykryć zbocze narastające i zareagować na nie, zanim jakiekolwiek urządzenia I2C będą mogły.
supercat
2
Link nie działa!
Zimano
14

Aby rozwinąć odpowiedź sivu, jest to powszechne zastosowanie w tak zwanych „przełącznikach magistrali”, które są w zasadzie kontrolowanymi przez logikę tranzystorami MOSFET. Korzystanie z dyskretnych tranzystorów MOSFET ma pewne wady (pasożytnicza pojemność / sprzężenie pojemnościowe to jeden) i wybór dobrego tranzystora MOSFET może być trudny. Przełączniki magistrali są zoptymalizowane do stosowania w szybkich obwodach logicznych.

Tworzy je kilku producentów, w tym Fairchild, TI, IDT i Pericom. Spójrz na NC7SZ384 .

Zobacz między innymi następujące aplikacje:

Jason S.
źródło
8

Wiele Arduino ma wbudowaną obsługę działającą przy 3,3 V. Właściwie wszystkie mogą działać przy 3,3 V, a schemat układu FTDI wyjaśnia, jak to w przykładzie. Paul, który stworzył Teensy USB Arduino , zasugerował, że mogę rozdzielić kabel USB i otworzyć napięcie 3,3 V zamiast linii V CC kabla. Możesz tego spróbować. Ale są też inne opcje.

  1. Sprawdź poziomy logiczne dla Arduino. Wierzę, że obsługują 3,3 V jako WYSOKA logika nawet na Atmel 5 V. Artykuł w SparkFun stwierdza: „* Podłączenie styku wyjściowego cyfrowego 3,3 V do styku wejściowego 5 V jest często proste. Większość urządzeń jest dość tolerancyjnych na minimalne napięcie, które zaakceptuje jako cyfrową wysoką wartość. Na przykład większość mikrokontrolerów Atmel akceptuj cokolwiek powyżej 0,6 * V CC jako tak wysokie, więc urządzenie 3,3 V musi wysyłać poziom powyżej 3 V (0,6 * 5 V). * "
  2. Kup jeden z klonów Arduino, który zwarł selektory 3,3 V i 5 V. Używam klosza RBBB, który ustawiłem układ kabli zasilających FTDI na 3,3 V. Ale jest wiele innych, które mają rzeczywiste opcje konfiguracji 3,3 V, w tym jedno z ostatnich oficjalnych Arduinos, jeśli dobrze pamiętam. Można również skorzystać z USB teensy z jego wtyczki Arduino i postępuj zgodnie ze wskazówkami na jego miejscu zainstalowania regulatora 3,3V .
  3. Połącz kabel USB i zapewnij źródło zasilania laboratoryjnego o wartości 3,3 V zamiast linii V CC kabla USB. Powinien być niski prąd, jak zasugerował Paul. Stąd albo dobrej jakości źródło napięcia. Możesz także po prostu połączyć kilka baterii szeregowo, aby uzyskać pożądane napięcie.
  4. Jeśli jesteś zainteresowany, mogę spróbować sprawdzić schemat Twojego Arduino i być może możliwe jest dokonanie zmiany w konfiguracji FTDI, która pozwoliłaby na 3,3 V.

Na koniec prowadzimy dyskusję, która może Cię tutaj zainteresować na Chiphackerze na temat jednokierunkowych i dwukierunkowych rozwiązań obniżania napięcia. Przydatny jest ten artykuł na temat SparkFun wspomniany przez todbota, podobnie jak dyskusja na temat dwukrotnego artykułu MOSFET połączonego z SparkFun. Podsumowując artykuł SparkFun:

  • Rezystor wbudowany. Jednokierunkowy. Tylko obniżenie - zmniejsza prąd, diody zaciskowe we / wy układów scalonych mogą ograniczyć maksymalny pobór mocy.
  • Rezystory szeregowe. Jednokierunkowy. Tylko łagodniejsze, ale szczegółowe.
  • Dioda. Jednokierunkowy. Odejść. Bezpieczniej Wysokie od 5 V diod blokowych; strona 3,3 V łączy się z wysokim. Ale jeśli odwrócisz konfigurację diod, czy nie możesz również zwiększyć?
  • MOSFET. Dwukierunkowy. Step-down lub step-up.
  • W komentarzach: Przykład izolacji optycznej: 4N25. Wysoki prąd.
  • W komentarzach: Przykład diody Zenera: 1N4728A
  • W komentarzach: 74HC244 / 125 jednokierunkowy
cyphunk
źródło