你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
uuuuNext 提问时间:2015-12-19 21:37 /
本人想做个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条挂了)

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

7D3SK{RK1ZRNNCS_$AN~5B7.png
NG5`ZFZR2Q[R_2840YY42`D.png
收藏 评论3 发布时间:2015-12-19 21:37

举报

3个回答
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   c0000004  stallpid
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可以连续接收到了。
这个函数的作用应该是清空缓冲器。这样子,虽然能连续收到数据包了,但会丢包~~~大家遇到过吗??怎么解决呢~~~

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版