Forum: Mikrocontroller und Digitale Elektronik Einstieg LPC4088 QuickStart Board


von rudy (Gast)


Lesenswert?

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

von Lothar (Gast)


Angehängte Dateien:

Lesenswert?

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

von W.S. (Gast)


Lesenswert?

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.

von JojoS (Gast)


Lesenswert?

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/

von JojoS (Gast)


Lesenswert?

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.

von Lothar (Gast)


Lesenswert?

JojoS schrieb:
> mbed Lib für das QSB4078 ist um einiges umfangreicher und
> unterstützt auch das QSPI Flash und vor allem die Grafik

Man kann auch den IAR Compiler installieren und die LPC4088 CMSIS (und 
auch emWin) von dort für LPCXpresso nehmen:

https://old.iar.com/website1/1.0.1.0/3084/1/?item=prod_prod-s1%2F610

von W.S. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Jojo S. (Gast)


Lesenswert?

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.

von rudy (Gast)


Lesenswert?

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 :/

von grundschüler (Gast)


Lesenswert?

LPC407x_8x_177x_8x.h ?

von rudy (Gast)


Angehängte Dateien:

Lesenswert?

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)

von Jojo S. (Gast)


Lesenswert?

in LPC407x_8x_PDL/src/lpc_can.c:
1
/*********************************************************************//**
2
 * @brief     Setting CAN baud rate (bps)
3
 * @param[in]   canId point to LPC_CAN_TypeDef object, should be:
4
 *         - LPC_CAN1: CAN1 peripheral
5
 *         - LPC_CAN2: CAN2 peripheral
6
 * @return     The pointer to CAN peripheral that's expected to use
7
 ***********************************************************************/
8
static LPC_CAN_TypeDef* CAN_GetPointer (uint8_t canId)

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.

von Jürgen S. (starblue) Benutzerseite


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.