LPC^2 (Low Parts Count LPC Programming Cable)

Introduction
LPC^2 stands for Low Parts Count LPC programmer. It is a programming cable connected between a
PC parallel port and a PCB containing a LPC flash SST49LF020. There are no PCB to make and
difficult components to find. It would even let you reuse the PCB containing the LPC flash on the
motherboard.

Note: This hardware is not compatible with CheapLPC nor Milk.exe. :(

goto LPC^2 Rev 2

Rev. 1 Schematic
Note: This version only work with some PC. Use Rev. 2 for better compatibility.

There are 2 versions of the schematic depending on the connector gender on your PCB. It turns out that
the physically wiring for a male and female IDC (Insulation Displacement Connector) are different. The
odd pins and even pins are swapped !!

Programming cable schematic to be used with male header on your LPC PCB (tested)

Programming cable schematic is for female header on your LPC PCB (untested)

The LPC PCB is wired up with the schematic like Cheapmod.  I have added a 0.1uF across the +3.3V and Gnd for decoupling the power.

Note
I personally prefer to have the female connector on the motherboard and male connector on the daughter card.  When the daughter
card is not in place, there are less chances of shorting out pins. It is also a bit cheaper (or easier) this way as the male version of the
IDC is a lot more expensive and harder to find. Unfortunately, most mod chips seems be built the other way.

Theory
LPC^2 uses the PC parallel port in SPP mode. The signals /Init, /Select, /AutoFd, /Stb are used as bi-directional signal for driving
the LDA[3:0] data lines while D[2:0] are used for driving the control signals. Since Lclk is driven by a push-pull signal (D0), it
should be fast enough without having to add a couple of inverters in series to clean up the clock edges.

The 5V <--> 3.3V conversion is done with 470 ohms series resistors to keep the cost down and do without the funny schottky diodes.
The excess voltage is shunted by diodes inside the flash to its power rail. I measured 0.425mA on the 3 control lines on mine.

Worst case current: (5V-3.3V-0.6V)/470 ohms = 2.12mA.

The current on LDA[3:0] lines are even less. In theory you could remove them, but I have decided to leave the 470 ohms in place just
in case the PC parallel port is incompatible with LPC^2. Afterall a PC motherboard and LPC flash are a lot more expensive to replace
than the cost of 4 extra resistors.

Bill of material for programming cable
QTY Part
7 470 ohms resistors (1/4W)
3" 16 conductors Ribbon cable
1
16 conductor IDC connector
2"
Heat shrink tubing 1/16"
1
DB-25 Male connector, solder cup
1
3.3V regulator or supply

Bill of material for mod chip PCB
QTY Part
1
0.1uF capacitor
1
SST 49LF020 (non-'A' version)
1
32-pin PLCC socket
1
16 pin header

Useful construction tips:

Some people have suggested using 2 new AA batteries as a replacement for the +3.3V source.

Photos

LPC^2 programming cable and LPC PCB

Note: Green heat shrink tubing -  3.3V regulator (LM1117-3.3V SOT223 surface mount part)


LPC^2 programming cable and LPC PCB.


LPC PCB installed.

Links:
CheapLPC     The original LPC programmer
Cheapmod     LPC mod

History
Rev 0.0    First release
Rev 0.1    LPC sync code to handle wait states on LPC bus

Source code
C source code for MSDOS (rev 0.0)
C source code for MSDOS (rev 0.1)

Executable
This is for running in DOS or Win95/Win98 DOS shell. (Not compatible with WinNT/2000/XP)
MS DOS Executable (rev 0.0)
MS DOS Executable (rev 0.1)