STM32F4 USB HOST VPC主机无法读取到从机发来的数据

问题描述:STM32F407做USB HOST VPC主机,F103做USB DEVICE从机,主机每1秒向从机发送1帧数据,从机接收到主机发来的数据后给主机回复一帧数据。

目前主机能够识别到从机,枚举成功,类型也能识别成功,从机能够正常接收到主机发来的数据。但是从机向主机返回的数据,主机接收不到。二者工程都是使用cube生成的。以下是代码部分:

主机使用的函数为:USBH_CDC_Transmit(),USBH_CDC_Receive()。直接在main->while里调用以上2个函数。

/*************************************************************/ 

 while (1)

  {

 /* USER CODE END WHILE */

    MX_USB_HOST_Process();

    memset(UserRxBuffer,0,6);

    USBH_CDC_Receive(&hUsbHostFS,UserRxBuffer,6);

    HAL_Delay(1);

  /* USER CODE BEGIN 3 */

  }

/*************************************************************/

从机使用的函数为:CDC_Transmit_FS(),CDC_Receive_FS()。

/*************************************************************/

  while (1)

  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

    if(USB_S.OutFlag)

    {

      HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);

      CDC_Transmit_FS(MySendData,6);

  

      USB_S.ReLen = 0;

      USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);

      USBD_CDC_ReceivePacket(&hUsbDeviceFS);

      USB_S.OutFlag = 0;

    }

  }

/*************************************************************/

static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)

{

  /* USER CODE BEGIN 6 */

  //将已接收数据长度赋值给USB_S.ReLen

  USB_S.ReLen += *Len;

  if(USB_S.ReLen==6)

  {

    if(UserRxBufferFS[0]==0x6F&&UserRxBufferFS[1]==0x79&&UserRxBufferFS[2]==0x06&&UserRxBufferFS[3]==0x01)

    usb_buff_length=USB_S.ReLen+UserRxBufferFS[USB_S.ReLen-1]<<8+UserRxBufferFS[USB_S.ReLen-2]+2;

    else

    {

      USB_S.ReLen = 0;

      USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);

      USBD_CDC_ReceivePacket(&hUsbDeviceFS);        

    }

  }

  if(USB_S.ReLen<usb_buff_length)

  {

    USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS + USB_S.ReLen);

    USBD_CDC_ReceivePacket(&hUsbDeviceFS);   //准备接收数据    

  }

  else

  {

    USB_S.OutFlag = 1;

  }

  return (USBD_OK);

  /* USER CODE END 6 */

}

/*************************************************************/

已邀请:

要回复问题请先登录注册