LPCxpresso - Kurzbericht

Hemi

Aktives Mitglied
Premium Benutzer
30. Nov. 2008
1.103
19
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hallo zusammen,

ich habe mir vor etwas längeren Zeit ein EvaBoard und ein LPCxpresso bestellt. Nach ziemlich langen Lieferzeit (aus Thailand) und ziemlich langen Pause (keine Zeit gehabt) hab ich mir meine Errungenschaft nun mal näher angeschaut und so ist dieses Bericht entstanden.

Hier geht es um das LPCxpresso von NXP (Philips).

Das LPCxpresso stellt ein Debugger kombiniert mit einem kleinen EvaBoard dar. Das Tool wurde zusammen mit Embedded Artists entwickelt. Das Tool kommt ohne jegliche Software, Kabel oder sonstwas daher, vergleichbar mit dem AVR Dragon.

So sieht das Ganze aus:

001.jpg


Und hier sieht man die Platine allein:
002.jpg


Wie man unschwer erkennen kann, besteht die Platine eigentlich aus zwei: links ist der Debugger und rechts ist das EvaBoard mit einer kleinen Prototyparea. Die beiden Teile sind mit einer Sollbruchstelle geteilt, das ist diese senkrechte dünne Linie. So kann man den Debugger abtrennen und als StandAlone Werkzeug verwenden.

003.jpg


Hier sieht man den Debugger. Drauf werkelt ein LPC3154, dann gibt es noch eine USB-Schnittstelle und ein JTAG-Interface, auch LPC-Link genannt. Das ist die doppelreihige Stiftleiste rechts unten. Dann gibt es noch npaar LEDs und das wars.

005.jpg


Hier sieht man das EvaBoard mit einem LPC1343. Hier sind alle Pins rausgeführt, man könnte drei Pinleisten einlöten und das Board als BreakOut Board verwenden, eigentlich sehr praktisch. Auf dem Board befinden sich lediglich ein Prozessor, Quarz, eine LED und npaar Kondensatoren und Widerstände, fertig, mehr ist nicht drauf. Okay, noch eine kleine Prototyparea ist noch drauf.

Inbetriebnahme:

Nach dem Einstecken des USB-Kabels leuchtet eine der LEDs auf, mehr ist nicht zu sehen.

Ein lsusb zeigt nur:
Code:
heinrich@Anubis:~$ lsusb
....
Bus 002 Device 006: ID 0471:df55 Philips (or NXP) LPCXpresso LPC-Link
heinrich@Anubis:~$

Okay, Rechner hat das Tool erkannt, sehr schön.

Zum "Paket" LPCxpresso gehört auch eine IDE. Wer Eclipse mag, wird sich hier heimisch fühlen, sie ist nämlich Eclipse-basiert und sie gibt es auch für Linux(!) und natürlich auch für Windows (auch für Windows 7).

Die IDE bringt alles Notwendige mit, Editor, Compiler (von CodeRed), Debugger, ...

Nach der Installation ist die Code-Grösse auf 3KB begrenzt (obj-File), nach der kostenlosen (!) Aktivierung wird diese Grenze auf 128KB angehoben. Wie gesagt, es kostet nichts! Das Allerschönste ist: mit dieser Lizenz darf man auch kommerzielle Projekte machen.

Ich glaube, zum Eclipse muss ich nichts weiter sagen, es tut einfach. Auch Debugging unter Linux ist gar kein Problem, einfach auf den Käfer clicken, Target wird gebaut, geflasht und es kann los gehen, völlig problemlos. Klasse, so stellt man es sich vor.

Hier sind noch die Daten des LPC1343-Prozessors:

  • ARM Cortex-M3 processor, running at frequencies of up to 72 MHz.
  • ARM Cortex-M3 built-in Nested Vectored Interrupt Controller (NVIC).
  • 32 kB on-chip flash programming memory.
  • 8 kB SRAM.
  • In-System Programming (ISP) and In-Application Programming (IAP) via on-chip
  • bootloader software.
  • Selectable boot-up: UART or USB
  • USB MSC and HID on-chip drivers.
  • Serial interfaces:
  • USB 2.0 full-speed device controller with on-chip PHY for device
  • UART with fractional baud rate generation, modem, internal FIFO, and
  • RS-485/EIA-485 support.
  • SSP controller with FIFO and multi-protocol capabilities.
  • I2C-bus interface supporting full I2C-bus specification and Fast-mode Plus with a data rate of 1 Mbit/s with multiple address recognition and monitor mode.

