ARM LPC1115 sblib Problem mit example-spi-out

Fragen und Diskussionen zur Entwicklung von neuen Geräten. Sowohl Hardware als auch Software. English is welcome.
Antworten
Olli
Beiträge: 70
Registriert: 12. Aug 2014, 20:52
Wohnort: Moormerland / Ostfriesland

ARM LPC1115 sblib Problem mit example-spi-out

Beitrag 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
StefanT
Beiträge: 268
Registriert: 17. Mai 2013, 08:18
Wohnort: Salzburg

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

Beitrag von StefanT »

Hmm ... funktioniert hat das schon mal, ich habe ein EA-DOGS erfolgreich damit angesteuert.
Ich kann es mir am Abend ansehen.
Olli
Beiträge: 70
Registriert: 12. Aug 2014, 20:52
Wohnort: Moormerland / Ostfriesland

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

Beitrag 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
Olli
Beiträge: 70
Registriert: 12. Aug 2014, 20:52
Wohnort: Moormerland / Ostfriesland

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

Beitrag 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
oldcoolman
Beiträge: 645
Registriert: 17. Mai 2013, 20:57
Kontaktdaten:

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

Beitrag von oldcoolman »

Hallo Olli,
vielen Dank dass du dich dem Problem angenommen hast.
liebe Grüße
Andreas
Olli
Beiträge: 70
Registriert: 12. Aug 2014, 20:52
Wohnort: Moormerland / Ostfriesland

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

Beitrag 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
StefanT
Beiträge: 268
Registriert: 17. Mai 2013, 08:18
Wohnort: Salzburg

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

Beitrag 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:
Antworten