Forum: Mikrocontroller und Digitale Elektronik Umgang mit SPI Lernen


von Florian S. (didi34)


Lesenswert?

Ich habe für ein Projekt einen AD Wandler mit SPI-Interface bestellt. 
Ich habe mich jedoch mit SPI recht wenig befasst. Deshalb meine Frage: 
Wie kann ich den Umgang mit SPI am besten lernen? Vor allem geht es mir 
auch um die Programmierung in C. Kennt jemand ein gutes Tutorial oder 
sonstiges? Vielen Dank im Voraus!

von Eumel (Gast)


Lesenswert?

Welcher Controller?

von Cyblord -. (cyblord)


Lesenswert?

Das sind 2 Schritte:

1.) Verstehen was SPI ist und wie es funktioniert.
2.) Implementieren auf einem bestimmten Controller in einer bestimmten 
Sprache

Bist du mit 1.) schon durch?

Zu 2.)
Diese Sprache sollte man schon beherrschen. Und den Controller natürlich 
kennen. Wenn nicht, dann erstmal ab an die Grundlagen und SPI 
zurückstellen. Alles auf einmal geht nicht.

gruß cyblord

von Purzel H. (hacky)


Lesenswert?

Na. Das datenblatt des ADC sollte genuegend drueber sagen was benoetigt 
wird. Das Datenblatt des Controller sollte genuegend sagen was moeglich 
ist. Zu beginn wuerd ich den ADC per einzelpin ansteuerung in betrieb 
nehmen. Man muss sowieso allen nachmessen bis es geht. Da sollte man 
nicht zuviele Baustellen aufs Mal haben.

von Cyblord -. (cyblord)


Lesenswert?

Und SPI ist so ziemlich die einfache Datenübertragung die man sich 
vorstellen kann. Man muss noch nichtmal die Datenrichtung der Ports 
ändern weil für jede Richtung schon ne eigene Leitung vorgesehen ist. 
Wackeln an 2 Pins, am 3. Pin evt. noch lesen und das wars. Dafür muss 
man das ganze jetzt wirklich nicht monatelang studieren.

gruß cyblord

von Florian S. (didi34)


Lesenswert?

>Bist du mit 1.) schon durch?

Ich habe mich bei SPI erst mit den Grundlagen befasst (Welche Leitungen 
giebt es und was sind MISO und MOSI) aber weteres habe ich darüber noch 
nicht gelesen. Wo kann man am besten die Basics lernen?

von Cyblord -. (cyblord)


Lesenswert?

Florian Schuller schrieb:
>>Bist du mit 1.) schon durch?
>
> Ich habe mich bei SPI erst mit den Grundlagen befasst (Welche Leitungen
> giebt es und was sind MISO und MOSI) aber weteres habe ich darüber noch
> nicht gelesen. Wo kann man am besten die Basics lernen?

Überall. z.B. Wikipedia:

http://de.wikipedia.org/wiki/Serial_Peripheral_Interface

Was willst du denn da groß lernen? Ist dir im Prinzip klar wie da Bytes 
hin und her gesendet werden? Beschreib doch mal in deinen eignen Worten 
in 2 Sätzen was du glaubst was SPI tut.

gruß cyblord

von Florian S. (didi34)


Lesenswert?

>Zu 2.)
>Diese Sprache sollte man schon beherrschen. Und den Controller natürlich
>kennen. Wenn nicht, dann erstmal ab an die Grundlagen und SPI
>zurückstellen. Alles auf einmal geht nicht.

Mikrocontroller in C programmieren beherrsche ich schon ziemlich gut und 
habe auch bereites einige Projekte damit gemacht.

von Florian S. (didi34)


Lesenswert?

>Überall. z.B. Wikipedia:

Danke für den Link. Ich suchte nur nach SPI und nicht nach Serial 
Peripheral Interface. Vielen Dank! Gibt es irgendwo beispiele für die 
Implementierung in C oder muss man sich das selbst überlegen?

von Michael (Gast)


Lesenswert?

FFlorian Schuller schrieb:
> Ich habe mich bei SPI erst mit den Grundlagen befasst (Welche Leitungen
> giebt es und was sind MISO und MOSI) aber weteres habe ich darüber noch
> nicht gelesen. Wo kann man am besten die Basics lernen?

Nimm einen Duden und das Datenblatt deines zu steuernden ADC.
MISO und MOSI sind nur zwei der Leitungen, die es gibt. Dazu kommt noch 
Clock und manchmal CS.
http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface

von Cyblord -. (cyblord)


Lesenswert?

Florian Schuller schrieb:
>>Zu 2.)
>>Diese Sprache sollte man schon beherrschen. Und den Controller natürlich
>>kennen. Wenn nicht, dann erstmal ab an die Grundlagen und SPI
>>zurückstellen. Alles auf einmal geht nicht.
>
> Mikrocontroller in C programmieren beherrsche ich schon ziemlich gut und
> habe auch bereites einige Projekte damit gemacht.

Dann einfach mal die Gegenfrage. Was ist dir an SPI unklar? Sogar der 
Wikipedia Artikel ist ultrakurz. Eigentlich sollte danach klar sein was 
SPI ist und wie es funktioniert. Und wenn man C auf nem Controller kann 
dann sollte klar sein wie man das von Hand, also per Pin-Wackeln 
implementieren müsste.
Abgesehen davon haben viele Controller einen Hardware-SPI eingebaut.

gruß cyblord

von Matthias (Gast)


Lesenswert?

Florian Schuller schrieb:
> Gibt es irgendwo beispiele für die
> Implementierung in C oder muss man sich das selbst überlegen?

