Mathew McBride's website

Show and tell: Networked LPC1768 platform

embeddedlpc1768armSun 19 May 2013 09:17:47No comments

For the past 18 months I've been playing with the NXP LPC1768 - a 32-bit ARM Cortex-M3 CPU. I started with the mbed and then the LPCXpresso and now my own board.

The driver throughout has been to produce a network-connected display - potential uses include a control panel for home automation, NFC access control or payments and more

Initial experimentation

Early prototypes were a little messy..

Initial prototype using breadboard

The LCD display is an SSD1289-based LCD module which you can buy on eBay. As part of the process I created an ATTiny84 breakout board to convert the SPI-like signals from the touchscreen ADC (ADS7483) into a serial line - since the mbed did not bring out all the lines of the LPC, I was a little tight for pins

Breakout board

The next step was a breakout board which I did in Eagle:

Breakout board PCBsBreakout board with LPCXpresso and EthernetBreakout board with LCD

The PCBs manufactured by PCB Zone / Circuit Labs over in New Zealand - it was my first time getting a PCB made, and Richard over there was very helpful in the process.

This board took power via Passive Power over Ethernet - using the spare wires on an 100Mbps Ethernet cable to provide under 12V's DC. Not knowing much about power supplies at the time, I used a linear voltage regulator (which I was most familiar with) - the 7806 - which could only work acceptably on a 9V input, before it got too hot. I did place a USB Host connector on the board, but never used it - since I didn't include the pull up resistors for Host-side USB

As you can see in the 3rd picture - I managed to get Ethernet working on the LPCXpresso board by integrating one of the uIP example packages in the LPCXpresso distribution. I found uIP a little convoluted to work with, and this lead me to porting the FNET IP stack earlier this year.

Fully integrated PCB design

When I made that board, I wasn't experienced in dealing with SMD components so I wasn't willing to go any further - the downside was that the mbed module and LCD were 5cm tall when connected up.

After learning how to work with SMD components late last year, as well as a few PCB design fundamentals thanks to a subject at University, I started to think seriously about designing a LPC board in a much better form factor. After a few weeks of effort I managed to come up with a PCB design:

Front side of PCBBack side of PCB

This board was manufactured by a seller on eBay (who I had previously purchased some stuff from), as the pitch on the LPC pins (6mil) was a bit too small to be run through PCB Zone. Not to mention, I didn't want to be out of too much money had there been a design fault that rendered the boards unusable. For $55 delivered (via DHL!) in 10 days, and 10 pieces, it wasn't a bad deal

This board was designed in Kicad as I wanted to retain the right to use the board commercially and without forking out money for Eagle and Altium. The board came out fine, for the most part, except for a few strange vias, which according to the PCB plant, was due to a non-standard hole size.

This board consists of two LM2594 switch mode voltage regulators (3.3V for general use, and 5V for USB), SMSC LAN8720 Ethernet MAC, a power switch/over current for USB (AP2101), Power over Ethernet support and an SSD1289 touch screen module mounted directly on the PCB.

Surprisingly, I managed to get the LPC working on the board the first time I tried, and I am able to use the LPC-Link portion of my LPCXpresso board to do JTAG debugging programming, as well as programming via the serial UART using Flash Magic

Today I managed to get the LCD screen working:

LPC Platform with LCD running

This is the same display code used on the breakout board previously, but without touch screen support at the moment as the resistive touchscreen is connected to the ADC on the LPC rather than using a seperate ADC as used by the previous LCD module

One of the issues I faced with the earlier efforts was capacitance issues either in the breadboard, wires or PCB slowing down the effective rate at which I could push pixels to the LCD. The inital impressions from todays work show there doesn't appear to be much of an issue on this board. I filmed the board start up, and most of the start up time is due to the 1sec hold to reset the SSD1289.

Bus Debug board

As part of the debug process I made a debug board for the LCD bus so I could see the state of all the LCD bus pins as well as a few pots to test the ADC for the touchscreen:

This was also designed in Kicad and fabricated by PCB Zone, through the rapid-iteration PCB design nights held recently at the Connected Community Hackerspace Melbourne (which is where I've spent quite a bit of time working on this project)

I was hoping to use a FFC (Flat-Flexible Cable) to connect the debug board to the PCB, the same type used by the LCD screen. Unfortunately, its hard to obtain a cable suitable for soldering, yet alone in the 32 positions on the LCD connector. I tried putting together two 20-pin FFC ribbon cables I obtained from DigiKey - unfortunately, those were not designed to be soldered - meant to be used with a connector, so I resorted to recycling an old IDE cable.

Future plans / Where to from here

I already have an errata list for the current board, so once I have verified the Ethernet and USB Host functionality is working (or not), I intend to work on a "Rev. 2" design. My intention is to make this board smaller - I hoped to do so with this design, but the MagJack and USB connector posed a problem. I could use surface mount MagJack's, but none of those exist with Power over Ethernet capability (for good reason, given recommendations for isolation of 48V in standard PoE). I've also considered some sort of mini dongle-style connector so the RJ45 sits off board, just like how some old PCMCIA Ethernet adaptors functioned

USB OTG was considered for the first design, but rejected due to added complexity (with respect to the USB power switch IC), I might consider it again, and/or a micro-SD card slot

Ultimately I intend to offer this board for sale, and license the schematics, software and PCB design under Open Source / Hardware licenses. Maybe I'll throw it up on a crowdfunding website...!

I would be interested to know if anyone would be interested in such a hardware package, either in its present form or for use in a commercial project. Let me know, either via the comments or by email if such a product is interesting to you!

There are some more pictures and videos in the Gallery


Your email address will not be published

Please retry reCAPTCHA

Welcome to my site

Mathew McBride, telecoms hardware access engineer, programmer, gamer and all round nerd

Warning: contents of blog may not make any sense whatsoever.

ipv6 ready

You are accessing this page over IPv6!

(C) Mathew McBride, 2006-2017
Creative Commons License
Unless specified, the content on this website is licensed under a Creative Commons Attribution-ShareAlike 3.0 Australia License.