SPI am Parallel-Port simulieren

Gast #878688
Lesenswert?

Hallo,
ich habe ein Gerät, mit dem ich mit dem PC mittels SPI kommunizieren 
möchte.
Nun bin ich soweit, dass ich gelesen habe, dass es scheinbar unmöglich 
ist, über die Gerätetreiber eine saubere und relativ hohe Frequenz 
(bspw. für das CLK-Signal) hinzubekommen. Stichwörter: Betriebssystem, 
Prozesse, Microsekunden-Delay.
Nun gibt es doch aber Parallel-Programmer, ich erinnere mich da für den 
MSP (von Olimex: http://elmicro.com/de/msp430jtag.html). Dieser wird 
auch an den Parallel-Port angeschlossen.
Laut Schaltplan sind dort nur Pegelwandler drin. Also muss die 
SPI-Freqeunz irgendwie von der Entwicklungsumgebung erzeugt werden.
Gibt es für sowas nicht schon fertige Treiber?
#878692
Lesenswert?

Bei SPI (Master!) ist das Timing unkritisch, das kann man gut per 
Software machen.
Auch wenn mal ein CLK-Puls zehnmal so lang wie der vorhergehende ist, 
das Empfangs-Schieberegister stört das nicht.

Fertige Treiber findest du unter "SPI-Bitbanging-Adaptors" in der 
Kernel-Config.
Gast #879007
Lesenswert?

Erstmal Danke für eure Antworten.

 -Ich benutze jedoch kein Linux, sondern muss es unter Windows 
realisieren.

@ernst
Das habe ich vergessen zu erwähnen:
 -Es handelt sich leider um einen Slave, sonst hättest du natürlich 
recht.

@df311
 -Realtime ist doof. Der SPI-Traffic muss nebenläufig ablaufen.

Gibt es denn noch andere Möglichkeiten?
Moderator Persönliche Seite #879055
Lesenswert?

Selbst ein µC hat es übrigens schwer, SPI-Slave zu spielen.  SPI ist
von der Natur her ein Schieberegister und ist optimal dafür, in
purer Hardware realisiert zu werden.  Es gibt (anders als bspw. bei
I²C) keine Möglichkeit für den Slave, dem Master zuzurufen: ,,Halt
mal, ich bin noch gar nicht so weit!''  Wenn der Master seine erste
Taktflanke raustaktet, muss der Slave das erste Datenbit bereit
gestellt haben, ohne wenn und aber.
Gast #879495
Lesenswert?

Mit anderen Worten kann ich es vergessen unter den gegebenen Umständen 
einen Slave zu realisieren?

wie sieht es aus mit USB. hab mal gelesen, dass es damit besser aussehen 
könnte. einen FTxxx-Chip, der über RS232-Treiber läuft?
Gast #879503
Lesenswert?

> Das habe ich vergessen zu erwähnen:
>  -Es handelt sich leider um einen Slave, sonst hättest du natürlich
> recht.

Heißt das nicht, dass das Gerät, welches Du besitzt, ein Slave ist?!?
Damit ist doch alles in Butter, denn das Gegenstück sollte dann ein 
Master sein.
Wenn das Timing wirklich kritisch wird, könntest Du auch parallel zum µC 
und von dort per SPI weiter...
Gast #882188
Lesenswert?

Das ginge auch mit den klassischen USB-UART ICs von FTDI, FT232R.
Kannst damit selber die 4 Pins CB0 bis CB3 verwenden (als normale 
I/O-Pins) Stichwort "CBUS Bit Bang Mode" und den SPI Handling selber 
erzeugen. Diese Pins lassen sich einzeln setzen und abfragen, können 
alle als Eingang und Ausgang verwendet werden.

http://www.ftdichip.com/Products/FT232R.htm
http://www.ftdichip.com/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
http://www.ftdichip.com/Projects/CodeExamples/VC++/vc_CBUS_bitbang.zip

Es gibt dazu bei FTDI weitere Dokumente.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren