I2C - rezystory podciągające

Jan 04, 2005 18 Replies

Czy jeżeli mam tylko dwa urządzenia - procesor i zegar czasu to czy do komunikacji między nimi są niezbędne jakieś rezystory (podciągające do zasilania) czy można podłączyć SCL i SDA zegara czasu bezpośrednio do portów mikroprocesora??



Pozdrawiam!



Rezystory podciągające są niezbędne ale możesz wykorzystać wbudowane w uC jeżeli ma.

Rezystory podciągające są niezbędne ale możesz wykorzystać wbudowane w uC jeżeli ma.

Andrzej napisal(a):

Ktore procki maja pullupy rzedu kilku kilo?

Wed, 5 Jan 2005 00:10:19 +0100 jednostka biologiczna o nazwie "BYRRT!" snipped-for-privacy@op.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:

Nie marudz tylko daj te dwa rezystory po 4,7k bo pozniej sie bedziesz dziwil dlaczego raz dziala a raz nie :-)

BLE_Maciek napisal(a):

A jak sa dlugie sciezki i kilka ukladow, to nawet jeszcze mniej. Na przyklad 1k8.

A kto powiedział, że rezystancja musi być rzędu kilku kilo ? Przy odległościach rzędu kilku centymetrów i braku silnych zakłóceń wystarcza wbudowane podciąganie.

Zbych napisal(a):

Ogladales kiedys nomogramy Philipsa?

Dwa porty sa.

A nawet czytałem. Tylko, że morma podaje takie wartości które zapewnią poprawne działanie w skrajnych warunkach. A przy dwóch scalakach i 5 cm odległości nie trzeba podciągać linii rezystorem kiloomowym.

Wed, 05 Jan 2005 12:36:47 +0100 jednostka biologiczna o nazwie Zbych snipped-for-privacy@onet.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:

Eee bawicie sie w jakis Tajwan - "co by tu jeszcze wylutowac" czy co ? :-)

Zbych napisal(a):

Czyli jestesmy madrzejsi od normy w celu zaoszczedzenia dwoch groszy? Niezle.

BTW musialem kiedys dac rezystory nawet mniejsze niz norma wskazywala. Nabujalem sie dlugo z ukladem, produkowanym zreszta od jakiegos czasu, po dribnej zmianie softwaru. Okazalo sie, ze jeden rejestr w jednej kosci zle sie programowal. Winne byly za duze oporki.... Sporo nerwow to kosztowalo.

Wed, 05 Jan 2005 16:48:57 +0100 jednostka biologiczna o nazwie Marcin E. Hamerla snipped-for-privacy@Xpoczta.Xonet.Xpl.removeX> wyslala do portu 119 jednego z serwerow news nastepujace dane:

To I2C jest juz ujete w jakies oficjalne normy (IEEE ? ISO ?) ? Myslalem ze to po prostu standard wymyslony przez Philipsa. Zreszta jak widac inne firmy nie posiadaja nawet prawa do napisania ze ich produkty sa na I2C i zawziecie stosuja okreslenie "two wire interface".

BLE_Maciek napisal(a):

Pies drapal sformulowanie. Mozesz wpisac jakies inne pasujace Ci slowo.

Zrozum, że norma została opracowana tak, żeby zapewnić działanie w najgorszych warunkach. Jak podłączasz jedną pamięć, w odległości 1cm od procesora to na grzyba ci te kiloomowe rezystory ? Przecież wystarczy policzyć stałą czasową (wbudowane podciąganie i pojemności wejściowe) i oszacować czy to będzie działało, czy nie ? I wcale nie chodzi mi tu o jakieś oszczędności, tylko o świadomy wybór, a nie bezmyślne naśladownictwo.

Bez obrazy, ale wydaje mi się (bo pewność możesz mieć tylko ty), że gdybyś spróbował oszacować pojemności wiszące na linii (i dobrał rezystory zamiast ślepo iść za normą), to uniknąłbyś tego problemu.

Jak sie upowszechnia to zazwyczaj sie i jakas norma pojawia. Zobacz np GPIB, Centronics itp.

Unormowana jest chyba SMbus - a to praktycznie I2C.

Moze Philips to zastrzegl i pare k$ trzeba zaplacic ?

J.

Wed, 05 Jan 2005 18:23:21 +0100 jednostka biologiczna o nazwie Zbych snipped-for-privacy@onet.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:

Dla pewnosci ?

Zbych napisal(a):

W jakich najgorszych warunkach?

Nie sadze bys mial tak gruntowna wiedze bys byl w stanie oszacowac wszystko.

Wic w tym, ze rezystancja pullupa portu jest okreslona w badzo szerokich graniacach.

Ale ja wszystkie pojemnosci policzylem. BTW Ty naprawde nie znasz dokumentu Philipsa. Gdybys znal, to bys wiedzial, ze aby skorzystac z nomogramow trzeba pare rzeczy policzyc.

Maksymalna częstotliwość, zajętość magistrali (ilość układów), długość magistrali (znowu pojemność).

Producent podaje np. maksymalną wartość.

Nie unoś się, tylko wytłumacz jak cukiernikowi. Patrzę właśnie na te "nomogramy". Zakładam najprostszy przypadek, czyli podłączenie do procesora zegarka rtc lub pamięci. Maksymalna wartość podciągania jest ograniczona przez dwie rzeczy:

  1. Prąd pobierany przez wejscie w stanie wysokim (np. dla 8583 producent podaj max. 1uA) i dopuszczalny spadek napięcia w stanie wysokim (załóżmy
0.2V). Wyszło mi 0.2V/1uA=200k. Jeśli procesor to 2051, to podciąganie ma około 100k (oczywiście jest to nieliniowe). Wygląda na to że powinno być ok.
  1. Maksymalna częstoliwość pracy. Nie znalazłem pojemności wejść dla
8583, ale zakładając że jest to 10pF i mamy podciąganie około 100k, to stała czasowa wynosi 1us. Zakładając, że kondensator można uznać za naładowany po 5 stałych czasowych stan wysoki powinien trwać minimum 5us, czyli można przyjąć 10us na okres zegara. Wychodzi mi na to, że przy częstotliwości magistrali 100kHz nie powinno być problemu. Jeśli uwzględnimy pojemność wejść procesora to częstotliwość ta spadnie do 50kHz, co przy programowej implementacji i2c nie jest żadnym problemem. Pomijam przy tym, że ustawienie wyjścia w 2051 w stan wysoki powoduje, że przez 1 cykl zegarowy jest włączane silne podciąganie przyspieszające przeładowanie szyny.

A teraz wracając do wykresów to sensowne odczyty Rp można zrobić dla pojemności szyny >50pF (pdf: THE I 2C-BUS SPECIFICATION VERSION 2.1). Więc dla jednego układu nalezy się oprzeć raczej na własnych szacunkach. Zakładając, że nie zależy nam na super prędkości wszystko wydaje się być ok. Czy popełniłem gdzieś błąd w rozumowaniu ?

na sa dlugie sciezki strasznie :)) jak bedzie tego 2cm to bedzie dobrze hehe :) Te dwa rezystory dac do +5V? Bo widzialem rowniez uklady z 4 razystorami (dwa do zasilania i dwa w kazdej lini)

Pozdrawiam!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required