求问,STM32F103,USB通信中报告描述符不能超过64字节的问题。。

2019-07-21 08:15发布

如题,如果HID报告描述符超过64个字节,那么超出的部分都会截断(EP0最多只能发送或者接收64字节数据),剩下的不再发送给PC了,不是应该超出的会分包再次发送给PC的么?
其他的描述符都会分包发送给PC,就是报告描述符不会。。。求问大师们这是哪里的问题?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
lswhome
2019-07-21 16:25
RESULT Joystick_Data_Setup(uint8_t RequestNo)
{
  uint8_t *(*CopyRoutine)(uint16_t);

  CopyRoutine = NULL;
  if ((RequestNo == GET_DESCRIPTOR)
      && (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))
      && (pInformation->USBwIndex0 == 0))
  {
    if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)
    {
      CopyRoutine = Joystick_GetReportDescriptor;
    }
    else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)
    {
      CopyRoutine = Joystick_GetHIDDescriptor;
    }

  } /* End of GET_DESCRIPTOR */

  /*** GET_PROTOCOL ***/
       
else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
           && RequestNo == GET_PROTOCOL)
  {
    CopyRoutine = Joystick_GetProtocolValue;
  }
       
  if (CopyRoutine == NULL)
  {
    return USB_UNSUPPORT;
                //return USB_SUCCESS;
  }
  pInformation->Ctrl_Info.CopyData = CopyRoutine;
  pInformation->Ctrl_Info.Usb_wOffset = 0;
  (*CopyRoutine)(0);

  return USB_SUCCESS;
}

是不是要自己想办法在这里分包处理????

一周热门 更多>