Was tun mit unbenutzten Open-Drain-Stiften?

Ich habe einen Lichtsensor- IC.

Ich habe 2 Fragen:

  1. Die I2C-Leitungen sind zwischen dem Mikrocontroller (3,3-V-Domäne) und dem Lichtsensor-IC angeschlossen. Der Mikrocontroller ist auf einer Platine platziert und der Lichtsensor ist auf einer separaten Platine platziert. Beide Platinen sind durch ein 30cm langes Kabel verbunden.

Ist es in diesem Fall richtig, die Pull-Ups des I2C in der Nähe des Mikrocontrollers auf der Mikrocontroller-Leiterplatte zu platzieren, oder sollte ich sie auf der Lichtsensor-Leiterplatte platzieren? Soweit ich gelesen habe, sollten die Pull-up-Widerstände in der Nähe des Masters platziert werden, und daher denke ich, dass sie in der Nähe des Mikrocontrollers platziert werden sollten. Bitte bestätigen.

  1. Ich habe nicht vor, den INT-Pin zu verwenden. INT ist ein Open-Drain-Ausgangspin aus dem Datenblatt. Ich möchte diesen Stift nicht verwenden, weil er bei einem Steckerstift weniger hilft. Was soll ich also tun, um den INT-Pin nicht zu verwenden? Das Datenblatt empfiehlt nicht, was mit unbenutzten Pins zu tun ist. Also was soll ich tun? Soweit ich weiß, kann ich den INT-Pin schwimmend lassen, da er ein Open-Drain-Pin ist. Bitte bestätigen.
Nicht verwendete Pins, die nur ausgegeben werden, wie z. B. der INT-Pin, sollten offen gelassen werden. Es sind wirklich nur unbenutzte Eingangspins , die nicht schwebend gelassen werden sollten, sofern nicht anders angegeben.
OK danke. Könnt ihr mir bei der 1. Frage helfen?

Antworten (1)

Das sind wirklich zwei verschiedene Fragen:

  • Umgang mit unbenutzten Open-Drain-Stiften und
  • So terminieren Sie I2C-Busleitungen richtig

Für den ersten Teil ist es einfach: Sie verbinden sie einfach nicht. Oder Sie können das auch an Masse binden, wenn es hilft (normalerweise zur Wärmeleitung). Die interne Struktur ist einfach ein MOSFET mit der Source an Masse und dem Drain… offen (und normalerweise einer ESD-Schutzstruktur). Binden Sie es nur nicht an etwas anderes als einen Boden.

Zur zweiten Frage gibt es eine etwas detaillierte Erklärung in den I2C-Spezifikationen (Download von NXP), aber kurz gesagt gibt es eine einfache Regel: Ziehen Sie sie irgendwo mit einigen Kiloohm Widerstand an die entsprechende Versorgung.

I2C ist nicht impedanzgesteuert, daher ist es nicht wirklich wichtig, wo oder wie Sie es tun. Man könnte argumentieren, dass mehr oder weniger in der Mitte etwas besser sein könnte. Der Bus selbst ist Multimaster (oder kann es zumindest sein), sodass es keinen bevorzugten Signalerzeugungspunkt gibt. Platzieren Sie die Klimmzüge also einfach an einer geeigneten Stelle.

Was den Wert betrifft, ist das etwas wichtig. Der Pullup-Widerstand bildet mit der parasitären Streckenkapazität einen RC-Kreis. Kurz gesagt, ein größerer Widerstand verursacht eine längere Anstiegszeit, die die Timing-Spezifikationen verletzen könnte. Ein zu kleiner Widerstand würde die Bustreiber überlasten.

Es sei denn, Sie haben einen wirklich langen oder bevölkerten Bus oder Sie machen Hochgeschwindigkeits-I2C, es spielt wirklich keine Rolle. Gängige Werte sind 2k2 oder 4k7 Ohm. Bei Problemen mit einem Oszilloskop prüfen und abstimmen.

Danke für die Antwort
Auf Multimaster : Der Slave fährt SDA und darf auch SCL fahren. Es kommt also nicht auf die Anzahl der Master an, beide Signale werden grundsätzlich von allen Busteilnehmern angesteuert. Bei SCL passiert das sogar gleichzeitig, wenn der Slave die Uhr verlangsamt.