本人想做个CAN转USB的设备,用的STM32F107的芯片,在cubemx上配置了mass storage class的usb代码。枚举OK了,安装了libusb的驱动,在pc端接收到了107发过来的数据,甚是小激动了下,然而问题也来了。具体情况是这样的: 在107中定义了如下要发送的数据 : unsigned char test[6]={1,1,1,1,1,1}; 107在while(1)死循环中进行数据发送,注意发送的数据每次会递增一。 test[0]++; test[1]++; test[2]++; test[3]++; test[4]++; test[5]++; 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条挂了) 还请大家帮忙看看问题在哪呢~~ |
这个是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 c0000004 stallpid
这个函数的作用应该是清空缓冲器。这样子,虽然能连续收到数据包了,但会丢包~~~大家遇到过吗??怎么解决呢~~~