I've used PSOC1 devices for a while and I found them extremelly flexible and easy to use and I was really exited when I saw PSOC3 and PSOC5 devices. Unfortunatelly their kits and programmer are really expensive for an student like me, and i'm sure many other) so I wanted to make a cheap programmer.
Original post may be found here viewtopic.php?f=56&t=2823&start=30#p30169
At first, I was planing on uploading everything and asembling a "how to" once I completelly tested the board and polished (and complited) the schematics and board design, but a small mistake while soldering a QFN PSOC3 left me without target hardware (should have baked it before putting it on the reflow oven T_T). Unfortunately, I have already spent more than what my budged allows on electronic components in a month. So instead of delaying everything at least a month I'm uploading it so it may be of use to someone else.

The USB-SWD connector may be omited since its used to program PSOCs using their USB pins (and connector) rather than the dedicated JTAG/SWD pins. the reset switch may also be omited. Aditionally 0.1uF bypass capacitors should be added on every VDD pin.
To make it work, first make sure cyconsole can talk to the board. CyConsole can only talk to devices serviced by cypress' cyUSB driver. Unprogrammed and EEPROM-less EZ-USB devices should be configured automatically, but even after having installed PSOC programmer 3.13.1 and Cypress Suite USB 3.4.6, my winxp machine wouldn't recognise my FX1 chip so I made an .inf driver file (attached as a rar file on this post). You should point to it when windows ask for a driver.
Next step is to download the firmware using EZ-USB Interface in CyConsole. The firmware .hex file can be found in \%PSOC_Programmer_DIR%\Service\ftk_5_simfw.hex . Once the firmware is downloaded, windows should configure it automatically as a FirstTouchKit5 and it can be used with PSOC Programmer.

Firmware must be downloaded everytime the programmer is plugged into a USB port. To remove this requirement you can add an I2C EEPROM and program it with the FTK Unconfigured VID/PID or (if you are not going to use an FX1 chip for other devices) modify the FTK driver to service FX1's VID/PID.
If there is any question just ask me and I'll try my best to answer it.








