Forum: FPGA, VHDL & Co. SPI zu RS232 Converter


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Fabjus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich befinde mich gerade vor folgendem Problem.
Ich will mit meinem FPGA über SPI eine SD-Karte ansprechen.
Um die Antworten der SD-Karte, welche sie beim Initialisierungs-Prozess 
sendet, lesen und analysieren zu können hätte ich sie gerne irgendwo 
dargestellt.
Meine Idee war jetzt, den FPGA über eine RS232 Schnittstelle mit dem PC 
zu verbinden und die Daten dort mit HTerm zu lesen.
Der Aufbau ist also wie folgt:
Der FPGA Sendet die Befehle zur Initialisierung per SPI an die SD-Karte 
und empfängt auch wieder über SPI die Antworten der gleichen.
Diese soll er dann über RS232 weiter an den PC senden.

Unabhängig voneinander funktionieren sowohl SPI, als auch RS232 
Übertragungen (nach Vorbild von Lothar Miller)

Gibt es schon so eine Art SPI-RS232 Schnittstelle in VHDL-Form? oder 
zumindest etwas in der Richtung?

Vielen Dank vorab!

Fabjus

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Mmh, RS232 rauspusten ist doch das denkbar einfachste. Wenn Du einen 
Takt hast, der z.B. alle 1/115200s oder 1/µs ein enable-Signal für einen 
clockzyklus generiert, dann rassel 12 States runter bei jedem 
rising-clock wenn enable:

0 (startbit)
8*[0/1] (Datenbits[0..7] )
[0/1] Parity (falls gewünscht)
1 (stopbit)
1 (stopbit)

und mit jedem zu sendenen Datum wird die Statemachine neu gestartet.

Wenn Du SPI bidirektional hinbekommst, ist RS232 raus ein Kinderspiel.

Wenn Du Dir den Inverter sparen willst, und Dein FPGA 3V 10mA treiben 
kann, dann drehe die Logik einfach um, also 1 als startbit etc.

von Klaus I. (klauspi)


Bewertung
0 lesenswert
nicht lesenswert
Und warum das SPI-Signal nicht direkt mit einem Logik Analyzer für < 10 
EUR anzapfen?

von Christian G (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi, also bisher hab ich nur mit der IDE von Altera/Intel (Quartus Prime 
lite) rumgepfuscht, aber selbst die lite Version hat ein tool inne 
(SignalTap) das man für dise Zwecke nutzen könnte, evtl. hat die von dir 
genutze IDE ja auch so etwas... falls nicht, eines meiner ersten mir 
selbst auferlegten "Lernprojekte" war so eine Art SD Karten Zugriff via 
RS232 : Beitrag "SD card controller Test Projekt" ...nutzt zwar nicht 
SPI sonder 4 bit transfer mode aber der UART Teil mit den Puffern etc. 
könnten evtl. ein Denkanstoss für dich sein. Zugegeben die Umzetzung ist 
alles andere als schön, aber jeder fängt mal klein an und es 
funktionierte.

von Markus F. (mfro)


Bewertung
0 lesenswert
nicht lesenswert
Fabjus schrieb:
> Unabhängig voneinander funktionieren sowohl SPI, als auch RS232
> Übertragungen (nach Vorbild von Lothar Miller)
>
> Gibt es schon so eine Art SPI-RS232 Schnittstelle in VHDL-Form? oder
> zumindest etwas in der Richtung?

wenn das eine tut und das andere auch, dann pack' doch einfach noch 
einen dicken FIFO-Puffer dazwischen. So verhindertst Du, dass der UART 
"überfahren" wird und musst dir keine grossen Gedanken über die 
Synchronisation machen.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Markus F. schrieb:
> pack' doch einfach noch einen dicken FIFO-Puffer dazwischen. So
> verhindertst Du, dass der UART "überfahren" wird und musst dir keine
> grossen Gedanken über die Synchronisation machen.
Ich würde im ersten Schritt einfach die jeweils nächste SPI-Übertragung 
so lange verzögern, bis der UART wieder frei ist.

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Ich würde im ersten Schritt einfach die jeweils nächste SPI-Übertragung
> so lange verzögern, bis der UART wieder frei ist.

Oder halt noch einfacher, 2MBaud Uart (oder 3, was der PC halt nativ 
kann) und die SPI (zu Debug-Zwecken) entsprechend nur die Hälfte.

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.