ray0812
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1440回复:4

关于对USB设备设置地址的疑问

楼主#
更多 发布于:2004-06-03 20:09
本人在开发USB主机(Philips的1161A1)时,发现对设备置地址01后,不能读取设备的描述符,而如果置地址0则没问题。按USB规范,设置的地址不应该是0的,各位做过的朋友碰过这个问题吗?同一个U盘,在PC上用Bus Hound抓到的数据看,PC也是将地址置成0,故此不解,望知者垂教,非常感谢!
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-04 09:38
以地址0读取描述符之后不要复位。

先以地址0读取描述符。
再向DEVICE发送SET ADDRESS命令
若成功则设置1161地址,再用新地址去读设备描述符。

根据USB协议地址0肯定不能作为合法的地址,但有些DEVICE在地址为0的状态下并没有不执行你的命令,也就是说程序设计得不是很严密。
www.dragon-2008.com 欢迎交流
ray0812
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-04 02:04
谢谢答复。

我的做法是,设备复位后用地址0读取设备描述符,每次都行。然后再将设备复位,将地址置成01,这样每次也是成功的。再用地址1去读设备描述符时,返回的错误码是设备没响应。如果设置地址0再用0地址去读,则每次都没有问题,也可以成功读到Configuration Descriptor,可以执行Set Configuration,完全正常。问题是,地址0能不能作为合法的地址?按USB规范似乎是不行的。
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-03 22:01
你向DEVICE发送设置地址命令之后,等待DEVICE的回复,若回复成功,再把你的1161 HOST设置地址,否则不要设置你的1161的地址。
www.dragon-2008.com 欢迎交流
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-03 21:40
似乎最开始的时候默认地址为0
游客

返回顶部