文章目录
- USB 断开检测
- 带 Vbus 检测功能的 USB 设备断开
- 不带 Vbus 检测功能的 USB 设备断开
- USB 设备端断开的检测
- USB 主机端断开的检测
- 低速/全速设备
- 高速设备
USB 断开检测
USB 主机和 USB 设备同样需要具有检测断开的能力。
-
USB 主机如果不能检测到 USB 设备的移除将会导致其可用资源越来越少,比如可分配的 USB 设备地址,可分配的电源资源以及可用的总线带宽等。
-
USB 设备(特别是自供电 USB 设备),如果不能检测其与 USB 主机的断开,同样也有可能引发一些问题,如再次连接时可能不能正常工作等。
带 Vbus 检测功能的 USB 设备断开
不带 Vbus 检测功能的 USB 设备断开
USB 设备端断开的检测
与 USB 设备连接检测相同,设备端也是通过对 Vbus 的检测来实现断开的检测的。
对于只使用 USB 总线供电的 USB 设备,当该设备从 USB 主机中移除时,设备就会处于端点状态且无法继续工作。在这种情况下,讨论断开检测是毫无意义的。后续的讨论都是建立在当设备从 USB 主机移除后设备还能继续工作的前提下。
对于不支持 Vbus 检测的 USB 设备,与连接检测相同,可以通过断开时 D+ 和 D- 信号变化所产生的中断再辅以实时 D+ 和 D- 信号的状态来进行检测。
对于支持 Vbus 检测的 USB 设备,一旦检测到 Vbus 上电压低于 Vbsvld(4.01V)时即可认为该设备已经从 USB 主机上断开。此时,USB 设备端需要移除 D+ 和 D- 上的上拉电阻来确保下次连接检测的初始状态是正确的。
- 对于低速设备,移除 D- 上的上拉电阻。
- 对于全速设备,移除D+ 上的上拉电阻
- 对于高速设备,由于在高速模式下,其上拉电阻已被移除,所以不需要再移除上拉电阻。
USB 主机端断开的检测
低速/全速设备
USB 设备从 USB 主机移除后,USB 主机端的 D+ 和 D- 由于主机端的下拉 15KΩ电阻的存在将会变为 0V。USB2.0 协议规定,当主机端 D+ 或 D- 的电压小于 0.8V,并持续Tddis(最小值为2us)时间长度,USB 主机就认为 USB 设备已经从 USB 主机的端口上断开。
高速设备
当 USB 设备工作在高速模式时,D+ 和 D- 上的信号输出电压,如高速空闲状态电压(high-speed idle level),高速数字信号高电平电压(high-speed data signaling high)和全速设备是不一样的,所以在检测高速 USB 设备断开时,D+ 和 D- 的检测标准和全速设备是不一样的。
USB2.0 协议规定,对于连接高速设备的高速主机,当 D+ 和 D- 的差分信号电平差不小于 625mV 时,高速主机的断开检测模块就必须认为 USB 设备已经断开
当 D+ 和 D- 的差分信号电平差不大于 525mV 时,高速主机的断开检测模块一定不能认为 USB 设备已经断开。
USB 主机会检测每个高速帧开始(SOF)的包结束信号,当包结束电压大于检测电压,就表示有设备断开。需要说明的是,实际应用中,高速设备的断开检测电压可能在 525-625mV 之间,并且不同的主机断开检测电压可能不同。
由于高速主机是通过检测帧开始的包结束来判断设备是否断开,而帧开始的时间间隔是 125us,所以,当设备被断开后,最多在 125us 之内,主机就可以检测到设备已经断开。