FatFsに続いて、今度はCDC+MSCのUSB複合デバイスのドライバを整備中。同様の作業は以前AT91SAM7Aを使ってやったことがあるのですが、その際は基本実験だけで実用的には使用していませんでした。今度はちゃんと使ってみるつもりです。
ARM7コアであるAT91SAM7のシリーズで一番手頃だったのはSAM7Sでしたが、このデバイスではUSBのエンドポイントが4つしか用意されていませんでした。CDC+MSCをサポートするためには、それぞれのバルク入出力に2つのエンドポイントとコントロールにひとつの合計5つのエンドポイントが必要となるので、SAM7Sではこれを実現できませんでした。SAM3Sではエンドポイント数が8つに増えているので、問題無くCDC+MSCの複合デバイスをサポートすることができます。
MSCをサポートすることで、フォントを始めとするデータファイルを簡単にPCからコピーすることができるようになります。そしてこれをFatFsで参照することができます。逆にFatFsを使って書き込んだデータを後からPCで参照することもできますので、ロガーのようなアプリを作る場合にもこの機能を活かすことができます。しかしながら、FatFsとMSCは排他的に動作させる必要があります。USBでつながっていない場合にはFatFsを動作させ、USBでつながっている場合にはMSCを動作させればいいのですが、そのためにはマイコンを電池駆動してUSBをセルフパワーで動かす必要があります。
現在のところMiniSAMボードはUSBパワーで動かしているので、VBUSのレベルを見て動作を区別するわけにはいきません。それにFatFsを動かす時でもUSB CDCでのアクセスが使えた方が便利です。そこで、USBのドライバの動作としては、CDCとCDC+MSCの両方をサポートすることとし、これを切り替えて再起動することで両方の動作モードを使うことにしました。
ARM7コアであるAT91SAM7のシリーズで一番手頃だったのはSAM7Sでしたが、このデバイスではUSBのエンドポイントが4つしか用意されていませんでした。CDC+MSCをサポートするためには、それぞれのバルク入出力に2つのエンドポイントとコントロールにひとつの合計5つのエンドポイントが必要となるので、SAM7Sではこれを実現できませんでした。SAM3Sではエンドポイント数が8つに増えているので、問題無くCDC+MSCの複合デバイスをサポートすることができます。
MSCをサポートすることで、フォントを始めとするデータファイルを簡単にPCからコピーすることができるようになります。そしてこれをFatFsで参照することができます。逆にFatFsを使って書き込んだデータを後からPCで参照することもできますので、ロガーのようなアプリを作る場合にもこの機能を活かすことができます。しかしながら、FatFsとMSCは排他的に動作させる必要があります。USBでつながっていない場合にはFatFsを動作させ、USBでつながっている場合にはMSCを動作させればいいのですが、そのためにはマイコンを電池駆動してUSBをセルフパワーで動かす必要があります。
現在のところMiniSAMボードはUSBパワーで動かしているので、VBUSのレベルを見て動作を区別するわけにはいきません。それにFatFsを動かす時でもUSB CDCでのアクセスが使えた方が便利です。そこで、USBのドライバの動作としては、CDCとCDC+MSCの両方をサポートすることとし、これを切り替えて再起動することで両方の動作モードを使うことにしました。