u盘复制中出现异常

2019-08-08 11:02发布

高速USB写数据到U盘中,经常出现 错误不能写入文件,文件系统fatfs返回值为底层IO错误, 找到出错的源头在 USBx_HC(chnum)->HCINT) &  USB_OTG_HCINT_STALL 找个个中断发生导致写入U盘 ,有的U盘写入的时候一直很正常,有的经常写着写着就报底层IO异常:错误源头如图所示。不知道怎么避免这个问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
402227912
1楼-- · 2019-08-08 12:32
 精彩回答 2  元偷偷看……
402227912
2楼-- · 2019-08-08 13:37
我的高速的U盘写入的速度只有2.5M/s ,但是500M的普通U盘写入速度有5M/s,这个也是特别奇怪的地方
402227912
3楼-- · 2019-08-08 17:29
本帖最后由 402227912 于 2017-11-7 12:49 编辑

ACK 、NAK 、STALL
【ACK 包】ACK(确认) 表示 主机和设备已经收到数据,没有出现错误。设备必须在Setup 事务的交换包中返回ACK,设备也必须在OUT事务的交换中返回ACK。主机在IN事务的交换包中返回ACK。
【NAK 包】(NAK包只能从设备发向主机)NAK(未确认) 表示设备正忙或没有数据要返回。如果主机在设备太忙而不能接受数据时发送数据,则设备在交换包中发出NAK。如果主机在设备没有数据可发送时向设备请求数据,则设备在数据包中发出NAK。在上述两种情况的任何一种下,NAK表示一个暂时的状况,而主机会在以后重试。
【STALL包】不支持的控制请求,控制请求失败或终端失败当一个设备接收到一个终端不支持的控制传输请求,那么这个设备返回一个STALL 给主机。设备在它支持这个请求但是由于某些原因不能采取请求的动作时,也会发出STALL给主机。STALL 的另一个用途是在终端暂停特性设置的情况下来响应传输请求,表示终端根本不能发送或接收数据。规范称这个类型的延迟为功能延迟。
批量和中断终端必须支持功能延迟。在接收到一个功能STALL后,主机停止所有与设备悬而未决的请求,并且不会恢复通信直到它已经发送一个成功的请求来清除设备的暂停特性。主机绝不会发送STALL
402227912
4楼-- · 2019-08-08 18:30
听说这种stall状态需要主机清除 怎么清除?

一周热门 更多>