aitendoの「USBコントローラ基板」をロジアナとして使う
ちょっとUART(かなぁ)と思われる通信の中身を見たくなって、ロジックアナライザ(以下、ロジアナ)が欲しくなったので、なんとか格安のものはないかと調べ、aitendoの2,000円くらいの基板をロジアナにした話です。
格安のロジアナを求めて
手軽なロジアナがないか検索していて、最初にたどり着いたのが、SeeedStudioさんの「LOGIC PIRATE」です。これは中々おもしろいもので、実はオープンソース・ハードウェアとオープンソース・ソフトウェアの組み合わせでロジアナとして動かしています。
詳細は以下のページ。
http://dangerousprototypes.com/docs/Logic_Pirate
オープンソース・ハードウェアなので、回路図や部品リストも提供されています。PIC32MX250を使っていて、頑張ればその他の部品も集められなくもなさそうです。
これはこれとして非常に興味深いのですが、製品として日本で売っているところが見つからず、また海外通販だと時間と送料がかかりそうなのでもう少し調べてみることにします。
そして、次にたどり着いたのが、オープンソース・ソフトウェアの「Sigrok」。このソフトウェアの対応ハードウェアが非常に豊富。
秋月なんかでも売ってるLAP-C等のロジアナにも対応しているのですが、この部品一覧を眺めていて気になった(僕の「安そう」センサーが反応した)のがこちら。
で、調べてみると、Amazonで売っています。
HiLetgo CY7C68013A-56 EZ-USB FX2LP USB 開発ボードモジュール ロジックアナライザ EEPROM
- 出版社/メーカー: HiLetgo
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
uxcell 拡張ボードモジュール CY7C68013A-56 EZ-USB FX2LP USB2.0 発展ボードモジュール ロジックアナライザーEEPROM
- 出版社/メーカー: uxcell
- メディア: Personal Computers
- この商品を含むブログを見る
1,000円以下でも手に入り、Prime対応のものでも1,200円代です。
このボードをロジアナに使おうとしている人の話を見ると、「EEPROMを容量の大きいものに変えたい」「入力バッファICを外付けしたい」と言った話がよく出ています。
(※ただ、このタイプのボード、どうやらとあるメーカーさんのベンダーコードが書き込まれたものも出回っているようで、それを問題視する声もあるようです。)
もう少し調べてみると、かつてはaitendoでも売っていたようです。現在は部品の搭載されていないボードのみが販売されています。
aitendoではCY7C68013の単体販売もあるので、これを組み立てるという手もありそうです。僕は知らなかったのですが、このCypressのEZ-USB FX2シリーズのマイコンはかなり前からロジアナに使われているようです。
そして、さらにこのマイコンをaitendoで検索すると、この商品にたどり着きました。
このボード、EEPROMは小さめですが、バッファICとして74HC244Dも搭載されていて2,000円弱で買えます。これもSigrokで使えそうな気がします。何と言っても、aitendoなので、ちょっと足を伸ばせばすぐに買いにいけるところが嬉しい。
USBコントローラ基板の入手
ということで、いざaitendoへ!と思ったのですが、aitendoはまだ年始休みの最中。とりあえず、購入はaitendoが開店する1月6日まで待って、店頭で買うつもりでいました。
そして、初売りの1月6日。13時開店とたかをくくっていたら、初売りということで11時に開店していた模様。そしてなぜか前日までは在庫が豊富にあるかに思えたこのUSBコントローラ基板、昼過ぎに気がついたときには、ウェブの通販サイトでは「在庫なし」の表示に。
(※1月8日時点でまだ再入荷されていません。)
ウェブで在庫切れでも店頭在庫はあることがあるので、念のためと思って店頭に向かい、店員さんに在庫の確認をしたところ、「すいません、売り切れてしまったんです。」との返答。なんだってぇぇぇぇ!
がっかりと店内で別の商品を見ていたところ、先程の店員さんが駆け寄ってきて「さっき探してた商品はこちらですか?1個だけ見つけました。」とのこと。やっほい!ということで、ラスワンをゲットしたので、このエントリーを読んで興味を持っても、再入荷するまでは手に入れることができません。ごめんなさい。
このとき合わせて、プローブとして使うために、以下のものも購入しました。
USBコントローラ基板の設定
どうやらこの、CypressのEZ-USB FX2をSigrokで使う場合、2つの方法があるようです。
一つは、EEPROMに「fx2lafw」というオープンソースのファームウェアを書き込み、そのファームウェアから起動する方法。ただ、この基板のEEPROMはとても小さく、ベンダーIDの保存くらいにしか使えないので、EEPROMを換装するか、外付けしないといけません。前述のLcsoft Mini Boardとその互換ボードでEEPROMの増量を検討している人が多いのは、EEPROMにファームウェアを書き込むためでしょう。
もう一つの方法は、Sigrokとの接続時に、SigrokからファームウェアをRAMに流し込んでもらいそれで起動する方法です。このファームウェアはEEPROMに書き込むファームウェアと基本的には同じものです。この場合、SigrokはボードのVID/PIDを見て流し込むファームウェアを決めますので、流し込みたいファームウェアに対応するVID/PIDをボードに書いておくことになります。
EEPROMの容量が少ないこともあり、後者の方法で行くことにしました。これから行う作業の手順はこちらのページを参考にしています。
EZ-USBロジックアナライザー - neko Java Home Page
このボードは8ch分のピンがでていますので、「fx2lafw-sigrok-fx2-8ch.fw」を使うこととします。このVID/PIDは、sigrok-firmware-fx2lafwのバージョン0.1.3から使えるようになったVID/PIDのようです。
sigrok-firmware-fx2lafw 0.1.3 released! | The ever-expanding world of sigrok
今回、MacとWindowsで動作を試みましたが、Macではうまく動作せせる事ができませんでした。Macでの動作検証は引き続き行うとして、今回はWindowsでの動作環境の構築について触れたいと思います。
必要なファイルのダウンロードとインストール
- Windows10対応のFX2LPドライバ
Drivers for EZ-USB® FX1™, FX2LP™ , and FX3 - KBA94413 | Cypress Semiconductor
ダウンロードしたDriver.zipを展開しておいてください。
- CY3684 EZ-USB FX2LP DVK Setup(開発キット)
CY3684 EZ-USB FX2LP Development Kit | Cypress Semiconductor
※リンク先のページからCY3684 EZ-USB FX2LP DVK Setupをクリック
ダウンロードしたCY36845Setup.exeをダブルクリックしてインストールしておいてください。設定等はそのままいじらずにデフォルトのままで構いません。
- Sigrok PulseViewのWindows用Nightly build
※リンク先のページからNightly installer binariesのPulseViewをクリック
ダウンロードしたファイルをダブルクリックしてインストールしておいてください。こちらもデフォルトのままで構いません。
標準状態でのUSBコントローラ基板の認識
まずは、USBコントローラ基板の設定を行うために、標準状態で認識させます。
- USBコントローラ基板上のジャンパピンをL側に挿す(このジャンパピンをL側に挿している状態では、このマイコンの本来持っているVID/PIDで起動します)
- ボードとWindowsをつなぐ
- Windowsのデバイスマネージャを確認すると「不明なデバイス」になっているので、ドライバの更新を行い、先程ダウンロードしたドライバの適切なOSを選択する
- デバイスが「Cypress FX2LP NO EEPROM Device」と認識されればOK
EEPROMの消去
念のために、EEPROMを消去し、EEPROMに記録されているVID/PIDをクリアします。このページを参考にしてください。
- 先程インストールしたCypressの開発キットからCyControlを起動する(スタートメニューにはないので、C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Windows Applications\Application Source files\c_sharp\controlcenter\bin\Release\CyControl.exeをダブルクリックして実行)
- CyControlの画面に「Cypress FX2LP NO EEPROM Device」が表示されているはずなので、それを選択する
- ベンダ書き換えプログラムをロードする(Cypressのメニューから、Program→FX2→RAMを選択し、ファイル選択ダイアログでC:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Firmware\Vend_ax\Vend_Ax.hexを選択、CyControlの画面の下部のステータス領域でProgramming Succeededと表示されるのを待つ)
- CyControlの画面の左側から、Cypress FX2LP NO EEPROM Device→Configuration1→Control endpoint(0x00)を選択する
- CyControlの右側の画面で、Data to send(hex)に「FF」を入力、Byte to transferに1が表示されていることを確認、DirectionがOutであることを確認した上で、Req typeにVendorを選択、Req codeには0xA2を入力、wValueとwIndexxはともに0x0000のままで、「Transfer Data」ボタンをクリックし、CONTROL OUT transfer completedと表示されるのを確認する(※参考にしたサイトではReq codeはA9となっていますが、EEPROMが小さい場合はA2となります)
VID/PIDの書き換え
次に、このデバイスに「fx2lafw-sigrok-fx2-8ch.fw」用のVID/PIDを設定します。
- CyControlで、先程の作業のまま、Data to sendを「C0 50 1D 8C 60 00 00 00」に書き換え、「Transfer Data」ボタンをクリック、CONTROL OUT transfer completedと表示されるのを確認する
fx2lafw-sigrok-fx2-8chとしてUSBコントローラ基板を認識させる
- USBコントローラ基板をPCから取り外します(そのままUSBを抜いてください)
- USBコントローラ基板のジャンパピンをS側に挿し替える(このジャンパピンをS側に挿している状態では、EEPROMに保存されているVID/PIDで起動します)
- ボードとWindowsをつなぐ
- Windowsのデバイスマネージャを確認すると「不明なデバイス」になっていることを確認する
- Zadigの立ち上げ(スタートメニューから、Sigrok→Zadig)
- デバイス選択のプルダウンに「Unknown Device #1」が表示されているか確認する(表示されない場合は、メニューからOption→List All Devicesを選択してみる)
- USB IDが、先程設定した1D50/608Cになっていることを確認する
- Driverが「(None)」になっていることを確認する(スクリーンショットでは、すでにDriverインストール後なので、(None)ではなくなっています)
- デバイス名の右のEditラジオボックスにチェックして、適当な名前をつける(僕は「Sigrok8ch」という名前を付けました)
- 「Install Driver」ボタンをクリックする
- インストールがうまくいっていると、下記スクリーンショットのように、Driver部分がWinUSBとなるので、確認する
- Windowsのデバイスマネージャで、ユニバーサルシリアルデバイスの中に、先程自分でつけたデバイス名として認識されていることを確認する
SigrokからUSBコントロール基板を利用する
ロジアナとして使ってみる
このように、UARTの送受信のデータが取得できます。これで通信がうまく行われているかの確認などを行うことができます。Arduinoなどでシリアルを使うプログラムを作る場合、シリアルモニタでのデバッグが難しいことがありますが、ロジアナがあれば通信の確認を行えます。
ということで、非常に安価にロジアナを手に入れることができました。今後のものづくりが非常に捗りそうです。今年のものづくり初めとしてはなかなかいいものができました。
【おまけ】USBコントローラ基板のケースを作る
サイズを計測してInkspaceで 形を起こして、TechShop Tokyoのレーザーカッターでアクリルをカットしてケースを作成しました。