而是通过集线器跟主控制器打交道的.通常我们的PC机上有多个主控制器,主控制器下面是根集线器, 通常是根集线器下面有两个USB接口.例如我的电脑,有3个USB主控制器,3个根集线器,因此共有6个USB口. USB口下面还可以再接集线器,但是集线器的总层数是有限制的(1.1最多为4层,2.0最多为6层).
地址0是保留地址,它是一个公共地址.当设备插入到集线器的端口中时,由于设备D+(全速或者高速)或 D-(低速设备)上的上拉电阻,使集线器的D+或者D-变成高电平,从而集线器识别到设备插入,并报告给主控制器. 接着,设备就被复位,并把地址设置为0.然后,主机就可以通过地址0以及端点0来对设备使用控制传输进行通信了---- 读取描述符,设置一个未使用的地址等,这个过程叫做枚举.通常,第一次获取描述符只会获取设备描述符 的一部分,看它是否有数据返回,然后就会设置地址了,接下来就会使用新的地址,以及已获取到的0端点 大小等,重新获取描述符.描述符包括设备描述符,端点描述符,接口描述符,配置描述符等等.
由于PC机的根集线器已经使用了地址01,所以通常我们在一个空的根集线器上插入一个设备时, 会发现它的地址为02.地址值最大可到127.
另外,这样的帖最好发在[通信技术]或者[侃单片机]版面,回答的人会多一些.
|