Forum: Mikrocontroller und Digitale Elektronik SSEL1 der SPI1 am LPC2148


von G. B. (geri)


Lesenswert?

Hallo zusammen

Ich verwende SPI1 am LPC2148 als Master in Verbindung mit einem L7366
Baustein als Slave (IC zum Anschluss eines Inkrementalgebers).

Das Auslesen des 32-Zählerwertes aus dem L7366 erfolgt indem man an ihn
zeurst ein Steuerbyte sendet und anschliessend 4 Bytes ausliest. Das
Problem ist nun, dass die SPI1 des LPC2148 bei jedem Lese- oder
Schreibvorgang den PIN SSEL1 für kurze Zeit auf 1 legt und den L7366
damit wieder in den "Grundzustand" versetzt.

Wenn ich SSEL1 durch einen GPIO-Pin erzeuge, dann funktioniert die
Schaltung korrekt.

1.) Hält man sich biem L7366 etwa nicht an die Norm?
2.) kann man SSEL1 im LPC2148 anderweitig konfigurieren, damit bei
einem Schreib-Lesevorgang das Signal SSEL1 nur am Anfang auf Low geht
und erst am Ende des Lesevorganges wieder auf High geht?
3.) Habe ich die Funktion von SSEL1 etwa falsch verstanden?
4.) Wie habt Ihr evtl. noch eine andere gute Lösung?

Vielen Dank für Eure Tipps und freundliche Grüsse

Geri

von Klaus Skibowski (Gast)


Lesenswert?

Hi Geri,
gehe ich recht in der Annahme dass Du den SSEL1 an den /CS des L7366
angeschlossen hast ? Wenn Du den LPC2148 nur als SPI-Master einsetzen
willst, solltest Du den SSEL1-Pin fest auf HIGH-Pegel legen. Das
/CS-Signal des L7366 musst Du auf einen normalen I/O-Port legen um den
L7366 zu aktivieren bzw. zu deaktivieren.
Der SSEL des LPC2xxx ist sozusagen der /CS des Mikrocontrollers falls
Du den Mikrocontroller als SPI-Slave benutzen willst (z.B. in
Multi-Master-Umgebungen)

Klaus Skibowski

von G. B. (geri)


Lesenswert?

Hallo Klaus

Vielen Dank für Deine Infos, interessant:)

Ja, den SSel1 habe ich am /CS des L7366 angeschlossen. Ich habe mir
gedacht, weil es bei meinem OLIMEX-Board mit der MMC-Karte auch
funktioniert, dann müsste es auch gehen. Ausserdem schaltet der
SSEL1-Pin bei jedem Schreib bzw. Lesevorgang den SSEL1 auf low..

Ich werde nun, wie du meintest, einen weiteren IO-Pin für das
/CS-Signal verwenden.

Freundliche Grüsse und nochmals vielen Dank für Deine Hilfe

Geri

von Martin Thomas (Gast)


Lesenswert?

Das beschriebende Workaround SSEL "fest auf High" ist bei neueren
LPC2000 (z.B. LPC213x LPC214x) nicht mehr zwingend notwendig, wenn man
einen SPI-Master benoetigt. Meines Wissens ist dies nur bei aelteren
LPC2000 Modellen notwendig. Dies ist als Fehler in den Erratas vermerkt
und wird wohl in der naechsten Revision korrigiert. "NXP-Robert" weiss
da sicher mehr.

Falls SSEL1 bei SPI/SSP auf "auto chip-select" geschaltet ist, kann
es gut sein, dass der CS-pin nach der Datenuebertragung wieder auf
de-assert (high) gesetzt wird - ist ja Sinn der Sache. Moeglicherweise
hilft es, den FIFO gefuellt zu halten, damit CS low bleibt. Ansonsten
spricht nichts gegen die Ansteuerung des Pins als GPIO, duerfte etws
leichter zu debuggen sein ist ja auch schon so gemacht.

Martin Thomas

von G. B. (geri)


Lesenswert?

Hallo Martin

Vielen Dank für Deine Rückmeldung. Im Datenblatt des LPC2148 findet man
unter Punkt 13.3.7 SPI format with CPOL = 1,CPHA = 1 einen Hinweis. Ich
bin mir aber trotzdem nicht ganz sicher ob ich mit diesem Modus weiter
komme.

Hier steht:
"In general, for continuous back-to-back transfers the SSEL pin is
held LOW between successive data words and termination is the same as
that of the single word transfer."

Allgemein wäre es schon gut, wenn das SSEL-Signal aus
Performancegründen automatisch hin und her schaltet weil die
Umschaltung dann per Hardware erfolgt. Gerade bei hohem Datentransfer
kann ich mir vorstellen, dass sich daraus Vorteile ergeben.

Funktionieren tut der Code ja schon, aber es wäre doch sehr interessant
zu wissen ob es anderweitig auch geht:)

Freundliche Grüsse und nochmals vielen Dank

Geri

von Martin Thomas (Gast)


Lesenswert?

Ich bin mir auch nicht 100% sicher wegen den verschiedenen SPI-Modi und
CS. Habe noch nicht sehr viel mit SPI an LPC2000 gemacht. Frage waere
in der LPC2000 yahoo-Gruppe gut "aufgehoben". Aber wegen der
Performance fuer die manuelle CS-Umschaltung wuerde ich mir bei den
214x nicht allzu viele Gedanken machen. Die bieten ja "Fast-GPIO" in
der Hardware, das kann man dann zum "manuellen CS-wackeln" nutzen.

von G. B. (geri)


Lesenswert?

Hallo Martin

Vielen Dank für Deine Rückmeldung und den Hinweis auf die yahoo-Gruppe.
Ich habe dort nun mal einen Beitrag erföffnet. Mal schauen, ob dort
jemand zu diesem Thema noch einen Rat hat...

Freundliche Grüsse

Geri

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.