[Japanes][English]
1.概 要
PIC32MZのHighSpeedUSBモジュールを使ったUSB HOSTプログラムを製作しましたので公開します.
Microchip社が提供するライブラリHarmonyは使っていません。
作成したHOSTドライバーは、HUBドライバーを内蔵しており、マルチインタフェース、マルチデバイス対応となっています.
複数のインタフェース(例えば、マウスインタフェースとキーボードインタフェース)を持つUSBデバイスや、外付けのHUBを使って複数のUSBデバイスを接続して動作させることができます。
USBマウス、USBキーボード、USBゲームコントローラ、USBMIDIキーボード、USBシリアル変換器、USBメモリを同時に4デバイスまで動かすことが出来ます.
USBカメラについては現バージョンでは未サポート(開発中)です.
2.プロジェクトファイル
以下のプロジェクトファイルをダウンロードし、コンパイルした後、PICKit3 などのプログラマーを使って評価ボード(後述)上のPIC32MZに書き込んでください.
コンパイル環境は次の通りです.
Microchip MPLAB X IDE Ver6.20, XC32 compiler ver 4.60
X IDE の言語設定は SHIFT JIS です.(設定画面)
XC32 の Linker option の heap size を 10240 に設定しておいてください.(設定画面)
(註) PICKit3は X IDE ver6.2まで使えます. ver6.25 では使えません.
3.評価ボード
製作したHOSTプログラムの評価・動作確認は、PIC32MZ2048EFH100マイコンを使った評価ボードを製作して行いました。
回路図は、次の通りです。
|
製作した評価ボードです. HOSTプログラムの評価には不要なパーツも搭載しています.

