Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Przedłużenie szyny i2c do ponad 10m

27 Jan 2010 06:40 2867 22
  • #1
    User removed account
    User removed account  
  • Helpful post
    #2
    Balu
    Level 38  
    Generalnie one nie są przewidziane na takie odległości, ja bym dał skrętke E5 z ekranem umasionym, do tego możesz mieć nadzieję, że niska prędkość na szynie jest i możesz ją podciągnąć trochę mocniej do plusa...
    Tyle bez głębszej ingerencji.
  • Helpful post
    #3
    tmf
    Moderator of Microcontroller designs
    A ja obstawiam, ze to niemozliwe. Skretka z pewnoscia odpada - szyna I2C nie jest szyna roznicowa, wiec puszczanie sygnalow w dlugich rownoleglych przewodach spowoduje przesluchy i niemoznosc jakiejkolwiek transmisji. Drugim problemem sa okreslone dla I2C czasy narastania/opadania zboczy. No i dodatkowo autobus to srodowisko o duzych zakloceniach, pomijam juz to co stanie sie z ukladem podczas jazdy w burzy - 10m antena.
  • #4
    User removed account
    User removed account  
  • Helpful post
    #5
    atom1477
    Level 43  
    Wyjścia SCL i SDA "wzmocnić" tranzystorami a rezystory podciągające zmniejszyć do 470...220R.

    Dodano po 1 [minuty]:

    Ale niestety będziesz musiał skombinować jakiś autobus bo musowo to przetestować w praktyce.
  • #6
    Balu
    Level 38  
    A czy ja kazałem komuś puścić jedną parą wszystko?:>
    skrętka jako tanie wyjście;)

    Co do autobusu to koniecznie testy wwewnątrz,a ten układ texasa wygląda na wymarzony:)
  • Helpful post
    #7
    _Robak_
    Level 33  
    Możesz jeszcze spróbować takie coś, pościć SDA i SCL różnicowo, w jednej parze SDA i ~SDA, i tak samo z SCL, a na płytce docelowej złożyć z zaszumionych sygnałów komplementarnych całosć. Złożyć taki sygnał możesz za pomocą układu DS75115.
  • #8
    User removed account
    User removed account  
  • #9
    asembler
    Level 32  
    A czy w ogóle to jest szyna I2C?
  • #10
    bolek
    Level 35  
    Popieram Atoma, sam to przerabiałem. Ale z prostą parą tranzystorów to za bardzo nie przejdzie- linia działa w dwie strony.
    I2C ogólnie nie lubi pojemności, to że nadajnik "wolno" wysyła to nic nie znaczy. Ważne jest to że odbiornik potrafi zobaczyć 100 lub 400kHz i tu jest ograniczenie (zbocza muszą być praktycznie idealne).

    Ja maksymalnie poleciał i2c na 7m. pull up 1k, były nawet warystory. Nie mówie że było idelanie, bo pstrykanie odbiornikiem w okolicach kabla powodowało wykolejenie transmisji, ale się przed tym zabezpieczyłem programowo.

    Autobusy to przeważnie diesle, tam z sianiem po eterze nie jest tak źle
  • #11
    User removed account
    User removed account  
  • #12
    atom1477
    Level 43  
    bolek wrote:
    Popieram Atoma, sam to przerabiałem. Ale z prostą parą tranzystorów to za bardzo nie przejdzie- linia działa w dwie strony.

    Ale mi nie chodzi o Push-Pulla z dwóch tranzystorów, tylko o dwa tranzystory na dwie linie. Czyli po jednym tranzystorze na linię i wtedy będzie to dwukierunkowe.
  • #13
    Chris_W

    Level 38  
    Jak są tranzystory to można nawet napięcie podnieść, prądy dać maksymalne możliwe w tych warunkach.
  • Helpful post
    #14
    sq6ade
    Level 40  
    Są gotowe scalone bufory na szyne I2C. Może to załatwi sprawę.
    Znalazłem kilka w góglu pod hasłem "I2C line buffer"
  • #15
    User removed account
    User removed account  
  • #16
    bolek
    Level 35  
    Obciążalność zależy od danego proca- trzeba zanurkować do odpowiedniego manuala. O filtrze i ograniczeniu czasu narastania coś namieszałeś, nawet się to kłóci z cyfrową ideą tego wyjścia!. Ograniczenie jest w postaci źródła prądowego.

    Slave (i w ogóle starsze procki) lubią dawać tylko stan niski (zwierane przez wewnętrzny tranzystor), wysoki stan podawany jest za pośrednictwem pullupa, który albo znajduje się w układzie, albo ty go zamontujesz.
    Ogólnie w takim przypadku pullup zda się do pewnej granicy, zwróć uwage jak będa się rozkładać proądy w twojej linii w zalezności gdzie i jakie rezystory postawisz. Ba! w przypadku gdy wystawisz stan wysoki, prąd w linii praktycznie nie popłynie i właśnie dla stanu wysokiego wiele łatwiej wykoleić transmisje.

    Wypadało by zadać pytanie, czy ten twój master tylko wysyła do slave informacje czy też odczytuje?
    Jeśli tylko wysyła, to na drugim końcu wystarczy postawić dwie negujące bramki i w ten sposób zapewnić sobie przepływ prądu w linii dla obydwóch stanów
  • #17
    User removed account
    User removed account  
  • #18
    bolek
    Level 35  
    technics6 wrote:


    Oj chyba nie masz racji. Schemat blokowy modułu I2C w AVR'ach Atmela.

    Przedłużenie szyny i2c do ponad 10m

    Nie wszystkie wyjścia w AVr są takie same, nie wspomniałeś że pytasz o sprzetowe I2c. Tak czy siak, filtr to masz jedynie do szpilek. Nikt z premedytacją nie będzie ograniczał stromości zbocza w wyjściu cyfrowym. Tam pisze "control" a nie "filter" :)

    technics6 wrote:

    Nie da się zrobić szyny i2c w jedną stronę, bo po zakończeniu transmisji master czeka, aż slave ściągnie do zera linię SDA.


    Pisząc sciąganie masz na myśli właśnie potwierdzenie?. Master na nic nie czeka, albo dostanie ack albo nie. To co się stanie dalej to już kwestia programisty.
    Jestem pewien że robiąc stabilną transmisje, nie trzeba będzie czytać żadnych potwierdzeń, bądz wysyłać wszystko jeszcze raz
  • #19
    Freddie Chopin
    MCUs specialist
    bolek wrote:
    Tak czy siak, filtr to masz jedynie do szpilek. Nikt z premedytacją nie będzie ograniczał stromości zbocza w wyjściu cyfrowym.

    Sam jesteś w błędzie - stromość zboczy w komunikacji I2C jest określona precyzyjnie i nie jest ona równa "Inf V/s"! Nie jest to ograniczenie do bardzo łagodnych zboczy, jednak JEST ograniczeniem do konkretnych wartości. W STM32 nawet możesz kontrolować ten parametr.

    4\/3!!
  • #20
    bolek
    Level 35  
    Dwóch na jednego? Dobra, w kwesti zbocza ustąpie :)
  • #21
    User removed account
    User removed account  
  • #22
    tmf
    Moderator of Microcontroller designs
    bolek wrote:
    Pisząc sciąganie masz na myśli właśnie potwierdzenie?. Master na nic nie czeka, albo dostanie ack albo nie. To co się stanie dalej to już kwestia programisty.
    Jestem pewien że robiąc stabilną transmisje, nie trzeba będzie czytać żadnych potwierdzeń, bądz wysyłać wszystko jeszcze raz


    A skad bez ACK chcesz wiedziec, czy slave w ogole odpowiedzial? Nawet wyslanie adresu wymaga ACKa. Wiec linia SDA musi byc dwukierunkowa. Dla implementacji pelnej specyfikacji I2C linia SCK tez musi byc dwukierunkowa, bo slave moze trzymac ja w stanie niskim sygnalizujac masterowi, ze ma zwolnic.
  • #23
    User removed account
    User removed account