Baremetal programming of the LPC812 from NXP


Introduction


At the time this page was written (September 2014), the LPC1114FN28 processor was hard to get in Europe. The only breadboard friendly ARM Cortex microcontroller that you can purchase locally is the LPC810. This chip is useful enough but suffers from a lack of pins. The LPC812M101JDH20FP uses the same core as the LPC810, has more memory, pins and peripherals however it is in a TSSOP-20 package - not much use from a breadboarding perspective. Various suppliers in Europe and further away will ship you a TSSOP to DIP adapter. I got some in dx.com (about 1 Euro each). With some careful soldering (use plenty of flux) it is pretty easy to mount the TSSOP-20 LPC812 onto the adapter. I used a TSSOP to DIP-28 adapter (ignore the extra pins). The pictures below shows my efforts (right click to view image and zoom-in).


Soldering complete, it was now possible to mount the 20 pin lpc812 on a breadboard.

Blinky

This program simply flashes an LED. The code can be compiled using arm-none-eabi-gcc (GCC for ARM devices without an OS) which can be obtained here.
All support files are included in the code so a complex IDE/Toolchain is unnecessary. Header files and linker scripts were written using information in the LPC81x user manual (document UM10601) and the LPC81xM datasheet. The device is programmed using the lpc2isp utility (http://lpc21isp.sourceforge.net/) and a USB to serial converter (3.3 volts). TX from the USB/Serial device goes to pin 5 on the LPC812; RX from the USB device goes to pin 19 (Refer to table 6 in the LPC81xM datasheet). The chip is also powered from the USB/Serial converter's 3.3V and 0V outputs. To program the device you must pull its "Reset" (pin 4) and "ISP Entry Pin" (pin 3) low. Release Reset first followed by the ISP entry pin. The device is now in ISP mode and you can download your program using lpc2isp.
The schematic of the circuit is as follows:


A picture showing the circuit is below



Blinky source code and support files

Other examples

Serial port communications with support files. This example uses interrupt driven reception and polled transmission
(more to follow)
Back to my ARM project page