use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1684回复:5

USB 兼容性问题

楼主#
更多 发布于:2005-05-05 09:52
USB 兼容性问题

在有些 PC 机下,会出现 \"USTS 05 00 00 c0 : no response\" 不响应。

而在一些 PC 机下,不管怎么玩,死活都是 OK 。

哪位,碰到过这种现象的指点下。哪里出了问题?谢了!

最新喜欢:

HuYuguangHuYugu...
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-05 18:28
 :(
p_y_h
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-08 09:40
不同PC的USB HOST发的REQUEST有所差异,对所有DEVICE不支持的REQUEST返回STALL。
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-08 21:59
不同PC的USB HOST发的REQUEST有所差异,对所有DEVICE不支持的REQUEST返回STALL。


你说的理解,但我出的问题应该不是这个。

我在想,在一个 request 还没有完成时,USB SIE 可不可能接受下一个 request ?而在这两个 request 中其中先一个回应(比如 NAK,ACK,STALL)后,把另一个 request 的回应也清掉了。而另一个 request 则一直还在等 它的回应,而它却总也等不到它所要的回应,所以就有 \"no response\" 。

不知道我这样能解释的通吗?
p_y_h
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-09 11:20
不会出现你所说的情况。
在HOST发下一个REQUEST前,当前REQUEST必须已经得到响应。

根据我的一些经验,DEVICE NO RESPONSE一般是DEVICE的CORE执行异常(跑飞了),不在响应中断了。

不知道你固件具体怎么实现的,最好不要在中断服务程序里进行USB操作(如返回数据给HOST等,因为返回数据又会导致一个TX中断,产生中断嵌套)。

下面情况可能是导致问题的根本原因:
在HOST 发SETUP包后将连续发出IN包直到收到数据,也就是说HOST并不是发一个IN包就能获得DEVICE返回的数据(DEVICE收到RX中断解析SETUP包,并把数据准备好,需要一段时间,这段时间内HOST可能就会发多个IN包),IN包也会导致DEVICE产生中断,因为IN导致的中断不会置USBC的固件用来判断中断类型的位,所以一般的固件程序不做任何处理(如果处理了也就错了),PHY返回NAK给HOST。在DEVICE准备数据过程中,这些IN产生的中断导致了CORE的异常。我的解决办法是在收到SETUP包后关掉中断,在准备好数据后,在把中断打开。
hyper320
驱动牛犊
驱动牛犊
  • 注册日期2002-12-07
  • 最后登录2005-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-11 16:23
游客

返回顶部