もどる


sigrokという解析ソフトを見ていたら EZ-USB FX2 のボードをロジックアナライザとして動作させることが出来るらしい。
このチップを採用した幾つかは Saleae Logic というアナライザのクローンとして使われていた様だが、FWも用意されてクリーンに使えるようだ。
Amazonでfx2ボードが安く手に入るよね。という話からもあり作ってみることに
ちなみに一連のFWでDDS120もsigrokで使えるらしいがうちのはDDS140なので使用できない…(T_T)

大体ここからはじまる一連の作業を行いましたよ。と。
【EZ-USBロジアナ】700円〜のロジック・アナライザ(1) (2) (3) (4)

適当に部品を用意します。
Amazonから
FX2ボード
ジャンプワイヤー
秋月から
74VHC541FT
チップコンデンサ
変換基板
後は適当に
・L型ピンヘッダ
・2x4、1x10のハウジング
等々

後で2×5Pメス/10Pメスも使いましたがその辺は臨機応変で。
74541はVCCが3.3Vの物と5Vの物が秋月にあります。3.3V対応の物を選んでください。
変換基板に半田をします。
SOP20と書いてある側で、12番ピンから10番ピンへジャンパーをします。
そのままその先を1番ピンへ繋ぎます。
つまりこういうルートを作ります。
基板をひっくり返し、SSOP側にします。
SSOP側で、1番ピンと20番ピンからジャンパーをはやします。
頭の空きパッドに予備半田をします。
0.1ufを半田付け
位置を決めたらもう一方も半田し、1ピン、20ピンからのジャンパーを繋ぎます。
つまりこういうこと。
ここまで来たら、74を載せる前に配線のチェック
赤い丸同士、グレーの四角同士が導通し、互いに触れていないことを確認します。
で、74を取り付け
裏面のジャンパーの下にはカプトンテープを敷いておいても良いかもしれない(今更)
ピンヘッダーを付け、ハーネスを準備します。
ピンヘッダーは両方全て付けると後で混乱しますので、プローブ側を9本にします。
74-FX2間は特に色で指定をせずフラットに10本。74541の11番ピンを茶(1)-20番ピンを黒(0)の向きとします。 プローブの方は2番ピンから9番ピンが入力で、1 or 10番ピンがGNDとなります。お好きな方で
まずは74とFX2を結ぶハーネス
40ピンのうち茶色から黒までの10本を取り
10Pのコネクタと、2x4Pのコネクタ(2ヶ)に取り付け直します。
(10Pのハウジングが無かったのでとりあえず8Pで代用)
10P側はストレート、2x4P側は 1,2,3,4,9,10 と 5,6,7,8 の2組に分けます。
茶色が1番ピンでPB0に、次いでPB1..緑で分かれてPB4とつなぎ黒、白がVCC/GNDです。
色は選ばず配線の順序にしていますので、黒がVCC / 白がGNDです。
繋ぐ場所と色の関係はこんなで。
プローブ側も作りますが、隣り合わせで繋がっているのが良ければ
この様に-1から8で取ってもよいかもしれません。(裂くので無駄でしょうが…)
接続は先にも書きましたが10番ピンがGNDなので黒、9番ピンがbit0なので茶、8番ピンが赤…と写真では配線しています。

この後の方で直していますが、電線の1(茶)番目とsigrokの黒(bit0)の始まりに混乱をし続けたので少し小細工をし 黒はGNDに使用、0は8番目から灰を移動し、灰茶赤橙黄緑青紫なケーブルとしました。

とかく、74541への入力は 2-bit7 / 3-bit6 / 4-bit5 / 5-bit4 / 6-bit3 / 7-bit2 / 8-bit1 / 9-bit0 / 1 or 10-GND となりますので適当に調整します。


ソフトウェアをインストール


CypressからSDKをダウンロードします。
http://www.cypress.com/file/135301
インストールすると8051用?のKeilなどいろいろと入りますが進めます。
ドライバは C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Drivers の下に入り
必要なツールは C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Windows Applications\Application Source files\c_sharp\controlcenter\bin\Release の下にある CyControl.exe です

つぎに、sigrokを入れます。
https://sigrok.org/wiki/Downloads
currentが見当たらないのでNightlyを入れます。
2つlinkが見えますが、pulseview-NIGHTLY-32bit-static-release-installer.exe の方をダウンロードし、入れます。
まずは VID PIDを書き換えます。
8chなので、VID = 1D50 / PID = 608C にします。
(16chの場合、PB0-7/PD0-7を使うようです:未確認)

こちらのサイトを参考にして書き換えを行いました。
EZ-USBロジックアナライザー

CyControl.exeを起動してVend_ax.hexをロードします。
Data to send に C0 50 1D 8C 60 00 00 00
Req code 0xA9 といれ、
Req Type を Vender にします。
(他は初期値でよい)

ボード上のジャンパ J2 を抜いてからTransfer Dataを押し VID 1D50、PID 608C をにします。

以降、J2はオープンのままで使います。
またCyControlで処理をするときは、J2を差してから接続しなおし、同じようにします。
書き換えが終わったら、sigrokに含まれるZadigを起動し、ドライバをインストールします。
Unknown Device #1 (など)で USB ID 1D50 608C になっていれば、 Install Driverをします。

