阅读:1689回复:5
USB 兼容性问题
USB 兼容性问题
在有些 PC 机下,会出现 \"USTS 05 00 00 c0 : no response\" 不响应。 而在一些 PC 机下,不管怎么玩,死活都是 OK 。 哪位,碰到过这种现象的指点下。哪里出了问题?谢了! |
|
最新喜欢:HuYugu... |
沙发#
发布于:2005-05-11 16:23
|
|
板凳#
发布于: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包后关掉中断,在准备好数据后,在把中断打开。 |
|
地板#
发布于:2005-05-08 21:59
不同PC的USB HOST发的REQUEST有所差异,对所有DEVICE不支持的REQUEST返回STALL。 你说的理解,但我出的问题应该不是这个。 我在想,在一个 request 还没有完成时,USB SIE 可不可能接受下一个 request ?而在这两个 request 中其中先一个回应(比如 NAK,ACK,STALL)后,把另一个 request 的回应也清掉了。而另一个 request 则一直还在等 它的回应,而它却总也等不到它所要的回应,所以就有 \"no response\" 。 不知道我这样能解释的通吗? |
|
地下室#
发布于:2005-05-08 09:40
不同PC的USB HOST发的REQUEST有所差异,对所有DEVICE不支持的REQUEST返回STALL。
|
|
5楼#
发布于:2005-05-05 18:28
:(
|
|