Die kurze Frage : Gibt es einen Unterschied zwischen der Verwendung (auf einem Steckbrett) eines standardmäßigen 10-K-Pullup-Widerstands mit Durchgangsbohrung und der Verwendung eines modifizierten Dupont-Kabels mit einem in der Mitte gelöteten 10-K-Pullup-Widerstand, wenn eine MCU und ein Peripheriegerät mit I2C eingerichtet werden? ? Das modifizierte Dupont-Kabel funktioniert in meinem Fall nicht.
Umgebung : Steckbrett, die Espressif ESP32 MCU als I2C-Master mit Pin Nr. 21 als SCL und Pin Nr. 17 als SDA (die internen "schwachen" +-4,7K-Pullups sind aktiviert), ein Melexis MLX90393-Magnetfeldsensor als I2C-Slave auf einem Sparkfun Breakout-Board (Produkt https://www.sparkfun.com/products/14571 ; die 10K-Pullups auf dem Breakout-Board von Sparkfun sind ebenfalls aktiviert). Siehe Bild für das Steckbrett-Setup (Fokus auf den Pullup-Widerstand).
Die Software funktioniert einwandfrei und ich erhalte 5 Sensormesswerte pro Sekunde, wenn ich einen blanken 10K-Pullup-Widerstand zwischen dem Loch neben dem SCL-Pin Nr. 21 der MCU und einem Loch auf der 3,3-V-Schiene des Steckbretts verdrahte. Dies ist ein Standardverfahren für I2C-Schemata, um den I2C-SCL standardmäßig hoch zu ziehen. Gleiches für SDA.
Ich wollte jedoch die Verkabelung auf dem Steckbrett viel einfacher machen und ein modifiziertes Dupont-Kabel für den Pullup verwenden . Also nahm ich einen 30 Zentimeter langen Dupont-Draht, schnitt ihn in der Mitte ab und lötete einen Standard-10K-Pullup-Widerstand dazwischen und legte einen Schrumpfschlauch darum. Wenn ich die Impedanz zwischen den beiden Enden des Kabels messe, beträgt sie +-10K Ohm.
Also habe ich das modifizierte Dupont-Kabel neben den SCL-Pin Nr. 21 der MCU und die 3,3-V-Schiene des Steckbretts gesteckt (anstelle der Bare-Bone-Widerstände der vorherigen Konfiguration). Jetzt funktioniert das System nicht mehr* (die I2C-Kommunikation fällt aus).
Was könnte der (elektrische?) Grund für den Ausfall sein? Ich habe kein Oszilloskop, aber ich habe einen Logikanalysator.
Danke von einem Anfänger.
Nein, im Normalfall sollte das keinen merklichen Unterschied machen.
Aber vielleicht
Ich habe einige drastische Maßnahmen ergriffen, um dem auf den Grund zu gehen; und die Einrichtung funktioniert jetzt :)
Ich habe irgendwo gelesen, dass I2C hauptsächlich zum Anschließen von I2C-Geräten entwickelt wurde, die sich relativ nahe an der MCU befinden. Ich habe 30-cm-Dupont-Kabel verwendet, um die Sensorplatine (I2C-Slave) an die MCU (I2C-Master) anzuschließen. Also habe ich diese durch kürzere 10cm Dupont-Kabel ersetzt und jetzt funktioniert es einwandfrei (die externen Pullup-Widerstände werden auch nicht mehr benötigt).
Ich verwende eine andere neue und andere Art von Steckbrett. Ich habe das transparente Steckbrett, das für dieses Projekt verwendet wurde, zerlegt und festgestellt, dass die Metallverbindungen von schlechter Qualität waren (obwohl ich einige davon 3 Monate lang ohne Probleme verwendet habe). Ich gehe davon aus, dass sich die Anschlüsse eines Steckbretts mit der Zeit abnutzen und ein Steckbrett bei intensiver Nutzung hin und wieder ausgetauscht werden muss.
Ich hoffe, dass diese Annahmen richtig sind und dass die Berichte auch anderen helfen werden.
Es gibt definitiv einen Unterschied: Das eine funktioniert und das andere nicht.
Aber Spaß beiseite: Das Dupont-Kabel wird mehr Kapazität einführen. Sie erwähnen die SCL-Frequenz nicht, aber wenn die Kapazität zu hoch ist, verschlechtert sich die SCL-Anstiegszeit. Es kann sich bis zu dem Punkt verschlechtern, an dem es nicht mehr über VIH geht, an welchem Punkt I2C nicht mehr funktioniert.
Schade, dass Sie kein Oszilloskop haben, denn das könnten Sie leicht überprüfen. Der schnellste Weg, dies zu überprüfen, besteht darin, die I2C-Frequenz auf etwas lächerlich Langsames zu senken; Wenn das funktioniert, ist die Kapazität Ihr Problem. Wenn es Ihr Problem ist, können Sie es beheben, indem Sie Ihren Pullup-Widerstand verringern, wodurch die ansteigenden Flanken bereinigt werden.
Benutzer103380
Passant
Elliot Alderson
Passant
Rolf