USB协议详解第29讲(USB设备状态及数据交互条件)
1.连接状态(Attached)
USB设备可以从USB总线上连接或断开。当USB设备与USB总线断开时,它的状态USB规范没有定义,我们可以这么想,设备都拔了就断电了,也就不存在什么样的状态了。规范仅在设备被连接后处理后续的操作。
2.上电状态(Powered)
USB设备的电源可来自外部电源,也可从USB接口的集线器而来。设备电源来自外部电源的USB设备被称作自供电设备(self-powered)。虽然自供电设备在连接到USB之前可能已经被供电,但是不会被认为处于上电状态,只有当设备连接到USB总线上面并且Vbus电源给设备上电时设备才进入上电状态。
设备可以支持自供电和总线供电的配置。一些设备可以支持任何一种电源供电方式,而另一些设备可能只有在自供电下才能被正常使用。设备对电源支持的能力是通过配置描述(configuration descriptor)中的bmAttributes来反映的。
设备可以随时改变其电源,例如从自供电到总线供电。如果一个设备同时可以支持两种供电方式,该设备配置描述符中指示的功号最大值(bMaxPower)是设备在任何一种模式下将从VBUS中提取的最大值,设备必须以此最大功率作为参照,而究竟处于何状态是不考虑的。
3.默认状态(Default)
在设备供电后,它必须在收到来自总线的复位信号之前不响应任何总线事务。
设备上电后,它不响应任何总线处理,直到设备接收到总线的复位信号为止。在设备复位完成后,设备进入默认状态。
当复位过程完成后,USB设备在正确的速度下操作(即低速/全速/高速),低速和全速的数据选择由设备的终端电阻决定。
高速设备和全速设备的电气环境一样,只是设备复位成功后,高速设备还必须要成功地响应特定描述符请求并返回正确的信息。
4.地址状态(Address)
所有USB设备在最初供电或设备被重置后使用默认地址。每一设备在正常复位后由主机分配一个唯一的地址,当主机给设备分配完毕地址之后,设备进入地址状态。当USB设备被挂起状态时,设备的地址保持不变。
无论设备当前是否分配了唯一地址或正在使用默认地址,在地址状态下,USB设备只响应其默认管道上的请求。
5.配置状态( Configured )
在使用USB设备的功能之前,必须配置该设备。从设备的角度来看,配置包括设备需要正确的响应主机SetConfiguration(非零)请求操作。当设备被正确配置完成后,设备进入配置状态。
6.挂起状态(Suspended)
为了节省电源,当设备在指定的时间内没有观察到总线有数据传输时,USB设备自动进入挂起状态。当挂起时,USB设备会保存任何之前的状态,包括上电状态、默认状态、地址状态、配置状态。
所有的设备在一段特定的时间内检测不到总线活动时必须进入挂起状态。不管设备是被分配了非缺省的地址或者是被配置了,已经连接的设备必须在任何加电的时刻随时准备中止。总线活动的中止可能是因为主机本身进入了挂起状态。另外,USB设备必须在所连接的集线器端口挂起时自己也进入挂起状态。
USB设备在总线活动时结束挂起状态,返回保存的上一次的状态。USB设备还可以通过远程唤醒电信号请求主机让自己退出挂起模式。设备发出远程唤醒信号的功能是可选的,如果USB设备能够支持远程唤醒功能,主机必须可禁止或者启用此功能。比如电脑待机时通过USB键盘来换醒主机,这种功能称之为“远程唤醒”(remote wakeup)。在配置描述符中,USB设备会将是否支持远程唤醒的能力报告给主机。
7.USB设备状态迁移
8.USB设备状态详解及数据交互条件
核心的核心:当设备连接到USB总线,且已通电,且已被主机复位,且已被分配唯一地址,且已配置,且未暂停。 主机才可以使用设备提供的功能,也就是和设备进行正常数据交互,大家一定要记住这一点。