相对于USB设备的连接检测,USB设备断开的检测也很重要,也更加的隐晦。USB设备断开的检测不仅包含USB主机检测到其与设备的断开,也包含USB设备检测到其与主机的连接断开。
- 对于USB主机来说,如果不能正确的识别设备的断开,从而无法回收已经断开的设备使用的资源,将会导致资源的浪费,这种资源的浪费不仅表现在系统上如USB设备的地址,系统内存等,也表现在USB总线带宽上。
- 对于USB设备端来说,如果USB设备无法检测到其与主机端已经断开,同样也会引发一些如再次与主机端连接设备不能正确工作的问题。
由于USB主机如USB控制器,USB根集线器和USB设备的驱动程序在主机端运行,并且USB主机端是经过千锤百炼的,所以对于USB设备断开引起的异常,大部分的问题都是由USB设备端引起的,并且大部分发生在自供电的USB设备。
低速 ,全速的disconnect
Table 7-2
主机端的D+或D-的电压小于0.8V时,并且持续TDDIS(最小值为2us)的时间长度时,USB主机端就可以认定设备已经断开。对于USB低速或全设备,可以通过此种方式进行设备断开的检测
———————————————————————————————————————————
对于工作在高速模式下的USB设备,其D+/D-上的电平和低全速的设备不一样,所以检测方式不一样。
USB2.0协议规定,对于连接到高速设备的高速主机,D+和D-上的差分信号电平大于625mV时,就可认定USB设备已经断开。
当D+和D-的差分电平差不大于625mV时,高速主机的断开检测模块不能认为USB设备已经断开。USB主机会检测到每个高速帧开始的包结速信号,当包结束(SOF EOP)电压大于检测电压,表示设备断开。在实际应用中,高速设备的断开电压可能在525mV到625mV之间,并且不同的主机的断开检测电路电压不同。
由于主机是通过检测帧开始的包结束来判断设备是否断开,而帧开始的间隔是125us,所以当设备断开后,最多在125us内主机就可以检测到设备已经断开。
高速disconnect
协议描述:
A downstream facing transceiver operating in high-speed mode detects disconnection of a high-speed device by sensing the doubling in differential signal amplitude across the D+ and D- lines that can occur when the device terminations are removed. The Disconnection Envelope Detector output goes high when the downstream facing transceiver transmits and positive reflections from the open line return with a phase which is additive with the transceiver driver signal.
Signals with differential amplitudes ≥ 625 mV must reliably activate the Disconnection Envelope Detector.
Signals with differential amplitudes ≤ 525 mV must never activate the Disconnection Envelope Detector.