Maxim USB Laboratoryのセットアップ
要約
このアプリケーションノートはアプリケーションノート3936 「Maxim USB Laboratory」と対になっており、USB埋め込みホストとペリフェラルアプリケーションの開発を簡単にするハードウェアとソフトウェアの組み合わせを説明しています。このシステムではMAX3421Eはホストであり、MAX3420Eはペリフェラルです。このアプリケーションノートは評価(EV)キットを用いたハードウェアのセットアップの仕方を説明し、そのソフトウェアを評価する3つの方法を示しています。
はじめに
対のアプリケーションノート3936 「Maxim USB Laboratory」はUSBホスト(MAX3421E)とペリフェラル(MAX3420E)の両方を同じARM®をベースとしたハードウェア上で実装するCコードおよびKeil™プロジェクトを説明しています。このキットのハードウェアの構成は次の通りです:
- MAX3421EのEVKIT-1ボード
- Keil MCB2130ボード
このアプリケーションノートはこのキットのさまざまな部品を組み立てて、構成する方法を説明しています。
その他の文書と問い合わせ情報
MAX3420EとMAX3421Eについてはマキシムのウェブサイトを参照してください。データシート、Maxim USB Laboratoryコードを説明したその他のアプリケーションノート、MAX3420EとMAX3421Eに関する多くのアプリケーションノート、およびサンプルのオーダーの方法が分かります。
MCB2130ボードまたはKeil Software®、およびARMソフトウェア開発ツールについて疑問があれば、Keilのwww.keil.comにお問い合わせください。
ハードウェア構成
図1. Keil MCB2130ボードにプラグインしたマキシムのMAX3421EのEvkit-1
図1には2ボード構成のセットが示されています。青いボードがKeil MCB2130であり、Philips®のLPC2138、ARM7™マイクロコントローラを搭載しています。LPC2138は2つのSPI™ハードウェアユニットを備え、そのおのおのは2つのUSBコントローラチップに接続されています。
垂直のボードがMAX3421EのEVKIT-1です。MAX3420EペリフェラルコントローラはARMのSPIポートの1つに接続され、図1の「3420 P」(PはペリフェラルのP)と表示されたUSBの「B」コネクタ(J5)に結線されています。MAX3421Eのホスト/ペリフェラルコントローラはもう1つのARMのSPIポートに接続され、「3421 P」 (J2)および「3421 H」 (J1)コネクタ(HはホストのHです)に結線されています。USB LaboratoryのコードはMAX3421Eをホストとして使用するため、EVキットボード上の中間コネクタ(J2)は使用されません。
ホストのソフトウェアはターミナルエミュレーションプログラムを実行するPCにUSBの記述情報を送信するために、MCB2130ボードの2つのシリアルポートの1つ(P1)を使います。Tera Term Proなどのターミナルプログラムは、画面をクリアしてカーソルを原点に復帰させるためにプログラムによって送信される特別な「escape code」シーケンスを認識するターミナル(VT100)をエミュレートすることができます。ターミナルプログラムのシリアルポートの設定値はフロー制御なしの38400、N、8、1です。
図1のベージュ色のボックスとリボンケーブルはKeil ULINK® JTAGローダーデバッガーです。このユニットはKeil µVision®3開発環境によってサポートされています。MCB2130ボードにはKeilツールキットの完全機能バージョンであるµVision3の評価バージョンが同梱されています。この評価バージョンはコードサイズが16KBに制限されています。
このボードセットには4つのUSBコネクタがあります。Keilボード上のUSBコネクタにはVBUSとグランドしか接続されていません。このコネクタはUSBホストにプラグインすることによって、ボードセットに5V電源を供給します。USBハブによってはボードに給電する十分な電流を供給可能でないものがあり、このため、電源は空いているPCのUSBポートから直接得ることがベストです。
マキシムのボードは3つのUSBコネクタを備えています。上述のように、Bコネクタは図1に示すように3420E PとしてMAX3420Eに結線されています。USBペリフェラルまたはホストとして機能することができるMAX3421Eは3421Pと3421Hの2個のコネクタに結線されています。これらのコネクタは相互に結線されたD+とD-端子を備え、同時には1個にのみ接続されるよう意図されています。USB Laboratoryのコードは中間のUSBコネクタ、3421Pを使用しません。
MAX3420EとMAX3421EはARMマイクロコントローラ上の2つの別のSPIポートに接続されています。この構成とすると同じコードで同時に動作するホストとペリフェラルアプリケーションの両方に書き込むことが容易です。これは、また理想的なUSBの練習およびデバッグシステムを提供することにもなります。すべて同じCコードを用いて、ホストはUSBリクエストをペリフェラルに発し、ペリフェラルは応答し、ホストはその結果を評価することができます。図1の黒いUSBケーブルはMAX3420EとMAX3421Eを相互に接続するようなシステム用のUSBケーブルを示しています。
Keil MCB2130ボードはKeilまたはその他から入手可能です。上に示したマキシムのウェブページはKeilの製品の入手性の最新情報を提供します。
MAX3421E EVKIT-1のブロック図
図2. MAX3421EのEVキットのブロック図。影を付けた楕円形はアプリケーションを実行させるソフトウェアモジュールです。
図2は2つのUSBコントローラがUSBコネクタのJ1、J2、およびJ5にどのように接続されているかを示しています。36ピンのコネクタ(J4)がKeilのMCB2310開発ボードへの接続用に結線されています。この設計ではARMプロセッサの2個の独立したSPIポートを使って2つのUSBコントローラ(U1とU2)が独立した動作を行うようになっています。ホストのソフトウェアはバックグランド(ここではmain{}
)で動作し、他方ペリフェラルコードはLPC2138の割込みEINT0を用いて開始されます。
U1はホストとして動作するため、システムはUSB AコネクタJ1にVBUS電源を供給しなければなりません。5V電源はJ3-3に取り付けられた空中配線を用いてEVキットに供給されます。この5VはKeilボードのテストパッド「5V IN」から、または実験室電源から供給可能です。U3、MAX4793がVBUS電圧のスイッチとなり、また電流を制限します。U3はそのGPO-7端子を用いてJ1へのVBUS電源を制御し、またそのGPIN-0端子の過電流状態(300mA以上)を検出することができます。
EVキットボード上のボタンとランプは両方のコントローラに接続されています。U1が7セグメントの表示を駆動し、4つのボタンに接続されています(PB1–PB4)。U2が4つのLEDを駆動し、押しボタンのPB5~PB8に接続されています。
Keil MCB2130ボードの準備
図3. 赤い矩形の中に示された場所に36端子の雄ヘッダを半田付けしてください。
Keil MCB2310ボードは複数の2ピンおよび8ピンヘッダを収容するように設計された場所を備えています(図3)。マキシムのEVキットボードは36ピンヘッダ(ボードに同梱)を使用し、3.3V電源ピン、3つの8ピンヘッダ、および2つのGNDピンにわたってKeilボードに取り付けます(図3の赤い枠)。幾つかのKeilのコネクタの場所の間にはスペースが存在し、36ピンヘッダを取り付ける前に幾つかのピンペアは取り除かなければなりません。「取り付けないことになっている」ピンがヘッダから外されていることを確認してからKeilボードにヘッダを半田付けしてください。
図3にはボードの上右隅のテストポイントパッド(赤い丸)が示されています。ここはマキシムボードによって使われるための5V電源が供給される場所です。この5V電源はKeilボード上のUSB電源コネクタのVBUS端子からきています(図4)。
図4. 空中配線よってマキシムボードにVBUS電源を供給します。
Keilソフトウェアのインストール
Keil µVision3 ARM開発ソフトウェアのデモバージョンはwww.keil.comからご利用頂けます。マキシムソフトウェアパッケージに同梱されるµVision3のプロジェクトファイルはダウンロードされたKeilファイルのmdk303a.exeを用いて作られました。2つのプロジェクトファイルがその開発環境でKeilによって提供されるため、このバージョンを使用することが重要です。(この2つのファイルはMaximUSBLab10.zipファイルには含まれていません。) MaximUSBLabプロジェクトはC:\Keilという特別なパス名を用いてこれらのファイルを格納します。Keilデモツールをインストールする場合、C:\Keilとしてデフォルトのインストールディレクトリを受け取るようにしてください。Keilによって与えられる正しいファイルのパス名がこれだからです。
Keilから供給される「mdk303a.exe」ツールセットでは、Keilが供給する2つのファイルは次に示す場所にあります:
C:\Keil\ARM\RV30\Boards\Keil\MCB2130\Blinky\startup.s
C:\Keil\ARM\RV30\Boards\Keil\MCB2130\Blinky\retarget.c
Keilのデモプロジェクトには多くの「Blinky (非動作)」バージョンが含まれています。マキシムのソフトウェアによって使用されるボードのMCB2310に対応したファイルを使用することが重要です。
Keil ULINK JTAGデバッグユニットをお持ちの場合は、KeilのウェブサイトからUSBドライバをダウンロードしてください。マキシムのコードはKeilのウェブサイトからのファイル3071.zipを使用して試験済みです。デモ用のµVision開発ソフトウェアをインストールした後、このファイルをダブルクリックしてUSBドライバをインストールし、µVision3をULINKボックスに接続します。
Keilデモソフトウェアをインストールしたら、MaxUSBLab10フォルダを探して、ファイルMaximUSB.Uv2をダブルクリックします。このことによって、プロジェクトが開かれて、すべての正しいプロジェクト設定が行われます。「Rebuild All Target Files」ボタンをクリックするとそのプロジェクトがコンパイルされます。ULINKボックスをお持ちでUSBドライバをインストール済みの場合、「Start/Stop Debug Session」をクリックすると、マキシムの実例コードを実行し、変更し、そしてデバッグすることができます。
ファームウェアを実行する3つの方法
- MaximUSBLab.hexのロードと確認
- デバッグと変更(制限版)
- 本格的な開発
Maxim USB Laboratoryロードファイル(hex)はマキシムのウェブサイトから入手することができます。これはアプリケーションノート3936 「Maxim USB Laboratory」に含まれる圧縮されたKeilプロジェクトの1部分です。www.esacademy.comから入手可能なFlash Magic (図5)と呼ばれる無料のユーティリティを用いてLPC2138にhexファイルをロードすることができます。このユーティリティを使用するためには「Options/Advanced Options/Hardware Config.」と選択して、示されたボックスをチェックしてください(図6)。
Flash Magicユーティリティを使用するためにはKeilボード上でP2シリアルコネクタを用いて、ジャンパーJ7をISPの位置に移動してください。
注:J7のジャンパーを移動すると、押しボタンS2はINT1割り込みソースとしては非活性化されます。マキシムのアプリケーションコードではINT1を他の目的で使用しているため、J7をISPの位置のままにしておくことができます。
図5. MCB2130ボードに対するFlash Magic画面の標準的な設定
図6. このオプションを最初に設定してください。
Keil ULINK JTAGをお持ちの場合はJTAGポートを通してマキシムデモコードをコンパイル、ロード、そしてデバッグすることができます。もちろん、コードのブレークポイントとシングルステップを設定することも可能です。これは、動作しているホストおよび/またはペリフェラルコードを目的に合わせて学習したり変更するなど、USB—を早く立ち上げる上で優れた方法です。
ARM用のKeil µVision3のデモ版はµVision3の完全版であり、コードサイズは16kBに制限されています。Maxim USB Laboratory project (MaximUSBLab10.Uv2)は「Thumb only」モードでコンパイルされてこのプロジェクトのコードサイズを制限値以下にすることができました。
本格的な開発作業に対しては、完全なKeil µVision ARMツールキットの購入を強く推奨します。これは16kBの制限を取り外しており、LPC2138のフラッシュの最大512kBまでのもっと大きいアプリケーションが可能となります。