なにも表示されない場合は、Options から List All Devices にチェックを入れるとUSB以下全てのデバイスが表示されます。
Zadigは強制的にドライバを書き換えます。
全く関係ないものに対して実行してしまうと使えなくなってしまいますので注意が必要です。
もし、04B4 8613 のままなら、素のFX2で書き換えられていませんのでCypressのツールで書き直しです。

書き換え後、再接続させました?
そして再接続後の書き換えにはCypressのドライバとファームの注入が必要です。お忘れ無く
Zadigでlibusbを入れ終わればsigrokを起動します。
起動後はdemoになっているので、demo deviceを押しdeviceの選択をします。
ちなみに、fx2のファームウェアは C:\Program Files (x86)\sigrok\PulseView\share\sigrok-firmware 以下に格納されており
また最新版の確認はここから入手できます。 https://sigrok.org/wiki/Fx2lafw
ま、Nightly入れているのだから常に最新版のドライバが来ているはずですが。
Step1 を fx2lafw にし Step3の Scan for device をクリックします。
すると Step4 に sigrok FX2 LA(8ch) が表示されるのでOKします。
(USBのIDにきちんと連動しますよ。)
プローブの色が一つずれているのはデータバスのマークをクリックして色を変えてみてください。
(配線を変えてしまっても良いかもしれませんが、黒がGNDとD0で紛らわしいでしょうから…)


とりあえずこんな感じで割り当ててみます。(自分用メモ)
変更後適当に保存なりすれば記憶されると思います。(demoにすると戻ってしまうかも)
で、できあがっていればこんな感じでしょうか?
また作っておいてナンですが、割と目的は作るためですよね。
Amazonでも売っているし…
あけてみるとCypressから直結の奴だったのですがね。


以上ここまでが2017年1月頃に諸々作成し、かつHDDの中に寝ていたデータです。
1年以上熟成放置してた後、2018年夏頃における変更点や追加を以下に


ワイヤの取り回しの勝手が悪いのでサブボードを作ってみました。


複数面付けしたので使い切らない量が…
欲しい人居ればコミケ辺りにでも捨てに行きます。
先の方法ではハーネスの色指定をケーブル準拠としていましたが、起動のたびに入換えるのも面倒なのでケーブルの方を合わせることにしました。
カラーコード順のケーブルは 茶(1)赤(2)橙(3)黄(4)緑(5)青(6)紫(7)灰(8)白(9)黒(0)です。
Sigrokのカラー順は 黒(0)茶(1)赤(2)橙(3)黄(4)緑(5)青(6)紫(7) と0の黒が主張します。
が、このケーブルを作ってしまうとGNDに使う黒と混同してしまいますので灰(8)を黒(0)代わりに使用し
灰(0)茶(1)赤(2)橙(3)黄(4)緑(5)青(6)紫(7)とした8ピンコネクタを作り、黒(GND)を1ピンの独立したワイヤとしました。

またこのプローブも秋月にあった2×5Pメス/10Pメスを組み替えて使用。
先端のICクリップはとりあえずZeroplusに付いていた物を取り付け。
このCypressの開発ボードはSigrokのサイトによるとピン配置が2種ある様で、geeetech準拠のものでした。
Lcsoft準拠であれば、J2側左下の端子がGND->VCCに、反対にJ2側中央右のVCCがGNDと成っているようです。

J1はLED(D1,D2)のの有効無効。
J2は外付けI2Cの認識用で、短絡で無効、オープンで有効。
ちょっと「?」と思うかもしれませんが、このCY768013は起動時に外付けのEEPROMを読み込んで起動します。
このときに参照するI2Cアドレスが24LC128の場合 A2=0, A1=0, A0=1 と設定されている必要があり、J2をショートするとA0が0のため参照先のROMが居無くなりCypressのIDとなります。
Cypressのデータシート(文書番号001-63322 Rev.D 15ページ I2Cコントローラの項)

ま、つまりジャンパをを刺しておくとアドレスがずれる為、外付けROM無効
ジャンパを外すとPull Up有効でアドレスが決定となり外付けROMが有効
となります。
実際に信号解析をかけるとこの様な感じになります。

信号の解析は Protocol decoder を使って解析をします。

信号の波形時間を見たいときは show cursors を使えば良い様に見えますが、 これは波形にフィットしませんのでこれも Protocol decoder から Timing を選択します。

Timing decoderが設定項目は図の通りで
  • Averaging period は指定された期間の平均値。100 ならそこに到達するまでの100サンプリング(直近99+自分)を平均した値。0にすると表示は消える。
  • Edge to check を rising にすれば立ち上がり、falling にすれば立ち下がり、any にすれば信号のHi-Lo間それぞれの時間が表示される。
  • Show delta from last は yes にすると直前のサンプルとの時間差分が表示される。100ms 50ms 120ms となる場合、(先頭なので非表示) -50ms +70msとなる。+-0ms で続けば duty 50%

    また信号の順序を並び替えるには、起動時にGroupで固定されているので信号名の左にある括弧を右クリックで削除し、並び替えてからまたGroup化できる。
    Groupを作成するには紐付けたい信号名をCTRLキーを押しながらで複数選択し、右クリック、ポップアップメニューからGroupを選択すれば良い。
    この時、手を抜いて信号の最初と最後だけを選択すると、その2つだけでグループ化されてしまうので、全ての信号を選択する必要があります。