Forum: Mikrocontroller und Digitale Elektronik SSEL bei LPC845


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Argh! (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, nach Überflug des manuals gehe ich gerade die Beispiele von NXP 
durch. Gleich beim ersten bin ich bei SPI gelandet und verstehe es 
nicht: Im manual steht z.B., daß man im Register PINASSIGN4 einstellen 
kann, welcher pin SSEL0 sein soll. Dieser pin wird dann automatisch 
von der Hardware des Masters (LPC845) gesteuert. So habe ich es 
verstanden. Nun gut, das hätte je nach Anwendungsfall Vor- und 
Nachteile.
Im Beispiel LPC845_BoB_OLED wird mit
1
masterConfig.sselNumber = OLED_SPI_MASTER_SSEL;
dieser automatische pin festgelegt.
In der OLED-Datei wird aber mit
1
GPIO_PortClear(BOARD_OLED_CS_GPIO ,BOARD_OLED_CS_GPIO_PORT, 1 << BOARD_OLED_CS_GPIO_PIN); // CS LOW = Assert
der slave "manuell" per GPIO gesteuert. Kommt sich das nicht in die 
Quere? Auch habe ich im manual nicht rauslesen können, daß man beides 
gleichzeitig machen kann.

Nun habe ich es ganz offensichtlich überhaupt nicht verstanden. Ich 
dahcte, SSEL und CS sind das Selbe.

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
ich denke deine Vermutung ist richtig, es wird die Hardware SSEL 
Steuerung konfiguriert aber das Signal zusätzlich per SW gesetzt. Einen 
Unterschied macht das vermutlich nur beim OLED_Data(), das müsste jetzt 
nach jedem Byte das CS umschalten. Was passiert wenn das Software CS 
auskommentiert wird?
Die Beispiele müssen nicht fehlerfrei sein, da ist NXP nicht besser oder 
schlechter als andere.

von Jürgen S. (starblue) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Sobald die Funktion mit PINASSIGN umgestellt wurde, hat die GPIO-Ausgabe 
auf dem Pin keine Wirkung mehr.

Von daher ist die manuelle Ansteuerung ohne Wirkung und wurde wohl 
versehentlich nicht gelöscht.

von Argh! (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Infos, das kann gut sein.
Ich versuche gerade, mir beim debuggen (ohne Display) den GPIO0_20 
anzuschauen, da dies der SSEL/CS sein soll. Der Plan ist zu sehen, an 
welcher Stelle im Quelltext der Pin sich bewegt. Bei fast jedem single 
step (F5) wird im Memory View des Peripherals aber das Fenster neu 
aufgebaut und ich darf dann erst wieder da hinscrollen, wo "mein" pin 
ist. Das geht ja gar nicht!

Ich werde auch noch versuchen rauszufinden, ob PINASSIGN wirklich 
Vorfahrt vor der GPIO-config hat oder es drauf ankommt, was von beiden 
zuletzt konfiguriert wurde. Im manual konnte ich jedenfalls nix dazu 
finden.
Auch habe ich wieder ein Brett vor dem Kopf, diesmal beim Register 
TXDATCTL: Da steht
"Transmit Slave Select. This field asserts SSEL0 in master mode. The 
output on the pin is active LOW by default.
0: SSEL0 asserted.
1: SSEL0 not asserted.
Reset value: 0"
Ich verstehe das so, daß SSEL0 per default immer asserted ist???

von Argh! (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nachtragsfragen:

- Ich verstehe es nicht: Wie kann das Register den Wert 0x2 haben und im 
Detail steht 0? Die tooltips helfen mir da leider auch nicht weiter.

- Unter 18.7.4 Slave select steht:"Note that at least one SSEL is 
asserted when data is transferred in master mode." Welchen pin nimmt er 
denn, wenn ich SSEL in Software manuell mache?


- Den Unterschied zwischen den Registern TXDATCTL und TXDAT habe ich 
verstanden. Ein wirklich feines Konzept. Aber warum zum Geier ist im 
Register TXDATCTL beim Symbol Transmit Data " This field provides from 
1 to 16 bits of data to be transmitted." und beim selben Symbol im 
Register TXDAT "This field provides from 4 to 16 bits of data to be 
transmitted.", obwohl das doch das gleiche (ja fast das Selbe) sein 
soll?

- Im Register DIV steht beim Symbol DIVVAL:"DIVVAL is -1 encoded such 
that the value 0 results in PCLK/1, the value 1 results in PCLK/2...".
Unter 18.7.3.1 Data rate calculations steht aber:"The SPI rate will be = 
PCLK_SPIn / DIVVAL." Wenn DIVVAL aber 0 ist, da PCLK nicht runtergeteilt 
werden soll?

So langsam glaube ich, die diesjährige Grippe hat mir doch eine 
relevante Anzahl an Hirnzellen genommen.

von Harald (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Argh! schrieb:
> Bei fast jedem single
> step (F5) wird im Memory View des Peripherals aber das Fenster neu
> aufgebaut und ich darf dann erst wieder da hinscrollen, wo "mein" pin
> ist. Das geht ja gar nicht!

Bin mir nicht ganz sicher, aber evtl. geht das mit diesem Datentyp über 
Watch-Variablen. Betreffendes Register reinlegen und es wird dauerhaft 
angezeigt.

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]
  • [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.