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

用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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版