2013年2月12日火曜日

シリアルフラッシュメモリーライターを作った

ATMELのシリアルフラッシュメモリー(SPI) 「AT25DF161」を購入した。16Mbitの容量がある。
 
通常なら、PICなどに直接接続して大容量メモリーとして使うのだと思う。
ところがワケあって、これをROMのように使えるようにしたくなり、ライターを作ってみた。

MicroChip社のI2C仕様EEPROMであれば、PICKitなどで書き込みが出来るのだが、作りたいアプリケーションに対してメモリーの記憶容量が足りなかった。複数個並べることも出来そうだが、何のための小型シリアルメモリーなのか、その意義が分からなくなる。それでワンチップでしかも大容量のものを探していて、AT25DF161にたどり着いたのだった。しかし、これだとPICKitで書き込みが出来なかった。

そういう理由から仕方なくライターをつくることになってしまった。
せっかくなので自作メモリーライターは、SPI仕様のEEPROMライターとしても使えるようにしておこうと思う。とりあえずハードウェアだけでも。

今回は、PIC18F14K50を使ってUSB経由でホストコンピュータとつなぐことができるようにした。
まずは、ソルダレスボード上に仮組みをして、動作確認などを行った。

  

ソフトウェアは、MicroChip社が提供しているUSBサンプルプログラムを参考にした。
ホストコンピューターはWindowsXPで、サンプルプログラムの関係から、必然的にVC++ 2005 Express Editionとなった。
PIC側は、MicroChip社のC18である。

ホスト側のプログラム実行中画像。
動くことが優先でつくったので、READ/WRITEはとにかく遅い。

書き込みなどが出来るようになってから、いつものように基板をCNCで作る。



メモリーチップのピンレイアウトが変更になっても対応できるように配線はジャンパー接続にして、メモリー自体も簡単に書き込みできるようにZIPソケットをつかった。



PICとバッファ、3.3Vレギュレーター、USBコネクタは表面実装品をつかったので裏面についている。
基板の設計でジャンパーが大変だったので、ちょっと手抜き。ご覧のように半分ぐらい手配線になってしまった。

とりあえず、これで完成。

0 件のコメント:

コメントを投稿