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
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.
@ 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
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.
@ 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
@florian Pullups sind absolut notwendig. 4,7k oder 10k sollten es auf jeden fall tun. cu Tarzanwiejane
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
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?
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?
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.
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
Ich habe meine SHT11 immer mit 10k hochgezogen. Laufen wunderbar.
Frage schrieb: > Wozu ist Pull-Up nötig? weil I2C normalerweise OC (open collector ist) und durchaus 2 verschiedene VCC haben kann.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.