Computing stuff tied to the physical world

Just an ARM and a LED

So with the LPC810, what’s the minimal support circuitry needed to be able to use it?

It obviously needs power, i.e. a supply voltage between 1.8 and 3.6V, so a pair of AA batteries would work. In theory, a minimal setup can be created with a battery, the LPC810 chip, and some wires. But in practice, due to the electrical properties of the battery and the connecting wires, we’ll also need a 0.1 µF decoupling capacitor.

To summarise, this is the absolute minimal working setup for an LPC810 µC chip:

DSC 4807

But there’s a problem here, because this chip has no way to communicate with the outside world. We could add an LED, but the bigger problem is much more fundamental: there is no way to instruct the µC what to do. What use is a micro-controller you can’t control?

We’re going to have to add a serial communication link for “uploading”, and one way to do this is with an “FTDI interface” plus a USB cable: one side connects to a host computer via USB, the other side connects to the target µC as a “logic-level” serial port.

For uploading software to the LPC810 µC, four I/O pins need to be connected to it:

  • pin 8: USART receive (RXD) – tied to FTDI’s TX
  • pin 2: USART send (TXD) – tied to FTDI’s RX
  • pin 5: the ISP pin – tied to FTDI’s RTS
  • pin 1: the RESET pin – tied to FTDI’s DTR

Add to that the supply voltage (VDD, pin 6) and the return ground line (VSS, pin 7), and you can see that we’re in fact connecting 6 pins out of the total 8 to be able to do even the slightest meaningful thing with the LPC810. But no worries: we’ll get some pins back later.

There are two potential show-stoppers with a standard FTDI interface board such as the USB BUB by Modern Device (or equivalent ones by SparkFun and AdaFruit):

  1. it normally supplies 5V, which is too high for the LPC810
  2. it doesn’t offer an easy way to access the RTS output signal

There are a number of ways to address this. Here is the approach we’re going to use:

  1. insert a red LED between the FTDI’s 5V and the LPC810’s VDD pin
  2. perform a small modification on the USB BUB to get at its RTS signal

The change to the USB BUB is essential for simple uploading to ARM chips, and will come in real handy time after time, later on. Luckily, this modification should have no ill effect when used with JeeNodes or other Arduino-compatible boards. We’re simply extending the FTDI pinout a bit by allocating an unused pin on the 6-pin FTDI header.

This is the complete – minimal! – setup, needed to experiment with a bare LPC810 chip:

DSC 4810

Lots of wires, but just 3 components: µC + LED + capacitor. And the FTDI BUB, of course.

It’ll be enough to make the LED blink, but also to perform various experiments using the USB connection as serial interface. There are still two free I/O pins for us to play with, and there are in fact up to 6 if we’re careful. Plenty for lots of fun uses!

But first things first. The immediate task ahead is to implement the famous “Hello world” litmus test of physical computing: a blinking LED. And as you’ll see, ours will add a unique ultra low-power twist to it.

[Back to article index]