Und viele andere schöne Sachen.

Das Einzigunschöne ist: das Board für für 3,3V ausgelegt. Wer also 5V-Peripherie verwenden möchte (RTC, ...), benötigt einen LevelShifter, aber, kein Problem.

Hoffe, es war etwas informativ. :)

Zusatz: Für LPCs gibt es noch einen sehr guten Compiler, das ist CodeSourcery. Es gibt hier zwei Varianten, Frei und Kommerziell, wobei die Compiler absolut identisch sind. Sprich man bekommt einen freien Compiler mit der Qualität eines Kommerziellen. Nur die OBJ-File Grösse ist dann begrenzt. Den habe ich mir aber noch nicht angeschaut, mache aber noch.

Grüsse
Heinrich
 
Hallo Heinrich,

dein "Kurzbericht" ist sehr interessant! Auch wenn das Forum sich hauptsächlich mit der AVR Mikrocontrollerfamilie beschäftigt ... oder gerade deswegen .. finde ich es sehr gut, wenn man hier auch einmal andere Controller-Familien erwähnt, besonders interessiert mich hier die Entwicklungsumgebung. Wenn du also mal ein kleines Projekt erstellt hast und/oder Erfahrung mit dem CodeRed Compiler gesammelt hast, wäre es schön, wenn du "am Ball" bleibst und davon bei Gelegenheit noch etwas erzählst :)

Noch einen schönen Abend,
Dirk
 
Hallo Dirk,

danke für die Blumen. Ich habe mir überlegt, ob es okay ist, aber da es hier auch eine ARM-Ecke gibt, dürfte es also passen.

Die IDE macht es einen guten Eindruck. Es gibt nur ein Kritikpunkt: es hat (noch) keine Anbindung an SVN, ist etwas doof, aber CodeRed arbeitet dran.

Die IDE bringt aucn npaar Beispiele mit, so an die 10-15, unter anderem auch für ADC, I²C, SSP, UART und etc. Ich habe mir mal das UART-Beispiel angeschaut und erstmal "aha, okay, gut dass wir drüber gesprochen haben" zur Seite gelegt. So kurz mal eben geht da nichts. Hängt aber damit zusammen, dass ARM alles andere als einfach ist.

Aber, ich werde weiterhin fleissig berichten :)

Grüsse
Heinrich
 
Sodelle, an der M3-Front geht es weiter.

Da man mit dem kleinen Board des LPCxpresso ja so nicht viel anfangen kann, habe ich mir überlegt einen BreakOut-Board dafür zu machen, mit allen möglichen Anschlussen, Spannungsversorgung, etc. Dann durch Zufall bin ich auf das Board von Embedded Artists gestossen. LPCxpresso wurde ja von Embedded Artists entwickelt. Also, gleich bei Digikey bestellt und nach einem Tag war es da.

So sieht das Ding aus:

007.jpg


Es kommt nur die Platine, zwei Buchsenleisten, zwei Steckerleisten, ein 10-pin Mini-JTAG Kabel, ein 10-pin JTAG Kabel und ein kleines Platinchen um die beiden zu verbinden.

Das Board mit dem Rest kostet bei Digikey gerade mal 24€ und hier ist der Link dazu: klick mich

Einen LM1117-3,3 und zwei 10uF Tantalkondensatoren hatte ich noch in meiner Kiste, also, drauf damit:

008.jpg


Hier ist LPCxpresso mit den beiden Stiftleisten zu sehen:

009.jpg


So sieht das Ganze dann zusammengesteckt aus:

011.jpg


Hier sind die beiden Kabel und Adapter zu sehen:

