Microchip MLAのHID-MSDデモを動かしてみる
投稿日 2016/04/06
前回はCDCクラスの基本デモプログラムを動かしてみました。
参考: Microchip MLAのCDCデモを動かしてみる
今回は、MLA(MIcrochip Libraries for Applications)に含まれるUSBフレームワーク Composite HID-MSDクラス・デバイスのデモプログラムを動かしてみました。
HID(Human Interface Device) クラスとMSD(Mass Storage Device)クラスの混成(Composite)デバイスです。
HIDはマウスやキーボードのような少量のデータを定期的に送受信するのに適している汎用データ通信用のクラスです。
MSDはファイルシステムとともに使用してSDカードや内蔵メモリなどをwindowsから外部大容量記憶装置として認識させるクラスです。このデモのMSDはPIC内のフラッシュメモリで実現されている小容量のものです。SDカードは使っていません。
USBはこられを混成することができます。(USBフレームワークのどのクラスを使うかはusb_descriptors.cで定義します)
Composite HID + MSDデモプログラムを実行中のPIC24F Starter Kit(上)
下は、PIC18F Starter Kit
MSDはPIC内部のフラッシュメモリが使われているので
SDカードスロットを搭載していないデモボードでも実行できる
HID + MSDは用途が広いと思われます。HIDクラスを利用したwindowsとの少量のデータ通信と、MSDクラスとファイルシステムを使用してSDカードメモリへのアクセスの組み合わせは、データーロガーのようなアプリケーションに便利です。また、HIDとMSDクラスの標準クラスしか使っていないのでwindows側のUSBドライバを作る必要がなくwindows標準のドライバが使えるのでアプリケーション開発が簡単です。
今回のデモプログラムは、MLAに含まれる、
microchip\mla\v2015_08_10\apps\usb\device\composite_hid_msd
です。
デモプログラムは出来上がっているものですから、何ら手を加えるところはありませんが、様々なデモボードのコンフィギュレーションが含まれるので、今回使用するデモボードのPIC18F Starter KitとPIC24F Starter Kitのみを残し、他のコンフィグレションはすべて削除しておきました。ただし、関係ないデモボードのコンフィグレーションやフォルダ、ファイル等があっても、コンフィグレーションごとにコンパイルできるので問題はありません。
デモプログラムを動かすにはMicrochip社のデモボードのうちいずれかを所有していれば便利ですが、なければデモプログラムを参考にして手持ちのPIC用にアレンジすれば使えると思います。
開発環境
MPLAB X IDE v3.26
コンパイラ
XC8
XC16
MLA v2015_08_10
デモボード
PIC18F Starter Kit
PIC24F Starter Kit
PC側
windows 7
HIDとMSDの標準クラスなのでwindows側にドライバーは不要です。
(windows標準のドライバが使われます)
デバッガー兼書き込み器(オンボードデバッガ)は各Starter Kitに搭載されており、MPLAB X IDEはそれをサポートしています。
composite_hid_msdのフォルダ構造は以下のようになっています。
composite_hid_msd
firmwae
MPLAB.X <- プロジェクト
src <- ソース・ファイル
utilities
bin <- Windows側のプログラムの実行ファイル
plug_and_play_demo_composite_pid_0x0054.exe
simple_demo_composite_pid_0x0054.exe
src
MPLAB X IDEを起動しMPLAB.Xを指定してcomposite_hid_msdプロジェクトを起動します。
MPLAB X IDEでプロジェクトをオープンしコンパイル
必要なデモボードのコンフィギュレーションをアクティブにし、コンパイルします。今回はPIC18F Starter KitとPIC24F Starter Kitのコンフィグレーションをコンパイルしました。
デモボードのデバッガ兼書き込み器とwindows PCをUSBでつなぎ、コンパイルしたプログラムをデモボードに書き込みます。
書き込みが終了したらwindows PCとボードのターゲットPICのUSBポートをUSBケーブルでつなぎます。このときwindowsのデバイス・マネージャをみると、ユニバーサル・シリアル・バス・コントローラーにUSB Composite DeviceとUSB 大容量記憶装置が追加されます。また、ヒューマン・インターフェース・デバイスにUSB入力デバイスが追加されます。
同時に大容量記憶装置、つまりUSBメモリを刺したときのように外部メモリのドライブとして認識され、その内容にアクセスできるようになります。画像ではドライブE:として認識されています。このドライブはPIC内のフラッシュメモリです。SDカードは使用していません。中にはFILE.TXTというファイルがすでに存在します。(プログラム内で作っている) FILE.TXTの内容は、"Data"という文字列が書かれているだけです。FILE.TXTに適当に文字列を追加し書き込んだり、ファイルを追加する事が出来ます。フォルダーも作れます。普通のファイルアクセスと同じです。書き込んだものは、ボードの電源を切って再度つないでも保持されています。ドライブE:の容量は約7KBと小さいものの、一般的な外部記憶装置と同じです。
大容量記憶装置として認識されたE:ドライブ
PIC内のフラッシュメモリで実現されている
中にはあらかじめFILE.TXTが書き込まれている。
容量は7KBと小さいが、一般的なアクセスが可能
また、windowsでplug_and_play_demo_composite_pid_0x0054.exe、またはsimple_demo_composite_pid_0x0054.exeを起動して、接続を確認できます。ボード上のLEDを点灯させたり、プッシュボタンの状態(押されているかどうか)を読んだり、ポテンショメータのアナログ値をバーグラフでリアルタイム表示します。
plug_and_play_demo_composite_pid_0x0054.exeはプラグアンドプレイに対応しており、USBケーブルの抜き差し(接続状態)をStatusでモニタできます。
windows側の実行画面
上がsimple_demo_composite_pid_0x0054.exe
下がplug_and_play_demo_composite_pid_0x0054.exe
デモボードによってプッシュボタンがないものもあります。
(JF1VRR)