Implementieren SDIO-Schnittstelle SPI-Gerät
Menschen,
Habe ich immer gesehen, die Referenzen über die Verwendung einer SPI-Schnittstelle zum Betrieb einer SD-Speicherkarte.
Dies ist nicht, was ich will. Ich muss genau das Gegenteil tun.
Ich möchte in der Lage sein, die Verwendung der SDIO-controller (durch SD-slot) in meiner "host" (jedem PC mit einem SD-Karten-Schnittstelle) zu sprechen, um meine Geräte (im Grunde mikrocontroller), das nur dann "sprechen" SPI.
Wenn mein Verständnis ist nicht allzu falsch, ich kann nicht einfach sagen, meine SD-controller zu sprechen, in einer rohen SPI-Modus, aber ich kann lehren, meine mikrocontroller verhält sich wie ein SDIO-Gerät, das gesteuert werden kann, durch mein Gastgeber.
Diese Weise habe ich noch zwei Probleme übrig:
- Korrekt implementieren Sie eine generische SDIO-Gerät in meinem mikrocontroller.
- Implementieren/konfigurieren den richtigen Treiber in den host in der Lage sein, um die Interaktion mit meinen Geräten.
Umsetzung der SDIO-Gerät scheint eine Frage der folgenden die spec.
Die host-side-Treiber, obwohl, ist etwas, was ich hoffe, dass ich erreichen kann mit einer user-space-Treiber in Linux mit einigen bereits vorhandenen kernel-space-Treiber für SDIO.
Das ist der Punkt, dass ich komme, um Hilfe zu bitten.
Kann jemand bitte zeigen Sie mir alle Beispiele, Dokumente oder jede Art von Ressourcen, die helfen können, mich in meine Aufgabe?
- Ich bezweifle, dass es gibt viele Leute hier, die verstehen, wie die SDIO-stack funktioniert in Linux (und einen Treiber mit SDIO sich Verhalten sollte). Ich würde auf jeden Fall suchen Sie auf und bitten Sie Sie direkt, oder über Ihre mailing-Liste. Als Ausgangspunkt: sdio-linux.sourceforge.net
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf der PC-Seite, das ist alles, was Sie brauchen: http://sourceforge.net/projects/sdio-linux/
Dies kann nützlich sein für Referenz: http://www.varsanofiev.com/inside/WritingLinuxSDIODrivers.htm (obwohl, ich glaube nicht, dass Sie würde sein, schreiben einen Treiber)
Auf der mikrocontroller-Seite verwenden "bit-banging" zu implementieren, die die SDIO-Spezifikation.
Jedoch zuerst überlegen, warum Sie dies tun. SDIO und SPI sind nur über serielle Protokolle, so ist USB; würden Sie nicht lieber ein SPI-zu-USB-Brücke? USB ist viel mehr user-friendly auf der host-Seite, sowie mehr standard/häufiger. Und wenn Sie wollen, eine SPI-zu-USB-Brücke, stellt sich heraus, es ist bereits vorhanden, die SPI-Verknüpfung (wahrscheinlich auch andere Möglichkeiten, dies ist nur das erste, das mir einfällt)
BEARBEITEN Oder, Sie könnten bit-bang I2C auf der Mikro -, wenn der host unterstützt I2C (viele tun). Eigentlich, gehen durch jedes serielle Protokoll der host unterstützt, und sehen, ob Sie es unterstützen können leicht aus dem micro-Seite (per bit banging, da das Mikro wahrscheinlich nicht über einen slave-Modus für das Protokoll built-in). RS232 (mit level-shifter), I2C und SPI sind wahrscheinlich die bevorzugte Wahl. SDIO ist so ziemlich die Letzte Wahl, denke ich.
SDIO ist sehr eng angegeben. Es sei denn dein mikrocontroller hat ein SDIO-block, der entworfen ist, um zu handeln als ein Gerät eher als host, ich glaube nicht, dass dies möglich sein wird. Ich weiß von ein paar speziellen Zweck communications-Controller, implementieren Sie eine SDIO-Gerät, aber ich habe noch nicht in einem general purpose-mikrocontroller.
Müssten Sie einen ziemlich schnellen mikrocontroller zu können, bit-bang-SDIO-Initialisierung mit bis zu 400 kHz. Arbeiten Sie mit einem STM32F4 bei 180 MHz, dies gibt Ihnen nur mikrocontroller Zyklen zwischen SDIO-clock-Zyklen. Wenn der host stellt den Takt auf das maximum von 25 MHz nach der Initialisierung, dann sind Sie nach unten zu 7 Zyklen zwischen SDIO-Uhren.
Perspektive auf die SDIO-Spezifikation, die Sie verknüpft, ist eine vereinfachte Spezifikation, dass nicht gerade die Signalwege und das timing des Busses. Die vollständige Spezifikation ist um ein Vielfaches größer.
Als Alex erwähnte ich, es gibt vielleicht bessere alternativen für das, was Sie brauchen. Wenn Ihr SDIO-host-unterstützt SPI-Modus, die meisten mikrocontroller haben SPI-Peripherie, die als Sklaven eher als Gastgeber, so kann dies ein Weg ohne Peripherie. Wenn Sie Ihre Daten-Tarife sind niedrig genug, eine einfache UART ausreichen kann (man vernünftigerweise Treffer 1 Mbit über kurze Entfernungen).