Benötigt der i2c-Bus einen Pull-UP

Gast #755052
Lesenswert?

Hallo alle miteinander, trifft das zu das der I2C-Bus für SDA und SDL 
jeweils einen Pull-UP Widerstand benötigt und gibt es da eine 
Widerstandsvorgabe? hab nämlich gelesen das mind. 3ma über den Pull-UP 
fließen sollen, mein Controller kann aber nur 2ma ab.

Vielen Dank schonmal
MfG Florian
#755071
Lesenswert?

florian wrote:
> mein Controller kann aber nur 2ma ab.
Der Controller muss bei I2C die Leitungen gegen Masse ziehen... Da Du 
von 2mA schreibst gehe ich dal davon aus dass es sich nicht um einen 
Mega oder Tiny handelt. Einfach mal im Datenblatt nachsehen ob der 
Controller unterschiedliche Ströme bei "L" und "H" hat.
#755075
Lesenswert?

@  florian (Gast)

>Hallo alle miteinander, trifft das zu das der I2C-Bus für SDA und SDL
>jeweils einen Pull-UP Widerstand benötigt und gibt es da eine
>Widerstandsvorgabe?

Je nach Geschwindigleit und Betriebsspannung zwischen 1K und 100K.

> hab nämlich gelesen das mind. 3ma über den Pull-UP
>fließen sollen, mein Controller kann aber nur 2ma ab.

Welcher Controller? Glaub ich kaum, die meisten können wesentlich mehr.
Ausserdem kannst du grössere Widerstände nutzen, dann wird der Bus nur 
etwas langsamer.

MFG
Falk
Gast #755079
Lesenswert?

Ja, der I2C-Bus benötigt einen Pull-up, an beiden Leitungen. Doch manche 
Bausteine können auch ohne Pull-up laufen, müssen den Bus dann 
allerdings als Master treiben. Geht, ist aber unsauber.

Üblich für die Pull-up's sind bei 5V Betriebsspannung irgendwas zwischen 
10k und 4,3k. Hängt von der Art und Menge der angeschlossenen Geräte ab 
(Kapazität der Busleitungen wäre hier ein Stichwort).

Den Strom kannst du ja berechnen :-) liegt selbst im worst-case deutlich 
unter 2mA.
#755092
Lesenswert?

@ Stefan (Gast)

>100k wären aber schon arg viel, oder?

Warum? Wenn man nur wenige ICs am Bus hat und kurze Leitungen und nicht 
schnell kommunizieren muss reicht das. Sagen wir mal 20pF 
Leitungskapazität +2x10pF für die ICs, macht 40pF. Mit 100k ergibt das 
4µs Zeitkonstante und ~8us Anstiegszeit. Damit macht man noch locker 
30kHz.

MfG
Falk
#2005342
Lesenswert?

Guten Abend,

was für Pullups soll ich am besten bei einem Sensirion SHT1X 
Temperatursensor nehmen? Im Datenblatt ist nur ein Pullup an DATA mit 
10k eingezeichnet und im Atmleldatenblatt vom Atmega 32 zwei 
Widerstände. Was ist euerer Meinung nach nun richtig. Fahre ich bei 
diesem Sensor mit jeweils einem Pullup von um die 2k richtig oder muss 
es unbedingt einer sein und dieser brauch um die 10K?

Danke!

Martin
#6114490
Lesenswert?

Joachim B. schrieb:
> weil I2C normalerweise OC (open collector ist) und durchaus 2
> verschiedene VCC haben kann.

Das ist nur zur Hälfte richtig:
Ja, I²C hat Open Drain bzw. Open Collector Ausgänge.
Nein, er kann pro Segment nur eine Versorgungsspannunghöhe haben. Wenn 
die Pull-up Widerstände an 3,3V hängen, wird es mit dem High-Pegel für 
die 5V Teilnehmer eng. Und wenn die Pull-ups an 5V hängen, dann machen 
die 3,3V Bausteine dicke Backen und klemmen den High-Pegel über ihre 
Eingangsdioden auf 3,3V. Oder sie gehen einfach kaputt.
Gast #6114551
Lesenswert?

Und ganz wichtig, für die ganz schlauen: auch mit nur einem Master darf 
man die clock nicht nach high treiben.

Siehe clock Stretching. Wenn irgendwo im SW-I2C ein paar 
"Erfahrungs-NOPs" auftauchen, ... dann hatte jemand die Idee.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren