Spannungspegelverschiebung

Ich weiß, dass es auf der Seite ähnliche Fragen gibt, aber ich wollte sie aus einer etwas anderen Perspektive stellen.

  • Ich habe ein 5-V-Gerät (Gerät A), das mit 3,3 V betrieben werden kann .
  • Ich habe ein 3,3-V-Gerät (Gerät B), das keine 5- V-toleranten Eingänge hat.
  • Ich möchte diese beiden Geräte miteinander verbinden, um über eine SPI-Schnittstelle zu kommunizieren.
  • Ich möchte Gerät A wahlweise mit 5V oder 3,3V betreiben können.
  • Gerät B wird unabhängig mit Strom versorgt und läuft immer mit 3,3 V.

Ich weiß, dass ich einen Puffer (z. B. 74HCT125) verwenden kann (und erfolgreich verwendet habe), der mit derselben Spannung wie Gerät A betrieben wird, um die Signale von Gerät B auf bis zu 5 V zu verstärken. Ich bin mir jedoch nicht so sicher, wie der beste Ansatz für die andere Richtung ist (dh die Ausgänge von Gerät A auf einen geeigneten Pegel für Gerät B senken).

Ich habe das Sparkfun-Tutorial zu diesem Thema gelesen. Sie bieten ein paar Möglichkeiten, sich dem "Abwärts"-Level-Shifting zu nähern. Wie wird dieser Aspekt bevorzugt behandelt? Da ich hier SPI verwende, erscheint mir die klassische MOSFET-Lösung für I2C übertrieben, da ich keine Bidirektionalität benötige. Ich mag den Inline-Widerstandsansatz wegen seiner Einfachheit, aber ich bin mir nicht sicher, wie ich den Widerstand dimensionieren soll. Die CLK- und MOSI-Pins von Gerät B sind mit V_IH_min = 0,7 * V_cc = 2,31 V, V_IH_max = V_cc + 0,3 = 3,6 V und mit einem Eingangsleckstrom von maximal 0,5 uA spezifiziert.

Nach meiner Mathematik bedeutet dies, dass ich in dem Fall (1), in dem Gerät A mit 5 V betrieben wird, zwischen 1,4 V und 2,6 V fallen muss, und nicht mehr als 1 V in dem Fall (2), in dem Gerät A mit 3,3 V betrieben wird. Wenn ich annehme, dass der Leckstrom von 0,5 uA für den Spannungsabfall verantwortlich ist, erfordert Fall (1) einen Widerstand zwischen einem 1,4 / 0,5e-6 = 2,8 MegOhm und einem 2,6 / 0,5e-6 = 5,2 MegOhm Widerstand (!). Und Fall (2) erfordert einen Widerstand von nicht weniger als 2 MegOhm. Daher wird Fall (2) von Fall (1) dominiert, und ich sollte einen Widerstand irgendwo zwischen dem berechneten Bereich auswählen, z. B. 3,3 MegOhm.

Dieser Wert erscheint mir gigantisch (insbesondere wenn das SF-Tutorial Werte wie 10 kOhm anzeigt) ... und das gilt nur für den maximalen Eingangsleckstrom (kein minimaler oder typischer Wert ist angegeben). Gibt es einen Fehler in meiner Argumentation oder meinen Berechnungen? oder ist dies nicht die bevorzugte Art, die Geräte zu verbinden (z. B. die Diodenmethode)?

Wenn es darauf ankommt, ein Fall von Gerät B, an den ich denke, ist ein 23K256 SRAM , aber ich versuche, eine Vielzahl von Geräten zu berücksichtigen.

Der Leckstrom ist der niedrigste Strom, mit dem Sie einen Teiler entwerfen können, der damit umgehen kann. Sie können und sollten ein Vielfaches davon als "Ladestrom" nehmen. Dies überschwemmt dann Leckstromeffekte.

Antworten (1)

Der Leckstrom ist der niedrigste Strom, mit dem Sie (theoretisch) einen Teiler entwerfen können, der damit umgehen kann. Sie können und sollten ein Vielfaches davon als "Ladestrom" nehmen. Dies überschwemmt dann Leckstromeffekte.

Riesige Widerstandswerte führen zu langen Anstiegs- und Abfallzeitkonstanten (in Kombination mit der Eingangskapazität und den Streukapazitäten des IC), die Sie nicht möchten.

Wenn Sie nur monodirektionales Fahren und Pegelreduzierung wünschen, funktioniert ein Widerstandsteiler gut.

Geben Sie hier die Bildbeschreibung ein

Es muss „nur“ dafür gesorgt werden

  • Vout_high_max übersteigt Vin_high_max des angesteuerten ICs nicht, wenn es heruntergeteilt wird. (Besser, hohe und niedrige Eingangsgrenzwerte für den ungünstigsten Fall erzeugen Ausgangsspannungen auch in den erforderlichen Bereichen.)

  • Die Gesamtzeitkonstanten sind klein im Vergleich zu Ihren Signalschaltgeschwindigkeiten ODER

    • Wenn Sie sie nicht klein machen können, müssen sie akzeptabel sein. zB wenn Daten monodirektional geschrieben werden, kann eine signifikante Verzögerung akzeptabel in Verzögerungs- und Datenleitungen auftreten, solange sie konsistent und in allen relevanten Signalleitungen ungefähr gleich ist. Bei der bidirektionalen Handhabung können Probleme auftreten, da z. B. ein verzögerter ausgehender Takt dazu führen kann, dass Daten zurückgegeben werden, lange nachdem der Takt die Daten "erfolgreich" abgetastet hat.

1 Megohm x 1 picoFarad ergibt eine Zeitkonstante von 1 uS.
Von dort aus können Sie nach Bedarf skalieren.

Wenn Sie zB 20 pF Streu- und Eingangskapazität hätten und einen Teilerwiderstand von 100 kOhm verwenden (was hoch wäre), dann ist die Zeitkonstante 20 pF x 0,1 Megaohm = ~~~ 2 uS.

Beziehen Sie sich nur als Beispiel auf Ihren 23A256-RAM

Eingangskapazität = 7 pF.
Maximale Anstiegs- und Abfallzeit des Takts = 2 uS,
ABER die maximale Taktrate kann 20 MHz (schwierig) oder 50 Ns Gesamtzykluszeit betragen.

Wenn die Gesamtkapazität als 10 pF (7 pF Eingang + 3 Streuung) angenommen wird, ergibt - 100 k
Treiberwiderstand eine Zeitkonstante von 1 uS auf der angesteuerten Leitung (!),
- 10 k Treiberwiderstand ergibt 100 Ns und
- 1 k ergibt 10 Ns .

Um einen äquivalenten Widerstand von 1 k mit einem Teiler von 3,3 V bis 5 zu erreichen, können Sie Rupper = 1,4 k und Rlower = 2,7 k haben. Parallelwiderstand. = 0,92 K und Reihenauflösung = 4,1 K, also Strom bei 5 V ~ = 1,2 mA.

Die Zeitkonstante von 10 nS bei Widerständen im Bereich von 2 k bedeutet Anstiegs- und Abfallzeiten von mehreren Zinkenkonstanten - diese nähern sich also den Zeiten pro Halbzyklus bei maximaler Geschwindigkeit. Da diese Verzögerungen in allen abwärts konvertierten Leitungen enthalten sein werden, sollten die Unterschiede in den Verzögerungen viel kleiner sein. Wenn Sie eine bidirektionale Übertragung verwenden, kann dies ein Problem mit z. B. Datenaufbau oder Haltezeiten verursachen. Ein Blick in das Datenblatt im Einzelfall ist unerlässlich.

dh ich würde erwarten, dass ein einfacher Widerstandsteiler mit niedrigem Wert in vielen monodirektionalen Fällen funktioniert, aber bei höheren Taktraten ist Vorsicht geboten. Bezugnehmend auf das obige Diagramm.

  • Reffektiv für Zeitkonstantenberechnungen = R1//R2

  • RseriesDC Drive mA chck ist R1 + R2.

  • Vout = Vin x R2 / (r1+r2)

  • -
Diese Antwort ist ziemlich gründlich, danke! Ich verstehe das Konzept für den Spannungsteiler. Könnten Sie Ihre Antwort möglicherweise erweitern, um zu erläutern, was mit den Vorwiderständen bei MOSI und SCK im Sparkfun-Tutorial los ist? Gibt es in diesem Fall einen impliziten Teiler im 3,3-V-Gerät?