Jedes I2C-Modul wie zb Lcd-Interface,RTc oder BME280 hat Pullup's auf der Platine. Bisher habe ich Pullup's immer entfernt bis auf die eigenen Pullup's am µP. Wie macht Ihr das ? Wieso ist überhaupt auf jeder Platine ein Pullup paar, obwohl ein I2c-Bus doch immer mehrere Slaves hat. mfg harald
Ein Pull-up pro Bussegment TI Application Report SLVA689 "I2C Bus Pullup Resistor Calculation" https://www.ti.com/lit/an/slva689/slva689.pdf Für lange Busleitungen an jedem Ende einen.
harald.g schrieb: > Wieso ist überhaupt auf jeder Platine ein Pullup paar, Das fliegenden Aufbauten ganz praktisch. > Wie macht Ihr das ? Ich schaue mir bei Prototypen eigentlich jedes Signal mit dem Oszi an. Dabei konnte ich schon lustige Erscheinungen beobachten.... Gerade I2C ist da ein dankbarer Kandidat.
Hallo Wolfgang, dann muss ich also wie bisher "mühselig da SMD" die überzähligen Pullup's von jedem Modul entfernen. Gibt es keine andere Lösung harald
Arduino Fanboy D. schrieb: > Das fliegenden Aufbauten ganz praktisch. Korrektur: Das ist bei fliegenden Aufbauten ganz praktisch.
> dann muss ich also wie bisher "mühselig da SMD" die überzähligen > Pullup's von jedem Modul entfernen. > > Gibt es keine andere Lösung [0] HTH [0] https://de.wikipedia.org/wiki/Seitenschneider
Arduino Fanboy D. schrieb: > Korrektur: > Das ist bei fliegenden Aufbauten ganz praktisch. ..glaube das hat trotzdem fast jeder verstanden.;-))
harald.g schrieb: > dann muss ich also wie bisher "mühselig da SMD" die überzähligen > Pullup's von jedem Modul entfernen. Je nach dem, wieviele Slaves du dran hast und wie groß die Pull-Ups sind, kannst du sie evtl. auch drin lassen. Guck nach, was dein Treiber kann und wie groß der resultierende Gesamtwiderstand ist. Was hast du denn für ein Problem mit deinem I2C?
Hallo Wolfgang bis jetzt läuft alles gut da nur 4.7K als Pullup vorhanden sind. Aber wie ist es, wenn ich bei den neuen Slave zb Bme280 oder 0,91 ole Display die Pullups nicht entferne ? Gruß harald
harald.g schrieb: > Hallo Wolfgang > > bis jetzt läuft alles gut da nur 4.7K als Pullup vorhanden sind. > Aber wie ist es, wenn ich bei den neuen Slave zb Bme280 oder > 0,91 ole Display die Pullups nicht entferne ? > > Gruß > harald Kann gut gehen, muss es aber nicht. Wenns irgendwann zu viele Pullups sind wird der Gesamtwiderstand zu klein und der I2C-Treiber wird überlastet -> die Kommunikation wird zusammenbrechen.
harald.g schrieb: > Wieso ist überhaupt auf jeder Platine ein Pullup paar, > obwohl ein I2c-Bus doch immer mehrere Slaves hat. Weil es halt Dödel gibt, die die Pullups im Aufbau vergessen und dann bei Amazon dumme Bewertungen schreiben, dass der Sensor nicht funktioniert. Prinzipiell darf I2C natürlich mehrere Pullups haben. Da keine Terminierung vorgesehen ist, ist auch egal, wo die Pullups sitzen. Natürlich empfiehlt es sich, bei Hot-plugable-Sensoren ein Pullup-Paar direkt an den Master zu setzen, um definierte Bedingungen zu schaffen. harald.g schrieb: > Gibt es keine andere Lösung Doch: Rechnen. Per I2C Specs muss ein Gerät für low-level 3mA schalten können (20mA bei Fast+, aber das brauchen wir nicht). Also sollte der Pullup für 5V nicht kleiner als 1,67kohm, bei 3,3V nicht kleiner als 1,1kohm sein. Real würde ich nicht unter 1k8 bzw. 1k2 gehen. Nach oben begrenzt die Leitungslänge = Leitungskapazität und die gewünschte Datenrate den Pullup. Man kann mit 10kohm bei kurzen Leitungen arbeiten, man kann auch mit 10kHz Clock bei 3m Leitung arbeiten. Üblicherweise arbeite ich mit 4k7 Pullups am Master. Da kann ich noch 3 Module mit je 10k dazuschalten, und bin immer noch über der 1k8 Grenze für 5V. Bei 3,3V kann ich sogar 6 Module mit je 10k dazuschalten, bevor ich die Grenze von 1k2 erreiche. Da der Strom nur bei laufender Datenübertragung fließt, entsteht auch bei Batteriebetrieb kein nennenswert höherer Strombedarf durch die Pullups, solange man nicht permanent Daten überträgt. Allerdings muss man berücksichtigen, dass manche Module einen Levelshifter und damit je 2 10k Widerstände pro Leitung enthalten - was die Anzahl der möglichen Module glatt mal halbiert. Also dann nur noch 3 Module bei 3,3V.
Karl K. schrieb: > Da kann ich noch 3 Module mit je 10k dazuschalten, Ich habe gerade mal geschaut, hier vorhandene China-Module haben je nach Tageslaune 4k7 oder 10k drauf. > Per I2C Specs muss ein Gerät für low-level 3mA schalten können In einem realen Gerät habe ich zwei Module mit 4k7 und drei mit 10k, also Glück, dass es knapp außerhalb der Spec. noch funktioniert.
harald.g schrieb: > Wieso ist überhaupt auf jeder Platine ein Pullup paar, > obwohl ein I2c-Bus doch immer mehrere Slaves hat. Nein. Die Module sind oft zum ausprobieren, da sind sie oft die einzigen, da ist es gut, wenn sie out of the Box funktionieren. In dein Design, an dein Gerät kommen deine Leiterplatten, mit den reinen ICs und den Pullups, die Du brauchst.
harald.g schrieb: > "mühselig da SMD" die überzähligen Pullup's > von jedem Modul entfernen. Bei SMD ist destruktives Entlöten einfach: mit einem möglichst großen Lötkolben den Chip so lange braten, bis das Zinn an allen Kontakten geschmolzen ist.
A. S. schrieb: > In dein Design, an dein Gerät kommen deine Leiterplatten, mit den reinen > ICs und den Pullups, die Du brauchst. Klar, ich löte so einen BME280 mal schnell selber in meinem Design, wenn ich den für meinen Datenlogger brauche. Ich löte üblicherweise auch meine Raspis selber zusammen, die fertigen sind nur zum Ausprobieren. Clemens L. schrieb: > Bei SMD ist destruktives Entlöten einfach: Wobei man beim Pegelwandler mit Mosfet beachten muss, dass der auch runter muss und die D-S Strecke dann irgendwie gebrückt wird.
Man kann die Pullups lassen, muss aber schauen, dass die Buslast noch erlaubt ist. Welche das ist, steht in den Datenblättern der I2C-Bausteine. Nehmen wir mal komplett aus der Luft ein EEPROM: https://ww1.microchip.com/downloads/en/DeviceDoc/20005202A.pdf Hier lesen wir: Gar nichts. Bravo Microchip :-( Im Text steht aber, dass 2k für 400kHz nötig sind. Also können Werte über 2k als sicher gelten, sonst würde man das so nicht empfehlen. Hast du als 2x4k7 im Bus oder 5x10k ist das ok. 2x2k2 wäre nicht ok.
Karl K. schrieb: > Klar, ich löte so einen BME280 mal schnell selber in meinem Design, wenn > ich den für meinen Datenlogger brauche. Zum einen findest Du genauso Boards ohne Pullups (wie sie's machen, machen sie's verkehrt) Zum anderen kann doch das abwischen von 2 Widerständen beim Basteln nicht wirklich ein Problem sein. Das geht zur not mit fetter ausgebrannter Spitze. Dazufrickeln ist ohne Übung, passendes Hünerfutter und Werkzeug ungleich mehr Arbeit.
jemand schrieb: > Im Text steht aber, dass 2k für 400kHz nötig sind. Also können Werte > über 2k als sicher gelten, sonst würde man das so nicht empfehlen. > Hast du als 2x4k7 im Bus oder 5x10k ist das ok. 2x2k2 wäre nicht ok. Im Text steht: Since it is an open-drain terminal, the SDA bus requires a pull-up resistorto VCC (typical 10 k for 100 kHz, 2 k for 400 kHz). Die 2K sind typisch, nicht minimal. Es ist eher andersherum, um ihn mit 400 khz betreiben zu können, muss er niedriger sein als für 100 khz, also nicht viel mehr als 2K. Im Allgemeinen gibt es eher Probleme mit zu hohen PullUp-Widerständen als mit zu niedrigen, vor allem bei höherem Takt und längeren Leitungen. Sie müssen zur Leitungskapazität und den Taktzeiten passen. Und es ist generell besser an beiden Enden einer Leitung PullUps zu haben.
jemand schrieb: > Hier lesen wir: > Gar nichts. Bravo Microchip :-( Weil der Wert in der I2C Spec steht. Daher weiß ich, daß der XYZ-Chip 3mA liefert, so er denn das I2C Logo trägt. Also: Bravo Microchip, keinen unnötigen Platz im Datenblatt verschwendet und es nicht mit redundanten Informationen zugemüllt. MfG Klaus
Hi >Hier lesen wir: >Gar nichts. Bravo Microchip :-( Wieso? steht doch drin: D4 VOL Low-level Output Voltage — — 0.40 V IOL = 3.0 mA, VCC = 2.5V ------------ Und das stimmt mit der I2C-bus Spezifikation überein: IOL LOW-level output current VOL = 0.4 V 3 - ... mA --- ------------ MfG Spess
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.