USB集线器端口电源管理
自供电集线器可配备电源开关,用于管控下行端口的供电输出,但此项不作强制要求。但总线供电集线器必须配置电源开关。
带电源开关的集线器支持三种供电管控方式:
- 所有端口成组统一控制
- 单端口独立控制
- 自定义划分多组端口分组控制。
集线器通过集线器特性字段(wHubCharacteristics)中的「逻辑电源切换模式Logical Power Switching
Mode 」位域,标识自身是否支持电源切换功能。
- 若支持单端口独立电源切换:当端口收到SetPortFeature(PORT_POWER)请求时,该端口上电;端口处于断电状态或未配置状态时,端口断电。
- 若支持分组式电源切换:同一分组内任意端口收到上电请求,整组端口同步上电;仅当分组内所有端口均为断电/未配置状态时,整组才会断电。
- 特殊限制:若执行上电请求时,C_HUB_LOCAL_POWER与本地电源状态位同时为1,即使下发端口上电指令,该端口也不会上电。
当执行 SetPortFeature(PORT_POWER) 想要打开端口供电时:若 C_HUB_LOCAL_POWER = 1 且 Local Power Status = 1 同时成立→ 本次端口上电指令无效,端口不会上电。
Local Power Status(本地电源状态位,静态位)
- = 1:集线器当前已接入本地外部市电 / 适配器,由自供电运行
- = 0:集线器仅靠 USB 总线供电(总线供电模式)
C_HUB_LOCAL_POWER(本地电源变更事件位,事件标志位)
C = Change 「变更 / 中断标志」= 1:刚刚发生了「本地电源状态切换」事件所以刚插上外置电源、刚拔掉外置电源,电源来源发生变动,这时集线器正在发生/刚完成「供电来源切换」的瞬间,禁止任何端口上电操作,避免电源时序冲突、浪涌、短路损坏。
自供电集线器虽无需实现电源切换功能,但必须为所有端口支持断电状态;即便无可被USB系统软件控制的物理电源开关,也必须配置端口电源控制掩码(所有位固定置1)。
为兼容旧版USB软件,集线器必须填写wHubCharacteristics中的逻辑电源切换模式。原因是部分旧版软件会根据该字段判断,若标识不支持端口电源切换,则不会发送端口配置上电请求;否则该字段在本规范版本中已无实际必要。
- 无物理电源开关的集线器,其逻辑电源切换模式需匹配过流上报机制:例如按单端口上报过流故障时,对应模式位需配置为单端口电源管控模式。
- 无电源开关的集线器,
bPwrOn2PwrGood字段必须固定置0。
多组管控(Multiple Gangs)
集线器可配置任意数量的电源分组与/或过流保护分组。
若集线器实现了多个过流分组、或多个电源切换分组,必须同时将逻辑电源切换模式与过流上报模式配置为单端口独立管控(以上配置位均位于wHubCharacteristics寄存器);同时,PortPwrCtrlMask的所有位必须置1。
- 当某一过流保护器件触发过流时,该器件所保护的整组端口都会上报过流事件。触发过流后,组内所有端口强制进入断电状态,且所有端口的C_PORT_OVER_CURRENT(端口过流变更标志位)置1。
- 只要过流故障未解除,读取该分组内任意端口状态时,其PORT_OVER-CURRENT(端口过流状态位)会持续置1;而C_PORT_OVER_CURRENT标志位需要逐个端口单独清零。
- 多个端口共用同一个电源开关时:对组内任意端口设置PORT_POWER上电,会让整组端口统一上电,但不会自动解除组内其他组端口的断电锁定状态。
- 只有当分组内全部端口均处于断电状态、或集线器未完成配置时,该分组端口才会整体下电。
- 若集线器同时实现电源切换与过流保护,过流分组与电源分组无需一一对应、不必一致。
- 设备自带电源开关时,一旦发生过流,对应过流保护电路关联的所有电源开关必须全部关断;
- 若一个电源开关关联了多个过流保护器件,只要任意一路保护电路检测到过流,该电源开关即刻关闭。
USB2.0集线器HUB





