完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rt_err_t rt_usbh_storage_read10(struct uhintf* intf, rt_uint8_t buffer, 正确包 如上所示: 我在基于4.03,4.04版本,使用USB_FS,only_host模式读写U盘时,能够正常识别U盘,但是读写U盘时经常型的陷入无限NAK的循环中。也在论坛中查看了相关的问题分享,参照修改驱动后,并没能解决问题。 后面我又在多个版本下测试USBHOST 读写U盘 前两天在论坛上看到一位大佬提到,使用usb协议抓包分析,发现是主机在提交一个读请求时被中断打断,导致U盘回复NAK。后经仿真调试确定每次都是在
发生CBW命令后,传输出错。 下单购买了一个USB协议分析仪 经过一上午的抓包分析,确定每次读U盘陷入无限nak错误的时候,就是因为发送 CBW 指令出错。 正确的一包 读数据的时候 CBW 指令 而出错时,分析仪抓包到的 数据是 尝试修复这个bug
在发送包的时候,关闭中断,甚至加入延时,都无法避免这个问题。 本人由于不是很熟悉STM32 USB数据发送过程,不知道怎么去避免USB数据发送出错的情况,所以这个bug 还请论坛的大佬们帮忙看看,要怎么改… |
|
相关推荐
6个回答
|
|
结论是啥?是因为中断吗?
|
|
|
|
不清楚,我关中断了也不行,还是会出现数据包错误
|
|
|
|
|
|
|
|
看你的分析,看样子是os调度影响了 usb通信,NAK的行为是device的,所以主机发送错误以后,device才会nack,主机发送错误,主要可能是os调度卡在了某个位置,使得complete irq么有完成,但是可能是完成了,调度没有结束,又重新走了一遍。
|
|
|
|
数据错误根据我的经验,一般是crc16错误,引起的turnaround timeout。(高级的usb分析仪是这么说的)
|
|
|
|
还有一些可能是 device的usb信号太差,或者寄存器优化等配置以后,导致总线上信号差,识别要十几秒,基本别玩了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1126 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】串口测试标准输入输出重定向
1073 浏览 0 评论
3465 浏览 0 评论
1686 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】以搭积木方式实现简单的互联型家庭网关
1437 浏览 0 评论
51445 浏览 21 评论
【参与有奖】激扬代码,千元现金!RT-Thread主题征文大赛
56641 浏览 88 评论
15722 浏览 51 评论
野火 ISO STM32资料合集(程序、原理图、项目初高级篇)
17913 浏览 46 评论
271473 浏览 72 评论
49050 浏览 30 评论
175367 浏览 48 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 22:33 , Processed in 0.583008 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号