STM32 USB Custom-HID 基本功能

一,前言

   USB Device Custom HID 基本輸入輸出功能

   目標平臺: STM32F103ZET  /  STM32F072RBH

   CubeMX版本: STM32CubeMX 5.5.0

   CubeMX FW版本:STM32Cube_FW_F1_V1.8.0 / STM32Cube_FW_F0_V1.11.0

   兩個平臺在USB Middleware 這個層面上的代碼是一致的。
 

二,硬件連接

    不作贅述,參考  STM32 USB HID-Mouse 基本功能

三,代碼配置

參考代碼詳見

GitHub: Custom_HID

注意: STM32F072的工程中帶有Bootloader的配置,因此如需測試此功能需要手動把Bootloader配置關閉。

關閉的方法爲在Main函數中屏蔽  IAP_Set() 這個API  , 同時將IROM1的起始地址設置爲0x0800 0000

CUBE生成的代碼並不能直接使用,是因爲報文描述符沒有進行有效的填充。

報文描述符的編寫參考源碼中 user_custom_hid.h中的宏定義即可,HID的報文描述符涉及的內容比較廣泛,此處不作展開。

#define HID_DESC_IN  0x81
#define HID_DESC_OUT 0x91

#define CUSTOM_HID_ReportDesc_Module(ReportID, Direction) 0x85,ReportID,   /* REPORT ID */          \
                                                          0x09,ReportID+1, /* USAGE */              \
                                                          0x15,0x00,       /* LOGICAL_MINIMUM(0)*/  \
                                                          0x26,0xff,0x00,  /* LOGICAL_MAXIMUM(255)*/\
                                                          0x75,0x08,       /* REPORT SIZE(8) 8BIT*/ \
                                                          0x95,0x3F,       /* REPORT COUNT(63)8BIT*/\
                                                          0xb1,0x82,       /* FEATURE(Data,Var,Abs,Vol)*/\
                                                          0x85,ReportID,   /* REPORT ID */          \
                                                          0x09,ReportID+1, /* USAGE */              \
                                                          Direction,0x82   /* IN OUT(Data,Var,Abs,Vol)*/  

CubeMX 生成的代碼,不作修改默認僅支持2 Byte的數據傳輸, 如果我們需要雙向64 Bytes的數據傳輸,就需要修改一下配置定義,以64 Bytes 爲例:

usbd_customhid.h
#define CUSTOM_HID_EPIN_SIZE                 0x40
#define CUSTOM_HID_EPOUT_SIZE                0x40
#define CUSTOM_HID_FS_BINTERVAL              1   //最小傳輸間隔 1ms


usbd_conf.h 
#define USBD_CUSTOMHID_OUTREPORT_BUF_SIZE     0x40
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE      50  //根據報文描述符填寫 實際長度


特別注意  USB_CUSTOM_HID_CONFIG_DESC_SIZ  和  USBD_CUSTOM_HID_REPORT_DESC_SIZE 分別指的是USB的配置描述符和 HID的報文描述符,不可混淆。

接口函數,同樣需要修改, 將原來的兩個字節的接口函數,修改爲指針類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章