Was ist die Anstiegsgeschwindigkeit für I2C?

10

Ich konfiguriere I 2 C auf einem PIC18 mithilfe der integrierten Funktionen des C18-Compilers, wie in Abschnitt 2.4 der Dokumentation beschrieben :

void OpenI2C2( unsigned char sync_mode,
    unsigned char slew );

Ich bin mir nicht sicher, was ich damit machen soll slew. Ich kann aus zwei Optionen wählen, die definiert sind in i2c.h:

  • SLEW_OFF: Anstiegsgeschwindigkeit für 100-kHz-Modus deaktiviert
  • SLEW_ON: Anstiegsgeschwindigkeit für 400-kHz-Modus aktiviert

Im Datenblatt in Register 15-1, Seite 257 werden die beiden Optionen etwas näher erläutert:

  • 1 = Anstiegsgeschwindigkeitsregelung für Standardgeschwindigkeitsmodus (100 kHz und 1 MHz deaktiviert)
  • 0 = Anstiegsgeschwindigkeitsregelung für Hochgeschwindigkeitsmodus (400 kHz) aktiviert

Ich verstehe es aber nicht - ich habe ein paar Fragen:

  1. Was ist die Anstiegsgeschwindigkeit?

  2. Für mich sind die beiden Optionen nicht sinnvoll - was ist, wenn ich die Anstiegsrate für 400 kHz deaktivieren und für 100 kHz aktivieren möchte? Warum ist das?

  3. Wann SLEW_OFFund wann soll ich wählen SLEW_ON?


quelle

Antworten:

8

Die Anstiegsgeschwindigkeit gibt an, wie schnell sich das Signal von niedrig nach hoch oder umgekehrt ändert. Indem Sie diesen abrupten Übergang begrenzen, können Sie das Klingeln aufgrund von Signalreflexionen reduzieren und das Übersprechen zwischen Signalleitungen begrenzen.

Es funktioniert jedoch so, dass bei 100 kHz die Signalraten so langsam sind, dass die Anstiegsrate keine Rolle spielt. Bei 400 kHz können Sie möglicherweise eine ansonsten problematische Schaltung beheben, indem Sie sie einschränken. Wenn Sie jedoch 1 MHz erreichen, benötigen Sie wirklich die gesamte Übergangsgeschwindigkeit, die Sie erhalten können. Daher müssen Sie nur eine gute Signalanpassung durchführen und Ihre Leitungen sorgfältiger verlegen.

Das betreffende Bit bewirkt lediglich das Aktivieren oder Deaktivieren der Funktion. Der Rest ist einfach ein Rat. Die Geschwindigkeiten sind in Klammern angegeben, da dies nur ein Vorschlag ist.

gbarry
quelle
Vielen Dank! Es scheint eine gute Option zu sein - warum sollte ich nicht die Anstiegsgeschwindigkeitsregelung verwenden?
2
@CamilStaps - Meines Wissens nach haben Sie die Antwort möglicherweise falsch verstanden. Scharfe Übergänge (SLEW_ON) verursachen zusätzliches EMI-Rauschen und Klingeln. Langsame Übergänge (SLEW_OFF) reduzieren die EMI, verringern jedoch die maximal nutzbare Frequenz der Verbindung. Es ist ein Kompromiss.
Tim
@gbarry: Ah, so mit Slew - Rate Steuerung aus dem Signal ist so nah an Rechteckwellen als uC kann es machen. Mit der Anstiegsgeschwindigkeitssteuerung auf der Welle sind hohe / niedrige Übergänge stärker geneigt (= weniger vertikal) als sonst?
Angelatlarge
1
Das ist richtig, obwohl ich nicht sicher bin, wie dramatisch es auf dem PIC ist (ich sollte es überprüfen). Historischer Hinweis: Die RS232-Spezifikation hatte eine Begrenzung der Anstiegsgeschwindigkeit, sodass jemand einen Treiberchip herausbrachte, der schöne Steigungs-y-Ausgangssignale hatte. Und dann haben wir alle angefangen, immer schnellere
BPS-
1
Drei Jahre später hatte ich dieselbe Frage, aber ich habe sie tatsächlich gemessen. Für zukünftige Referenzzwecke beträgt bei einem PIC16F1454 mit 4,7k-Klimmzügen und einem einzelnen Slave am Bus die Abfallzeit 2,9 ns ohne Begrenzung der Anstiegsgeschwindigkeit (möglicherweise durch meine 150-MHz-Sonde begrenzt) und 151 ns mit Begrenzung der Anstiegsgeschwindigkeit. Es hat keinen Einfluss auf die Anstiegszeit.
Pipe