PSoC初日:Cypress CY3210 (miniprog1) が届いた

パステルマジックで頼んだものが届きました。


PSoCというのは今年春頃になって、ニコニコ動画の科学タグを追いかけはじめてから初めて知ったのですが、自分の言葉で表すと「LUTではなく機能ブロックの連結に特化したFPGA」のようなもの。たぶん。
ADコンバータとかPWMモジュールとかを並べて、モジュール間あるいはモジュールとI/Oポートの間をぐりぐり配線します。8ビットのCPUが、I/Oレジスタを読み書きする程度の制御に動いています。


http://www.moccos.info/_files/0809/miniprog1_box.jpg
このキットにはUSB接続のROMライター、評価基板、USBケーブル、チップ2個が入っています。
チップは市価300円+500円くらいなので、値段のほとんどはライターのものですね。


http://www.moccos.info/_files/0809/minieval.jpg
これが評価基板。一緒に入っていたチップの安いほう(CY8C27443)をソケットに装着した写真です。28pinで細長い。
ライターのケーブルが刺さるコネクタと、スイッチらしきものなどが装着されていて、これで書き込み&簡易テストが可能!
という製品ですが、このデカイ穴(写真下部)にエレガントに接続できるような配線機材が今手元にありません。ワニ口クリップがあればいいんでしょうが…
ここにハンダ付けしまっては負けのような気がします。でもどうしようもない。


諦めてブレッドボードを使うことにしました。値段の3割くらいはこの青い評価基板だと思うので、ちょっともったいない。
ブレッドボードにピンヘッダを立てたらうまくライターがささらんものか、と試したものの長さが足りず駄目だったので、ライターのコネクタにジャンパケーブルを差し込んで配線しました。


http://www.moccos.info/_files/0809/haisen.jpg


無事書き込みテストも完了して、プログラミング言語hello worldに相当すると思われる「LED点滅」をやってみることにしました。
さっそく落としてきた開発環境と書き込みツールをインストールして…ああ、予想通りWindows XP x64ではライターを動作させることができませんでした。光学ディスクのプロテクトチェックと同じで、ハードを直接いじろうとするところは不正落ちします。仕方ないので32bitのサブマシンで。


http://www.moccos.info/_files/0809/PWM.jpg

  • グローバルパラメータ設定
    • CPUクロック、分周器。他はよくわからんのでいじってない
  • 8bit PWMモジュールを配置
  • 8bit PWMモジュールのパラメータ設定
    • 4KHzの信号をめいっぱいカウント=64ms、ゲーマー的には約4フレーム。つまり人間の目で点滅間隔が分かる程度


配置配線後に、CPU部分のコードを書きます。モジュールごとに関数・定数を説明したまっとうなドキュメントがあるので、それ見ながらいじります。LED固定速度点滅の場合、コードは

PWM8_1_Start();

のあとwhile(1)で回すだけ。


http://www.moccos.info/_files/0809/led1.jpg


静止画じゃわかりづらいですが、あっさり光りました。


http://www.moccos.info/_files/0809/led2.jpg
Duty(PulseWidthで設定)を半分まで上げたらだいぶ明るく。Dutyの表記ってどうすんだっけ、0.5って表せばいいんだったか?


これで最低限のoutputテストが出来たので、この後プッシュスイッチ一個つけて、ON/OFFによってDuty比を変えるってテストまでしました。
ADコンバータやシリアル通信のモジュールなど、結構な種類のものを置くことができ、ちょいとしたものを作るには便利そうですね。フラッシュメモリに書き込むので、一度書けばあとは電源さえ食わせればいいはずです。クロックも内部供給。
さらに、チップ一個数百円なので気軽に書き潰せる、と思ったらそれ以前に、フラッシュ書き換え回数が万のオーダーらしいです。


普通のマイコンFPGAを使うときも、単純なI/Oの制御はこのチップに出しちゃってもいいかもね。