Forum: FPGA, VHDL & Co. FPGA, Peripherie mit SPI


von pico (Gast)


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,

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

pico schrieb:
> mit welchen externen Peripherie -Bausteinen
> dies übungstechnisch am einfachsten funktioniert?
Nimm einen DA-Wandler und ein Oszi.

Oder einen AD-Wandler. Dann kannst du an LEDs den Binärwert ausgeben und 
siehst schnell was.

von pico (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...  ;-)

von pico (Gast)


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 !!!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von pico (Gast)


Lesenswert?

Lothar Miller schrieb:
> Ja, ja und ja.

Sehr gut, sehr gut, sehr gut.

Lothar Miller schrieb:
> Dankesehr.

Bitteschön ;-)

von Thomas R. (Firma: abaxor engineering) (abaxor)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas Reinemann schrieb:
> Nicht beim ADS7947 :-). CS und SCLK reichen und schon kommen die Daten
> an, feine Sache.
Ja gut, weil es nichts zu konfigurieren gibt und die Kanalumschaltung 
mit einem extra Pin erledigt wird...  ;-)

von pico (Gast)


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?

von P. K. (pek)


Lesenswert?

pico schrieb:
> Poti habe ich momentan leider auch nicht.

Unglaublich...
...dann mach dir halt zur Not ein kleines Widerstandsnetzwerk mit 
Jumpern, damit Du ein paar diskrete Werte ausprobieren kannst.

von pico (Gast)


Lesenswert?

Vielen Dank für die schnelle Reaktion.

Was für den Einen selbstverständlich ist, muss es nicht für den Anderen 
sein. Und eine Antwort auf meine Frage war es auch nicht.

Aber Danke für die Info.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

von pico (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.