Forum: Mikrocontroller und Digitale Elektronik SPI schnittstelle


von Fritz F. (beni123)


Angehängte Dateien:

Lesenswert?

hallo kann mir bitte jemand helfen. ich versuche einfach zwei lpc935 
über die SPI schnittstelle zu verbinden. doch mein programm funktioniert 
nicht. da ich nun schon kurz vor der verzweiflung bin, hoffe ich ihr 
könnt  mir helfen.

bitte
danke

mfg

von sprites (Gast)


Lesenswert?

wie sieht die verbindung aus? betreffend MISO MOSI? gekreuzt?

von Fritz F. (beni123)


Lesenswert?

nein!

MOSI Master out Slave in
MISO Master in Slave out

also nicht gekreuzt!

von Fritz F. (beni123)


Lesenswert?

kann mir keiner helfen??

von Fritz F. (beni123)


Angehängte Dateien:

Lesenswert?

habe den code jetzt noch mal vereinfacht! es funktioniert trotzdem 
nicht. vielleicht findet ja wer einen fehler bei diesen codes.

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


Lesenswert?

Erster Schritt:
verbinde am Master direkt MISO und MOSI, dann müsstest du deine eigenen 
Daten wieder zurückbekommen.

Das hier sieht seltsam aus:
    _SS = 0; // SPI-Slave selektieren
    SPDAT = 0x45; // Wert schreiben
    while(_SS == 0); // Warten bis Schreibvorgang zu Ende
Stimmt das so? Es ist ein unüblicher Weg, beim Master den SS-Pin 
abzufragen, ob die Übertragung fertig ist. Funktioniert das überhaupt, 
im einen Interrupt (2) zu warten, bis der andere (9) aufgerufen wurde?


> bei diesen codes.
Meine C-Files heissen mit Nachname *.c
Dann klappt es auch mit dem Syntax-Highlighting.

von Fritz F. (beni123)


Lesenswert?

Das mit MOSI MISO zusammenhängen ist eine gute Idee. Nur wenn ich 
angenommen 0x45 sende wird doch einfach nur 0x45 bei MOSI hinaus 
geschrieben und bei MISO wieder hinein. Falls die Übertragung nicht 
funktioniert bleibt aber höchstwarscheinlich 0x45 in SPDAT stehen und 
ich erkenne keinen Unterschied.

Denn code habe ich aus einem Auszug aus Buch Keil C51 (Philips LPC900 
Ergänzung zu Kapitel 10 (SPI-Bus)).

Nur den Interrupt 2 habe ich dazugefügt um irgend wie die µC Zeitlich 
abzustimmen. Zuerst löse ich den Interrupt beim slave aus um Werte in 
SPDAT
 zu schreiben. Dann beginne ich mit dem Senden vom Master aus gesteuert.

Mit den Interupts bin ich mir jetzt auch nicht mehr sicher. Wenn ich 
Prioritäten gesetzt habe müsste es funktionieren. Aber so bin ich mir 
auch nicht mehr sicher.

von holger (Gast)


Lesenswert?

>Nur den Interrupt 2 habe ich dazugefügt um irgend wie die µC Zeitlich
>abzustimmen. Zuerst löse ich den Interrupt beim slave aus um Werte in
>SPDAT

Wie machst du das? An welcher Stelle im Programm?

> zu schreiben. Dann beginne ich mit dem Senden vom Master aus gesteuert.

Wie kommt dein Master eigentlich in den SPI Interrupt?
Genau, gar nicht! Versuch es erstmal komplett ohne Interrupt,
und auch ohne Slave. Einfach mit dem Master Bytes verschicken.
Dann Osci dran und schauen ob SCLK taktet. Dann nachschauen
ob aus MOSI was rauskommt. Wenn du das soweit hast, dann
kümmerst du dich um den Slave.

von Fritz F. (beni123)


Lesenswert?

>Wie machst du das? An welcher Stelle im Programm?

Die Interrupt löse ich mit einem Taster aus (per Hand).

>Wie kommt dein Master eigentlich in den SPI Interrupt?
>Genau, gar nicht!

Warum nicht? Wegen der Schleife in Interrupt 2??

von holger (Gast)


Lesenswert?

>>Wie machst du das? An welcher Stelle im Programm?
>Die Interrupt löse ich mit einem Taster aus (per Hand).

Achso. Ich kenn die Interruptnummern vom LPC nicht.

>>Wie kommt dein Master eigentlich in den SPI Interrupt?
>>Genau, gar nicht!

>Warum nicht? Wegen der Schleife in Interrupt 2??

Vergiss diesen Teil der Frage. Siehe oben.

Den Rest von meinem obigen Post solltest du mal
beherzigen. Sende in einer Endlosschleife einfach
mal Daten mit dem Master. Slave sollte da erstmal
egal sein. Dann schau nach ob der Master auch sendet,
also ob auf SCLK und MOSI was raus kommt.

von Fritz F. (beni123)


Lesenswert?

OK werde ich machen. Danke.

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.