Ich arbeite an einem Design, das eine CPU mit nur einem SPI-Port hat. Ich habe mehrere (3) Slaves an diesen Port angeschlossen, von denen einer eine microSD-Karte ist.
Hier ist ein Bericht eines Ingenieurs , der sagt, dass SD-Karten so konzipiert sind, dass sie als einzige Slaves eines SPI-Masters fungieren.
Hat jemand anderes eine microSD zusammen mit anderen SPI-Slaves auf demselben Bus verwenden können? Vielleicht basierte dieser Bericht nur auf einer bestimmten, problematischen miniSD-Karte?
Würde jemand empfehlen, die SPI-CLK-Leitung mit der Slave-Select-Leitung zu sperren, die zur miniSD-Karte geht, nur um sicherzugehen?
Laut dieser Seite fahren und oder geben SD-Karten die DO-Leitung synchron mit der sclk-Leitung frei:
Im SPI-Bus wird jedes Slave-Gerät mit getrennten CS-Signalen ausgewählt, und mehrere Geräte können an einen SPI-Bus angeschlossen werden. Das generische SPI-Slave-Gerät treibt/freigibt sein DO-Signal durch das CS-Signal asynchron, um einen SPI-Bus gemeinsam zu nutzen. MMC/SDC steuert/gibt jedoch das DO-Signal beim Synchronisieren mit dem SCLK ab. Dies bedeutet, dass es zu Buskonflikten mit MMC/SDC und anderen SPI-Slaves kommen kann, die an einen SPI-Bus angeschlossen sind. Das rechte Bild zeigt das Ansteuer-/Freigabe-Timing des MMC/SDC (das DO-Signal wird auf 1/2 Vcc gezogen, um den Busstatus zu sehen). Daher muss die Master-Vorrichtung, um das MMC/SDC-DO-Signal freizugeben, ein Byte senden, nachdem das CS-Signal deaktiviert wurde.
Es sollte also funktionieren, nur ein Dummy-Byte an den SPI zu senden, nachdem die CS-Leitung hoch angehoben wurde. Die obige Seite enthält ein Zeitdiagramm des SPI-Busses beim Anheben der CS-Leitung auf der SD-Karte.
Außerdem ist es eine gute Idee sicherzustellen, dass der Mikrocontroller beim Einschalten/Einstecken der Karte die Verwendung des SPI-Modus mit der Karte aushandelt. Diese Details finden Sie hier
Zusammenfassend sollte es in Ordnung sein, den SPI-Bus mit mehreren Peripheriegeräten zu teilen, solange die oben genannten Vorsichtsmaßnahmen getroffen werden.
jpeskin