我用U盘导出数据,现象是第一次导出成功,不拔出U盘的情况下,直接导出第二次失败,之后的每一次都失败。拔出U盘后重新插入,仍是第一次正常,之后每一次失败。
查到是drv_usbh.c文件中的drv_pipe_xfer()函数,NAK死循环。
1、增加了NAK后重试的代码
论坛中其他方法效果不明显,还是会NAK。
if (++retry_times >= 100)
{
return -2;
}
continue;
2、增加延时
打开RT_DEBUG_USB后发现,U盘读写正常了,但是枚举有时不正确,概率大概是插入5次,会有1次枚举不成功。
所以在rt_usb_hcd_pipe_xfer()函数内打印处增加延时,关闭RT_DEBUG_USB后,读写、枚举全部正常。
RT_DEBUG_LOG(RT_DEBUG_USB,("pipe transform remain size,: %dn", remain_size));
if (!RT_DEBUG_USB)
{
rt_thread_mdelay(5);
}
-
USB接口
+关注
关注
9文章
712浏览量
58520 -
DRV
+关注
关注
0文章
18浏览量
20930 -
DEBUG
+关注
关注
3文章
95浏览量
21258 -
RT-Thread
+关注
关注
32文章
1540浏览量
44280
发布评论请先 登录
使用nRF52840芯片的USB Host 功能参考例程
USB读RAM buffer使用规范建议
CherryUSB Host必须要DMA而Device就可以选择是否使用DMA?
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
STM32H750 USB HS HOST 加 DCMI 接口不能正常工作怎么解决?
USB_CDC_HOST 标准库里边USBH_DeAllocate_AllChannel()函数的疑问求解

USB Host不停NAK的问题
评论