012.jpg


Und so sieht das Ganze mit dem anderen EVA-Board verbunden aus:

014.jpg


Dann habe ich noch einen DS1337 auf das Board gelötet um mit dem I²C etwas zu spielen.

015.jpg


Dann kommt noch ein MAX3232 drauf und eine USB-Buchse drauf. Der LPC1343 hat ja einen UART und einen USB-Controller drauf.

Nächstes Bericht wird sich dann mit IDE und einem Testprojekt befassen.

Grüssle
Heinrich
 
Sodelle, nach einer (sehr) langen Pause geht es nun weiter mit den M3-Spielereien.

IDE:

Wenn man LPCXpresso kauft, bekommt man lediglich eine Platine, ohne Kabel und auch ohne jegliche Software. Also genau das hier:

002.jpg


Die Software muss man dann von http://lpcxpresso.code-red-tech.com/LPCXpresso/ runterladen. Die Registrierung ist kostenlos. Nach der Installation sollte man die IDE noch freischalten, das ist ebenfalls kostenlos und so kann man dann den Code bis 128kb debuggen:

lpc2.jpg


Die IDE ist Eclipse-basiert, also jeder, der Eclipse kennt wird sich schnell zu Recht finden.

CMSIS:

CMSIS steht für "Cortex Microcontroller Software Interface Standard" und stellt letzendlich eine Library dar, mit der es einfacher ist auf die Register, Interruptvektoren, ... des Prozessors zu zugreifen.

Die CMSIS-Libraries gibt es für LPC11xx, LPC13xx, LPC17xx und andere Serien. Diese Libraries sind kostenlos und kommen mit LPCXpresso schon mit oder man kann sie auch von www.arm.org runterladen. Bevor man mit der Entwicklung anfängt, sollte man diese Library ins Workspace importieren, das erleichtert schon sehr den Einstieg.

Debugging:

Hier läuft es genau so ab, wie beim Atmega + Dragon + AVR Studio auch, einfach Breakpoints setzen, starten und zum Breakpoint springen und dann durchsteppen. Man kann dabei die Register, Variablen und so weiter sehen. Also sehr unspektakulär.

Ich habe für das Eva-Board, das mit dem LCD ein "kleines" Projekt aufgesetzt um einfach zu sehen, wie es mit dem M3 funktioniert. Mittlerweile ist es etwas ausgeartet und grösser geworden.

Hier ist der Link zum Projekt: klick mich

Die LCD-Treiber funktionieren, man kann Linien zeichnen und auch Text schreiben.
LCD ist ein 320x240 TFT mit 65000 Farben, das Bild ist sehr schön. :)
RTC funktioniert, Datum/Uhrzeit lesen und schreiben, auf dem LCD anzeigen
TouchScreen erkennt die Berührung und liefert die Koordinaten.

Ich werde heute Abend noch npaar Bilder vom LCD einstellen, damit man sieht, was da schon alles läuft. Und dann noch npaar ScreenShots während des Debuggens.

Der nächste Schritt ist dann die SD-Karte, die mit drauf ist auf dem Board.
 
Und hier sind noch npaar Bilder vom LCD:

lpc3.jpg


Touchscreen unberührt:

lpc4.jpg


Und berührt:

lpc5.jpg


Und während des Debuggens:

lpc6.jpg


lpc7.jpg


Grüsse
Heinrich
 
Hallo Heinrich!

Na, da hast du dich ja schon ganz schön reingefuchst!

