Forum: Mikrocontroller und Digitale Elektronik Benötigt der i2c-Bus einen Pull-UP


von florian (Gast)


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

von Gast (Gast)


Lesenswert?


von Jörg B. (manos)


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.

von Falk B. (falk)


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

von Stefan (Gast)


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.

von Stefan (Gast)


Lesenswert?

@ Falk:

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

von Falk B. (falk)


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

von Thomas O. (tarzanwiejane)


Lesenswert?

@florian
Pullups sind absolut notwendig. 4,7k oder 10k sollten es auf jeden fall 
tun.

cu Tarzanwiejane

von Peter D. (peda)


Lesenswert?

2mA ist merkwürdig.

Philips hat für I2C-Bausteine mindestens 3mA festgelegt und daran halten 
sich alle mir bekannten ICs.

Deshalb nehme ich immer 1,8k (=2,8mA) für den I2C.


Peter

von A. F. (artur-f) Benutzerseite


Lesenswert?

Wenn ich einen Atmega als Master habe und ca. 10 Atmegas als Slave, was 
empfiehlt sich da als Rpu zu nehmen? Sollte man zu 4,7k oder 10k 
tendieren, wenn man noch störsicher und möglichst schnell übertragen 
möchte?

von Lupin (Gast)


Lesenswert?

Wo setzt man den pullup denn hin? am master?

Oder macht es sinn jeden teilnehmer einen zB 100k Pullup zu geben damit 
sich bei z.B. 8 teilnehmern rund 12 k ergeben?

von A. F. (artur-f) Benutzerseite


Lesenswert?

Eigentlich (im Normalfall) am Master. Ein Pull-UP kann aber sonst wo am 
BUS platziert werden. Das Spiel glaube ich keine Rolle, ob am Anfang 
oder am Ende. Die Pull-Ups sollen die Pegel der Leitungen auf VCC 
ziehen.

von Martin E. (mrtnernst)


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

von Rubelus (Gast)


Lesenswert?

Ich habe meine SHT11 immer mit 10k hochgezogen. Laufen wunderbar.

von Spess53 (Gast)


Lesenswert?

Hi

In einem Datenblatt steht Rp<25k.

MfG Spess

von Frage (Gast)


Lesenswert?

Wozu ist Pull-Up nötig?

von Joachim B. (jar)


Lesenswert?

Frage schrieb:
> Wozu ist Pull-Up nötig?

weil I2C normalerweise OC (open collector ist) und durchaus 2 
verschiedene VCC haben kann.

von Carsten W. (eagle38106)


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.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Carsten W. schrieb:
> Das ist nur zur Hälfte richtig:

OK vielleicht hatte ich einen Denkfehler, es gilt nur low als gültiges 
Datum und ich kann OC 5V Kreise auch auf 3,3V runtertrimmen, gültig ist 
low.

Was eben nicht geht ist ein pullup nach 3,3V auf der einen Seite und ein 
pullup nach 5V auf der anderen Seite.

von Wolfgang (Gast)


Lesenswert?

Joachim B. schrieb:
> Was eben nicht geht ist ein pullup nach 3,3V auf der einen Seite und ein
> pullup nach 5V auf der anderen Seite.

Geht auch, wenn dazwischen noch ein MOSFET sitzt. ;-)
(siehe AN10441 von NXP)
https://www.nxp.com/docs/en/application-note/AN10441.pdf

von as (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.