Betrieb eines SD-Kartenmoduls mit nur zwei Pins

Mein Standard-SD-Kartenmodul verwendet vier Pins: SDCS, MOSI, SCK und MISO. Ich kann jedoch nur zwei Pins meines ATtiny85 für den Betrieb verwenden. Gibt es eine Möglichkeit, dies zu tun, ohne mehr ICs zu verwenden, z. B. einen zweiten, größeren Mikrocontroller?

Denk daran, dass:

  • Ich muss es nur anschreiben.
  • Ich kann am Anfang so viel testen wie nötig, aber dann muss es mit nur zwei Pins von alleine funktionieren.
  • Ich kann ein oder zwei diskrete elektronische Komponenten hinzufügen, solange sie wenige und klein sind.
  • Die anderen Pins werden von einem GPS-Modul belegt, das seriell (RX-TX) und einen Kristall verwendet.
GPS-Modul braucht wohl nur RX.
ATTiny85 hat 6 GPIO. Zwei für GPS (und brauchen wahrscheinlich nur RX, wie TurboJ sagte). Das lässt 4 oder 5 Pins. Was lässt du weg?
Entschuldigung ich vergaß. Zwei weitere Stifte werden von einem Kristall eingenommen. Könnte ich es loswerden und die vom GPS-Modul bereitgestellte Zeit verwenden, um die Ungenauigkeit seines internen Oszillators zu korrigieren?.

Antworten (4)

Szenario 1:

Sie müssen immer noch die Dateizuordnungstabelle von der SD-Karte lesen, es sei denn:

Sie verwenden Ihr eigenes RAW-SD-Kartenformat

Dann brauchen Sie den MISO-Pin nicht. Statt vier Pins für die SD-Karte braucht man also drei. Es ist möglich, eine Sicherung in ATtiny85 zu setzen, die das tut

Drehen Sie den Reset-Pin in einen normalen I / O-Pin.

Jetzt haben Sie drei Pins, mit denen Sie mit der SD-Karte sprechen können. Danach können Sie keinen ICSP-Programmierer verwenden.


Szenario 2:

Teilen Sie SD-Karten-Pins mit GPS.

Verbinden Sie den RX-Pin mit SCK. Wenn Sie mit der SD-Karte sprechen, empfängt das GPS Müll und ignoriert es. Wenn Sie mit dem GPS sprechen, halten Sie den CS-Pin hoch und die SD-Karte wird ihn ignorieren. Verbinden Sie den TX-Pin über einen 10k-Widerstand mit dem MOSI-Pin. Wenn Sie mit der SD-Karte sprechen, verwenden Sie den MOSI-Pin als Ausgang. Die Kommunikation wird durch das GPS nicht gestört, da es sich hinter dem Widerstand befindet. Wenn Sie das GPS abhören müssen, halten Sie den MOSI-Pin als Eingang und CS hoch. Die SD-Karte ignoriert Daten, die vom GPS auf diesem Pin kommen.


Szenario 3:

Eine Kombination der oben genannten


Szenario 4:

Verwenden Sie einfach ATtiny84; Es ist fast dasselbe wie ATtiny85 mit mehr Pins und der gleichen Grundfläche in einem QFN-Gehäuse, wenn Sie sich für die Größe interessieren.

Dies wird wahrscheinlich nicht mit einer reduzierten SPI-Schnittstelle funktionieren. Möglicherweise können Sie einen I2C-zu-SPI-Brückenchip verwenden, aber die Teile sind nicht billig und wahrscheinlich "groß" für Ihr Design.

Einfache Methode:

Diese Art von SPI-Bus kann Pins mit anderen SPI-Geräten teilen. MISO, MOSI und SCK werden gemeinsam genutzt, und jede Komponente benötigt ihre eigene CS-Leitung. Haben Sie andere SPI-Geräte in Ihrem Design, die den Bus der SD-Karte teilen können?

Andere Methode:

Bei einigen SPI-Geräten kann die CS-Leitung niedrig gebunden werden, sodass der Bus immer aktiviert ist. Die meisten erfordern jedoch eine Abwärtsflanke auf der CS-Leitung, um den Beginn der Datenübertragung zu markieren, und eine Aufwärtsflanke, um das Ende eines Befehls zu signalisieren.

  • Wenn Sie den CS niedrig binden können, wird ein Stift weggelassen.

  • Wenn Sie nur schreiben, können Sie die MISO-Zeile weglassen. Aber schreibst du wirklich nur? Es gibt im Allgemeinen Lesevorgänge als Teil des Overheads, und sei es nur, um zu überprüfen, ob die SD-Karte verfügbar/sitzend/usw. ist.

  • SCK und MOSI sind immer notwendig.

Es könnte einfach funktionieren :) Aber wenn Ihr Gerät das CS-Umschalten benötigt, sehe ich keinen einfachen Weg, um das zu bekommen, was Sie wollen.

Das andere Gerät in meinem System ist ein GPS-Modul und verwendet seriell (RX-TX) :(
Sie können CS nicht für SD-Karten festlegen und erwarten, dass sie funktionieren. Sie brauchen auch MISO.

Lass den Kristall fallen. Der interne Oszillator ist ausreichend genau, um ein serielles 9600-Baud-Signal vom GPS abzutasten, und Sie beherrschen die Uhr auf der SPI-Schnittstelle, sodass das Timing auch dort nicht kritisch ist. Wenn Sie nach einem genauen Wanduhr-Zeitstempel für die Protokollierung suchen, ist ein GPS-Signal kaum zu übertreffen. Ja, Sie können es verwenden, um Drift zu korrigieren. Aber auch ohne das sind interne Oszillatoren normalerweise "gut genug", es sei denn, Sie machen einen Präzisions-Autopiloten oder ähnliches.