OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9274|回复: 12

USB接收不到数据

[复制链接]

4

主题

7

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-26
在线时间
0 小时
发表于 2014-11-14 11:49:49 | 显示全部楼层 |阅读模式
5金钱
请问各位,本人要用STM32F407枚举成USB HID自定义设备,用STM32_USB-Host-Device_Lib_V2.1.0中的Joystick Mouse进行修改,
现在的状况是MCU可以正确发送数据给PC,反过来,PC发送数据给MCU时,MCU却收不到,程序可以进DCD_HandleRxStatusQueueLevel_ISR(pdev)中断,
但不能进入DCD_HandleOutEP_ISR(pdev)中断
DCD_HandleRxStatusQueueLevel_ISR中断中读取FIFO的数据,发现不是PC发过来的数据。
请问MCU程序中要在哪个函数中收取PC发来的数据?是不是要进入 DCD_HandleOutEP_ISR(pdev)中断才能收到正确的数据?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-11-14 21:46:29 | 显示全部楼层
回复

使用道具 举报

4

主题

7

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-26
在线时间
0 小时
 楼主| 发表于 2014-11-15 09:15:30 | 显示全部楼层
没人碰到过这样的问题吗?补充一下,我的枚举配置如下
#define HID_IN_EP                       0x81
#define HID_OUT_EP                   0x01

__ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END =
  {
    0x12,                       /*bLength */
    USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
    0x00,                       /*bcdUSB */
    0x02,
    0x00,                       /*bDeviceClass*/
    0x00,                       /*bDeviceSubClass*/
    0x00,                       /*bDeviceProtocol*/
    USB_OTG_MAX_EP0_SIZE,      /*bMaxPacketSize*/
    LOBYTE(USBD_VID),           /*idVendor*/
    HIBYTE(USBD_VID),           /*idVendor*/
    LOBYTE(USBD_PID),           /*idVendor*/
    HIBYTE(USBD_PID),           /*idVendor*/
    0x00,                       /*bcdDevice rel. 2.00*/
    0x02,
    USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/
    USBD_IDX_PRODUCT_STR,       /*Index of product string*/
    USBD_IDX_SERIAL_STR,        /*Index of serial number string*/
    USBD_CFG_MAX_NUM            /*bNumConfigurations*/
  } ; /* USB_DeviceDescriptor */

__ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END =
{
  0x09, /* bLength: Configuration Descriptor size */
  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
  USB_HID_CONFIG_DESC_SIZ,
  /* wTotalLength: Bytes returned */
  0x00,
  0x01,         /*bNumInterfaces: 1 interface*/
  0x01,         /*bConfigurationValue: Configuration value*/
  0x00,         /*iConfiguration: Index of string descriptor describing the configuration*/
  0xE0,         /*bmAttributes: bus powered and Support Remote Wake-up */
  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/

  /************** Descriptor of Joystick Mouse interface ****************/
  /* 09 */
  0x09,         /*bLength: Interface Descriptor size*/
  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/
  0x00,         /*bInterfaceNumber: Number of Interface*/
  0x00,         /*bAlternateSetting: Alternate setting*/
  0x02,//xcs 0x01,         /*bNumEndpoints*/
  0x03,         /*bInterfaceClass: HID*/
  0x00,//xcs 0x01,         /*bInterfaceSubClass: 1=BOOT, 0=no boot*/
  0x00,//xcs 0x02,         /*nInterfaceProtocol: 0=none, 1=keyboard, 2=mouse*/
  0x00,         /*iInterface: Index of string descriptor*/
  /******************** Descriptor of Joystick Mouse HID ********************/
  /* 18 */
  0x09,         /*bLength: HID Descriptor size*/
  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
  0x11,         /*bcdHID: HID Class Spec release number?汾*/
  0x01,
  0x00,         /*bCountryCode: Hardware target country*/
  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
  0x22,         /*bDescriptorType*/
  HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
  0x00,
  /******************** Descriptor of Mouse endpoint ********************/
  /* 27 */
  0x07,          /*bLength: Endpoint Descriptor size*/
  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/

  HID_IN_EP,     /*bEndpointAddress: Endpoint Address (IN)*/
  0x03,          /*bmAttributes: Interrupt endpoint*/
  HID_IN_PACKET, /*wMaxPacketSize*/
  0x00,
  0x0A,          /*bInterval: olling Interval (10 ms)*/
  /* 34 */

  //xcs************************************************
  0x07,          /*bLength: Endpoint Descriptor size*/
  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/

  HID_OUT_EP,     /*bEndpointAddress: Endpoint Address (IN)*/
  0x03,          /*bmAttributes: Interrupt endpoint*/
  HID_IN_PACKET, /*wMaxPacketSize*/
  0x00,
  0x0A,          /*bInterval: olling Interval (10 ms)*/
  /* 41 */  
} ;


__ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END=
{
  /* 18 */
  0x09,         /*bLength: HID Descriptor size*/
  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
  0x11,         /*bcdHID: HID Class Spec release number*/
  0x01,
  0x00,         /*bCountryCode: Hardware target country*/
  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
  0x22,         /*bDescriptorType*/
  HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
  0x00,
};


__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END = //xcs
{
        0x05,0x8C,              //USAGE_PAGE (Vendor Defined age 1)
        0x09,0x01,              //USAGE (Vendor Usage 1)
        0xA1,0x01,              //COLLECTION (Application)

        0x09,0x03,              //(Vendor Usage 1)
        0x15,0x00,              //LOGICAL_MINIMUM (0)
        0x26,0xFF,0x00,                    //LOGICAL_MAXIMUM (255)
        0x75,0x08,              //REPORT_SIZE (8)
        0x95,0x40,              //REPORT_COUNT (64)
        0x81,0x02,              //INPUT (Data,Var,Abs)

        0x09,0x04,              //(Vendor Usage 1)
        0x15,0x00,              //LOGICAL_MINIMUM (0)
        0x26,0xFF,0x00,                    //LOGICAL_MAXIMUM (255)
        0x75,0x08,              //REPORT_SIZE (8)
        0x95,0x40,              //REPORT_COUNT (64)
        0x91,0x02,              //OUTPUT (Data,Var,Abs)
        0xC0                         /*     END_COLLECTION        */        
};
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-6-18
在线时间
0 小时
发表于 2015-6-24 10:32:15 | 显示全部楼层
楼主弄好了么,我也是同样的问题。求指导啊1
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-11
在线时间
0 小时
发表于 2015-12-23 10:55:33 | 显示全部楼层
楼主弄好了吗  我也是接收不到电脑发过来的数据  弄好的话给我份代码好吗  邮箱是1075452150@qq.com  谢谢了
天地是我的心
回复

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2015-12-22
在线时间
22 小时
发表于 2015-12-23 15:18:16 | 显示全部楼层
回复【5楼】gebo:
---------------------------------
你好,目前你已经实现PC接收开发板作为USB Hid设备上报数据的功能了吗?
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-11
在线时间
0 小时
发表于 2015-12-23 17:18:37 | 显示全部楼层
回复【6楼】phmatthaus:
---------------------------------
目前实现电脑可以识别单片机是HID设备,单片机可以发送64位数据给电脑,但是电脑发送给单片机的数据接收不到
天地是我的心
回复

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2015-12-22
在线时间
22 小时
发表于 2015-12-23 18:16:34 | 显示全部楼层
回复【7楼】gebo:
---------------------------------
是否方便将工程源码发给我。我目前电脑尚不能接收到数据。
下发数据回头我们一起研究一下。
邮箱:517241255@qq.com
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-11
在线时间
0 小时
发表于 2015-12-25 11:28:25 | 显示全部楼层
回复【8楼】phmatthaus:
---------------------------------
if (gintr_status.b.rxstsqlvl)//rxFIFO ·???  ????????FIFO??????????????°ü????????
//    {
//      retval |= DCD_HandleRxStatusQueueLevel_ISR(pdev);
//      
//    }
进入DCD_HandleRxStatusQueueLevel_ISR(pdev);函数
在case STS_DATA_UPDT://这个是接收数据的入口
 uint8_t *buf = pdev->Rx_Buffer;
      USB_OTG_ReadPacket(pdev,buf, status.b.bcnt);//自己添加  给pdev加一个数组Rx_Buffer
这样数据就接收在Rx_Buffer
天地是我的心
回复

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2015-12-22
在线时间
22 小时
发表于 2015-12-25 12:02:11 | 显示全部楼层
回复【9楼】gebo:
---------------------------------
我目前是MCU->C的数据就没有,不知你是移植的哪个程序?
回复

使用道具 举报

16

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2016-6-29
在线时间
50 小时
发表于 2016-8-28 15:55:33 | 显示全部楼层
gebo 发表于 2015-12-23 17:18
回复【6楼】phmatthaus:
---------------------------------
目前实现电脑可以识别单片机是HID设备,单片机 ...

大大 能不能发一份代码给我 我只要MSC给电脑发就够了 谢谢 360101770@qq.com
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-4-12
在线时间
23 小时
发表于 2017-11-13 16:41:17 | 显示全部楼层
@ <usb_conf.h>
#define EP_NUM (3)
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-9-28
在线时间
62 小时
发表于 2018-10-13 15:09:19 | 显示全部楼层
本帖最后由 yellowmid 于 2018-10-13 15:10 编辑

楼主有解决问题了吗?我也遇到这问题无从下手了。
porthelper打印如下信息:
读访问打开HidUsb设备失败!
写访问打开HidUsb设备成功!
注册HidUsb设备成功!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 10:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表