2013年8月29日木曜日

FRDM-KL25ZにUSBホストの機能を実装するための準備

Freescaleのやっすい評価ボードのFRDM-KL25Z。やっすいのに加速度センサやタッチセンサ、フルカラーLEDなんかもついているうえ、マイコン自体がUSBのホスト・デバイス・OTGのいずれにも対応している高機能品です。基板上のUSBコネクタはMini-Bですが、ちょっと無理をすることでUSBホストの機能を実装することができます。

実装にあたり、ほとんどの情報はMCU on Eclipseを参考にしています。この記事もほとんどそのサイトに書いてあることを日本語にしているだけです。ぼくが忘れないように。リンク先の著者はFreescaleの中の人のようですが、Freescale本家サイトよりも圧倒的に詳しくわかりやすく書いてくれています。本家しっかりしろ。

FRDM-KL25Z自体は、最初の発売からアップデートがかかっています。この記事ではRev.Eを使用しています。スイッチサイエンスにて購入したときはこのRev.Eでしたが、一部の回転が遅めな販売業者ではRev.Dが販売されているようです。USBホストとして改造するには死ねますが、mbed互換基板として使うぶんにはよさげです。

基板側の準備

箱から出した状態では、USBデバイスとして基板が構成されています。いくつかの配線をショートさせることで、USBホスト向けの回路にします。

USB ID端子のショート

USBホストを実装する際には、IDピンは不要となります。コネクタそばのR82に0Ω抵抗を実装してGNDへ落とします。

ジャンパピンをショート

2か所のジャンパピンをショートさせます。ひとつはJ21。OpenSDA(デバッグ)用としてPCとつながっているMiniBコネクタの5Vを、そのままVBUS電源として供給するため。もうひとつはJ20。D20のVfでマイコン本体向け3.3Vが低下するのを防ぐため。その先のJ3とJ4もショートさせたほうがいいらしいですが、横の抵抗が0Ωなのでどうなのかなと。

5V出力の3端子レギュレータの追加

これは必須ではありませんが、J22に5V出力の3端子レギュレータを追加すると、外部電源(〜9V)をつないだ際にUSBのVBUSへ安定した電源を供給できます。J9の10番端子に5Vが出てくるので、そこから線を引っ張ってVBUSへ。基板上にはパターンはなさそうなので、めんどうではありますが。

ファームウェアの更新

のちのちデバッグがやりやすいように、OpenSDAをシリアルポートとして認識させるファームウェアに書き換えます。mbed対応のものではないので注意。

PEmicroがOpenSDAの各種ファームウェアやドライバを公開しています。ダウンロードにあたって会員登録が必要なのは目をつむるとしても、ログイン画面だけがHTTPSだったりXSS仕込み放題だったり(さすがにscriptタグは対策してたが)とメールアドレス以外の情報はできるだけ渡したくない雰囲気がぷんぷんしますが、そういう便利ツールを無料公開してるから仕方ないかなって気がしたりしなかったり。

Pemicro_OpenSDA_Debug_MSD_***.zipをダウンロード・解凍すると、各種評価ボード用のOpenSDAファームウェアが入っています。KL25Z…をインストールしそうになりますが、DEBUG-APP_Pemicro***.SDAをつかいます。Windowsにて、基板上のボタンを押したままUSBケーブルをつなぐと、小さなドライブがマウントされるので、そこにファイルをドラッグします。ケーブルを差し直すと、デバッグにやさしい状態になっています。

IDEの準備

mbedはつかいません。なぜならKL25Z向けにUSBホスト機能を提供していないからです。チップがOHCIに対応してないから当分の間実装はしないってさ。なのでブラウザIDEではなく、Freescale提供のCodeWarriorを使います。無償トライアル版ではフラッシュが64KB制限だったりRTOSのサポートがなかったりしますが、特定のデバイスのみに対応するUSBホストを実装して任意のちょいとしたコードを追加するには十分です。どうしても足りないなってときは、もろもろの制限の外し方をさきの参考サイトが書いてくれています。中の人なのに。

FreescaleのサイトからCodeWarriorに加えてUSB Stackをダウンロードし、インストールします。最新版CodeWarriorのなかみはEclipseですが、Windows版のみでMacOS版はありません。マイコン開発の壁はここだと思う。

Processor Expertの準備

CodeWarriorにはProcessor Expertというコード自動生成ツールがついています。UARTやタイマーなどのペリフェラルのうち、レジスタを直接たたくような部分については自動生成し、それ以外のアプリ部分に集中してコードを書けるという仕組みです。USB Stackをインストールすると、ホスト・デバイス・OTGを扱うためのProcessor Expertの追加機能がついてきます。CodeWarriorを起動し、メニューバーのProcessor Expert内、Import Component(s)から。"スタックのフォルダ\ProcessorExpert\Components"の*.PEupdを全て指定しておきましょう。

これで準備完了

これでUSBホスト機能を扱うまでの準備が完了しました。この先のコードなどについてはサンプルや例のサイトなどを参照ください。

0 件のコメント:

コメントを投稿