Dual (Shift Up und Shift Down) SPI-Pegel-Übersetzung

Ich stehe vor einer interessanten Herausforderung: Ich verwende einen Mikrocontroller mit 3,3-V-Logik, aber ich muss eine SPI-Schnittstelle (4-Draht) mit Teilen verwenden, die mit drei Logikpegeln arbeiten, nämlich 1,8, 3,3 und 5 V. Offensichtlich sind 3,3 V kein Problem, aber ich bin gespannt, wie ich die 1,8- und 5-V-Komponenten am besten handhabe. Natürlich könnte ich zwei Umsetzer-ICs mit diskretem Pegel verwenden, aber ich hoffe, dass es eine einfachere (dh billigere, kleinere) Lösung gibt. Ich habe bereits Möglichkeiten, die Spannungsversorgungen zu erzeugen, also ist das kein Problem.

Mir ist die folgende Übersetzungstechnik auf MOSFET-Ebene bekannt, die ich gut genug verstehe:

Geben Sie hier die Bildbeschreibung ein

Dadurch kann ein 3,3-V-Signal vom µC (von links) bis zu 5 V zu einem bestimmten Gerät (nach rechts) verschoben werden. (Für MISO müsste es umgekehrt sein.) Ich könnte die Spannung auf der rechten Seite auf ähnliche Weise auf 1,8 V ändern, um für ein anderes Gerät herunterzuschalten. Hier ist mein Problem: Wenn ich die Spannung einfach zwischen 5 und 1,8 V umschalten würde, würde ich mit ziemlicher Sicherheit die 1,8-V-Pins bei 5 V zerstören. Gibt es eine elegante Technik, um eine Verschiebung auf zwei verschiedene Pegel zu ermöglichen, oder werde ich Müssen Sie es aufsaugen und zwei getrennte Schaltkreise für die beiden Übersetzungen verwenden?

Jede Signalleitung ist eine Richtung. Es kann ein 4-Kanal-Isolator-IC mit Toleranz gegenüber unterschiedlichen Versorgungen verwendet werden. Ti stellt einige HF-basierte her, die sich wie schnelle Optokoppler verhalten.
Meiner Erfahrung nach habe ich immer nur solche gefunden, bei denen eine Seite die höhere Spannung der beiden sein muss. Gibt es Geräte, die sowohl das Absenken als auch das Anheben des Logikpegels ermöglichen?
Ja, ich habe diese mit Erfolg auf dem SPI-Bus verwendet

Antworten (1)

Als erstes müssen Sie sich Ihre Teilespezifikationen genauer ansehen. Möglicherweise stellen Sie fest, dass einige Ihrer Links eigentlich gar nicht übersetzt werden müssen. Was sind die Eingangsschwellen, sind die Eingänge tolerant gegenüber Spannungen außerhalb der Stromschienen? Es ist ziemlich üblich, dass 3,3-V-Geräte 5-V-tolerante Eingänge haben. Ich kenne mich mit 1,8V-Geräten nicht aus.

Mit dem Mosfet-Trick benötigen Sie nur einen Pullup an jeder Schiene, auch wenn die Übersetzung unidirektional ist und der Treiber keinen Open-Collector-Ausgang verwendet, benötigen Sie nur den Pullup auf der Ausgangsseite.

Sie müssen auch an die Geschwindigkeit denken. Bei niedrigen Frequenzen ist der Mosfet-Trick in Ordnung, aber aufgrund seiner Open-Collector-Natur skaliert er nicht gut für hohe Frequenzen. Die Widerstände müssen einen ausreichend niedrigen Wert haben, um die Streukapazität schnell genug aufzuladen, um die Leitungen rechtzeitig auf ihren angemessenen "hohen" Pegel zu bringen. Bis zu einem gewissen Grad können Sie kleinere Widerstände verwenden, um die Dinge zu beschleunigen, aber dann verursachen die höheren Ströme einen stärkeren Spannungsabfall in den Schaltgeräten (sowohl beim Pegelverschiebungs-Mosfet als auch bei den Ausgangstreibern in Ihren Geräten), was zu Problemen führen kann.

Danke für die Antwort. Ich habe kein Problem mit den 3,3-V-Geräten - da dies der Pegel ist, den mein µC verwendet -, also ist es irrelevant, 5-V-tolerante Pins zu haben. Die 5-V-Teile haben ein logisches Hoch von 0,7 * Vdd = 3,5 V, also muss ich für diese definitiv nach oben schalten. Die 1,8-V-Geräte sind auf maximal ~2,1 spezifiziert, also muss ich für diese definitiv herunterschalten. Was die Geschwindigkeit betrifft, benötige ich diese, um bis zu 10 MHz zu betreiben, was sie möglicherweise für die Implementierung mit einem Transistor vorantreibt. Jedenfalls hast du mir zu denken gegeben.
Bei diesen Geschwindigkeiten würde ich sicherlich die Verwendung geeigneter Level-Shifter (mit expliziten Output-Enable-Pins, falls erforderlich) als bevorzugte Lösung in Betracht ziehen.
Das hatte ich angenommen, aber gehofft, diesen Seitensprung vermeiden zu können. Danke für deine Hilfe!