打印
[STM32F2]

STM32F207 USB HID自定义设备问题

[复制链接]
7410|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LVJINWEN|  楼主 | 2014-4-29 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位,本人要用STM32F207枚举成USB HID自定义设备,IN 64 BYTES,OUT 64 BYTES。用STM32_USB-Host-Device_Lib_V2.1.0中的Joystick Mouse进行修改,现在的状况是PC可以识别到HID设备,MCU可以发送64 bytes数据给PC,但是PC发送64 bytes数据给MCU时却收不到(可能是本人没摸清楚在哪里收取)。
当PC发数据给MCU时,MCU可进入中断 DCD_HandleRxStatusQueueLevel_ISR(pdev);
1、请问MCU程序中要在哪个函数中收取PC发来的数据?
2、本人的描述符如下:
USBD_DeviceDesc[USB_SIZ_DEVICE_DESC]  =
  {
    0x12,                       /*bLength */
    USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
    0x00,                       /*bcdUSB */
    0x02,
    0x00,                       /*bDeviceClass*/
    0x00,                       /*bDeviceSubClass*/
    0x00,                       /*bDeviceProtocol*/
    0x40,      /*bMaxPacketSize*/
    LOBYTE(USBD_VID),           /*idVendor*/
    HIBYTE(USBD_VID),           /*idVendor*/
    LOBYTE(USBD_PID),           /*idVendor*/
    HIBYTE(USBD_PID),           /*idVendor*/
    0x00,                       /*bcdDevice rel. 2.00*/
    0x02,
    0x01,           /*Index of manufacturer  string*/
    0x02,       /*Index of product string*/
    0x00,        /*Index of serial number string*/
    0x01            /*bNumConfigurations*/
  } ; /* USB_DeviceDescriptor */


USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ]  =
{
  //  FullSpeedConfigDscr:   
         0x09 ,              //;; Descriptor length
         USB_CONFIGURATION_DESCRIPTOR_TYPE ,                 //;; Descriptor type
         USB_HID_CONFIG_DESC_SIZ ,//;; Total Length (LSB)
         0x00, //;; Total Length (MSB)
         0x01,      //;; Number of interfaces
         0x01,     // ;; Configuration number
         0x00,     // ;; Configuration string
         0xA0,   //;; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
         0x32,   //   ;; Power requirement (div 2 ma)

//;; Interface Descriptor
         0x09,      //;; Descriptor length
         USB_INTERFACE_DESCRIPTOR_TYPE,       //  ;; Descriptor type
         0x0,               //;; Zero-based index of this interface
         0x0,             //  ;; Alternate setting
         0x02,           //    ;; Number of end points
         0x03,           // ;; Interface class
         0x00,           //    ;; Interface sub class
         0x00,           //    ;; Interface sub sub class
         0x00,           //    ;; Interface descriptor string index

//;; HID Descriptor
         0x09,     // ; length
         HID_DESCRIPTOR_TYPE,     // ; type: HID
         0x10,
         0x01,     // ; release: HID class rev 1.1
         0x00,    //  ; country code (none)
         0x01,    //  ; number of HID class descriptors to follow
         0x22,    //  ; report descriptor type (HID)
        // 0x1b,//(HIDReportDscrEnd - HIDReportDscr) //; length of HID descriptor
        HID_REPORT_DESC_SIZE,//20140428
         0x00,

//;; Endpoint Descriptor
         0x07,      //;; Descriptor length
         USB_ENDPOINT_DESCRIPTOR_TYPE,       //  ;; Descriptor type
         HID_IN_EP,            //   ;; Endpoint number, and direction
         0x03,         //   ;; Endpoint type
         HID_IN_PACKET,            ////   ;; Maximun packet size (LSB)
         0x00,            //   ;; Max packect size (MSB)
         0x0A,            //   ;; Polling interval

//;; Endpoint Descriptor
         0x07,      //;; Descriptor length
         USB_ENDPOINT_DESCRIPTOR_TYPE,      //   ;; Descriptor type
         HID_OUT_EP,            //   ;; Endpoint number, and direction
         0x03,          //  ;; Endpoint type
         HID_OUT_PACKET,            //   ;; Maximun packet size (LSB)
         0x00,           //    ;; Max packect size (MSB)
         0x0A,           //    ;; Polling interval
} ;

