Hallo zusammen,
ich stehe gerade etwas auf dem Schlauch und hoffe, dass mir hier jemand
weiterhelfen kann.
ich arbeite mich derzeit in das LPC4088 QuickStart Board ein. Habe
bisher u.a. auch schon mit dem stm32 programmiert.
Mich wundert jetzt, dass ich in den Templates keine
Initialisierungsfunktionen für Funktion wie Timer, CAN, SPI, etc. finde.
Normalerweise würde man hierfür ja die verschiedenen Register
beschreiben. Auf dieser Ebene finde ich jedoch keine Funktionalitäten im
C-Code. Zwar kann ich die UserFunktionen, wie z.B. sende, schreiben,
etc. nutzen. Trotzdem würde ich gerne auch sehen, wie diese konfiguriert
sind, um ggf. eigene Anpassungen vorzunehmen. Liegt das alles schon in
einer konfigurierten und compilierten Datei irgendwo vor bzw. kommt man
an die Infos irgendwie ran?
Hoffe ihr versteht mein Problem und könnt mir weiterhelfen.
MFG
rudy schrieb:> ich arbeite mich derzeit in das LPC4088 QuickStart Board ein
Mit mbed? Hier sind die Libraries (wie bei Arduino) versteckt. Oder mit
LPCXpresso? Hier ist alles wie beim stm32 (CMSIS). Anbei ein Blinky mit
den 4 LEDs
rudy schrieb:> Mich wundert jetzt, dass ich in den Templates keine> Initialisierungsfunktionen für Funktion wie Timer,...
Wiebitte?
Guck in das HW-Manual zu diesem µC, dort steht wirklich ALLES drin, was
du brauchst.
Natürlich kenne ich dein Quickstartboard nicht, also mußt du selber
zusehen, wie du für deine Konfiguration den externen Bus aufsetzt.
Externen SDRAM richtig aufzusetzen ist ein klein wenig knifflig für den
Anfang, weil du ja nicht nur den µC sondern auch den SDRAM richtig
konfigurieren mußt. Aber das alles ist kein Hexenwerk, ich habe hier
mehrere Eigenbau-Boards mit dem LPC4088 und seinen Vorgängern und sie
laufen alle bestens.
Also, erledige deine Setup-Angelegenheiten selber, dann weißt du
hinterher auch, wie dieses Stück Silizium funktioniert.
W.S.
EA liefert für das Board nur die mbed Unterstützung, hatte ich auch mal
angefragt. Zum Teil kann man die LPCXpresso Beispiele für das RDB4078
Board von Keil nehmen. Da passen aber nicht alle IO-Zuordnungen, zB muss
für Ethernet in der emac.c die auskommentierten PINSELects geändert
werden:
1
PINSEL_ConfigPin(1,16,1);
2
PINSEL_ConfigPin(1,17,1);
3
4
//CodeRed - mod'ed for RDB4078 board
5
// PINSEL_ConfigPin(2,8,4);
6
// PINSEL_ConfigPin(2,9,4);
Die mbed Lib für das QSB4078 ist um einiges umfangreicher und
unterstützt auch das QSPI Flash und vor allem die Grafik. Das emWin
einzubinden geht, war aber ein bischen Fummelei mit den mbed Libs
zusammen. Schade ist nur die noch fehlende USB Host unterstüzung weil
das Memory Model beim 40xx anders als beim 17xx ist.
Die wichtigste Seite ist die hier:
http://developer.mbed.org/users/embeddedartists/notebook/lpc4088-quickstart-board/
Nachtrag:
c:\nxp\LPCXpresso_7.5.0_254\lpcxpresso\Examples\NXP\LPC4000\LPC407x_8x\L
PC407x_8x_Libraries.zip\LPC407x_8x_PDL\
hier sind die Treiber ist zu den onChip Komponenten drin.
JojoS schrieb:> PINSEL_ConfigPin(1,16,1);
O je, das gibt ein Gewurschtel - und es ist alles andere als
selbsterklärend. Gibt es denn hier nur Leute, die das Konfigurieren
ihres Chips nicht mehr aus eigener Kraft erledigen können?
rudy schrieb:> Hoffe ihr versteht mein Problem und könnt mir weiterhelfen.
Ich habe dein Problem schon weiter oben verstanden, aber ich sage dir
ganz klar: Der EINZIGE, der dir wirklich weiterhelfen kann, bist du
selbst - indem du dich mit dem Silizium vertraut machst, was du mit
Software zu beglücken gedenkst. Ich hänge hier mal ein Beispiel an, wo
man sehen kann, wie man es deutlich besser machen kann. Die ganze
Konfiguration wird noch vor main erledigt.
Das angehängte Beispiel paßt auf ein ANDERES Board als das deinige,
also nicht mit copy&paste arbeiten wollen, sondern mit Lesen und
Verstehen, wie man sowas prinzipiell angehen kann.
W.S.
W.S. schrieb:>> PINSEL_ConfigPin(1,16,1);>> O je, das gibt ein Gewurschtel - und es ist alles andere als> selbsterklärend.
sehe ich nicht so. Das ist eine generische Funktion die Port 1 Pin 16
auf Funktion 1 umkonfiguriert. Für die Nummerierung der Funktionen gibts
viele Tabellen -> Datenblatt wie du ja auch schon schriebst. Da das nur
einmal im Programm gemacht wird brauche ich für die vielen hundert
Optionen keine Konstanten. Diese paar Zeilen waren nur der relevante
Teil der den Unterschied zu einem ähnlichen Board ausmachte, direkt über
diesen Zeilen ist die Konfiguration dokumentiert.
> Ich habe dein Problem schon weiter oben verstanden, aber ich sage dir> ganz klar: Der EINZIGE, der dir wirklich weiterhelfen kann, bist du> selbst
Die Ings bei EA, NXP und Co. geben sich aber viel Mühe es dem Anwender
einfacher zu machen und liefern für die Grundfunktionen Quellcode und
Bibliotheken mit. Die ist für dieses Board auführlich für die mbed
Umbgegung gebaut. Wenn man andere Boards von EA kennt weiss man das die
üblicherweise Beispiele für verschiedene Compiler mitliefern, deshalb
habe ich Anfangs genauso gesucht wie der TO.
Danke erstmal für eure Antworten...
JojoS schrieb:> Nachtrag:> c:\nxp\LPCXpresso_7.5.0_254\lpcxpresso\Examples\NXP\LPC4000\LPC407x_8x\L> PC407x_8x_Libraries.zip\LPC407x_8x_PDL\>> hier sind die Treiber ist zu den onChip Komponenten drin.
Da ich mit der LPCXpresso arbeite, habe ich das gesucht. Das hilft ein
gutes Stück weiter.
W.S. schrieb:> Das angehängte Beispiel paßt auf ein ANDERES Board als das deinige,> also nicht mit copy&paste arbeiten wollen, sondern mit Lesen und> Verstehen, wie man sowas prinzipiell angehen kann.
In deinem Beispiel befindet sich die Header-Datei lpc4088.h...
Darin werden die Adressen der einzelnen Register festgelegt. Kann mir
jemand sagen, wo ich diese Informationen für "mein" Projekt finde? Habe
es weder im Projektordner selbst, noch in dem angegebenen Pfad von
LPCXpresso gefunden :/
grundschüler schrieb:> LPC407x_8x_177x_8x.h ?
Die hab ich auch schon gefunden. Aber, wenn ich jetzt z.B. zur
Registerdefinition für den CAN gehe sehe ich z.B. in den Zeilen 1111 und
1112 den folgenden Befehl:
///Offset: 0x0000000C - Extended Frame Start Address Register
__IO uint32_t EFF_sa;
Und wo wird da jetzt die Adresse festgelegt? Für mich ist das nur eine
Definition in einer Struktur.
Ist mein Verständnis von Programmierung falsch oder müsste nicht
irgendwo der folgende Befehl auftauchen?
#define EFF_sa 0x0000000C (oder so ähnlich)
da holt man sich den Basispointer für die Strukturen. Ich habe zwar noch
nichts mit CAN gemacht, aber es sieht so aus als ob da alles nötige für
die low Level CAN Kommunikation drin ist.