Nachtigall ick hör dir trappsen.....
Du steigst bald ganz auf dein LPC um und wirst den AVR`s noch untreu. :wink:


Viel Spaß und Erfolg weiterhin!
Cassio
 
Hallo Cassio,

danke danke. ARM ist eine völlig andere Welt. Ich würde sagen, es ist sogar etwas einfacher als ein Atmega, wenn man den Prozip verstanden hat. Und mit dem CMSIS ist es noch einfacher. Und die Dinger haben Peripherie ohne Ende und vor allem machen sie richtig Dampf.

Grüssle
Heinrich
 
Moin,

ich setz auch grade mit dem LPC1769-Board auseinander. Als IDE verwende ich LPCExpresso. Allerdings gibt es von NXP/Code Red keine Code-Beispiele für die Verwendung der SPI/I²C-Peripherie (ohne SSP-Verwendung).

@ Hemi:

Wie bist du an die Programmierung der Peripherie gegangen? Ich hab bisher keine Tutorials oder Anleitungen gefunden die mir einen Einstieg in diese Programmierung ermöglichen bzw habe ich auch keine anderweitigen Code-Beispiele im Netz gefunden die in der IDE laufen.

Alternativ könnte man die Keil-IDE nehmen da es dafür entsprechend umfangreiche Peripherie-Beispiele gibt. Allerdings bräuchte ich dann wohl einen Keil-kompatiblen JTAG-Adapter. :(

MfG Steffen
 
Hi Steffen,

naja, der LPC1769 ist ja dem LPC1768 sehr änlich, zumindest habe ich keine Unterschiede gefunden, ausser, dass der 1769er mit 120MHz läuft und damit halt etwas schneller ist, mehr ist mir nicht aufgefallen.

Zum Einarbeiten verwende ich die Beispiele von NXP, sie sind sehr umfangreich und dann halt die Erfahrung, die ich mit Atmegas gesammelt habe. Der Rest aus den Datenblätter.

Welche IDE/Compiler Du verwendest, ist eigentlich egal. Weil der Kompalat läuft ja auf der CPU. Das heisst mit Keil kompilieren und mit LPCxpresso brennen. Ist doch kein Problem.

Ich spiele gerade mit dem USB-Host. Als Device ist dann ein USB-Stick. Klappt schon ganz gut. :)
 
Für was das Ganze eigentlich?

Hallo zusammen,

ich wollte mal wieder was dazu schreiben und zwar, warum das Ganze.

Da gibt es zwei Gründe:
1. Wollte mal was Neues ausprobieren
2. Mir schwebt schon länger eine Idee eines Players vor. Und es gibt auch ein aktueller Anlass dazu.

Im Audi TT meiner Partnerin ist ein Audi Concert 1 Radio verbaut, samt dem dazugehörenden CD-Wechsler und ein Bose Aktivsystem. Das Problem besteht darin, dass das Radio keine neue Formate abspielen kann, wie zum Beispiel MP3, AAC, ... Die erste Überlegung ging dahin das Originalradio auszubauen und ein anderes Radio einzubauen. Aber, die Adapterblenden sehen alles andere als ansehnlich aus. Deswegen fällt diese Möglichkeit aus. Zweite Überlegung ging dahin, das Originalradio zu modifizieren. Das Radio hat nämlich noch ein Kassettendeck drin auf welches man ja gut verzichten kann. Wenn man das Kassettendeck ausbaut, bekommt man erstmal ziemlich viel Platz und zweitens einen echten Stereoeingang. Im Inneren des Radios arbeitet ein TEA6320 Sound Fader von NXP. Der Chip hat 4 Stereoeingänge, ein Mono und dadraus wird dann ein Stereoausgang. Der Chip wird über I²C angesteuert und das Datenblatt ist verfügbar :)

Die Frage des Einganges wäre somit beantwortet.

Die nächste Frage, was kommt rein? Nun, eigentlich ganz einfach, etwas, was die neuen Formate abspielen kann. Es ist ein mikrocontrollergesteuerter Player, bestehend aus folgenden Komponenten:

NXP LPC1768 oder LPC1769, je nach Laune. Sind ja gleich, der 69er ist nur 20MHz schneller
VLSI VS1063a Decoder, frisst so ziemlich alles an Formaten, was es gibt (AAC, Flac, MP3, Ogg, ...)
CS8421 Sample Rate Converter, wandelt 16bit/192kHz nach 32bit/192kHz um
WM8741 x2, DAC im Dual Differential Modus. Heisst so viel wie ein DAC ist den linken Kanal und einer für den Rechten. Bringt ca. 7-8 dBa an SNR
OPA2227, für Wandlung und Verstärkung.

Als Kondensatoren des Analogteils werden Nichicon Muse (KZ-Serie) als THT, analoge und digitale Spannungsversorgung vollständig getrennt, Präzisionsoszilator von Fox, sonstige Elkos von Panasonic als SMD.

Als Anzeige werden zwei Varianten verwendet:
-> FIS (das Ding im Kombiinstrument), hier geht es über ein Bus änlich SPI, nur ohne MISO, bei VW nennt es sich 3LB, 3 Leiter Bus
-> ein 7 Zoll Display mit TouchScreen

Blockschaltbild:

Link zum Bild entfernt! (Cassio)

Schaltung, wie weit ich im Moment gekommen bin:

Link zum Bild entfernt! (Cassio)

Software:

Was tut:
USB-Host Treiber
USB-Mass Storage Class
TouchScreen
GUI auf einem 3,2Zoll Display

Was momental gemacht wird:
FAT32 lesend mit Unterverzeichnissen

Offen:
3LB Interface
7-Zoll Display Ansteuerung (muss das Display erst bestellen, leider kein SPI sondern nur ein 16bit parallel mit einem SSD1963 Controller :( )
 
Hallo,

Offen:
3LB Interface
7-Zoll Display Ansteuerung (muss das Display erst bestellen, leider kein SPI sondern nur ein 16bit parallel mit einem SSD1963 Controller :( )
frag doch mal bei Dirk nach. Der wollte doch demnächst nen 7Zoll in den Online-Shop bringen (mit SPI). Evtl schickt er dir ja vorher schonmal eins.

Gruß
Dino
 
Ich habe noch etwas weiter gemacht:

Fehlerhaften Link entfernt ! (Cassio)

Das analoge Teil ist nun fertig. Die OpAmps sind gesockelt, also kann man sie einfach austauschen. Für den Anfang reichen die AD797 und dann schauen wir mal.
 
Ich habe die Tage etwas weiter gemacht und gestern konnte dem ich VS1053b im Versuchsaufbau auch schon den Sound entlocken. Nur leider ist es ziemlich verzerrt. Man kann das Lied schon gut hören, aber die Nebengeräusche sind ziemlich aufdringlich. Es kommt mir vor, als würden ihm einpaar Bytes im Strom fehlen. Konnte auf die Schnelle keinen Fehler finden.

Ich verwende einen USB-Stick als Speichermedium und Streame das Ganze in den VS1053b. Das File ist eine MP3 mit 320kbps und 48kHz, also das Maximum, was MP3 kann. Das Format wird vom VS1053b auch unterstützt. Muss mal weiter schauen.
 
Hallo Heinrich!

Irgendetwas scheint mit deinem Verlinken nicht zu stimmen.
Es kommt immer eine Authentifizierungs Meldung!

1_Auth_Meldung_nach_Beitrag_von_Hemi.gif

Ich habe daher schon die Links zu den Bildern aus dem Beitrag #11 entfernt.
Sollte sich das Problem damit nicht gelöst haben, muss ich leider alle externen Links aus deinen Beiträgen entfernen!


Gruß,
Cassio


EDIT:
Sorry Heinrich, aber die Meldung kommt immer noch!
Sollte ich den Fehler nicht gleich finden, werde ich den kompletten Thread deaktivieren müssen!



EDIT 2:
Habe es gefunden!
Es war der Link im Beitrag #13 !!!

Gruß,
Cassio
 
Hi,

Irgendetwas scheint mit deinem Verlinken nicht zu stimmen.
Es kommt immer eine Authentifizierungs Meldung!
...
...
EDIT 2:
Habe es gefunden!
Es war der Link im Beitrag #13 !!!
aus dem Grund sind Bilder und Dateien eines Beitrags direkt im Beitrag immer am besten aufgehoben.
Es kommt oft genug vor das die Server mit den verlinkten Dateien/Bildern mal umgebaut werden oder die Umsonst-Bilderdienste die Bilder nach einer Zeit wieder löschen. Dann wird der gesamte Beitrag eigentlich für andere Leute wertlos. Wäre schade drum.

In einem anderen Forum in dem ich ein wenig mitlese wird da recht energisch drauf hingewiesen. Da fängt bei externen Links gleich das Gemotze an :rolleyes: Naja ... andere Foren andere Sitten ;)

Gruß
Dino
 
Servus miteinander,

vielen Dank für die Korrektur erstmal. Ich gelobe Besserung und fange sofort damit an.

Ich kriege hier die Krise bald. Und zwar versuche ich den VS1053 zum Laufen zu bewegen. An meinem Board habe ich erstmal den SD-Karten Slot ausgelötet um an SPI ranzukommen. Der Decoder läuft prizipiell, nur der Sound ist irgendwie so als wäre er abgehackt und etwas zu schnell. :( Decoder-Board ist dieses hier: VS1053 Board

Also, habe ich mich an die Fehlersuche begeben. Erstmal prüfen ob der SysTick sauber ist. Er sollte alle 1ms auslösen:

SysTick.png

Tut er ja auch, wie man sieht (Kanal 7, unten).

Dann habe ich geprüft wie lange die MCU braucht um einen 512byte Block vom USB Stick zu lesen. Es sind genau 5ms.

Reading_512bytes.png

Ich meine, es ist etwas zu wenig...

Was ich aber echt interessant finde, ist das hier:

LongLowPeriod.png

Das ist SPI-Bus. Der Bus läuft mit ca 3,8MHz. Aber der Takt scheint sehr ungleichmässig zu sein. Wie kann sowas sein???

Grüße
Heinrich
 
Hallo Heinrich!

Wie gut, dass es Analyser gibt! :D

Meinst du bei deinem letzten Bild, dass die Clock eine "Pause" macht bzw. aussetzt?
Läuft nebenbei vielleicht noch ein Interrupt, der die "Pause" verursachen könnte?

Was ich viel interessanter finde.....
Es werden via MOSI weiter Daten gesendet, obwohl die Clock steht? :hmmmm:
Was passiert denn mit den Daten, wenn das Clock-Signal keinen Datentransport signalisiert?

Tja, wie ich oben schon schrieb..... Wie gut, dass es Analyser gibt und man sehen kann, was real passiert. :cool:

Grüße,
Cassio
 
Hi Cassio,

ja, da haste Recht, so ein Ding ist schon sehr praktisch. Die Investition war echt gut. :) Leider konnte ich es nicht hier im Shop kaufen, ich habe ihn mir ja etwas früher geholt.
Beim letzten Bild meine ich, dass zum Einen der Clock nicht gleichmässig ist und zum Anderen eben aussetzt. Das ist echt komisch.
Dass MOSI aktiv ist, wenn Clock low ist, ist mir gar nicht aufgefallen. Hmm. Ich glaube, hier liegt ein Messfehler vor, was anderes
kann ich mir nicht vorstellen.

Ob da ein Interrupt läuft ist sehr schwer zu sagen. Ich verwende die USB-Host Implementierung von NXP, drauf sitzt die MassStorageClass ebenfalls von NXP und da drauf ist FatFS, die ich selber reingezogen habe. Die Version ist 0.08b, die Aktuelle ist die 0.09, der Unterschied ist aber nur, dass die 0.09 eben mehrere Partitionen unterstützt.

Ich werd mal heute Abend den SPI nochmal genauer durchmessen, da scheint es irgendwas nicht so ganz hin zu hauen bei der Messung.

Grüße
Heinrich
 
Hallo Heinrich!

Nun ja... du hast ja nach "Oben" hin noch einiges an Luft!
Deine Messung waren ja nur 25Mega Samples @ 4MHz....

Gerade bei deinem schnellen BUS von 3,8MHz würde ich beides um einiges erhöhen, um auch wirklich jeden Signalwechsel zu erfassen.
Probiere es durch ruhig mal mit 100Mega Samples @ 16MHz oder 24MHz !
Vielleicht sieht das Ergebnis dann ja schon etwas anders aus?

Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)