HID_ReportDesc[HID_REPORT_DESC_SIZE] __ALIGN_END =
{
        0x05, 0x01,                                 // USAGE_PAGE (Generic Desktop)
                0x09, 0x00,                                 // USAGE (0)
                0xa1, 0x01,                            // COLLECTION (Application)       
                0x15, 0x00,                           //   LOGICAL_MINIMUM (0)
                0x25, 0xFF,                            //        LOGICAL_MAXIMUM (255)
                0x19, 0x00,                           //   USAGE_MINIMUM(0)
                0x29, 0xFF,                            //        USAGE_MAXIMUM(255)
                0x95, 0x40,                           //   REPORT_COUNT
                0x75, 0x08,                            //        REPORT_SIZE (8)
               
                0x81, 0x02,                           //   INPUT (Data,Var,Abs)
                0x19, 0x00,                            //        USAGE_MINIMUM (0)
                0x29, 0xFF,                            //        USAGE_MAXIMUM (255)
               
                0x91, 0x02,                            //        OUTPUT (Data,Var,Abs)
                0xc0,                                           // END_COLLECTION

};

谢谢各位!
沙发
LVJINWEN|  楼主 | 2014-4-29 21:26 | 只看该作者
补充一下:
#define HID_IN_EP                    0x81
#define HID_OUT_EP                   0x01

#define HID_IN_PACKET                64
#define HID_OUT_PACKET               64

使用特权

评论回复
板凳
qixingzhige| | 2014-8-6 21:59 | 只看该作者
楼上还解决了,我现在也遇到这个问题!

使用特权

评论回复
地板
qixingzhige| | 2014-8-6 22:10 | 只看该作者
PC发送64 bytes数据给MCU时,MCU在哪里接收啊?求解!

使用特权

评论回复
5
5768340| | 2014-11-25 18:05 | 只看该作者
qixingzhige 发表于 2014-8-6 22:10
PC发送64 bytes数据给MCU时,MCU在哪里接收啊?求解!

你好 , 我最近也在用STM32_USB-Host-Device_Lib_V2.1.0 库做 HID 的双向通信 ,遇到 MCU 没有反应的情况 ,不知道你当时怎么解决的呢 ? 不知道这个需要在哪里修改呢 ?

使用特权

评论回复
6
5768340| | 2014-11-26 08:48 | 只看该作者
你好 。楼主 ,不知道问题解决了吗 ?我也用这个库 ,用这个功能PC 增么向 USB 发呢

使用特权

评论回复
7
真的好多巧合| | 2014-12-6 21:52 | 只看该作者
正要做这个,不知道大家现在怎么样了?

使用特权

评论回复
8
bkbxbsyjh| | 2015-6-15 16:44 | 只看该作者
有没有哪个大师用这个库调通hid双向通信的啊

使用特权

评论回复
9
insignal| | 2015-6-15 21:05 | 只看该作者
自定义hid双向通讯设备最好基于customhid的代码
可以看看我们的hiddfu
就是hid双向通讯设备

使用特权

评论回复
10
fanxsd| | 2015-6-15 21:07 | 只看该作者
高端货 学习 学习

使用特权

评论回复
11
insignal| | 2015-6-15 21:09 | 只看该作者
bbs.21ic.com/forum.php?mod=viewthread&tid=957606

使用特权

评论回复
12
powder| | 2015-6-16 01:53 | 只看该作者
今天来不及回答你了,马上就不能够发帖了

使用特权

评论回复
13
powder| | 2015-6-16 01:53 | 只看该作者
我还要看看我原来的程序

使用特权

评论回复
14
powder| | 2015-6-16 01:57 | 只看该作者
static uint8_t  usbd_audio_IN_Incplt (void  *pdev)

使用特权

评论回复
15
powder| | 2015-6-16 01:58 | 只看该作者
//初始化
     DCD_EP_Flush(ppdev, HID_IN_EP);      
      DCD_EP_Tx (ppdev,        //        send  发送midi  dupg 可靠性?
                 HID_IN_EP,
               MidiTxBuf,//64,//IsocOutBuff,
              EP_midi_SZE);//USB_OTG_EP_BULK);//IsocOutCurPacketSze));

使用特权

评论回复
16
mgfhappy| | 2015-8-2 14:08 | 只看该作者
发便留个联系方式,?小弟在搞STM32 USB,207 和PC机通信,现在还没有搞定,想请问兄是根据哪个例程来改成双向通信的?

使用特权

评论回复
17
BINDOU| | 2015-8-23 16:12 | 只看该作者
mgfhappy 发表于 2015-8-2 14:08
发便留个联系方式,?小弟在搞STM32 USB,207 和PC机通信,现在还没有搞定,想请问兄是根据哪个例程来改成 ...

请问你项目做的如何了?我目前也是焦头烂额的忙于usb和pc的通信

使用特权

评论回复
18
mgfhappy| | 2015-9-13 18:57 | 只看该作者
能留个联系方式么?

使用特权

评论回复
19
g491790850| | 2015-9-21 09:11 | 只看该作者
LVJINWEN 发表于 2014-4-29 21:26
补充一下:
#define HID_IN_EP                    0x81
#define HID_OUT_EP                   0x01

in和out 端点为同一端点?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