FPGA, Peripherie mit SPI

Gast #2671731
Lesenswert?

Guten Morgen liebe Forenmitglieder,

ich beschäftige mich seit einiger Zeit mit FPGA's und momentan mit dem 
Thema SPI Schnittstellen. Nun möchte ich die Theorie in die Praxis 
umsetzen und frage Euch, mit welchen externen Peripherie -Bausteinen 
dies übungstechnisch am einfachsten funktioniert?

Vielen Dank und liebe Grüße,
Gast #2671764
Lesenswert?

Dies würde bedeutet, dass ich das Register des ADC's via SPI auslesen 
würde? Wie würde ich das genau machen? Gebe ich dann ein analoges Signal 
ein und lese den Inhalt nach Convertierung im Register via SPI aus?

Vielen Dank für die schnelle Antwort.
Moderator (Firma: Titel) Persönliche Seite #2671784
Lesenswert?

pico schrieb:
> Wie würde ich das genau machen? Gebe ich dann ein analoges Signal ein
Ja klar, am Analogeingang muss ein Poti angeschlossen werden
> und lese den Inhalt nach Convertierung im Register via SPI aus?
Du liest das Datenblatt deines AD-Wandlers und steuerst ihn so an, dass 
er dir den AD-Wert gibt.

Grundlegendes:
> und lese den Inhalt nach Convertierung im Register via SPI aus?
SPI ist immer bidirektional: du sendest was und bekommst gleichzeitig 
was zurück.
Beim AD-Wandler sendest du z.B. die Konfiguration (diese Konfiguration 
gilt dann für die nächste Wandlung!), und während des Sendens wird mit 
dem SPI-Takt Bit für Bit entsprechend der zuvor gesendeten Konfiguration 
gewandelt und zurückgeschickt.

Wenn ich das so überblicke: nimm doch zuerst den DA-Wandler. Da schickst 
du das (richtige) Kommando und siehst sofort was am Ausgang...  ;-)
Gast #2671799
Lesenswert?

Ich verstehe. Vielen Dank für den super Tipp. Das Ganze werde ich mal 
ausprobieren. Könnte ich nach diesem Prinzip auch einen Sensor, 
beispielsweise ein Temperatursensor auslesen?

Oder via SPI einen LCD_Controller ansprechen, welcher dann mit einem 
einzeiligen LCD Diplay verbunden ist?

PS: Sind Sie auch für die gleichnamige Internetseite verantwortlich? 
Diese hat mir einen sehr guten Einblick in die VHDL Programmierung und 
die Funktionsweise der FPGA's gegeben. Kompliment !!!
Moderator (Firma: Titel) Persönliche Seite #2671849
Lesenswert?

pico schrieb:
> Könnte ich nach diesem Prinzip auch einen Sensor,
> beispielsweise ein Temperatursensor auslesen?
>
> Oder via SPI einen LCD_Controller ansprechen, welcher dann mit einem
> einzeiligen LCD Diplay verbunden ist?
>
> PS: Sind Sie auch für die gleichnamige Internetseite verantwortlich?
Ja, ja und ja.

> Kompliment !!!
Dankesehr.
(Firma: abaxor engineering) #2671876
Lesenswert?

Lothar Miller schrieb:
> SPI ist immer bidirektional: du sendest was und bekommst gleichzeitig
> was zurück.

Nicht beim ADS7947 :-). CS und SCLK reichen und schon kommen die Daten 
an, feine Sache. Das aufwendige bei einem SPI-ADC ist nicht das 
SPI-Protokoll, sondern zu wissen was man wann in welche Register 
eintragen muss. Oben erwähnter ADC ist der einzige, den ich kenne, der 
nicht parametriert/konfiguriert werden muss.


Tom
Gast #2676823
Lesenswert?

Leider steht mir nur ein ADC vom Typ MAX11040K zur Verfügung. Und einen 
Poti habe ich momentan leider auch nicht.

Ist es zum Test auch möglich, irgendwelche Testbits über den MOSI zu 
senden und zu schauen, welche Bits über den MISO zu sehen sind und diese 
dann via LED ausgeben?
Moderator (Firma: Titel) Persönliche Seite #2676868
Lesenswert?

pico schrieb:
> welche Bits über den MISO zu sehen sind und diese dann via LED ausgeben?
Über MISO wirst du nichts sehen, weil du ja keinen Slave hast, der einen 
Output geben könnte (MISO = Master In Slave Out).

Du könntest aber natürlich einfach MOSI und MISO verbinden, dann bekämst 
du das herein, was du hinausschickst...

Oder du könntest 2 SPI-Module implementieren und miteinander 
verbinden...
Gast #2676876
Lesenswert?

Vielen Dank. Das werde ich mal ausprobieren. Lese mir gerade parallel 
auf Ihrer Seite die Abschnitte SPI Master / SPI Slave durch. Vielleicht 
schreibe ich auch erst einmal eine Testbench, damit für mich die 
Struktur klarer wird.

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