OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2114|回复: 4

u盘复制中出现异常

[复制链接]

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2017-7-27
在线时间
30 小时
发表于 2017-11-7 11:07:42 | 显示全部楼层 |阅读模式
9金钱
高速USB写数据到U盘中,经常出现 错误不能写入文件,文件系统fatfs返回值为底层IO错误, 找到出错的源头在 USBx_HC(chnum)->HCINT) &  USB_OTG_HCINT_STALL 找个个中断发生导致写入U盘 ,有的U盘写入的时候一直很正常,有的经常写着写着就报底层IO异常:错误源头如图所示。不知道怎么避免这个问题

捕获.PNG
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2017-7-27
在线时间
30 小时
 楼主| 发表于 2017-11-7 11:12:34 | 显示全部楼层
一般正常写入的时候不会有STALL 这个中断发生的,现在使用的是一个30G的U盘和一个500M的U盘,32GU盘写入正常没有错误。500MU盘和借了别人的4GU盘,都是复制写入到一半的时候就报错了,有点怀疑U盘的原因,但是在电脑上多有的U盘都挺正常的
回复

使用道具 举报

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2017-7-27
在线时间
30 小时
 楼主| 发表于 2017-11-7 11:17:28 | 显示全部楼层
我的高速的U盘写入的速度只有2.5M/s ,但是500M的普通U盘写入速度有5M/s,这个也是特别奇怪的地方
回复

使用道具 举报

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2017-7-27
在线时间
30 小时
 楼主| 发表于 2017-11-7 12:47:41 | 显示全部楼层
本帖最后由 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
回复

使用道具 举报

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2017-7-27
在线时间
30 小时
 楼主| 发表于 2017-11-7 12:56:37 | 显示全部楼层
听说这种stall状态需要主机清除 怎么清除?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 22:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表