Wie bestimmen Sie, ob ein Vorwiderstand für E/A-Leitungen benötigt wird und welcher Wert erforderlich ist? Wo sollte der Vorwiderstand platziert werden?
Meine Annahme ist, dass der Widerstand so nah wie möglich an der Quelle platziert werden sollte (im Falle von CLK und MOSI sollte er nahe am Master platziert werden usw.). Gibt es eine Möglichkeit, den benötigten Serienwiderstand zu berechnen? Würde das Platzieren von Vorwiderständen am I2C die Leistung beeinträchtigen, da I2C auf Pull-ups angewiesen ist?
Meine Vermutung ist, dass Folgendes von Bedeutung sein könnte:
Gibt es eine Formel?
Wenn wir die Datenleitungen kurz genug halten, werden dann noch Widerstände benötigt? Wenn nicht, wie kurz ist kurz?
So viele Fragen. Ja, wenn das Signal nicht bidirektional ist, platzieren Sie den Widerstand in der Nähe der Quelle. Sie sollten auch einen Kondensator in der Nähe der Last platzieren. Sie können mit dem nicht geladenen Kondensator beginnen, da er wahrscheinlich nicht benötigt wird.
Üblicherweise ermittelt man den Widerstandswert experimentell. Typische Werte für langsame Taktgeber sind 0-56 Ohm. Taktgeber mit höherer Geschwindigkeit verwenden niedrigere Werte (0-33). Der begrenzende Faktor besteht darin, dass der Vorwiderstand die Anstiegszeit aus Sicht der Last verlangsamt. Wenn der Widerstand zu groß ist, ist das Timing ausgeschaltet oder das Signal erreicht bei einer Uhr nie die volle Amplitude, und das System funktioniert nicht mehr zuverlässig.
Beachten Sie, dass Sie manchmal eine Ferritperle anstelle eines Widerstands verwenden können.
Solange der Vorwiderstand für I2C viel kleiner als der Pullup ist, sollte er keine allzu große Wirkung haben. Bei I2C und SPI sollten Sie mit 0 Ohm Vorwiderständen beginnen und den Wert nur bei Bedarf erhöhen.
Im Allgemeinen ist die Steuerung der Ansteuerungsstärke durch interne Register ein viel besserer Weg, da die Steuerung der Ansteuerungsstärke des internen, aktiven Schaltkreises eine stärkere Verringerung der Emissionen bei einer geringeren Gefährdung der Signalintegrität ergibt.
Es gibt keine Formel, aber die Simulation könnte hilfreich sein, um die Grenzen einer guten Signalintegrität zu bestimmen.
Leiterbahnlänge und Impedanz spielen für I2C und SPI normalerweise keine große Rolle, wenn die Signale nicht von der Leiterplatte abgehen und Ihre Leiterplatte nicht ungewöhnlich groß ist.
Der Rückweg ist für alle Taktsignale sehr wichtig. Das beste Szenario besteht darin, Taktspuren über eine feste Ebene zu leiten. Überqueren Sie keine Ebenen-Split-Grenzen, oder überbrücken Sie die Teilung mit einem kleinen Kondensator, um einen Pfad mit niedriger Impedanz für den Rückstrom bereitzustellen. Wenn die Ebene nicht GND ist, sollte ein Kondensator an der Quelle und eine Last von der Ebene zu GND vorhanden sein, um einen niederohmigen Rückweg bereitzustellen. (An beiden Enden befindet sich normalerweise bereits ein Überbrückungskondensator, sodass Sie sich die meiste Zeit keine Gedanken über das Hinzufügen eines Kondensators nur für den Rückstrom des Taktsignals machen müssen.)
I2C verursacht selten alleine Probleme. Die SPI-Uhr hat ein gewisses Potenzial, Strahlungsemissionen zu verursachen, insbesondere wenn Sie sie über ein Kabel von Bord laufen lassen.
Ich würde empfehlen, das I2C-Bus-Benutzerhandbuch von NXP (ursprünglich Phillips) zu verwenden. Hier - https://www.nxp.com/docs/en/user-guide/UM10204.pdf Vorwiderstände werden zB auf den Seiten 57 und 58 besprochen. Ihre max. Der Wert hängt von der gewählten Pull-up-Spannung, den gewählten Pull-up-Widerständen (Strom), der Kapazität des Busses usw. ab. (Es gibt auch Diagramme, die bei den Werten der Reihen- und Pull-up-Widerstände helfen.) Der Wert des Reihenwiderstands kann ein Kompromiss sein von Busgeschwindigkeit vs. EMI-Unterdrückung.
Kevin Weiß
DKNguyen