mikrocontroller.net

Forum: PC-Programmierung SPI am Parallel-Port simulieren


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: df311 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RTLinux + kernelmodul
damit bekommt man schon ziemlich enge zeit-toleranzen, allerdings wird 
im rt-modus JEDER "normale" prozess vom rt-prozess unterbrochen

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Feadi F. (feadi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann musst Du einen µC benutzen, der den SPI Slave darstellt und dann 
timing-in-sensitive an den PC weiterleitet.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Santiago (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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-...
http://www.ftdichip.com/Projects/CodeExamples/VC++...

Es gibt dazu bei FTDI weitere Dokumente.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht um einen SPI-Slave, und der ist im Bit-Bang-Verfahren mit egal 
welcher Schnittstelle nur äußerst kompliziert zu realisieren, selbst auf 
einem schnellen Microcontroller.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.