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: > 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
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)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.