Berechnung von Vorwiderständen für I2C/SPI-Leitungen zur Reduzierung von EMI und Klingeln

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:

  1. Ausgangstreiberstärke / Ausgangswiderstand des IC, der diese bestimmte Leitung ansteuert.
  2. Spurlänge, Impedanz, Induktivität.
  3. Rückwege.

Gibt es eine Formel?

Wenn wir die Datenleitungen kurz genug halten, werden dann noch Widerstände benötigt? Wenn nicht, wie kurz ist kurz?

Ich musste noch nie eine Serienterminierung auf I2C verwenden und ich würde sagen, dass dies nicht empfohlen wird. Normale I2C-Treiber sind in der Anstiegsgeschwindigkeit begrenzt und die Empfänger haben Rauschunterdrückungsfilter. Ein Reihenwiderstand könnte die Logikpegelspannen beeinträchtigen, da absichtlich Strom zu den Pull-up-Widerständen fließt, wenn sie sich im niedrigen Zustand befinden.
Ich stimme @KevinWhite zu, aber wenn ich sie WIRKLICH wollte, würde ich Ferritperlen für I2C verwenden, da I2C bereits Beschränkungen hinsichtlich der Anstiegsgeschwindigkeit aufweist. Keine Widerstände. Es ist auch einfacher, die Größe zu bestimmen, da Sie nur die Frequenz des Klingelns messen und eine Perle auswählen, die bei dieser Frequenz ihren Höhepunkt erreicht.

Antworten (2)

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.