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 */
}
/*************************************************************/
7 个回复
守护
赞同来自:
老哥,你的USB_HOST_VCP,要怎样发送数据给从机啊,怎样实现的呢?
yehchanghung
赞同来自:
你好 , 我也是一樣的問題!!!
我的主機(HOST) 使用 USBH_CDC_Receive 這函式 , 可是都收不到從機(DEVICE)的訊息
請問 樓主 你後來怎麼解決的呢??
晚释
赞同来自:
同问,老哥解决了吗
木头人
赞同来自: liuxu
请问一下您问题解决了吗,我想向您请教一下,最近我也在弄两个单片机之间的usb通信
liuxu
赞同来自:
两个单片机之间的USB通信,从机程序已经知道了,主机程序怎么写呢?感觉这方面资料好少呀,有好心人能教我一下吗?感谢!
a630183258 - 一句话介绍
赞同来自:
有人解决了吗?
sfd123
赞同来自:
我也急等解决这个问题啊!