Steuerung von SPI-Geräten mit dem Arduino - verschiedene Spannungen

Mein Arduino-Board verwendet 5 V, um den Atmega-Chip mit Strom zu versorgen. Ich habe mich gefragt, ob irgendetwas falsch daran ist, meinen Atmega mit 5 V zu betreiben, aber sagen, ich versorge meinen MCP4922-DAC mit 3,3 V, spielt es eine Rolle? Ich habe nur Schaltpläne gesehen, die für alle ICs die gleichen Volt verwenden

Bitte teilen Sie uns das Datenblatt oder die Modellnummer des betreffenden SPI-Slave-Geräts mit. Einige Geräte haben 5-Volt-tolerante Eingänge, obwohl sie mit 3,3 Volt betrieben werden. Sollte dies bei Ihrem Peripheriegerät nicht der Fall sein, wird es durch die Ansteuerung der Eingangsleitungen mit 5 Volt beschädigt oder zerstört.
ah okay. Zum Glück ist es 5V tolerant, habe es gerade selbst überprüft. Das Gerät kann tatsächlich mit 5,5 V (absolutes Maximum) betrieben werden. Deshalb muss mein VDD-Pin höher sein. Plötzlich bekomme ich 4 V über meinen mcp4922. Gute Arbeit, ich habe keinen Ersatz bekommen, dann dachte ich, ich hätte es irgendwie geröstet
Tatsächlich sind die Eingänge des MCP4922 nicht 5-Volt-tolerant, die akzeptablen Eingangsspannungen hängen von der Spannung ab, mit der das Gerät versorgt wird: Alle Ein- und Ausgänge bzgl. AVSS–0,3 V bis VDD + 0,3 V. Wenn Sie es mit 3,3 Volt betreiben und SPI MOSI und CLK mit 5 Volt bereitstellen, riskieren Sie, das Gerät zu braten. Soll ich das zu einer Antwort machen?
NXP hat eine App-Notiz, in der Lösungen für dieses Problem diskutiert werden.
@AnindoGhosh Ja, das solltest du.
@LeonHeller: Link zu dieser App-Notiz oder Dokumentnummer?
@FedericoRusso Probieren Sie den App-Hinweis an97055 aus

Antworten (3)

Es ist wichtig. Der MCP4922 hat eine Eingangsspannungsbegrenzung von VDD + 0,3 V an allen Eingangspins. Bei 3,3 V Leistung wird alles über 3,6 V wahrscheinlich den Chip zerstören . Und der Arduino ATMega hat eine hohe Abschaltung des Eingangsspannungspegels von VDD * 0,6. Bei 5 V Arduino-Leistung bedeutet dies, dass mindestens 5 V * 0,6 = 3 V an einem Eingangspin angezeigt werden müssen, um sich ordnungsgemäß als logisches HIGH zu registrieren. Dies sollte also auf eine Weise funktionieren, bevor Sie Dinge hinzufügen müssen.

Sparkfun hat ein nettes Tutorial , wie man es zwischen zwei Chips bei 5 V und 3,3 V zum Laufen bringt, aber alle erfordern zusätzliche Komponenten (einige Widerstände oder Dioden oder einen Mosfet). Es geht auch mehr in die Tiefe über die Spannungspegel.

Aber das Wichtigste ist, warum der ADC mit einer anderen Spannung als der Arduino betrieben wird, wenn Sie die 5-V-Quelle zur Verfügung haben? Ist das nur eine Hypothese?

Es gibt mehrere Möglichkeiten, diesen Pegelübergang zu ermöglichen. Der Schlüssel ist NICHT , 5 V in einen Teil zu stecken, der mit 3 V oder etwas niedriger läuft (wie oben angegeben). Daher benötigen die MCP4922-Eingänge von CS, SCK und SDI alle ihre Eingangsspannungen, um mit ihrer VDD übereinzustimmen. Und wenn Sie sich für 3 V entschieden haben, können Sie dies mit einem Widerstandsteiler oder 74HC4050 LVL CONVERTER oder SparkFuns Logic Level Converter oder SparkFuns PCA9306 Level Translator Breakout tun

Auf der anderen Seite ist es akzeptabel, dass ein 3-V-Ausgang in den 5-V-Eingang geht, solange der High-Pegel des 3-V-Chipausgangs größer ist als der Mindestpegel des Eingangs-High-Detektors des Chipeingangs. Was oft der Fall ist. So sieht man oft Teile, die einen der oben genannten Voltage Level Down Steps MOSI, SCK und CS haben, während es beim MISO keinen UpStep im Arduino gibt.

Sofern Ihr Gerät nicht 5-V-tolerant ist, was der MCP4922 nicht ist, ist es keine gute Idee, 5-V-I/O an 3,3 VI/O anzuschließen. Die internen Dioden können helfen, aber mit der Zeit wird das Gerät zerstört. Verwenden Sie am besten Techniken, um damit umzugehen, wie z. B. die Verwendung von Pegelumsetzern.

äh lol. Glaubst du, es ist frittiert, weil die Ausgabe 100 mV höher ist als die berechnete Ausgabe mit der Formel auf Seite 18?