Seite 1 von 1

ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 24. Apr 2016, 21:32
von Olli
Hallo,

ich habe versucht, ein neues Projekt zu beginnen.
Dazu wollte ich gleich auf die später zu verwendende sblib von euch aufsetzen.
Ich habe bereits einige Dinge mit der LPC Baureihe von NXP mit dem LPCXpresso aufgebaut (Studium und Privat).
Leider war der Start mit der sblib nicht so problemlos bzw. ist noch nicht geglückt.
Zur Vorgehensweise:
ich habe aus GIT den Ordner "software-arm-lib" kopiert und die sblib und die examples in LPCXresso importiert. Die sblib habe ich dann mit "Debug_BCU2" kompiliert und den korrekten Prozessor (LPC1115) eingestellt.
Anschließend wollte ich das Projekt "example-spi-out" kompilieren. Dieses wurde aber mit dem folgenden Fehler abgebrochen:

Code: Alles auswählen

...\software-arm-lib\sblib\Debug_BCU1/../src/main.cpp:39: undefined reference to `bcu' 
Als ich noch fogende Codezeilen eingefügt hatte, ließ sich das ganze schonmal kompilieren.

Code: Alles auswählen

#include <sblib/eib/sblib_default_objects.h>

Code: Alles auswählen

bcu.setProgPin(PIN_PROG);

Leider konnte ich das Ganze aber nicht dazu bringen, irgendwas an den MOSI und CLK Pins zu bewegen.
Als Messmittel stehen mir Oszi und Logikanalyzer zur Verfügung.
Als Referenz habe ich ein mit LPCXpresso mitgeliefertes SSP SPI Beispiel herangezogen.
Dieses lief einwandfrei, somit konnte ich Harwareproblem ausgeschlossen werden.

Was mit bei der bislang erfolglosen Fehlersuche aufgefallen ist:
Bei dem Programmbeispiel konnte ich die Setzungen der Bits in dem SPI0 Register (CR0, CR1...) verfolgen und auch sehen.
Bei der Verwendung der sblib und des example-spi-out wurde ncihts in die entsprechenden Register eingetragen oder es war zumindest nicht in LPCXpresso sichtbar.
Somit weiß ich leider absolut nicht, woran dieses nicht-funktioneren liegen könnte.

Ich hoffe, wir können dieses Problem gemeinsam beheben und ich kann mit der Entwicklung weiter machen.

Grüße
Olli

Re: ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 25. Apr 2016, 08:45
von StefanT
Hmm ... funktioniert hat das schon mal, ich habe ein EA-DOGS erfolgreich damit angesteuert.
Ich kann es mir am Abend ansehen.

Re: ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 27. Apr 2016, 21:18
von Olli
Hallo Stefan,

gibt es bereits Erkenntnisse zu diesem Problem?
Eventuell funktioniert es bei dir ja und ich habe einen Fehler gemacht?
Vielen Dank für deine Mühe!

Grüße
Olli

Re: ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 8. Mai 2016, 22:19
von Olli
Hallo,

ich hab den Fehler nun selber gefunden.
Es ist in der sblib in der Datei spi.cpp der Konstruktor SPI in der Zeile 70:
LPC_SYSCON->PRESETCTRL |= portNum * 4;
das funktioniert so nicht, da im User Manual auf Seite 224 angegeben ist, dass das Bit "SSP0_RST_N" VOR dem beschrieben der Register aktiviert werden soll.
Bei portNum == 0 ist portNum*4 (0*4) = 0
Somit wird nicht 1 in das Register geschrieben, sondern 0.
Dieses wiederrum verhindert, dass auf die SPI Register geschrieben werden aknn und somit ist auch keine SPI Funktion gegeben.
Ich hoffe, diese Erkenntnis kann in die sblib einfließen.

Grüße
Olli

Re: ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 9. Mai 2016, 07:58
von oldcoolman
Hallo Olli,
vielen Dank dass du dich dem Problem angenommen hast.

Re: ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 9. Mai 2016, 11:29
von Olli
Hallo,

ich würde das ganze so lösen:
LPC_SYSCON->PRESETCTRL |= (1 << (portNum * 2));
Bei portNum = 0 bleibt es 0, es wird nicht geshiftet und somit wird eine 1 geschrieben.
Bei portNum = 1 wird es 2, somit wird die 1 um 2 Stellen nach oben geshiftet und es wird eine 4 geschrieben.
Das Bit an der 3. Position im PRESETCTRL Register ist für die SSP1 zuständig.

Gruß
Olli

Re: ARM LPC1115 sblib Problem mit example-spi-out

Verfasst: 9. Mai 2016, 12:11
von StefanT
Klingt logisch, dann funktioniert es natürlich bei meinem Test mit Port != 0.
Danke dass du es dir angesehen hast, ich komme derzeit wieder mal zu nichts :oops: