USB Host不停NAK的问题

电子说

1.2w人已加入

描述

我用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);
}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分