SPI über serielle Schnittstelle

E

EXS#42

Grünschnabel
Moin,

ich möchte über die serielle Schnittstelle eine MultiMediaCard bearbeiten. Mir steht bei dem System nur die serielle Schnittstelle zur Verfügung. Die benötigte Hardware soll Minimal gehalten werden, deshalb sollte auch kein Mikrocontroller eingesetzt werden, wie dies bspw. Ulrich Radig macht.

Da die SPI-Schnittstelle Bit-seriell und nicht Byteseriell arbeitet und auch keine feste Baudrate Verwendung findet, können die Daten nicht über die TxD-Leitung übertragen werden. Aus diesem Grund wollte ich die Flusssteuerungsleitungen (RTS, CTS, DTR, DSR) missbrauchen. Von diesen 4 Leitungen lassen sich die Leitungen RTS und DTR steuern, die Leitungen CTS und DSR dienen ja für Signalisierungen der Gegenstelle und lassen sich nicht steuern.

Gibt es eine Möglichkeit diese Leitungen trotzdem als "Ausgänge" zu defnieren und die Pegel mittels ioctl() zu setzen?

mfg

EXS
 
Abgesehen davon, dass du dafür wahrscheinlich hier falsch bist, für SPI reichen 2 Output und 1 Input Leitung vollkommen aus. CTS bzw. DSR kann man doch auslesen, oder?
 
Moin,

inwiefern falsch? Sollte ich hier falsch sein dann sorry, bitte entsprechend verschieben. Mir geht es nicht um die Hardware, die will ich ja weglassen. Ich versuche eine reine Softwarelösung.

Die MMC benötigt die Signale
CS = Chipselect
CLK = Clock
CMD-DI = Command, Data IN

und liefert das Signal
DAT-DO = Data Out, Response

Wenn ich mich nicht irre wären das SPI-mäßig (für Atmel)
SS = Slave Select
SCK = Serial Clock
MOSI = Master Out Slave In

und

MISO = Master In Slave Out

demnach brauche ich 3 Signale zum steuern und eine Empfangsleitung. Ich habe 2 Steuerleitungen (RTS, DTR) und müsste also eine der Leitungen CTS, DSR, RING oder DCD als Ausgang definieren, falls das möglich ist.

Wenn das möglich sein sollte, dann wie? Alternativ brauche ich dann wohl doch mehr Hardware (Mikrocontroller oder Demultiplexer).

CTS bzw. DSR kann man doch auslesen, oder?
Ja kann man auslesen, nur setzen scheint nicht zu gehen, was ja auch klar ist, da diese Leitungen eigentlich durch die Gegenstelle gesetzt werden. Mein anliegen liegt somit ausserhalb von dem was man üblicherweise damit macht.

mfg EXS
 
Naja, außerhalb dem was man üblicherweise macht war es, als du angefangen hast TXD und RXD nicht verwenden zu wollen. Ein toller Ansatz ist das eher nicht. Mit Falsch meinte ich, du wärest in einem anderen Forum besser aufgehoben, z. B. mikrocontroller.net

Jetzt die tolle Nachricht: Wenn du dir die Spezifikation von SPI durchliest (z.B. im Atmel Datenblatt) wirst du feststellen, dass ChipSelect nur bei mehreren Empfängern benötigt wird. Ich glaube CS war Active-Low, also reicht's den über nen Pull-Down permanent nach unten zu ziehen. Wenn die MMC Karte aus irgendwelchen Gründen das nicht mitmacht und der CS getoggelt werden muß, dann ist es eben nicht machbar.
 
Moin,

ja gefallen tut mir das auch nicht. Das Problem mit TxD ist, dass es nicht möglich ist die Leitung manuell zu setzen. Da werden immer "n" Bit mit der eingestellten Baudrate gesendet, inklusive Start- und Stoppbits. Aus diesem Grund ist diese Leitung für diesen Missbrauch schlicht nicht geeignet.

Die Sache mit dem CS-Signal hatte ich aus dem Hitachi-Datenblatt und dem Beispielcode den Ulrich Radig geschrieben hat. Wollte das mehr oder weniger so übernehmen, mit dem Unterschied, dass ich keinen Mikrocontroller zwischen dem PC und der MMC einsetzen wollte.

Wird aber wohl so nicht gehen, trotzdem danke für die Antwort.

mfg EXS
 

Ähnliche Themen

hardware über serielle Schnittstelle ansteuern`

Zurück
Oben