搜索
bottom↓
回复: 7

求助使用Libusb开发STM32驱动 bluk_read超时的问题

[复制链接]

出0入0汤圆

发表于 2013-2-26 11:15:24 | 显示全部楼层 |阅读模式
最近在使用libusb开发STM32的上位机驱动
现在主要测试read 可以达到700+KB/S

现在遇到一个问题
就是使用libusb里面的函数对设备EP进行读取的时候 usb_bulk_read(dev, EP_IN, tmp, sizeof(tmp), 5000);
当设备EP的缓存里面有数据的时候 没问题 可以正常读到
但是当设备里面没数据的时候 上位机就会卡在这里 直到超时报错

求助下大侠这是哪里的问题
是上位机libusb的函数使用有问题?还是STM32里面的固件有问题?
我比较深入的看了下 STM32虚拟串口等例程对读处理的操作的处理
就是有数据就写到缓存里面等待发送 没有数据就没有任何EP操作
但是他们的驱动就没有报错啊

大家多给意见 谢谢!


出0入0汤圆

 楼主| 发表于 2013-2-26 11:19:20 | 显示全部楼层
现在我觉得导致上位机超时的原因是EP的缓存中没有数据
所以一致回复上位机NAK导致的等待超时

想到的一个解决方案是 回复上位机一个0长度的data包
或者直接回复ACK 不知道是不是这样解决
但不知道这部分代码加在哪里啊

出0入0汤圆

 楼主| 发表于 2013-2-26 15:15:44 | 显示全部楼层
别沉啊 高手指点下

出0入0汤圆

发表于 2013-2-26 15:45:41 | 显示全部楼层
找个USB捕包的软件看下

出0入0汤圆

发表于 2013-2-27 16:56:05 | 显示全部楼层
device不发数据,host当然读取超时,这有什么问题。。。

出0入0汤圆

发表于 2013-5-13 14:30:52 | 显示全部楼层
haizheng4 发表于 2013-2-26 11:19
现在我觉得导致上位机超时的原因是EP的缓存中没有数据
所以一致回复上位机NAK导致的等待超时

想到的一个解决方案是 回复上位机一个0长度的data包

这样可以啊,要不设备不发送数据,主机当然要等待超时了。。

出0入0汤圆

发表于 2017-1-13 22:05:43 | 显示全部楼层
主机的读应该单独一个线程 一直再读的
没数据的时候,阻塞再这儿。

出0入0汤圆

发表于 2017-1-14 08:35:40 | 显示全部楼层
楼上正解
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 12:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表