阅读:1440回复:4
关于对USB设备设置地址的疑问
本人在开发USB主机(Philips的1161A1)时,发现对设备置地址01后,不能读取设备的描述符,而如果置地址0则没问题。按USB规范,设置的地址不应该是0的,各位做过的朋友碰过这个问题吗?同一个U盘,在PC上用Bus Hound抓到的数据看,PC也是将地址置成0,故此不解,望知者垂教,非常感谢!
|
|
沙发#
发布于:2004-06-04 09:38
以地址0读取描述符之后不要复位。
先以地址0读取描述符。 再向DEVICE发送SET ADDRESS命令 若成功则设置1161地址,再用新地址去读设备描述符。 根据USB协议地址0肯定不能作为合法的地址,但有些DEVICE在地址为0的状态下并没有不执行你的命令,也就是说程序设计得不是很严密。 |
|
|
板凳#
发布于:2004-06-04 02:04
谢谢答复。
我的做法是,设备复位后用地址0读取设备描述符,每次都行。然后再将设备复位,将地址置成01,这样每次也是成功的。再用地址1去读设备描述符时,返回的错误码是设备没响应。如果设置地址0再用0地址去读,则每次都没有问题,也可以成功读到Configuration Descriptor,可以执行Set Configuration,完全正常。问题是,地址0能不能作为合法的地址?按USB规范似乎是不行的。 |
|
地板#
发布于:2004-06-03 22:01
你向DEVICE发送设置地址命令之后,等待DEVICE的回复,若回复成功,再把你的1161 HOST设置地址,否则不要设置你的1161的地址。
|
|
|
地下室#
发布于:2004-06-03 21:40
似乎最开始的时候默认地址为0
|
|