主要修改的地方有两个:1、关于速度问题,我们需要修改管道的传输大小,在,usbhost_core.c,中的 rt_usb_hcd_pipe_xfer函数中, 将pipe->ep.wMaxPacketSize ,修改为 512或1024,读U盘文件时,这里的值默认应该是64字节,这样的话,会很慢,修改这个值后,会有很大的速度提升
pipe->ep.wMaxPacketSize
2、偶发的异常,会导致U盘某些操作失败后,死锁,我们需要增加一个,处理如下,在drv_usbh.c中的drv_pipe_xfer 函数,如图所示:
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
投诉 建议
回到 底部
太好了,这个问题困惑了好几年了。这个是通用解决方法吗?用在其他MCU上也是ok的吗?
太好了,这个问题困惑了好几年了。这个是通用解决方法吗?用在其他MCU上也是ok的吗?
牛掰,当初遇到这个问题,几年了都
实际测试了下
send_size = (remain_size > 512) ? 512 : remain_size;
这里如果修改的话,有些以前能识别的老U盘 会报错误 无法识别
新U盘不受影响,仍然可以
这里猜测是 USB1.0 和USB2.0的差异了,本身U盘就不支持@sync
USB版本不同,管道每次传输的最大值不同,这个变量需要根据版本来变化,可以做成自动识别的,弄成固定值,对低版本会造成兼容