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で定義します)

MLA_demo_hid_msd04.jpg

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プロジェクトを起動します。

MLA_demo_hid_msd03.jpg

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と小さいものの、一般的な外部記憶装置と同じです。

MLA_demo_hid_msd01.jpg

大容量記憶装置として認識された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でモニタできます。

MLA_demo_hid_msd02.jpg

windows側の実行画面

上がsimple_demo_composite_pid_0x0054.exe

下がplug_and_play_demo_composite_pid_0x0054.exe

デモボードによってプッシュボタンがないものもあります。

 

 

 

 

(JF1VRR)