EZ-USBを総合的に理解するためには、本チュートリアルでダウンロードしインストールした開発環境に付随する以下の2つの文書(C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Documantationフォルダ内にある)を読む必要があります。
● EZ-USB(R) FX2LP DataSheet.pdf ...... 電気的特性など回路を組む上での情報が詰まっている
● EZ-USB(R) Technical Reference Manual.pdf ...... ファームウェアをプログラミングする上での知識が詰まっている
ただし、初心者がすべてを理解するのは困難です。そこで、本チュートリアルの方針の通り、実際に手を動かしながら最小限の知識で開発ができるようになることを目標とします。一通りの開発ができるようになると、上記文書についてもわかるところから拡がって理解が深まっていきます。
このページでは、ファームウェアsimpleio.iicをダウンロードしたEZ-USB FX2 56pin(作成方法は前ページ参照)をGtUSBBox.exeで駆動し、EZ-USBの基本動作を理解します。
EZ-USB FX2 56pinの詳しいピン配置についてはオプティマイズさんのサイトで確認していただくとし、ここでは弊社HPで取り上げるピンとその機能のみにフォーカスし、単純化してピン配置を示します。
電源回り(+5V,+3.3V,及びGND)とRESET端子の他にPort A,B,Dの24個の双方向のI/Oピンがあります。I/Oピンの入出力方向は各ピン毎に設定できます。Port
A.B.Dは、それぞれPA7...PA0, PB7...PB0, PD7...PD0の8bitのI/O Portとして機能します。尚、PA0/1は割込信号入力INT0/1としても機能します。
各Portピンに0(1)を出力すると、実際に各ピンから0V(+3.3V)が出力されます。一方、各ピンに-0.5V〜+0.8V(+2V〜+5.25V)を与えると0(1)の入力と認識されます。
+5V、+3.3Vはそのまま電源として用いることができるため、基本的に周辺回路のために別途電源回路を用意する必要はありませんが、全体で500mAまでという制限があります。
RESETピンは内部的に+3.3Vにプルアップされていて動作中はHighを維持しています。このピンに5ms以上の間Low(0V)入力後Highに戻すとEZ-USBにリセットがかかりプログラムの最初から動作をやり直します。
デジタルテスターを用意します。まだお持ちでない方はケチらずにそこそこのものを購入してください。少なくとも、抵抗測定時にショートだとビープ音が鳴るモードがあるもの、そしてダイオードの順方向電圧が測定可能なものにして下さい。
また、以下の作業を行いやすいためと、間違ってEZ-USBを破壊するリスクを下げるために以下のような治具を作成します。
<必要なもの>(右図)
● デジタルテスタ―
● テストピン
角ピンのピンヘッダー(プラグ) 5,6pinの端のピンに銅線をハンダ付けし、反対側の被覆を剥がしたもの。無駄にpin数が多い理由は、pin数が少ないとEZ-USBのソケットに挿した時にすぐ抜けてしまうため。
● 両端がワニ口クリップの被覆銅線
EZ-USBをPCにUSBケーブルで接続し、GtSUBBox.exeを実行します。
もし、何もプログラムされていなければ、EZ-USBのイニシャライズ(PCとケーブル接続された)直後はI/O Portすべてが入力に方向付けられています。従って、GtSUBBox.exe立ち上げ直後は右下図のようになります。
図の6個の数値はすべて16進数で表されています。現在PortDの入力値(Input)はFFですが、例えば値が4Dだったとするとそれを2進数に直すと0100 1101になります。この2進数の各数値がPortDの各ピンPD7...PD0の入力値に対応します。即ち、PD6,PD3,PD2,PD0が1(High,+3.3V),それ以外が0(Low,
0V)であることを意味します。現在値はFFですが、それは入力値がすべてHigh(+3.3V)であることを示します。
現在各ピンは何とも接続されていない状態(開放状態)のはずですが、入力値がHighである理由は、各ピンが入力動作する際内部的にプルアップ(数10kΩ程度の抵抗値で電源(+3.3V)と接続)されているからです。もし開放状態で入力値が0に落ちているピンがあれば異常です。
尚、DirectionはI/Oピンの入出力方向を表します。0が入力で、1が出力です。現在はすべて00なので、すべてのピンが入力に設定されています(初期値)。
次に、各ピンに0(0V)を入力してみましょう。右上図の「入力テスト」のセットアップを参考にし、テストピンの先端を、EZ-USBの表面のハンダ付けされたピンに接触させます。ピン配置は前項の表を参考にします(表裏逆ですから注意)。すると、GtUSBBoxのInputの表示が接触させたピンだけ0に変わるはずです。例えば、PB6に接触させるとPort
Bの値は10111111即ちBFに変化します。このように、意図したピンへの入力値をPCで常に正しくモニタ出来れば、I/Oピン入力の学習は終了です。
次に、出力テストを行います。前項右上図の「出力テスト」のセットアップを参考にし、デジタルテスターで電圧を読みます。
まず、GtUSBBoxでDirectionの値をすべてFF(すべて出力)に変更し、Directionボタンを左クリックします(State1)。すると各PortのInput値がすべて00になります。各I/Oピンの方向を出力に設定したときそのinput値は出力値を反映します。即ち、EZ-USBのI/Oピンの出力値の初期値はすべて0(0V)です。それを確かめるため、テスターで各出力ピンの電圧を測定してください。0V近辺のはずです。
次にPA0に1を出力しましょう。そのためにPortAのOutput値に01を入力します。するとその背景が黄土色に変化します。これは、「Output値を編集した」ことを示すサインですが、この状態ではまだ出力されていません(State2)。Output値を変更してから最後にEnterキーを入力することにより、背景が白に戻り実際にPortAに出力されます(State3)。その結果Input値が01に変化します。そしてPA0ピン(CN2のpin13)の電圧をテスターで測定すると+3.3V近辺に変化しているはずです。
このようにして、任意のピンに任意の出力を行ってそのピンの電圧値が0Vまたは+3.3Vの想定値になっていれば、I/Oピンの出力の学習は終了です。
[補足]
GtUSBBox.exeではI/Oピンの入出力の方向を、あらかじめDirection値として入力してあった値をDirectionボタンをクリックすることにより3port同時に変更します。一方、I/Oピンの出力値であるOutput値は、Output値を入力してEnterキーを押した時点でそのPortの出力値のみが変更されます。これらは、GtUSBBox.exeの独自仕様であって、EZ-USBそのものの特徴ではありません(ウィンドウズアプリケーションやファームウェアの作成の仕方により仕様はいくらでも変更できます)。
> 次に進む