目次

last update: 2024/10

embOS RTOS用BSPパッケージ
第9章: USB-Deviceインターフェース
評価ボード:EK-RX261




テストサンプル

Demo Sample Application Folder:

Application
 └ _Exclude
     ├ USBD  .... USB Device各種クラス機能のデモサンプル
Sample説明
USB_BULK_PerformanceBULK(VENDOR)クラスを実装して通信速度を確認します
USB_CDC_EchoCDC-ACMクラスコンポーネントを実装して簡単なECHOサンプルを確認します
USB_CompositeDevice_CDC_MSDCDC + MSDのマルチファンクションデバイスを実装したデモサンプル
USB_DFU_MixedMode_StartDFUクラスコンポーネントを実装してファール転送を確認します
USB_DFU_StartDFU(Device Firmware Upgrade)クラスコンポーネントの実装方法を示すサンプル
USB_HID_AudioControlUSB HIDクラスコンポーネントをオーディオ制御デバイスとして使用します
USB_HID_Keyboard_MouseUSB HIDクラスコンポーネントでマウス+キーボードファンクションを実装します
USB_HID_MMControl多目的(複数 REPORT ID)HID デバイスの実装方法を示すサンプル
USB_HID_MouseUSB HIDクラスコンポーネントをマウスデバイスとして使用します
USB_MIDI_StartMIDI(Musical Instrument Digital Interface)クラスデバイスの実装方法を示すサンプル
USB_Printerプリンタクラスデバイスの実装方法を示すサンプル
USB_VirtualMSD_CRCVirtualMSDクラスコンポーネントを実装したデモサンプル
USB_VirtualMSD_StartVirtualMSDクラスデバイスの実装方法を示すサンプル(VIRT0、VIRT1 MSD)
USB_Audio_Speaker_MicrophoneAUDIOクラスコンポーネントを使用してUSBマイクとスピーカーを実装します

関連設定ファイル:

BSP
 |- BSP_USB.c  .......... ボード依存の初期化設定ファイル(USB-Device)
 |
 |- Setup
     |- USB_Config_Renesas_EK_RX261.c
                     .......... USB-Deviceドライバ設定ファイル

Config
 |- USB_Conf.h  ............... コンフィグレーション設定ファイル
 |
 |- IO
 |   |- USB_ConfigIO.c  ....... デバッグコンソールIOインターフェース設定ファイル
 |
 |- OS
     |- lib_embOSLayer_RXv3_L.lib  ..... OSインターフェース設定ファイル

ビルド・動作確認方法

プロジェクト設定では「\Application\_Exclude\USBD」フォルダはビルド対象外に設定しています。以下のどちらかの方法で動作確認を行うサンプルアプリケーションを選択します。

  1. 「\_Exclude\USBD」フォルダ下の対象テストサンプルファイルをビルド対象設定の「\Application」フォルダ下にコピーします。
  2. 「\_Exclude\USBD」フォルダ下の対象テストサンプルファイルのみ「ビルド対象外」の設定を解除します。

各テストアプリケーションの動作確認方法はテストサンプルアプリケーションのヘッダのコメント情報を参照ください。

プロジェクトを再ビルドし、EK-RX261評価ボードに接続してデバッグセッションを開始します。
テストアプリケーションの要件に合わせてJ20 USBポートをパソコンに接続してプログラムを実行します。デバッガのIOコンソールのログ画面から結果を確認します。

J20 USBポートのデバイスモード設定:

評価ボードのジャンパー設定でJ20 USBポートをDEVICEモードに変更します。

usbd setting
  • J17:Short
  • J18:Jumper on pins 1-2
  • J19:Jumper on pins 2-3

テストレポート

(PRINTERクラス)Sample: USB_Printer

操作手順:プログラム起動してUSBポートをパソコンに接続します。PC側の設定パネルからUSBデバイスが「HP-LaserJet-6P/6MP」プリンタとして認識されていることを確認します。「HP-LaserJet-6P/6MP」プリンタ設定でのページ印刷の場合は、e2Studio/CS+ IDEツールのデバッグログコンソールにPostScript命令情報が表示されます。

