Also, hier ist das Szenario:
Ich habe einen Arduino und eine SD-Karte. Leider habe ich keinen der schicken Schilde, und ich habe keine Zeit, einen zu bestellen. Wie wir wissen, laufen Arduinos mit 5 V und SD-Karten mit 3,3 V. Ich dachte, ich könnte eine Reihe von Spannungsteilern verwenden, um die Daten vom Arduino zur Karte (MOSI, Clock, SS) auf die richtige Spannung zu bringen, aber ich bin mir nicht sicher, ob ich eine Aufwärtsschaltung zusammenstellen soll .
Brauche ich überhaupt eine Aufwärtsschaltung für die MISO-Leitung oder könnte ich sie einfach direkt in den Arduino einspeisen? Hat jemand noch andere Ideen als die von mir genannten?
Wenn Sie den SPI-Takt nicht schnell laufen lassen und die Arduino-Referenz verwenden, um die Taktteilung für das SPI-Peripheriegerät auf einen ziemlich niedrigen Wert einzustellen (Sub-MHz wäre gut), können Sie definitiv mit einer einfachen Spannungspegelverschiebung mit Widerständen davonkommen.
Machen Sie sich keine Sorgen, dass Signale, die zum Arduino zurückkehren, nur 3,3 V betragen, es wird als logisch HIGH erkannt (nur gerade, aber es funktioniert).
Ich habe das persönlich mit einem Arduino Uno und einem SD-Karten-Breakout von Sparkfun gemacht. Ich benutzte ein Steckbrett und einige Widerstände. Kabel natürlich kurz halten.
Dies ist der billigste und beschissenste Weg, den Sie tun können, aber ehrlich gesagt empfehle ich eine Art Level-Shifter / Übersetzer, den Sie mit sehr wenig Recherche im Internet finden können.
EDIT: Wenn es hilft, habe ich Widerstände mit weniger als 5K Ohm verwendet. Wie ich bei Adafruit herausgefunden habe, sind 10K zu hoch. Insbesondere 1,8K und 3,6K
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Verwenden Sie einfach Dioden, um den Pegel zwischen einem 5-V-AVR und einem 3,3-V-SD-Kartenleser/-schreiber umzuschalten. Die 10K-Widerstände sollten sich auf dem SD-Kartenmodul befinden, aber wenn dies nicht der Fall ist, müssen Sie sie hinzufügen.
TurboJ
Tustique