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
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
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.