Experimentierplatine für LPC2478
Der LPC2478 ist ein von NXP entwickelter Mikrocontroller mit ARM7 Kern, der einiges an interessanter Peripherie beinhaltet. Dazu gehören unter anderem:
- 72 MHz Kerntakt
- 512 kb Flash / 64 kb RAM on die
- EMC (External Memory Controller) ermöglicht Erweiterung des RAMs und Flash
- Displaycontroller für bis zu 1024 x 768 px
- MCI Bus Controller für SD Speicherkarten (und SDIO Geräten)
- ADC und DAC integriert
- LQFP 208 Gehäuse
Um mit diesem Controller eigene Anwendungen testen und entwickeln zu können entstand bzw. entsteht diese Platine. Mit rund 50 € Bauteilkosten ist es ein sehr günstiger Einstieg in diese Klasse Mikrocontroller.
Die Platine ist nur ca. 75 mm x 100 mm groß und beinhaltet folgendes:
- Spannungsregler für direkten Betrieb an Spannungsversorgung mit bis zu 10 V
- 32 Bit breites SDRAM mit 128 Mbit
- 10/100 Mbit/s LAN mit LAN8720 Ethernet PHY von SMSC
- SD Card Steckplatz
- LVDS Ausgang zum Anschluß von TFT
- Zwei USB Ports, einer davon zur Programmierung (über FT232)
- RGB LED, JTAG uvm.
Auf dieser Seite finden Sie nach und nach alles über die Hard- und Software des LPC Boards.
Hardware des LPC2478 Boards
In Revision 1.0 kommen folgende ICs zum Einsatz:
- TPS62056 - 3,3 V Step-Down Wandler von TI mit 800 mA Ausgangsstrom
- MT48LC4M32 - 32 Bit breites SDRAM 128 Mbit
- SN75LVDS84 - LVDS Transmitter am LCD Controller, 18 Bit Farbtiefe möglich
- FT232RL - USB -> UART0, zum programmieren über den internen Bootloader
- LAN8720 - Ethernet PHY von SMSC im RMII Modus am MAC des LPC2478 angeschlossen
Der Controller verfügt über zwei externe Taktquellen einmal ein 12 MHz Quarz und ein 32 kHz Uhrenquarz. So kann der Controller auch mit nur 32 kHz arbeiten und hat so einen deutlich reduzierten Stromverbrauch.
Einige Ports sind auf normale 2,54 mm Stiftleisten geführt. Hier eine Auflistung:
JTAG:
Bezeichnung | Nr. | Nr. | Bezeichnung |
3,3 V | 1 | 2 | 3,3 V |
!TRST | 3 | 4 | GND |
TDI | 5 | 6 | GND |
TMS | 7 | 8 | GND |
TCK | 9 | 10 | GND |
TCK | 11 | 12 | GND |
TDO | 13 | 14 | GND |
!RESET | 15 | 16 | GND |
NC | 17 | 18 | GND |
NC | 19 | 20 | GND |
I²C:
Nr. | Bezeichnung |
1 | P0.28/SCL0 |
2 | P0.27/SDA0 |
3 | GND |
SV1:
Nr. | Bezeichnung |
1 | P2.23/!DYCS3/CAP3.1/SSEL0 |
2 | P0.30/USB1 D- |
3 | P0.29/USB1 D+ |
SV2:
Nr. | Bezeichnung |
1 | GND |
2 | 3,3 V |
3 | 3,3 V |
SV3/LED:
Nr. | Bezeichnung |
1 | P2.27/CKEOUT3/MAT3.1/MOSI0/LED1 (Rot) |
2 | P2.26/CKEOUT2/MAT3.0/MISO0/LED3 (Grün) |
3 | P2.25/CKEOUT1/LED2 (Blau) |
CON2:
DNC = Do not connect = Nichts anschließen!
Bezeichnung | Nr. | Nr. | Bezeichnung |
3,3 V | 1 | 2 | GND |
NC | 3 | 4 | NC |
NC | 5 | 6 | NC |
P1.2/DNC | 7 | 8 | NC |
P1.3/DNC | 9 | 10 | NC |
NC | 11 | 12 | NC |
P1.5 | 13 | 14 | NC |
P1.6/DNC | 15 | 16 | NC |
NC | 17 | 18 | P4.20/A20/SDA2/SCK1 |
NC | 19 | 20 | P4.21/A21/SCL2/SSEL1 |
NC | 21 | 22 | P4.22/A22/TXD2/MISO1 |
NC | 23 | 24 | P4.23/A23/RXD2/MOSI1 |
P1.9/DNC | 25 | 26 | LVDS Y0- |
NC | 27 | 28 | LVDS Y0+ |
P1.13 | 29 | 20 | LVDS Y1- |
P1.14/DNC | 31 | 32 | LVDS Y1+ |
P1.15/DNC | 33 | 34 | LVDS Y2- |
NC | 35 | 36 | LVDS Y2+ |
NC | 37 | 38 | LVDS CLK- |
NC | 39 | 40 | LVDS CLK+ |
LVDS Transmitter - LCD Controller
Hardware: LVDS Transmitter: SN75LVDS84Signale:
LCD[0:5] | R[0:5] |
LCD[8:13] | G[0:5] |
LCD[16:21] | B[0:5] |
LCDCLK | Clock |
LCDFP | VSync |
LCDLP | HSync |
LCDENAB | Enabled |
Besonderheiten:
Der LCD Controller muss im 24 Bit Modus betrieben werden, auch wenn nur 18 Bit genutzt werden. Im PCONP Register muss der LCD Controller aktiviert werden.
PINSEL:PINSEL0 |= 0x00055500; PINSEL3 |= 0x05555500; PINSEL4 |= 0x050FFFFF; PINSEL9 |= 0x0A000000; PINSEL11 |= 0x0000000F;
MCI Bus - SD Card
Signale:P0.11 | Card Detect |
P4.16 | Write Protect |
MCIDAT0 / P1.6 | DAT0 |
MCIDAT1 / P1.7 | DAT1 |
MCIDAT2 / P1.11 | DAT2 |
MCIDAT3 / P1.12 | DAT3 |
MCICLK / P1.2 | CLK |
MCICMD / P1.3 | CMD |
Besonderheiten:
Card Detect und Write Protect schaltet gegen Masse. Für beide müssen die internen Pull Up Widerstände aktiviert werden (PINMODE Register). Im PCONP Register muss MCI aktiviert werden.
PINSEL:PINSEL2 |= (2<<24)|(2<<22)|(2<<14)|(2<<12)|(2<<10)|(2<<6)|(2<<4);
Quelltexte / Treiber / Projekte
Titel: LPC2478 LCD Treiber
Beschreibung: Funktionen zur Initialisierung des LCD Controllers und zum anzeigen von Texten und Zahlen. Beispiel für SVGA Display.
Download: LPC2478_LCD.zip
Titel: LPC2478 LED Treiber
Beschreibung: Funktionen zur Ansteuerung der RGB LED
Download: LPC2478_LED.zip
Titel: LPC2478 UART0 Treiber
Beschreibung: Funktionen zur Initialisierung von UART0 und zum ausgeben von Texten und Zahlen.
Download: LPC2478_UART0.zip
Titel: LPC2478 PLL Treiber
Beschreibung: Funktion zur Initialisierung der PLL und somit zum Einstellen der Prozessortaktung.
Download: LPC2478_PLL.zip
Testprogramme
Download: Testprogramm 1
Beschreibung: Lässt die RGB LEDs blinken. Als Taktquelle dient der interne Oszillator.
Mögliche Fehler: Sollte das nicht laufen, aber der Controller sich flashen lassen, sind die MOSFETs und die Lötstellen am LPC2478 zu prüfen.
Download: Testprogramm 2
Beschreibung: Lässt die RGB LEDs blinken. Als Taktquelle dient der externe 12 MHz Quarz.
Mögliche Fehler: Sollte das nicht laufen, aber der Controller sich flashen lassen, sind die MOSFETs und die Lötstellen am LPC2478 zu prüfen, falls Test 1 auch nicht laufen sollte. Andernfalls den Quarz prüfen.
Download: Testprogramm 3
Beschreibung: Prüft die Ethernet PHY. PHY Daten werden über UART0 ausgegeben. LED leuchtet grün, wenn sich die PHY initialisieren lässt und RMII Clock vorhanden ist. Blaue LED leuchtet wenn Ethernet angeschlossen ist.
Mögliche Fehler: Init scheitert: LED nicht mit 10 kOhm überbrückt, oder PHY nicht korrekt gelötet. Netzwerkstatus wird nicht korrekt angezeigt: PHY nicht korrekt gelötet, Buchse sitzt nicht korrekt...
Bootloader
Mitlerweile gibt es einen Bootloader, der speziell für diese Board entwickelt wurde: http://sohalt.users.nerdzoo.de/pab/
Außerdem habe ich noch ein paar Prototypenplatinen von der Sammelbestellung übrig, wer Interesse hat kann mir eine Email schreiben.
Bugs:
SDRAM: A14 muss statt A12 auf das BA0 Pin vom SDRAM. Dazu A12 in der Nähe des Controllers durchtrennen und Lötstopp entfernen. Anschließen am Controller einen dünnen Draht anlöten und zu der Leitung zu BA0 führen. A13 und A14 muss immer an BA0 und BA1, auch wenn es nicht im Datenblatt klar wird.
Leitung A12 auftrennen und mit A14 vom Controller verbinden
Zum Beispiel so...
Ethernet PHY: LED 2 / Pin 2 / Grüne LED der Ethernet PHY benötigt einen pull down Widerstand von 10 kOhm. Dadurch wird CLKOUT aktiviert und der LPC2478 bekommt das erwartete 50 MHz Clock Signal von der Ethernet PHY.
Ein 0805 oder 1206 Widerstand passt zwischen die Pads.
LCD Board
Alexander S. hat freundlicherweise ein passendes Display Board mit einigen zusätzlichen Erweiterung erstellt. Schaltplan, sowie Layout ist hier zu finden. Zusätzlich dazu gibt es auch diesmal wieder eine Sammelbestellung für die Platinen sowie Bauteile.
Quellen:
Mikrocontroller.net - Diskussion LPC2478 BoardDatenblatt LPC2478
Datenblatt TPS62056
Datenblatt MT48LC4M32
Datenblatt SN75LVDS84
Datenblatt FT232RL
Datenblatt LAN8720