usb地址 、数据长度疑问

[复制链接]
2660|3
 楼主| 钻研的鱼 发表于 2012-2-28 12:35 | 显示全部楼层 |阅读模式
USB 设备在上电复位时Address Field为0,这个域何时由驱动置为非0值?
在OUT传输时,驱动每次是不是尽可能发送最大长度的数据包?
在IN传输时,如果usb设备可以的话,是不是每次都可以发送最大长度的数据包?这个长度由谁决定?
zhuzaixingfu 发表于 2012-2-29 00:05 | 显示全部楼层
主机发送Get_Descriptor请求获取默认管道的最大包长度,然后(Windows)系统会要求hub对设备进行一次的复位操作(USB规范里面没这要求)。再次复位的目的是使设备进入一个确定的状态。主机控制器通过Set_Address请求向设备分配一个唯一的地址。在完成这次传输之后,设备进入地址状态(Address state),之后就启用新地址继续与主机通信。这个地址对于设备来说是终生制的,设备在,地址在;设备消失(被拔出,复位,系统重启),地址被收回。同一个设备当再次被枚举后得到的地址不一定是上次那个了。
到了这个时候,也就是SetAddress后,设备的地址域就不是0了。
zhuzaixingfu 发表于 2012-2-29 00:07 | 显示全部楼层
Out传输时,如果操作,底层驱动会将其分批发,每次发的最大长度就是USB端点支持的最大数据包。
IN传输时,就要看设备底层怎么操作了
 楼主| 钻研的鱼 发表于 2012-3-3 08:10 | 显示全部楼层
不错,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

967

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部