EZ-USB FX2LPの開発環境を構築する

さて先日までPIC32の開発をしていたのだが、今さらPIC32では用に足りないことが分かった。
今回はHSのUSBターゲットが必要で、PIC32はFSまでしか対応していないのだ、orz。
ということで仕切り直して、EZ-USBに切り替えた。
筆者は過去にFX2を使ってUSBターゲットデバイスを実装したことがあるので、なーに、簡単簡単。
しかしそこはそれ、忘却曲線は急峻なうえ、この手のものはあちこちに地雷が埋まっている。
なかなか一筋縄では行かなかった。
しかも、PICに比べるとEZ-USBはコミュニティが小さいので、なかなか厄介であった。


まず開発に使うデバイスだが、CypressのFX2LPの開発キットCY3684はなかなかお値段がよろしい。
安いものはないかと物色していると、こんなものを発見した。

56ピンのCY7C68013Aを搭載していて、なにやらE2PROMのようなものもある。
早速購入、PCに接続・・・おや認識しないぞ?
実はこれはSaleaが以前販売していたUSB接続ロジックアナライザーのクローンらしい。
なのでamazonでも"ロジックアナライザ"などと書いてあるのね、納得。
ちなみにそちらに興味がある方はこちらを見てみるとよい。
回路図も入手できた、後人のためにGoogle Driveに保管しておく、https://drive.google.com/open?id=0B2jNhsdZggc5YXBBMnBZYVV6NkE
果たして、唯一あるジャンパがFW用のE2PROMの接続をしているらしい。
ぶちっとな、とぶっこ抜く。
これで、素のEZ-USB FX2LPとして動作するようになった。


次に開発ツールだが、これはCY3684のものがそのまま使える・・・はずだ。
こちらからダウンロードできる、http://www.cypress.com/file/135301
これを展開・実行すると、参照実装やマニュアル、ユーティリティー、ドライバからなる開発キットと、Keil uVision 2 IDEがインストールされる。
ジャンパをぶっこ抜いたEX-USB FX2LPボードをつなぐと、ドライバーが・・・導入されない。
慌てずデバイスドライバで見てみるとVIDが0x04B4、PIDが0x8613という見慣れた不明なデバイスがいるはずだ。
これを右クリックして、ドライバの更新をする。
ドライバは、(開発キットのルート)\Drivers\Win8.1\x64の下にいるものがWindows 10 64bit版なら使える。
ドライバが導入されれば、"Cypress FX2LP No EEPROM Device"という見慣れたUSBデバイスが、デバイスマネージャーで見つかるようになる。


動作確認だ。
(開発キットのルート)\Windows Applications\Application Source files\c_sharp\controlcenter\bin\Releaseの"CyControl.exe"を起動する。
昔からあったEZ-USB Control Centerの縮小版だ。
すでにEnumerateされている"Cypress FX2LP No EEPROM Device"が表示されているはずだ。
"Program" -> "FX2" -> "RAM"を選び、ファイルダイアログから(開発キットのルート)\Firmware\Bulksrcの下の"bulksrc.hex"を選択する。
すると先ほどのUSBデバイスが"Cypress FX2LP Sample Device"に化けるはずだ。
これがEZ-USB独特のRe-enumerateと呼ばれるもので、FWをPC経由で更新して、別のデバイスとしてHot Plugさせることができるのだ。
右側のペインの"Data Transfer"を選択し、左側のペインのツリーから"Cypress FX2LP Sample Device" -> "Configuration" -> "Interface 0" -> "Alternate Setting 0" -> "Bulk out endpoint (0x02)"を選んで、"Transfer Data-OUT"を押すと、Endpoint 0x02にバルク転送で512byteの0x00が転送される。
うまく動作していれば、"BULK OUT transfer completed"が表示される。