USBD Printer

(HIDクラス)Sample: USB_HID_Mouse

操作手順:プログラム起動してUSBポートをパソコンに接続します。PC側の設定パネル又はデバイスマネジャウインドウからUSBマウスデバイスとして認識されていることを確認します。デモサンプルプログラムでは500ミリ秒インターバールでマウスポインターを左右移動します。

(HIDクラス)Sample: USB_HID_AudioControl

操作手順:プログラム起動してUSBポートをパソコンに接続します。デモサンプルプログラムでは1.5秒インターバールでパソコンの音声ボリューム設定を「ボリュームアップ → ボリュームダウン → MUTE」順で変更します。

USB Audio sample

(CDCクラス)Sample: USB_CDC_Echo

操作手順:プログラム起動してUSBポートをパソコンに接続します。PC側の設定パネルからUSBデバイスがCOMポートとして認識されていることを確認します。TeraTermなどCOMポートコンソールを開いて文字入力してECHOテストを確認します。

Debug IO Console:

SEGGER Software Evaluation Sample
Eval Board: EK-RX261 (32-bit RXv3 @64MHz)
RTOS: SEGGER embOS
----------------------------------------------
0:022 USBD_Start
0:692 Renesas USB: 512 bytes unused EP buffer RAM (USB_ENDPOINT_BUFFER_POOL_SIZE)

パソコン側:

CDC-Echo

(VirtualMSDクラス)Sample: USB_VirtualMSD_Start / USB_VirtualMSD_CRC

操作手順:

  1. J20 USBポートをパソコンに接続して、プログラムを実行します。
  2. パソコン側に2つのUSB MSDドライブ(ラベル:VIRT0、VIRT1)がマウントされていることを確認します。
  3. Virtual Diskドライブの「Readme.txt」ファイル(Read-Only)をテキストエディタで開いて内容(デモ用文字列)を確認します。
Vistual MSD

Debug IO Console:

SEGGER Software Evaluation Sample
Eval Board: EK-RX261 (32-bit RXv3 @64MHz)
RTOS: SEGGER embOS
----------------------------------------------
0:022 USBD_Start
0:661 Renesas USB: 512 bytes unused EP buffer RAM (USB_ENDPOINT_BUFFER_POOL_SIZE)
0:819 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 4096
0:820 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 4608
0:822 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 5120
0:824 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 5632
0:826 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 6144
0:828 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 6656
0:829 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 7168
0:831 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 7680
0:833 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 8192
0:835 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 8704
0:837 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 9216
0:838 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 9728
0:840 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 10240
0:842 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 10752
0:844 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 11264
0:845 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 11776
0:847 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 12288
0:849 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 12800
0:850 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 13312
0:852 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 13824
0:854 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 14336
0:855 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 14848
0:857 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 15360
0:858 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 15872
0:860 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:862 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:864 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:866 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:868 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:870 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:872 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:874 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
0:877 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:879 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:881 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:883 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:884 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:886 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:888 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:890 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
0:893 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:895 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:897 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:899 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:901 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:903 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:904 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:906 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
0:910 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:912 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:914 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:915 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:917 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:919 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:921 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:923 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
0:928 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:930 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:932 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:934 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:935 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:937 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:939 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:941 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
0:964 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:966 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:967 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:969 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:971 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:972 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:974 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:975 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
0:979 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
0:981 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
0:983 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
0:985 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
0:987 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
0:989 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
0:991 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
0:993 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
1:012 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 4096
1:013 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 4608
1:015 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 5120
1:017 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 5632
1:019 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 6144
1:021 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 6656
1:023 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 7168
1:025 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 7680
1:026 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 8192
1:028 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 8704
1:030 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 9216
1:032 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 9728
1:034 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 10240
1:036 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 10752
1:038 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 11264
1:040 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 11776
1:042 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 12288
1:044 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 12800
1:046 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 13312
1:048 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 13824
1:050 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 14336
1:052 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 14848
1:054 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 15360
1:056 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 15872
1:058 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
1:060 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
1:062 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
1:063 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
1:065 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
1:067 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
1:069 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
1:071 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
1:074 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
1:076 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
1:078 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
1:080 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
1:081 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
1:083 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
1:085 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
1:087 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
1:101 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
1:102 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
1:104 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
1:106 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
1:108 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
1:109 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
1:111 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
1:113 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
1:141 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
1:143 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
1:145 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
1:147 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
1:148 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
1:150 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
1:152 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
1:154 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584
1:159 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 0
1:161 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 512
1:163 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1024
1:164 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 1536
1:166 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2048
1:168 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 2560
1:170 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3072
1:172 VMSD_APP: _cbOnWrite(): File 'SYSTEM~1   ', Offset 3584

