uuuuNext 发表于 2015-12-19 21:37:55

用cubemx生成的usb代码的一些问题

本人想做个CAN转USB的设备,用的STM32F107的芯片,在cubemx上配置了mass storage class的usb代码。枚举OK了,安装了libusb的驱动,在pc端接收到了107发过来的数据,甚是小激动了下,然而问题也来了。具体情况是这样的:

在107中定义了如下要发送的数据:unsigned char test={1,1,1,1,1,1};

107在while(1)死循环中进行数据发送,注意发送的数据每次会递增一。
               test++;
               test++;
               test++;
               test++;
               test++;
               test++;
      
               USBD_LL_Transmit(&hUsbDeviceFS, MSC_EPIN_ADDR,test,6);
                for(i=0;i<65530;i++)
                for(i=0;i<65530;i++)
               for(i=0;i<65530;i++)
                for(i=0;i<65530;i++)                              
                ;

用libusb的demo来接收数据。结果是这样的:file:///C:\Users\DoNext\AppData\Roaming\Tencent\Users\524684117\QQ\WinTemp\RichOle\7D3SK{RK1ZRNNCS_$AN~5B7.png(我是从1开始循环递增发的,但是实际第一条发出去已经是44了,不明白~~)

用BUSHOUND抓包是这样的:(从抓包看出第一条是空白,第二条开始是我设置的数据。发完6条挂了)

还请大家帮忙看看问题在哪呢~~

uuuuNext 发表于 2015-12-19 21:48:01

图片可能比较慢。每次pc收6条数据后就挂掉。
这个是usblib的demo上收到的数据:
44 44 44 44 44 44 45 45 45 45 45 45 46 46 46 46 46 46 47 47 47 47 47 47 48 48 48 48 48 48 49 49 49 49 49 49 Win32Error:GetOverlappedResult Ep 0x81
31:连到系统上的设备没有发挥作用。

这是抓包最后出错的一个状态
usts   c0000004stallpid

zhangdaijin 发表于 2015-12-20 09:45:45

:):):):):):):)

uuuuNext 发表于 2015-12-20 12:28:32

在 USBD_LL_Transmit(&hUsbDeviceFS, MSC_EPIN_ADDR,test,6)发送函数后增加            HAL_PCD_EP_Flush(&hpcd_USB_OTG_FS, MSC_EPIN_ADDR可以连续接收到了。
这个函数的作用应该是清空缓冲器。这样子,虽然能连续收到数据包了,但会丢包~~~大家遇到过吗??怎么解决呢~~~
页: [1]
查看完整版本: 用cubemx生成的usb代码的一些问题