LPC2000
Die LPC2000 von NXP (ehemals Philips) waren 2004 die ersten wegen ihrer einfachen Handhabung hobbytauglichen ARM-basierten Mikrocontroller (heute sind Mikrocontroller basierend auf der modernen ARM Cortex-Architektur die bessere Wahl). Entsprechend sind auch zum LPC2000 mehr Informationen verfügbar als zu anderen ARM7TDMI-basierten Controllern, wie z. B. dem AT91SAM7, und man findet leichter Hilfe bei Problemen. Ein weiterer Vorteil des LPC2000 ist der einfach zu benutzende serielle Bootloader, mit dem sich der Controller auch ohne JTAG-Interface einfach programmieren lässt. Ansonsten ist die Hardwareausstattung recht ähnlich im Vergleich zum AT91SAM7. Hervorzuhebende Unterschiede sind das schnellere Flash-ROM des LPC2000, die etwas höhere Taktfrequenz, beim gleichen Gehäuse mehr I/O-Pins und die größere Auswahl von Modellen im Low-End-Bereich (LPC2103).
- 2-96 kB SRAM.
- bis zu 512 kB Flash-ROM-Programmspeicher (LPC2138/2148/2368/2378/LPC2387/LPC2388/2468/2478)
- vorinstallierter serieller Bootloader mit automatischer Baudrate-Erkennung
- JTAG-Interface
- ETM Trace-Interface
- 2-4 UART-Schnittstellen (bei einigen Modellen auch mit allen "Modem"-Leitungen (Handshake, Ring, DTR etc.)
- 1-2 SPI-Schnittstelle(n), bei einigen Modellen auch SSP-Schnittstelle(n) (erweiterte Konfigurationsmöglichkeiten und Funktionen)
- Hardware-I2C(I²C)-Schnittstelle(n)
- teilw. mit CAN-Schnittstellen
- Mit Ausnahme der ersten Chips LPC2104/5/6 haben alle Typen einen integrierten A/D-Wandler
- teilw. mit D/A-Wandler (LPC2132/34/36/38, LPC2142/44/46/48)
- 2 32 Bit Timer, zusätzlicher 32-bit Timer mit 6 PWM-Ausgängen, RTC, Watchdog
- bis 75 MHz Taktfrequenz
- LQFP48-Gehäuse (LPC210x) bis LQFP208 (LPC24xx)
- LPC213x und LPC214x benötigen zum Betrieb 3V
- Für die anderen Typen werden Core-Spannung 1,65-1,95V und IO-Spannung 3,0-3,6V benötigt (d.h. zum Betrieb sind 2 Versorgungsspannungen erforderlich)
- geringe Leistungsaufnahme (ca. 60 mW bei 60 MHz und Endlosschleife)
- 5V-tolerante IOs
- USB 2.0 Full-Speed (LPC214x und LPC23xx/24xx)
- Ethernet MAC (LPC23xx/24xx)
- Jeweils eigene DMA und eigener AHB-Bus für Ethernet, USB und sonstige schnelle Schnittstellen (LPC23xx und LPC24xx)
- RTC (teilweise mit eigenem Oszillator)
Verwendung des Bootloaders
Im Gegensatz zu anderen Produkten ist der Bootlader bei den LPC2xxx fest eingebaut und geht beim Programmieren nicht verloren. Man kann ihn auch mittels Terminalprogramm (z.B. Hyperterminal bei Windows) ansprechen und von ihm z.B. den Produkt-ID erfragen. Manchmal ist das wichtig, denn es gibt im Handel downgelabelte IC's (z.B. LPC2101, wo tatsächlich ein LPC2103 drinsteckt), die sich zum Beseitigen eines Ausleseschutzes nur dann generallöschen lassen, wenn man den echten Typ im Flash-Tool einstellt. Benötigte Software gibt es unter http://sourceforge.net/projects/lpc21isp/ zum Download.
- BSL-Jumper setzen
- Reset-Knopf drücken
- lpc21isp starten
- Linux: lpc21isp programm.hex /dev/ttyS0 115200 14746
- Windows: lpc21isp programm.hex com1 115200 14746
Die Übertragung des Programms zum Controller sollte jetzt beginnen. Um das Programm zu starten den BSL-Jumper entfernen und Reset drücken.
Alternativ kann unter MS-Windows das von Philips bereitgestellte "Flash-Tool" oder Flash Magic (http://www.flashmagictool.com/) von Embedded Systems Academy genutzt werden. Diese Programmiersoftware bieten eine grafische Benutzeroberfläche.
Open-Source-Alternativen unter Linux sind lpctools und mxli. Diese Programme unterscheiden sich von den anderen vor allen dadurch, dass sie auch neue Controller unterstützen können, ohne dass man die neueste Version herunterladen muss. mxli erhebt den Anspruch sehr schnell zu sein, jedoch mag die gewaltige Zahl an Kommandozeilenoptionen so manchen potentiellen Benutzer abschrecken.
Die Programme lpc21isp, das Philips-Tool, Flash Magic und mxli können Reset und BSL per DTR/RTS-Signal steuern, bei entsprechender Beschaltung auf dem Board muss man somit keine Jumper setzen (vgl. z. B. Schaltpläne der Evaluation-Boards von Keil).
Eine weitere Alternative ist LPCProg 0.3, welches speziell für auf die Verwendung eines FTDI-232 Chips hin optimiert wurde. Auf der Website gibt es auch ein Layout für einen USB-zu-Seriel-Adapter. Die Software/Hardware ist zu den obigen Programmen Pinkompatibel und kann beliebig damit gemixt werden.
Allgemeine Hinweise
- Der Softwareschutz bei den LPC2104/5/6 war anfänglich nicht implementiert (Stand 4/2005). Dies wurde 2007 geändert. Ein Schutz des geistigen Eigentums war also bei diesen 3 Controllern zunächst nicht gewährleistet. Andere Controller aus der LPC2000-Serie waren davon nicht betroffen.
- Auf vielen (Stand 4/2005) LPC2000 existiert ein Fehler bei der Verwaltung der Interrupt-Flags ("race condition", "timer issue"). Der Fehler und mögliche Abhilfen sind in den Errata von NXP erläutert.
- Die CAN Controller in den LPC2100,2200 sind so gründlich mit Bugs und Designfehlern gespickt, dass letztlich nur ein kleiner Bruchteil der dokumentierten Funktionen nutzbar ist. Die Bugs finden sich im Errata Sheet, die Konstruktionsfehler darf man selber finden.
- Bei Nutzung des SPI-Interfaces im "Master-Mode" ist bei einigen LPC2000-Typen auf die richtige Beschaltung des "Chip-Select"-Pins zu achten (vgl. Manuals und Erratas).
- Viele Fehler in der "ersten Generation" der ICs wurden bei neueren Versionen behoben. Vgl. Datenblätter/Errata zu LPC2xxx/01.
- Bei neueren LPCs (LPC213x/4x) sollte die aktuelle Fassung der NXP ISP-Software genutzt werden (Stand 3/2006: V2.2.2, erhältlich auf der NXP Web-Site). Ältere Versionen funktionieren nicht zuverlässig oder garnicht.
- LPC23xx/24xx werden von der Philips ISP-Software nicht unterstützt. Alternativen: Flashmagic, lpc21isp, lpctools oder mxli.
- Bei Problemen immer auch das Archiv der LPC2000 yahoo-Gruppe absuchen. Dort finden sich, leider oft etwas zerstreut, sehr nützliche Hinweise. Die Anmeldung bei der Gruppe (yahoo-Account erforderlich) gewährt Zugang zum Download-Bereich der Gruppe. Dort finden sich sehr nützliche Beispielprogramme, Libraries und Dokumente.
- Bei Entwicklungen mit der GNU-Toolchain erweisen sich Beispiele von kommerziellen Compiler/IDE-Anbietern, die ebenfalls den GNU-Compiler nutzen, oft als gute Informationsquelle vor allem bei Einstellungen zum Startup-Code oder im Linker-Script. (vgl. u.a. Rowley, Keil, Anglia-Designs)
- siehe auch: LPC2100-Tips im ARMuC Wiki (englisch)
Siehe auch
- ARM-elf-GCC-Tutorial
- Linksammlung Abschnitt ARM
- LPC2000-Boards von Olimex
- MP2103-Stick: Ein Mini-Mikrocontroller-Board mit USB und bis zu 4MB Datenspeicher
Weblinks
- Philips / NXP LPC2000
- LPC2000 Yahoo Group
- LPC210x ARM7 Microcontroller Tutorial
- Dontronics Tutorials u.a. "ARM Cross Development with Eclipse Version 3" von James P. Lynch
- The Insider's Guide To The Philips ARM7-Based Microcontrollers (LPC21xx) bei http://www.hitex.co.uk
- lpc21isp - Kommandozeilen-ISP-Tool für Linux und MS-Windows
- Flash Magic ISP-Tool
- LPC2K_PGM - ISP-Tool mit GUI für Linux/GTK
- lpcflash4linux - ISP-Tool für Linux (Kommandozeile)
- ARM projects - LPC2000-Projekte und -Beispiele von Martin Thomas
- LPC2138 Design Contest - Viele Beispiele mit Hard- and Software
- LPC2103 unter Linux entwickeln - LED blink mit gcc unter Linux
- Bringing up the LPC-P212x - Bauen einer Toolchain mit Newlib, ISP, JTAG
- LPCProg 0.3 - Geschwindigkeitsoptimierte Version für USB-zu-Seriell-Wandler, Kommandozeilen-ISP-Tool für MS-Windows; Einfaches Demo-Board verfügbar
Hersteller von Demo- und Evaluation-Boards mit ARM-basierten Mikrocontrollern von NXP
- Keil/ARM (UK)
- Embedded Artists (Schweden)
- Embest (China)
- ETT (Thailand)
- Olimex (Bulgarien)
- die aktuelle Cortex-M3 Familie
- u.v.a.m
Bezugsquellen
Controller
Versandhäuser für Privatpersonen
Gewerblich liefern natürlich viele wie Mouser, Farnell, Digikey usw...