www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SSEL1 der SPI1 am LPC2148


Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Skibowski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.