|
使ったPIC32MZ2048EFH100マイコンは初期のバージョンでしたのでクロック発振に水晶振動子を使うことが出来ず水晶発振器からクロックを供給するようにしました.
USBモジュールを使うにはクロック周波数は12MHzか24MHzでないといけません. 今回の製作では入手都合で 12MHz の水晶発振器を使いました.
24MHzの水晶発振器を使う場合には、 ファイル pic32mz_config.h を以下のように変更してください.
12MHzの設定
// DEVCFG2
#pragma config FPLLIDIV = DIV_3 // System PLL Input Divider (3x Divider)
#pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (Bypass)
#pragma config FPLLICLK = PLL_POSC // System PLL Input Clock Selection (POSC is input to the System PLL)
#pragma config FPLLMULT = MUL_100 // System PLL Multiplier (PLL Multiply by 100)
#pragma config FPLLODIV = DIV_2 // System PLL Output Clock Divider (2x Divider)
#pragma config UPLLFSEL = FREQ_12MHZ // USB PLL Input Frequency Selection (USB PLL input is 12 MHz)
24MHzの設定
// DEVCFG2
#pragma config FPLLIDIV = DIV_3 // System PLL Input Divider (3x Divider)
#pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (Bypass)
#pragma config FPLLICLK = PLL_POSC // System PLL Input Clock Selection (POSC is input to the System PLL)
#pragma config FPLLMULT = MUL_50 // System PLL Multiplier (PLL Multiply by 100)
#pragma config FPLLODIV = DIV_2 // System PLL Output Clock Divider (2x Divider)
#pragma config UPLLFSEL = FREQ_24MHZ // USB PLL Input Frequency Selection (USB PLL input is 12 MHz)
HOSTプログラムのデバッグメッセージの出力確認やテストプログラムの操作をPCのコンソールから行えるように UART2(RF2,RF8にリマップ) を使用しています.
UART2ではなく UART1やUART3 でも構いませんが、UART2以外を使う場合には、以下の箇所を変更してください.
メッセージの出力には printf() 関数を使っています. printf()の出力を UART2 に繋ぐために uart2.c の冒頭に次のような関数を記述しています.
// Override _mon_putc to allow printf to send characters over UART2
void _mon_putc (char c)
{
if(c=='\n') UART2PutChar('\r');
UART2PutChar(c);
}
UART1やUART3を使う場合にはこれと同じ関数をどこかに配置してください.
更に、USBメモリのFatFileシステムのテストに使う入出力の設定変更が必要です. ff_test.cの208行から209行目の
xdev_in(UART2GetChar);
xdev_out(UART2PutChar);
をUART1やUART3に合うように適宜修正してください.
UARTの設定には、ポートのリマップが必要です. main.c の末尾にあるInitializeSystem()の該当部分の修正も合わせて行ってください.
また debug.h に記述している putstr() や getch() などのマクロも使うUARTに合わせて変更してください.
main.c のテストデモプログラムでは、接続したUSBデバイスがHOSTに認識されたかどうか判るようにLED表示を行うようにしました.
LEDはRG6に接続しています. 他のポートを使う場合には、main.c の末尾にあるInitializeSystem()の該当部分ならびに冒頭のdefine文を修正してください.
ボードの電源には+5V出力のACアダプタを使いました。3端子レギュレータで3.3Vに降圧してマイコンに供給しています.
ACアダプタの+5V出力は、VBUSからのUSBデバイスの電源にもなりますので最低でも1A程度の出力のものを使ってください.
4.評価・動作確認
ボードの製作、プロジェクトファイルのコンパイル、マイコンへの書き込みが完了しましたら動作確認を行うことが出来ます。
最初に、UART2の出力端子をUSBシリアル変換器などを使ってPCと接続してください.
PCでは TeraTerm などのターミナルプログラムを使います.
シリアルポートのパラメータ設定は、 115200bps, データ長8ビット, ストップ1ビット, パリティ無し、フロー制御無しです.
次に、ボードの電源コネクタにACアダプタを接続し電源を供給します.
PCのTeraTermの画面(以下コンソール画面という)に次のような表示が出力されれば正常に起動しています.
この表示を以降 [メインメニュー]と呼びます.
**** PIC32MZ High Speed USB Host Module Evaluation *****
select evaluation USB Device
1: mouse
2: keyboard
3: midi
4: serial
5: game controller(HID generic)
6: usb memory
==>
4−1. 基本的な操作方法
1番から6番までの番号を入力すると、USBデバイスそれぞれのテストを行う事が出来ます.
テスト中は ctrl+'C' のキーを押すとこのメインメニューに戻ります.(そうではないケースもあります)
メインメニューの表示中にテストしたいUSBデバイスをUSBコネクタに接続すると、HOSTプログラムがそのデバイスを認識しボード上のLEDが点灯します. デバイスを取り外すとLEDは消灯します.
USBコネクタにHUBを接続しただけではLEDは点灯しません. 接続したHUBのポートにデバイスを接続するとLEDが点灯します.
但しメインメニューにないデバイスを接続した場合にはLEDは点灯しません.
HUBの複数のポートにデバイスを接続しその後デバイスを取り外した場合全てのデバイスを取り外すまでLEDは点灯しています.
接続するHUBは、USB1.1仕様からUSB3.0仕様まで、いずれのHUBも接続して使えます. USB3.0を超えるものについては未確認です.
USB1.1仕様のHUBでは FullSpeed, それ以上の場合は HighSpeedで接続します.
USBメモリなど消費電力の大きなデバイスを複数接続する時は、バスパワーのHUBではなくセルフパワーのHUBを使ってください.
接続出来てもその後のデバイスへのアクセスでVBUS電圧が変動しマイコンが正常に動作しなくなることがあります.
HUBのポートに接続したHUB(カスケードHUB)は使えません.
HUBを通して同種のデバイスを複数接続した状態でデバイスのテストに進むと次のような選択メニューが表示されます.
n device connects n: 接続した数
which device (0 - m) => m: n-1
最初のデバイスをテストするなら 0 を、2番目のデバイスをテストするなら 1 を入力します.
接続したデバイスが一つならこのメニューは表示されず 0 番目のデバイスがテスト対象となります.
USBデバイスを接続する前に 1番から6番のいずれかを入力してテストを開始するとデバイス接続待ちの表示を出力します。
例えば2番を入力して keyboard のテストを開始した場合には、
Wait for USB Keyboard connect.
Hit ctrl+C to test cancel.
のような表示が出ます. ここで keyboardを接続すると,
の表示が出て直ちにkeyboard入力のテストを開始します. 他のデバイスを選択した場合も同様です.
4−2. マウスのテスト
1番を入力するとマウスのテストを行います. マウスのテストでは、マウスデータの読み込みとマウスのプロトコルの変更を確認することが出来ます.
マウスを動かすと、次のようにマウスデータが画面に表示されます.
mouse dev0: 00 FE 00 00
mouse dev0: 00 FF 00 00
mouse dev0: 00 FC 00 00
mouse dev0: 00 FE FF 00
mouse dev0: 00 FE FD 00
mouse dev0: 00 00 FD 00
mouse dev0: 00 00 FA 00
この表示例は、有線式の古いUSBマウスのものでデータが8bitになっています.
無線レシーバーで接続する新しいマウスでは、データが16ビットで送られてきます. 最近の多機能なマウスですと更にデータが増えているかも知れません.
mouse dev1: 01 00 F7 FF F2 FF 00 00
mouse dev1: 01 00 F7 FF F4 FF 00 00
mouse dev1: 01 00 F6 FF F2 FF 00 00
mouse dev1: 01 00 F7 FF F4 FF 00 00
mouse dev1: 01 00 F8 FF F5 FF 00 00
mouse dev1: 01 00 F9 FF F8 FF 00 00
ここで m または Mキーを押すと Boot プロトコルと Report プロトコルのトグル切替を行います.
表示例のマウスの場合 Reportプロトコルでは 16bitのデータ, Bootプロトコルでは 8bitのデータとなります.
mouse dev1: 01 00 00 00 FC FF 00 00
mouse dev1: 01 00 FF FF FC FF 00 00
mouse dev1: 01 00 00 00 FD FF 00 00
mouse dev1: 01 00 00 00 FF FF 00 00
mouse dev1: 00 02 02 00
mouse dev1: 00 00 01 00
mouse dev1: 00 00 01 00
mouse dev1: 00 00 01 00
mouse dev1: 01 00 02 00 01 00 00 00
mouse dev1: 01 00 01 00 01 00 00 00
mouse dev1: 01 00 00 00 01 00 00 00
mouse dev1: 01 00 01 00 00 00 00 00
mouse dev1: 00 00 01 00
mouse dev1: 00 FE FF 00
mouse dev1: 00 FF FD 00
mouse dev1: 00 00 FF 00
mouse dev1: 01 00 01 00 01 00 00 00
mouse dev1: 01 00 01 00 03 00 00 00
mouse dev1: 01 00 01 00 00 00 00 00
マウスのテストは以上です. このテストでは、右ボタンや左ボタンの判定などの処理は行っていません.マウスからのデータを解釈するのはアプリケーション側の仕事になります.
マウスのテストで使用したHOSTプログラムのAPIについては、他のデバイスも含めてPIC32MZ HighSpeed USB HOST Application Interface を参照してください.
4−3. キーボードのテスト
2番を入力するとキーボードのテストを行います. キーボードのテストでは、キーデータの読み込みとキーボードのLEDの点灯/消灯の制御を確認することが出来ます.
テストを開始するとキーボードからのデータを表示します. キー操作がない時は、00 00 00 00 00 00 00となっていますが、何かキーを押すとデータが変化します.
keyboard dev0: 00 00 00 00 00 00 00 00
keyboard dev0: 00 00 00 00 00 00 00 00
keyboard dev0: 00 00 00 00 00 00 00 00
keyboard dev0: 00 00 00 00 00 00 00 00
keyboard dev0: 01 00 00 00 00 00 00 00
keyboard dev0: 01 00 8B 00 00 00 00 00
keyboard dev0: 01 00 8B 11 00 00 00 00
keyboard dev0: 09 00 8B 11 00 00 00 00
keyboard dev0: 09 00 8B 00 00 00 00 00
keyboard dev0: 09 00 00 00 00 00 00 00
keyboard dev0: 09 00 59 00 00 00 00 00
keyboard dev0: 09 00 59 8B 00 00 00 00
keyboard dev0: 09 00 59 8B 2C 00 00 00
keyboard dev0: 09 00 59 8B 2C 11 00 00
keyboard dev0: 01 00 59 8B 2C 11 00 00
第1バイトは ctrl や shift, alt キーの押下状態、第2バイトは00固定、第3バイト以降は押されているキーのスキャンコードとなっています.
スキャンコードからキーの文字への変換が必要な場合、その変換処理はアプリケーション側の仕事になります.
次にキーボードの数字 1 を押すと、押すごとにキーボード上の CapsLock, NumLock, ScrlLock の3つのLEDが順次点灯・消灯します.
4−4. MIDI入力のテスト
3番を入力するとMIDIデバイスからの入力テストを行います. USB-MIDIキーボードを接続すると MIDIキーボードからのデータを読み込んで画面に表示します.
midi dev0: 09 90 30 63
midi dev0: 08 80 30 40
midi dev0: 09 90 32 6E
midi dev0: 08 80 32 40
midi dev0: 09 90 34 6E
midi dev0: 08 80 34 40
midi dev0: 09 90 35 76
midi dev0: 08 80 35 40
midi dev0: 09 90 37 76
midi dev0: 08 80 37 40
送られてくるMIDIデータの解釈はアプリケーション側の仕事になります.
このデモテストでは、接続したMIDIデバイスからのデータ読み込みのみを行っていますが、MIDIデバイスへのデータ送信も勿論行うことができます.
アプリケーションを作成される時にはPIC32MZ HighSpeed USB HOST Application Interface を参照してください.
4−5. シリアル送受信のテスト
4番を入力するとUSBシリアルデバイスのテストを行います.
テストを開始すると次のような処理メニューを表示します.
1:Display current serial parameter
2:Set serial parameter
3:Communication test
==>
1を入力すると次のように現在設定しているシリアルパラメータの値を表示します.
*** Current serial parameter ***
baudrate: 115200bps
databit: 8bit
stopbit: 1bit
parity: none
flow ctrl: none
シリアル通信パラメータは、シリアルデバイスを認識した時点で、デフォルト 115200bps, データ長8ビット, ストップ1ビット, パリティ無し、フロー制御無しに設定されています.
2を入力するとシリアルパラメータの値を設定・変更することが出来ます.
次のようにボーレートからフロー制御まで設定値を入力します. 途中でキャンセルする時には ctrl+Cを入力します.
*** Set serial parameter ***
Baudrate (115200/57600/38400/19200/9600/4800/2400) =>57600
Data Bit (8/7/6/5) =>8
Stop Bit (1/2) =>1
Parity (none=0,odd=1,even=2,mark=3,space=4) =>1
Flow ctrl (none=0,rts/cts=1,dtr/dsr=2,xon/xoff=4) =>0
3を入力するとシリアル通信のテストを行うことが出来ます.
コンソール画面で打鍵した文字データをシリアルデバイスを通して相手側に送信します.
相手側から送信されたデータを受信してコンソール画面に表示します.
4−6. ゲームコントローラ(HID ジェネリック)のテスト
5番を入力するとUSBゲームコントローラーの入力テストを行います.
ゲームコントローラーを接続するとコントローラのジョイスティックやボタンのデータを読み込んで画面に表示します.
Game Controller dev0: FF 80 9C 00 01 08 00 08
Game Controller dev0: FF 80 A2 00 01 08 00 08
Game Controller dev0: FF 80 B8 00 01 08 00 08
Game Controller dev0: FF 80 D2 00 01 08 00 08
Game Controller dev0: FF 80 DF 00 01 08 00 08
Game Controller dev0: FF 80 E4 00 01 08 00 08
Game Controller dev0: FF 80 DF 00 01 08 00 08
Game Controller dev0: FF 80 CF 00 01 08 00 08
Game Controller dev0: FF 80 B4 00 01 08 00 08
データのどの部分がジョイスティックのデータか、あるいはどの部分がボタンのデータなのかなどの判定はアプリケーション側の仕事です.
本来、データの解釈については リポート・ディスクリプタを読めば判るのですがその判定処理は複雑です.
そこで、実際には、コントローラを動かしてみて、どのボタンを押した時にどの部分のデータが変化したのかを調べて特定するようにします。
この考え方はマウスやキーボードについても同じです.
今回作成したホストプログラムではリポート・ディスクリプタの読み出しをサポートしていません.
ゲームコントローラ以外のHIDジェネリックデバイス(PICKit3など)を接続してテストすることもできますが、そのデバイスが自発的にデータを送信してくるものでなければ画面にデータは何も表示されません.
一般的に、何らかのプロトコルが使われているので、そのプロトコルに従ったデータを送信してやらないと動かないものです.
HIDジェネリックデバイスへデータを送信することは可能です. PIC32MZ HighSpeed USB HOST Application Interface を参照してください.
4−7. USBメモリのテスト
6番を入力するとUSBメモリのテストを行います.
ホストプログラムはUSBメモリの接続を検出するとエヌメレーションした後、SCSI コマンドの TEST_UNIT_READY を発行しメモリがレディ状態になるのを確認します.
確認時間は、2.5秒です. 確認結果はHOSTプログラム内部に記憶しており、レディを確認出来なかった場合には、このデバイスからの読み込みやデバイスへの書き込みはエラーになります.
アンレディの場合には、一度取り外して再度接続してみてください.
テストを開始すると次のような処理メニューを表示します.
1:Read Capacity
2:Sector Read
3:Sector Write
4:Fat File System
==>
1を入力すると次のようにUSBメモリの最終論理セクタ番号を表示します.
Last Sector Number = 0x0001F3FF(127999)
このメモリの容量は 128000 * 512 = 65536000byte(64MB) になります.
2を入力するとセクター単位にメモリ内容を読み出して表示します.
読み出す開始セクター番号、読み出すセクター数を入力します.
Last Sector Number = 127999
Read Start Sector =>0
number of sectors =>3
次のようにセクター内容を表示します.
*** Sector 0 Start Addr=0000000000
-- addr -- +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ---- ASCII -----
0000000000 EB 3C 90 4D 53 44 4F 53 35 2E 30 00 02 02 06 00 .<.MSDOS5.0.....
0000000010 02 00 02 00 00 F8 F9 00 3F 00 FF 00 00 00 00 00 ........?.......
0000000020 00 F4 01 00 80 01 29 0F 71 81 C8 4E 4F 20 4E 41 ......).q..NO NA
0000000030 4D 45 20 20 20 20 46 41 54 31 36 20 20 20 33 C9 ME FAT16 3.
0000000040 8E D1 BC F0 7B 8E D9 B8 00 20 8E C0 FC BD 00 7C ....{.... .....|
0000000050 38 4E 24 7D 24 8B C1 99 E8 3C 01 72 1C 83 EB 3A 8N$}$....<.r...:
0000000060 66 A1 1C 7C 26 66 3B 07 26 8A 57 FC 75 06 80 CA f..|&f;.&.W.u...
0000000070 02 88 56 02 80 C3 10 73 EB 33 C9 8A 46 10 98 F7 ..V....s.3..F...
0000000080 66 16 03 46 1C 13 56 1E 03 46 0E 13 D1 8B 76 11 f..F..V..F....v.
0000000090 60 89 46 FC 89 56 FE B8 20 00 F7 E6 8B 5E 0B 03 `.F..V.. ....^..
00000000A0 C3 48 F7 F3 01 46 FC 11 4E FE 61 BF 00 00 E8 E6 .H...F..N.a.....
00000000B0 00 72 39 26 38 2D 74 17 60 B1 0B BE A1 7D F3 A6 .r9&8-t.`....}..
00000000C0 61 74 32 4E 74 09 83 C7 20 3B FB 72 E6 EB DC A0 at2Nt... ;.r....
00000000D0 FB 7D B4 7D 8B F0 AC 98 40 74 0C 48 74 13 B4 0E .}.}....@t.Ht...
00000000E0 BB 07 00 CD 10 EB EF A0 FD 7D EB E6 A0 FC 7D EB .........}....}.
00000000F0 E1 CD 16 CD 19 26 8B 55 1A 52 B0 01 BB 00 00 E8 .....&.U.R......
0000000100 3B 00 72 E8 5B 8A 56 24 BE 0B 7C 8B FC C7 46 F0 ;.r.[.V$..|...F.
0000000110 3D 7D C7 46 F4 29 7D 8C D9 89 4E F2 89 4E F6 C6 =}.F.)}...N..N..
0000000120 06 96 7D CB EA 03 00 00 20 0F B6 C8 66 8B 46 F8 ..}..... ...f.F.
0000000130 66 03 46 1C 66 8B D0 66 C1 EA 10 EB 5E 0F B6 C8 f.F.f..f....^...
0000000140 4A 4A 8A 46 0D 32 E4 F7 E2 03 46 FC 13 56 FE EB JJ.F.2....F..V..
0000000150 4A 52 50 06 53 6A 01 6A 10 91 8B 46 18 96 92 33 JRP.Sj.j...F...3
0000000160 D2 F7 F6 91 F7 F6 42 87 CA F7 76 1A 8A F2 8A E8 ......B...v.....
0000000170 C0 CC 02 0A CC B8 01 02 80 7E 02 0E 75 04 B4 42 ............u..B
0000000180 8B F4 8A 56 24 CD 13 61 61 72 0B 40 75 01 42 03 ...V$..aar.@u.B.
0000000190 5E 0B 49 75 06 F8 C3 41 BB 00 00 60 66 6A 00 EB ^.Iu...A...`fj..
00000001A0 B0 42 4F 4F 54 4D 47 52 20 20 20 20 0D 0A 52 65 .BOOTMGR ..Re
00000001B0 6D 6F 76 65 20 64 69 73 6B 73 20 6F 72 20 6F 74 move disks or ot
00000001C0 68 65 72 20 6D 65 64 69 61 2E FF 0D 0A 44 69 73 her media....Dis
00000001D0 6B 20 65 72 72 6F 72 FF 0D 0A 50 72 65 73 73 20 k error...Press
00000001E0 61 6E 79 20 6B 65 79 20 74 6F 20 72 65 73 74 61 any key to resta
00000001F0 72 74 0D 0A 00 00 00 00 00 00 00 AC CB D8 55 AA rt............U.
*** Sector 1 Start Addr=0000000200
-- addr -- +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ---- ASCII -----
0000000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
...
指定した数のセクターまで続けて表示します.
3を入力すると指定したセクターにデータを書き込みます.
書き込むセクター番号を入力し、書き込むデータを1バイトずつ入力します.
Last Sector Number = 127999
Write Sector =>2
Write Data
=>0x30
=>0x31
=>0x32
=>0x33
=>0x34
=>0x35
=>0x
エンターのみ入力するとデータ入力を終了し、指定したセクターにデータを書き込みます.
書き込みは、512バイトのデータを書き込みます. 入力データが512バイトに満たない部分は 0x00となります.
4を入力するとFatFileシステムのテストを行うことが出来ます.
次のような表示が出てテストコマンドの入力待ちとなります.
FatFs module test monitor for PIC32MZ
LFN=Enabled, CP= 932
Current time is 2025/7/16 0:08:25.
>
r または R を入力するとUSBメモリのテストメニューに戻ります.
? を入力すると次のようなコマンドヘルプを表示します.
[Disk contorls]
di <pd#> - Initialize disk
dd [<pd#> <lba>] - Dump a secrtor
ds <pd#> - Show disk status
[Buffer controls]
bd <ofs> - Dump working buffer
be <ofs> [<data>] ... - Edit working buffer
br <pd#> <lba> [<count>] - Read disk into working buffer
bw <pd#> <lba> [<count>] - Write working buffer into disk
bf <val> - Fill working buffer
[File system controls]
fi <ld#> - Force initialized the volume [ex. fi 0: fi 1: fi 2: fi 3: ]
fs [<path>] - Show volume status
fl [<path>] - Show a directory
fL <path> <pattern> - Directory search
fo <mode> <file> - Open a file. [mode: 1=read, 2=write 4=create]
fc - Close the file
fe <ofs> - Move fp in normal seek
fd <len> - Read and dump the file
fr <len> - Read the file
fw <len> <val> - Write to the file
fn <org.name> <new.name> - Rename an object
fu <name> - Unlink an object
fv - Truncate the file at current fp
fk <name> - Create a directory
fa <atrr> <mask> <object name> - Change attribute of an object
ft <year> <month> <day> <hour> <min> <sec> <name> - Change timestamp of an object
fx <src.file> <dst.file> - Copy a file
fg <path> - Change current directory
fq - Show current directory
fb <name> - Set volume label
fm <ld#> <type> <csize> - Create file system
fz [<len>] - Change/Show R/W length for fr/fw/fx command
[Misc commands]
t [<year> <mon> <mday> <hour> <min> <sec>] - Set/Show RTC
? --Show this Help message
r --exit, return to USB Memory test menu
FatFileシステムには、ChaN氏が作成されたフリーソフトを採用しています.
詳細は、FatFs - Generic FAT Filesystem Moduleを参照してください.
5. 関連ドキュメント
・PIC32MZ HighSpeed USB HOST Application Interface
・PIC32MZ HighSpeed USB HOST Software Document