2016年12月23日金曜日

[STM32マイコン]SW4STM32を使う(USB-HIDデバイス)

F401REではUSBデバイスの開発ができるのでHIDのマウスとしてPCに認識させたいと思います。

○CubeMXでUSBを使う設定にする
まず、"Pinout"タブでUSBを使う設定をします。 Peripherals >> USB_OGT_FS >> MODE を Device_Only にします。 MiddleWares >> USB_DEVICE >> Class_for_FS_IP を "Human_Interface_Device" に設定する。
さらに、USBでは正確な高速クロック(HSEの設定)が必要なため、クリスタルが必要ですが、今回使うボードにはデバッグボード上にしか必要なクリスタルがないため、それを使うよう設定します。そのため、"Pinout"タブでHSEを使う設定にします。Peripherals >> RCC >>HSE を"BYPASS_Clock_Source"に設定します。
次に、このままではエラーが出てしまうのでクロック周りの設定をしてHSEでのクロックを有効にします。"Clock configuration"タブに移動するとクロック周りの問題を治すかどうか聞かれるので’Yes’を選択すると自動で設定してくれます。
最後にジェネレートして終わりです。

○SW4STM32でプログラミング
SW4STM32を起動しインポートします。そして、main.cファイルの中のmain関数のwhileループのところに下記のようにします。
//---------------------------------
  int8_t hid_mouse[4]={0,-5,0,0};//button1-3,x,y,wheel
  while(1){
    HAL_Delay(5000);
    USBD_HID_SendReport(&hUsbDeviceFS,hid_mouse,4);
  }
//---------------------------------
このようにすると五秒に一回左にマウスポインターが動くようなマウスができます。
CubeMXで上記の設定をするとジェネレートされるコードはHIDマウスです。(デバイスディスクリプタ等がそのように設定されているため)

○STM32F401RE(Nucleo64マイコンボード)の配線
PA12ピンをUSBのD+、PA11ピンをUSBのD-、GNDをUSBのGNDに接続するが、USBのVbusは接続しません。(USBから電源を取るときはVbusをE5Vピンに接続し、リセットボタン下の電源を選ぶジャンパーをE5Vにする) また、必要なUSBケーブルは100円ショップ等で買うこともできます。大抵のケーブルはVbusが赤、D+が緑、D-が白、GNDは黒のコードですが、念のため、VbusとGNDを確かめるためUSB充電器とLEDを使って確認します。また、F401REではPA9ピンを3.3[V]ピンに接続しておきます。(F401REではこれが無いとUSBの機能が動きません)





0 件のコメント:

コメントを投稿