Hier im Forum findest du massenhaft SPI Anwendungen, auch in C. 
Stichworte für die Suche wären z.B. LED-Cube oder 74HC595

von Florian S. (didi34)


Lesenswert?

>Abgesehen davon haben viele Controller einen Hardware-SPI eingebaut.

Über SPI grundsätzlich ist mir jetzt alle klar. Ich wollte eben nur 
wissen ob man sich das alles Softwaremäßig zusammenbasteln muss oder ob 
das nicht auch über Hardware-SPI geht. Mein Controller besitzt nämlich 
eine Hardware-SPI Schnittstelle.

von Peter S. (Gast)


Lesenswert?

Florian Schuller schrieb:
> Danke für den Link. Ich suchte nur nach SPI und nicht nach Serial
> Peripheral Interface. Vielen Dank!

DER war gut !!

von Cyblord -. (cyblord)


Lesenswert?

Peter S. schrieb:
> Florian Schuller schrieb:
>> Danke für den Link. Ich suchte nur nach SPI und nicht nach Serial
>> Peripheral Interface. Vielen Dank!
>
> DER war gut !!

Jetzt klings nach Troll.


> Über SPI grundsätzlich ist mir jetzt alle klar. Ich wollte eben nur
> wissen ob man sich das alles Softwaremäßig zusammenbasteln muss oder ob
> das nicht auch über Hardware-SPI geht. Mein Controller besitzt nämlich
> eine Hardware-SPI Schnittstelle.
Das war überhaupt nicht deine Frage. Und natürlich kannst du einen 
HW-SPI nutzen wenn dein Controller einen solchen hat. Was für eine Frage 
ist das? Wie das geht? Kommt auf den Controller an und steht dort im 
Datenblatt. Ansonsten konkret nachfragen wenn dort was unklar sein 
sollte.

gruß cyblord

von Florian S. (didi34)


Lesenswert?

OK ich kenne mich jetzt halbwegs aus und werde mal das Datenblatt meines 
Controllers studieren. Danke für eure Antworten!

von Eumel (Gast)


Lesenswert?

Florian Schuller schrieb:
> meines
> Controllers studieren

Den du ja zum Glück schön geheim gehalten hast.

von Florian S. (didi34)


Lesenswert?

Peter S. schrieb:
>> Danke für den Link. Ich suchte nur nach SPI und nicht nach Serial
>> Peripheral Interface. Vielen Dank!
>
> DER war gut !!

Wer nichts produktives zum Thema beitragen kann sollte es lassen etwas 
zu Posten! Nochmals vielen Dank an alle die etwas produktives zum Thema 
beigetragen haben.

von Florian S. (didi34)


Lesenswert?

Eumel schrieb:
>> meines
>> Controllers studieren
>
> Den du ja zum Glück schön geheim gehalten hast.

Sorry war unbeabsichtigt ihn nicht zu erwähnen. Ich werde den ATmega32 
verwenden.

von Cyblord -. (cyblord)


Lesenswert?

Aber mal ehrlich, der ganze Thread hier war doch jetzt komplett für die 
Tonne.

von Eumel (Gast)


Lesenswert?

Florian Schuller schrieb:
> Sorry war unbeabsichtigt ihn nicht zu erwähnen. Ich werde den ATmega32
> verwenden.

Dann schau einfach mal ins Datenblatt. Das ist beschrieben (inklusive 
Code) wie man das SPI Modul verwendet.
Viel Spaß beim Basteln :)

von Florian S. (didi34)


Lesenswert?

Eumel schrieb:
> Dann schau einfach mal ins Datenblatt. Das ist beschrieben (inklusive
> Code) wie man das SPI Modul verwendet.
> Viel Spaß beim Basteln :)

Danke! Den werde ich haben :-).

von Cyblord -. (cyblord)


Lesenswert?

gandalf schrieb im Beitrag #3068834:
> irgendwann werden sie zu faul zum aufs klo gehen und verenden in ihren
> exkrementen...
>
> traurig wie das alles wird

Tja, diese Generation wird bald an den Knöpfen deines 
Lebenserhaltungssystems rumspielen. Tolle Aussichten was? ;-)

von Purzel H. (hacky)


Lesenswert?

>... Ich wollte eben nur wissen ob man sich das alles Softwaremäßig 
zusammenbasteln muss oder ob das nicht auch über Hardware-SPI geht. Mein 
Controller besitzt nämlich eine Hardware-SPI Schnittstelle.

Das zeigt das Studium des Datenblattes des anzusteuerndes Bauteils. Es 
gibt solche, dia passen, und andere, die passen nicht. Ich kann mich 
leider nicht an das Bauteil erinnern, aber da war die kleine 
Unpaesslichkeit, dass das CS im letzten Datenbit hochgehen musste. Ja. 
wenn man das erkennt, beschreibt man die paar Leitungen halt per 
software.
Beim Hardware SPI gibt es noch zu beachten, dass der Unterschied 
zwischen Poll Mode und Interrupt Mode eher klein ist wenn man mit 
maximaler Geschwindigkeit arbeitet. Denn das Byte ist in 16 click 
rausgeclockt. Der Interrupt kommt in dieser Zeit nicht grad weiter, denn 
er muss pushen, poppen und noch etwas rumspringen, dann sind die 16 
clocks auch weg, ohne dass etwas erreicht wurde.

von Mr. Proper (Gast)


Lesenswert?

genau, poppen

von Florian T. (florian_t)


Lesenswert?

cyblord ---- schrieb:
> Tja, diese Generation wird bald an den Knöpfen deines
> Lebenserhaltungssystems rumspielen. Tolle Aussichten was? ;-)

Wieso? Ich dachte das ist schon längst alles nach Korea ausgelagert 
worden...

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.