Hallo, Evtl wurde meine Frage schon mal gestellt und beantwortet, aber ich konnte sowohl im Forum als auch bei google nichts genaues dazu finden: Ich will einen I2C Bus betreiben, an dem hängt nur der Master (AVR) und ein Slave (IC von NXP). Die Versorgungsspannung ist zwischen 2V und 3V (Batteriebetrieb). Jetzt bin ich gerade am Platinen designen, aber ich weiß nicht wie hoch der Pullup sein muss, das ist auch meine Frage. Immer wieder ließt man zwischen 10k und 100k, passt das immer? Weil im Datenblatt des NXP IC steht nur die Formel Tr / Cp. Wobei mir schon klar ist das Tr die rise-time und Cp die Kapazität der Leitung ist. Es muss doch einen einfacheren Weg geben als die Kapazität erst zu messen, meine Leitung ist nur auf der Platine und gerade mal max. 5cm lang. Geschwindigkeit ist auch kein Problem, der IC kann max. 400 Kb/s aber mir reichen schon 100 Kb/s vollkommen aus (selbst weniger sind ok). Kann mir mal jemand exemplarisch zeigen wie ich jetzt also auf Rp komme? Das wäre sehr nett :D MfG
Fer T. schrieb: > 10k und 100k eher kleiner 10k. > Kann mir mal jemand exemplarisch zeigen wie ich jetzt also auf Rp komme? Schau mal hier: I2C als Hausbus: Kleinerer Pull-Up Gruß Oliver
Hi >Immer wieder ließt man zwischen 10k und 100k, passt das immer? Offizielle Quellen sind kompetenter: http://www.google.de/url?sa=t&rct=j&q=i2c%20specification&source=web&cd=1&ved=0CFIQFjAA&url=http%3A%2F%2Fi2c2p.twibright.com%2Fspec%2Fi2c.pdf&ei=uIqAT8LSNs7Psgbsm6myBA&usg=AFQjCNFzCR_2yktllOLcJDWod6H1twDKkQ&cad=rja MfG Spess
Am einfachsten währe wohl immer noch die internen Pullups des AVRs zu benutzen.. (Bei einer so kleinen Schaltung wie der deinen)
Und dann läßt du den Bus mal etwas übertragen und guckst mit dem Oszi, ob die Daten rechtzeitig vor der steigenden Flanke vom SCL stabil sind ... Im Layout würde ich auf jeden Fall Pull-Ups vorsehen, weil die internen des ATmega abhängig von deinem Slave evtl. schon arg groß sein können.
Simon S. schrieb: > Am einfachsten währe wohl immer noch die internen Pullups des AVRs zu > benutzen.. (Bei einer so kleinen Schaltung wie der deinen) Haut das hin? Weil die haben (wenn ich es richtig im Kopf habe) zwischen 20k und 100k. Ist dann nicht etwas groß? spess53 schrieb: > Offizielle Quellen sind kompetenter: > > http://www.google.de/url?sa=t&rct=j&q=i2c%20specif... > > MfG Spess Also in den Spezifikationen steht ja das max. 3mA gesenkt werden können, also ist das mit etwas Spielraum doch in meinem Fall: R = U/I R = 2V/0,001mA = 2k Ohm Reicht aus oder? Bez. Weil ich die noch hier rum liegen habe, 3,3K sollten auch gehen oder? MfG PS: Kann man allgemein sagen: Je kleiner die Strecke ist, also je kleiner Cp desto kleiner kann man auch Rp wählen. Oder nicht?
Fer T. schrieb: > PS: Kann man allgemein sagen: > Je kleiner die Strecke ist, also je kleiner Cp desto kleiner kann man > auch Rp wählen. > Oder nicht? Nein, je kleiner Cp desto größer kann man Rp machen, oder besser umgekehrt: je größer Cp desto kleiner muß man Rp machen. MfG Klaus
Klaus schrieb: > Nein, je kleiner Cp desto größer kann man Rp machen, oder besser > umgekehrt: je größer Cp desto kleiner muß man Rp machen. Ah ok, merk ich mir :D Aber es spricht nichts dagegen jetzt dir 3,3k zu nehmen? Das spart mir erst mal eine Bestellung ;) MfG
Hi
>Also in den Spezifikationen steht ja das max. 3mA gesenkt werden können,..
An welcher Stelle?
Bei 2-3V liegt der minimale Pull-Up zwischen 500 und 750 Ohm. Macht 4mA.
muss man aber nicht ausnutzen. Mit den 3k3 solltest du auskommen.
MfG Spess
spess53 schrieb: > An welcher Stelle? Seite 20: The I2C-bus specification spess53 schrieb: > Mit den 3k3 solltest du auskommen. Ok, das hört sich gut an. DANKE :D
spess53 schrieb: > An welcher Stelle? Seite 39: > The supply voltage limits the minimum value of resistor Rp > due to the specified minimum sink current of 3 mA at > VOLmax = 0.4 V for the output stages MfG Klaus
Sorry, ich grabe den Thread noch mal aus, geht noch mal um die Push Ups: Und zwar wird der TWI nur selten gebraucht (nur mehrmals täglich, vielleicht 10-30 mal pro Tag) aber Stromverbrauch ist für die Anwendung extrem wichtig, daher die Frage, ob es sinnvoll ist die Pullups hinter Transistoren zu schalten. Also der uC schaltet die Pullups ein (habe nur noch einen Pin am uC) der uC liegt während der Off-Phasen im Sleep mode als Device dient ein RTC-IC. Weil wenn ich rechne: R = 3,3K und Umax = 4,5V dann: I = ~1mA was doch recht viel ist. Oder vertue ich mich und der Strom fließt nur wenn der auf dem Bus was übertragen wird? DANKE :D
Fer T. schrieb: > Oder vertue ich mich und der Strom fließt nur wenn der auf dem Bus was > übertragen wird? Ja. Außerdem wäre da noch die Möglichkeit, das TWI einfach zu deaktivieren, wenn es nicht gebraucht wird.
Meistens sind die Pullups zu gross, 10k führt zu grässlich flachen Flanken, die bei schneller Peripherie oft zu Fehlern führt. Der Mindeststrom durch die Pullups soll 3mA sein, das ist nun mal die Spezifikation (I2C-Spezifikation Kap. 16.1) und tut den Stromsparern nur dann weh, wenn die Leitung LO ist. Je mehr Geräte dran sind, um so kleiner müssen die Pullups sein. Faustregel: bei 5 Volt sind Pullups von 1k5 (bis 1k8) recht gut, bei 3.3 Volt 1k (bis 1k2). Damit kann man auch schnelle Bauteile und längere Leitungen bedienen. Natürlich funktioniert es auch oft, wenn man mit 4k7 operiert, aber man ist halt nicht auf der sicheren Seite.
vn nn schrieb: > Ja. Außerdem wäre da noch die Möglichkeit, das TWI einfach zu > deaktivieren, wenn es nicht gebraucht wird. Guter Einwand, danke :D Wieder Platz auf dem Layout gespart ;) tt2t schrieb: > Der Mindeststrom durch die Pullups soll 3mA sein Sicher das mindestens 3mA wenn ich in den Datenblättern nach sehe steht dort der maximale zu senkende Strom. MfG und DANKE :D
> Sicher das mindestens 3mA wenn ich in den Datenblättern nach sehe steht > dort der maximale zu senkende Strom. Im Kap. 16.1 der I2C-Spezifikation ist Fig.37 mit den Min- und Max-Werten für die Pullups. Da braucht man nur nachzusehen. Dort ist für 3.3 Volt sogar ein Wert unter 1k0 zu abzulesen.
tt2t schrieb: > Im Kap. 16.1 der I2C-Spezifikation ist Fig.37 mit den Min- und > Max-Werten für die Pullups. Da braucht man nur nachzusehen. Dort ist für > 3.3 Volt sogar ein Wert unter 1k0 zu abzulesen. Ja aber das sind die Minimum Werte und ich denke nicht das ich auf 2 cm Leiterbahn eine so hohe Kapazität habe, also sollte ich eigentlich mit meinen 3,3K ganz gut fahren. MfG
Hab letztens einen DS1307 über I2C angeschlossen und glatt die Pull-Ups vergessen. Also die I2C-Routinen auf interne Pull-Ups umgestrickt: Funktioniert einwandfrei. Sind ja auch nur 2cm vom AVR zum DS1307 und nichts weiter am Bus. Man muss halt nur beachten, dass man DDRx und PORTx umschalten muss. Geht also nur mit Software-I2C und eigenen Routinen. Die 3k3 reichen auf jeden Fall, 10k gehen da auch noch. Bei den kurzen Leitungen und nur einem Slave ist das ziemlich unkritisch.
Wenns auf den Stromverbrauch ankommt kannst du ja 100KOhm reinmachen und dann soweit mit der Geschwindigkeit rutergehen bis es wieder geht.
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.