psocdeveloper.comでインド人のAjithさんが公開しているPSoC用のフリーハードかつフリーソフトの
「CYP」がなかなかスクレモノなので紹介します。また、Ajithさんに再配布の許可をもらえましたので、
「回路図」
Schematics.zip
「WINDOWSアプリ」
CYP1.7.zip
を転載します。また、文中の多くの語句は「README.rtf」を翻訳、加筆しています。
「概要」
このプログラムは、フリーのPSoCをISSPするもので、個人的使用において自由にしよう再配布できます。
このプログラムによって、PSoCを趣味に活用したり、PSoCをまずいじってみたい人に有用であることを願ます。
しかし、商用使用の場合は作者の許可が必要です。
「スクリーンショット」(Ver.1.7)

「対応チップ」
CY8C21xxx/CY8C22xxx/CY8C24xxx/CY8C27xxx/CY8C29xxx
回路がうまく動いていれば、チップの種類は自動認識します。
「対応OS」
Win9x, Win2K ,WinXP
あまりにも、ハイスペックな環境では、多少ディレー設定が必要かもしれません。
「ハードウェアタイプ」
Type 1:最も多くの環境で動作することが期待できます。
Type 2:基本的に使用しません。
Type 3:ISSPで使用する際に、推奨します。
Type 4:最も簡単な回路ですが、環境によっては動作しません。
「実装例」(Type-3 ISSP)
.JPG)
自分はISSPで使用することが多いので、Type-3のハードウェアを選択しました。
ただし、手持ちの部品だけで作ったの回路図と若干違った部品を使用しました。
(変更一覧)
BC557 -> 2SJ178 (PNPトランジスタから PchFETに変更)
1N4148 -> 1S2076A (どちらも汎用小信号ダイオード)
4050 -> 74HC4050AP (5V対応、同じ東芝ならTC4050BPの方がいいかも)
また、ぴったりの抵抗値や容量値がなかったので、手持ちで一番近い値を使用しましたが、
一発で動作しました。
「使用方法」
チップを装着し電源を入れ、「Chksum」ボタンをクリックすると、自動的にデバイスIDを検出します。
「Load」ボタンかドラックアンドドロップでhexfileをバッファーに読み込みます。
また、「Reload」リロードボタンでhexfileをリロードできます。
「Program」ボタンでPSoCに書き込みます。チェックサムが正しければ、ほぼ間違いな書込めているでしょう。
「トラブルシューティング」
@電源の確認
A回路の確認
Bケーブルの確認(あまり長すぎないこと、シールド線を推奨)
Cチップが対応しているか?(25xxx/26xxx は未対応)
Dパラレルポートのアドレスは正しいか?
Eチップは壊れていないか?
F8pinデバイス以外はXRESモードを試しましょう。
GType3で使用しているトランジスタのベース電流調用抵抗の値は、パラレルポートの電圧、
トランジスタの増幅率、回路の負荷量によって適当な値に変更する必要があるかもしれません。
Hクロックラインやデータラインの波形が綺麗な方形波になるように、適切なCRを挿入すること。
「感想」
10ドルでプログラマが買える時代になぜ自作かというと、ベリファイをスキップできことと、
FlashROMの途中までの書き込みに対応しているので、デバック書き込みサイクルの短縮が
期待できます。
自分の環境(P4-3.0GHz 512MBメモリ)で、CY8C27443(16k)を書き込んだところ、
Cypress MiniProg 約21秒
CYP 1.7 ベリファイなし 約8秒
なので結構はいい感じです。
気が短い人と、Flashエリアの後半部分をデータエリアとして使用し、デバックの際にデータを消したくない人は
おすすめです。
<参考>
プロジェクト内のloacal.mkファイルに次の一行
LASTROM=最終アドレス
(例)
LASTROM=0x3fbf
を記入することで、hexファイルの最終アドレスを指定できますが、Cypresの純正ツールではうまく書き込めないようです。
こんなときに「CYP」の出番です。
大容量のROMにちょっとしか書き込まない場合や、更新したくないデータエリア保護に利用できます。
(2006/12/9補足)
サイプレス純正のプログラマでも高速書き込みができるようになりました。
手順
PSoC Programmer V2.20以降をダウンロードすると、「Command Line Interface」が同時にインストールされます。
これを利用します。
以下のスクリプトを適当なファイル名+.vbsで作成します。そして適当な場所に保存します。
----------ここから----------
Dim WshShell
set WshShell = CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\Program Files\Cypress MicroSystems\PSoC
Programmer"
WshShell.Run("PPCli.exe")
WScript.Sleep 100
WshShell.Sendkeys("OpenPort MINIProg1/049E47872A16 ""C:/Program
Files/Cypress MicroSystems/PSoC Programmer""~")
WshShell.Sendkeys("SetHexFile ""C:/Documents and Settings/xxxx/My
Documents/psoc/yyyy/output/zzzz.hex""~")
WshShell.Sendkeys("SetAcquireMode Power~")
WshShell.Sendkeys("Acquire~")
WshShell.Sendkeys("Calibrate0~")
WshShell.Sendkeys("EraseAll~")
WshShell.Sendkeys("Program~")
WshShell.Sendkeys("PowerOff~")
REM WshShell.Sendkeys("PowerOn~")
WshShell.Sendkeys("quit~")
----------ここまで----------
環境に合わせて、各種パスを変更します。
(3行目)PSoC Programmerのインストール先を指定します。
(5行目)環境に応じて、PPCliが起動指定からの、待ち時間を指定します。早いマシンは0でもOK
(6行目)PSoC Programmerの固有IDやPSoC Programmerのインストール先を指定します。
(7行目)書き込むHexファイルを指定します。
(14行目)バスパワーで動作する場合はREMを削除します。
このスクリプトにより、ベリファイしないので純正ソフトに比べ約半分の書き込み時間になります。
また、ROMいっぱいのプログラムになるケースは少ないと思うので、
プロジェクト内のloacal.mkファイルに次の一行
LASTROM=0x1ffff
などと、プログラム量よりちょっと多いアドレスを書き込むことによりさらに高速化できます。
このスクリプトを、多ボタンマウスの使用していないボタンに割り当てれば、
コンパイル終了後、マウスのボタンくりっくひとつで書き込み動作になるので快適です。
お試しあれ!