4、USB状态
4.1 USB可见状态
- 连接
USB设备可以与USB连接或分离。当USB设备与USB分离时,它的状态不是由本规范定义的。此规范仅在设备被附加后处理所需的操作和属性
- 上电
USB设备上电后处于这个状态,分为两种情况,如果来自于外部电源,协议里叫做self-powered,如果来自于HUB,叫做bus-powered.
- 默认状态
在设备通电后,它必须不响应任何总线事务,直到它从总线收到重置。在接受复位后,设备然后是可寻址的默认地址。
- 地址
所有的USB设备在加电复位以后都使用缺省地址。每一设备在连接或复位后由主机分配一个唯一的地址。当USB设备处于挂起状态时,它保持这个地址不变。
- 配置状态
在USB设备正常工作以前,设备必须被正确配置。
在配置状态前,设备只能使用端点0利用控制传输进行数据交互.
- 挂起状态
为节省电源,USB设备在探测不到总线传输时自动进入中止状态。当中止时,USB设备保持本身的内部状态,包括它的地址及配置。
所有的设备在一段特定的时间内探测不到总线活动时必须进入中止态。不管设备是被分配了非缺省的地址或者是被配置了,已经连接的设备必须在任何加电的时刻随时准备中止。总线活动的中止可能是因为主机本身进入了中止状态。另外,USB设备必须在所连接的集线器端口失效时进入中止态。这就是所指的选择性中止(Selective suspend)。
关于这个在USB2.0规范里面说的已经很详细了,如下图所示.
分为以下几个阶段
- 未连接,所有属性无意义.
- 刚连接,但没有上电,所有属性无意义.
- 连接上刚刚上电,但没有重置.
- 通电且重置了,但尚未分配地址.设备地址仍为0.
- 通电且重置,且分配地址.但是还没有进行配置.
- 通电且重置,且分配地址.已经配置,但没有暂停,主机可以使用设备提供的功能.
- 连接到USB并且已通电,并且在3 ms内没有看到总线活动。 它也可能具有唯一的地址并配置使用。但是,由于设备被挂起,主机可能无法使用设备的功能。
上述的1-2其实就是未连接,3的原因是由于USB的物理接口里面电源线比数据线要长一点导致的一种情况,4-5可以看为USB的枚举过程.6是USB的正常工作状态.7是挂起状态.