Elektroda.pl
Elektroda.pl
X
CControls
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

I2C połączenie procesora (GPIO 3,3v) z czujnikiem tolerującym napięcie max 1,8V

norbis15 13 Cze 2018 14:00 597 15
  • #1 13 Cze 2018 14:00
    norbis15
    Poziom 14  

    Witam,
    Stanąłem w sytuacji w której nie wiadomo dlaczego nie mogę się skomunikować z czujnikiem, link:Link
    Moje pytanie czy korzystając z I2C, chcąc połączyć układy o różnych napięciach wystarczy proste połączenie :
    I2C połączenie procesora (GPIO 3,3v) z czujnikiem tolerującym napięcie max 1,8V

    Czy wymagane są translatory napięcia z tranzystorów mosfet: (źródło: Link)

    I2C połączenie procesora (GPIO 3,3v) z czujnikiem tolerującym napięcie max 1,8V

    Ponieważ procesor na 3,3V ma Low level input voltage 0,3xVDDIO+0.07 czyli ok 1V. Wydawało mi się, że podciągnięcie linii SDA i SCL do +1,8V wystarczy żeby komunikacja działała. Czy ktoś może się wypowiedzieć jak to jest z tym łączeniem urządzeń po I2C?

    0 15
  • CControls
  • #2 13 Cze 2018 14:06
    krzysiek_krm
    Poziom 34  

    Witam,

    norbis15 napisał:
    Ponieważ procesor na 3,3V ma Low level input voltage 0,3xVDDIO+0.07 czyli ok 1V.

    a jaka jest katalogowa wartość high level input voltage dla tego procesora ?
    Możliwe, że 1.8 V to dla niego za mało.

    Pozdrawiam

    0
  • CControls
  • #3 13 Cze 2018 14:37
    3156217
    Użytkownik usunął konto  
  • Pomocny post
    #5 13 Cze 2018 14:50
    krzysiek_krm
    Poziom 34  

    Wygląda na to, że 1.8 V to za mało aby procesor zinterpretował to jako stan wysoki. Należy zastosować konwertery poziomów.
    Powinieneś sprawdzić czy mosfet-y w konwerterze prawidłowo otwierają się przy napięciu 1.8 V.

    0
  • Pomocny post
    #6 13 Cze 2018 14:57
    3156217
    Użytkownik usunął konto  
  • #7 13 Cze 2018 15:49
    norbis15
    Poziom 14  

    W takim razie czujnik powinien odbierać komendy od procesora, natomiast procesor może nie widzieć odpowiedzi. To jak wytłumaczyć nie ściąganie bitu ACK do poziomu masy po przesłaniu całego bajtu?
    " The sensor indicates the proper reception of a byte by pulling the SDA pin low (ACK bit) after the falling edge of the 8th SCL clock."
    I2C połączenie procesora (GPIO 3,3v) z czujnikiem tolerującym napięcie max 1,8V I2C połączenie procesora (GPIO 3,3v) z czujnikiem tolerującym napięcie max 1,8V
    To jest zrzut z przesłania pierwszego bajtu adresu inicjującego transmisje oczywiście.

    Dodano po 41 [minuty]:

    Pytam, gdyż wykonałem już dwie płytki i nie chciałbym wykonać trzeciej po czym okazało by się, że pomimo zastosowania konwersji napięć komunikacja z czujnikiem dalej nie działa. Czy po zastosowaniu konwerterów czujnika zacznie odpowiadać, czy jeszcze coś może jest niepoprawne?

    0
  • #8 13 Cze 2018 16:32
    3156217
    Użytkownik usunął konto  
  • #9 13 Cze 2018 18:15
    excray
    Poziom 39  

    norbis15 napisał:
    To jest zrzut z przesłania pierwszego bajtu adresu inicjującego transmisje oczywiście.

    Sekwencja startu nie wygląda poprawnie.

    0
  • #10 13 Cze 2018 18:18
    ex-or
    Poziom 16  

    Ja przed cięciem ścieżek przeskanował bym wszystkie adresy. Możliwe (całkiem prawdopodobnie), że układ nie odpowie, ale to nic nie kosztuje a idiotyczne błędy adresu są aż nazbyt częste.

    Start cond. wygląda podejrzanie, ale trzeba by zobaczyć trochę więcej przed. Jeśli trigger jest ustawiony na zbocze opadające SDA to raczej jest OK.

    10k w podciąganiu może być sporo za dużo przy tym napięciu. To przy 3V3 zwykle daje się rezystor ok 3-4k.

    0
  • #11 13 Cze 2018 18:54
    al777
    Poziom 26  

    Pewnie będzie odrobinę nie na temat, ale muszę coś dodać.

    Układ konwertera poziomów (ten z pierwszego postu) będzie działał praktycznie zawsze, jeśli dopasowujemy szyny o napięciach np. 5V i 3,3V. Natomiast gdy chcemy dopasować szyny 3,3V oraz 1,8V , trzeba się dobrze zastanowić nad wyborem odpowiednich tranzystorów MOS do tego konwertera. Większość popularnych i łatwo dostępnych, np. BSS123, ma napięcie załączenia na poziomie właśnie 1,8V, a trafić się może egzemplarz włączający się dopiero przy 2V, co go w oczywisty sposób dyskwalifikuje do tej roli. O tym nie wolno zapominać.

    Czy użyty procesor jest w stanie (np. przy obniżonym taktowaniu) pracować na napięciu 1,8V ? Jeśli tak, może kolega uruchomi sobie komunikację z czujnikiem, gdy oba zasilania są równe, a potem można poeksperymentować z poziomami napięć.

    Od siebie mogę jedynie dodać, że działały mi układy zasilane z 2,5V oraz 3,3V i podłączone bez translatora. Podejrzewam, że w przypadku kombinacji 2,5V (procesor) i 1,8V (czujnik) również nie byłoby problemów.

    0
  • #12 13 Cze 2018 23:09
    3156217
    Użytkownik usunął konto  
  • #14 14 Cze 2018 13:17
    excray
    Poziom 39  

    W sekwencji startu powinien być taki moment gdy sda i scl jest w stanie niskim. Nie widzę go tutaj.

    0
  • #15 14 Cze 2018 13:53
    3149400
    Użytkownik usunął konto  
  • #16 14 Cze 2018 17:02
    krzysiek_krm
    Poziom 34  

    excray napisał:
    W sekwencji startu powinien być taki moment gdy sda i scl jest w stanie niskim. Nie widzę go tutaj.

    Czy to jest możliwe ?
    Autor zapewne używa sprzętowego interfejsu I2C więc powinno być dobrze.
    Myślę, że istnieje jeszcze jedna możliwość - uszkodzenie czujnika.
    Może ten procesor podczas rozruchu programu jakoś "niechcący" manipuluje tymi pinami ustawiając tam wysoki poziom 3.3 V, wówczas czujnik może ulec uszkodzeniu.

    0