Forum: Mikrocontroller und Digitale Elektronik SPI SELECT SLAVE?


von Markus (Gast)


Lesenswert?

Hallo,

ich beschäftige mich mit einen arm-controller (LPC2148).Nun versuche ich 
seit 2 tagen SPI zum laufen zu bekommen. Ich habe 2 Boards(MCB2140). 
Einer ist master, der andere slave. D.h. es gibt 4 Leitungen 
(MISO,MOSI,CLK,SSL).

Nun habe ich das problem wenn ich was über dem master schicke, sollte 
der slave es empfangen, tut er aber nicht. Ich bin mir dabei nicht 
sicher wie ich das SELECT SLAVE (SSL) setzen muss? Ich weiss, dass beim 
empfang der Daten der slave die SSL leitung auf low setzen muss 
(sozusagen ein wakeup für den slave), aber wie realisiere ich das?
Denn wenn der master etwas senden möchte weiß der slave (slave muss SSL 
auf low schalten!) noch gar nichts davon, dass er etwas empfangen soll.

Sorry, ist bestimmt ein dummer denkfehler, oder ein "nicht verstehen" 
von mir. Wäre über jede hilfe sehr sehr dankbar.


gruss
  markus

von Carsten P. (papa_of_t)


Lesenswert?

Du kannst SSL immer aktiv lassen bei einem Slave. SlaveSELECT wird vom 
Master gesetzt, um den SLAVE auszuwählen, für den die Daten sind (Wenn 
es mehrere gibt). Der Slave muß immer empfangsbereit sein, bzw. der 
Master muß warten, bis der Slave fertig ist. Das kann man erreichen 
durch ein Protokoll, z.B. sendet der SLAVE immer "00" im SPDR zurück, 
bis er fertig ist, und der Master muß solange ein Dummy-Byte senden, bis 
das gewünschte Ergebnis kommt (So ungefähr funktioniert die 
Initialisierung einer SD-Karte). Viel Spaß!

von Markus (Gast)


Lesenswert?

@ Carsten Pietsch

Danke soweit,

SSL ist ja nur ein bit, das man auf low setzt (IOCLR0 = 0x0000 4000 ). 
Wie sieht es denn aus wenn es mehrere slaves gibt. wie setzte ich denn 
dann SSL wie unterscheidet der master zwischen den slaves?

von Falk (Gast)


Lesenswert?

@Markus

>SSL ist ja nur ein bit, das man auf low setzt (IOCLR0 = 0x0000 4000 ).
>Wie sieht es denn aus wenn es mehrere slaves gibt. wie setzte ich denn
>dann SSL wie unterscheidet der master zwischen den slaves?

Mal über die Frage 10 Minuten nachgedacht, bevor du das Posting 
geschrieben hast?
Vielleicht mittels mehrerer Slave Select Leitungen?

MfG
Falk

von Carsten P. (papa_of_t)


Lesenswert?

Nimm einfach mehrere normale Ausgangspins als SS, für jeden Slave eins, 
schalte alle MOSI und alle MISO zusammen. Nur der Slave, der LOW am S 
hat, darf antworten, alle anderen müssen sich still (hochohmig) 
verhalten. Ich glaube, es ist völlig egal, welche Ports man nimmt. Aber 
bring erstmal EINEN Slave zum Laufen.. :-)

von Markus (Gast)


Lesenswert?

@Falk

Ahhh, sieht das dann so aus, dass ich mir irgend einen freien port 
nehme, von diesem eine leitung zum ssl port des slaves lege, und den 
port bei sendebedarf des masters auf low schalten.

sorry für meine unwissenheit.

von Falk (Gast)


Lesenswert?

@Markus

>Ahhh, sieht das dann so aus, dass ich mir irgend einen freien port
>nehme, von diesem eine leitung zum ssl port des slaves lege, und den
>port bei sendebedarf des masters auf low schalten.

100 Punkte für den Kandidaten.

>sorry für meine unwissenheit.

Niemand muss sich für Unwissenheit entschuldigen. Aber einige Fragen 
lassen doch stark vermuten, dass erst gepostet wurde und nicht mal ein 
wenig nachgedacht (=Faulheit). Das stösst mir ein wenig sauer auf.
Nix für ungut.

MFg
Falk

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.