(AUDIOクラス)Sample: USB_Audio_Speaker_Microphone_SmallFootprint

操作手順:

  1. J20 USBポートをパソコンに接続して、プログラムを実行します。
  2. USBデバイスがパソコン側にAudio Headsetとして認識されていることを確認します。
  3. パソコンのサウンドマネジャを起動して、マイク(記録)デバイスにemUSBのAudio Controlを選択します。マイク(記録)デバイスを再生デバイスにループしますと、PCスピーカーにベルチャイムの音声が再生されます。
Audio Class

Debug IO Console:

SEGGER Software Evaluation Sample
Eval Board: EK-RX261 (32-bit RXv3 @64MHz)
RTOS: SEGGER embOS
----------------------------------------------
0:022 USBD_Start
0:666 Renesas USB: 380 bytes unused EP buffer RAM (USB_ENDPOINT_BUFFER_POOL_SIZE)
1:673 Received 100 silent samples and 0 audible samples so far.
2:674 Received 200 silent samples and 0 audible samples so far.
3:675 Received 300 silent samples and 0 audible samples so far.
4:676 Received 400 silent samples and 0 audible samples so far.
5:677 Received 501 silent samples and 0 audible samples so far.
6:678 Received 601 silent samples and 0 audible samples so far.
7:679 Received 701 silent samples and 0 audible samples so far.
8:680 Received 801 silent samples and 0 audible samples so far.

(BULKクラス)Sample: USB_BULK_Performance

操作手順:

  1. 「USB_BULK_Performance.c」サンプルファイルを選択してプログラムをビルドします。
  2. J20 USBポートをパソコンに接続して、プログラムを実行します。
  3. パソコン側に評価版パッケージフォルダの「Windows\USB\Bulk\WindowsApplication\Exe」フォルダ下の「Test.exe」ツールを実行します。
  4. コンソールからテスト結果を確認します。

Debug IO Console:

SEGGER Software Evaluation Sample
Eval Board: EK-RX261 (32-bit RXv3 @64MHz)
RTOS: SEGGER embOS
----------------------------------------------
0:022 USBD_Start
12:078 Renesas USB: 512 bytes unused EP buffer RAM (USB_ENDPOINT_BUFFER_POOL_SIZE)
44:458 Start read speed test with 16777216 bytes
66:776 Start write speed test with 16777216 bytes

\PC-Tools\Windows\USB\Bulk\WindowsApplication\Exe\Test.exe Console:

Found 1 device
Found the following device 0:
  Vendor Name : Vendor
  Product Name: Bulk test
  Serial no.  : 13245678
To which device do you want to connect?
Please type in device number (e.g. '0' for the first device, q/a for abort):0

Echo test
Operation successful!

Read speed test
................
Performance: 22000 ms for 16 MB
          =  744 kB / second

Write speed test
................
Performance: 20671 ms for 16 MB
          =  792 kB / second

Echo test
Operation successful!

Communication with USB BULK device was successful!
Press enter to exit.
前の章

TCP/IP-Over-USB通信