USB2.0物理层的电信号
+ -

USB2.0设备断开状态的检测

2021-10-25 6464 22

相对于USB设备的连接检测,USB设备断开的检测也很重要,也更加的隐晦。USB设备断开的检测不仅包含USB主机检测到其与设备的断开,也包含USB设备检测到其与主机的连接断开。

  • 对于USB主机来说,如果不能正确的识别设备的断开,从而无法回收已经断开的设备使用的资源,将会导致资源的浪费,这种资源的浪费不仅表现在系统上如USB设备的地址,系统内存等,也表现在USB总线带宽上。
  • 对于USB设备端来说,如果USB设备无法检测到其与主机端已经断开,同样也会引发一些如再次与主机端连接设备不能正确工作的问题。

由于USB主机如USB控制器,USB根集线器和USB设备的驱动程序在主机端运行,并且USB主机端是经过千锤百炼的,所以对于USB设备断开引起的异常,大部分的问题都是由USB设备端引起的,并且大部分发生在自供电的USB设备。

USB设备端断开的检测

USB设备一般分为自供电和VBUS供电。

对于由VBUS供电的设备,当设备与主机断开后,设备将无电源供电,这种情况下设备端的固件程序无法运行,故对于此种设备,USB设备端断开的检测无任何意义。

USB规范对USB总线VBus上的电压的有规定,所以对于支持VBUS检测的USB设备,可以通过检测VBUS上的电压低于VBSVLD即4.01V时即可认为USB设备与主机已经断开。
对于不支持VBus上检测的USB设备,是通过D+/D-上的电压变化来检测的。

无论是否支持VBUS检测的USB设备,当检测到设备已经与主机断开后,都需要D+或D-上的上拉电阻,来确保下次连接检测的初始化状态是正确的。

在实际的硬件电路中,VBUS设备端会有一个旁路电容,过快的快速插拔导致设备端的VBUS电压因旁路电容的存在导致无法降低到4.01V以下,导致设备端的断开检测设备。

USB主机端的设备断开的检测

USB2.0规定,当主机端的D+或D-的电压小于0.8V时,并且持续TDDIS(最小值为2us)的时间长度时,USB主机端就可以认定设备已经断开。对于USB低速或全设备,可以通过此种方式进行设备断开的检测。

当设备与主机端后,由于主机端的D+或D-端的下拉电阻的存在,会使电压降为0V.
见规范7.1.1
低速全速有效电压范围

对于工作在高速模式下的USB设备,其D+/D-上的电平和低全速的设备不一样,所以检测方式不一样。USB2.0协议规定,对于连接到高速设备的高速主机,D+和D-上的差分信号电平大于625mV时,就可认定USB设备已经断开。当D+和D-的差分电平差不大于625mV时,高速主机的断开检测模块不能认为USB设备已经断开。USB主机会检测到每个高速帧开始的包结速信号,当包结束电压大于检测电压,表示设备断开。在实际应用中,高速设备的断开电压可能在525mV到625mV之间,并且不同的主机的断开检测电路电压不同。
由于主机是通过检测帧开始的包结束来判断设备是否断开,而帧开始的间隔是125us,所以当设备断开后,最多在125us内主机就可以检测到设备已经断开。

自供电USB设备断开检测异常

自供电USB设备断开检测异常,重新连接后,设备工作异常,主机对其进行复位后,再次工作正常。
自供电USB设备断开检测异常

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB 枚举/断开过程
USB设备枚举一般会经过插入、供电、初始化、分配地址,配置,获取设备描述符、获取配置描述符、获取字符串描述符和配置设备这么几个过程。各过程的状态如下表:USB设备的枚举过程USB主机检测到USB设备插入后,就要对设备进行枚举了。枚举的作用就是从设备是那个读取一些信息,知道设备是什么样的设备,然后......
USB设备低速,高速硬件检测机制及断开过程
没有设备连接到主机时:D+和D-数据线上的下拉电阻起作用,使得两者都在低电平;主机端看来就是个SE0状态,同样地,当数据线上的SE0状态持续一断时间后,就被主机认为是断开状态。设备连接到主机时:当主机检到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了。 主机必需在驱动SE0状态以复位设备......
DisplayPort的热插拔检测
热插拔检测(HPD)机制向托管视频GPU的DFP_U提供显示(UFP_U)状态信息。 通过以下方式实现此机制:通过IRQ_HPD中断信号(从低到高切换),指示将显示器(UFP_U)连接到视频源(DFP_U)。在DisplayPort状态更新消息(DisplayPort Status Update)中......
Windows环境下USB设备的插入检测机制
USB主机是如何检测到设备的插入的呢?首先,在USB集线器的每个下游端口的D+和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆上拉电阻。对于全速和高速设备,上拉电阻是接在D+上;而低速设备则......
USB2.0设备连接状态的检测
USB设备支持即插即用,所以对于USB主机端,一个重要的特性就是USB设备的动态连接检测。USB主机端支持设备的连接状态的检测,是需要USB设备的配合的。USB主机端与USB设备端相互配合,实现了USB设备的连接状态检测。USB2.0设备接口电路图我们知道,2.0设备USB引脚接线定义分为四根线,......
USB2.0设备断开状态的检测
相对于USB设备的连接检测,USB设备断开检测也很重要,也更加的隐晦。USB设备断开检测不仅包含USB主机检测到其与设备的断开,也包含USB设备检测到其与主机的连接断开。对于USB主机来说,如果不能正确的识别设备的断开,从而无法回收已经断开的设备使用的资源,将会导致资源的浪费,这种资源的浪费......
USB-C/TYPE-C的角色识别及供电功率检测
TYPE-C的接口双方角色的识别其实是通过TYPE-C接口中的两根CC线进行检测设置的。如下图所示:这里的线缆器件是指有eMark芯片的线缆会用到 Vconn 供电,当一个 CC 确认方向后 Source 端的另一个 CC 会切换成 Vconn为Emark 供电,带有 Emark 芯片的线缆能......
TYPE-C的热插拔检测及正反连接检测机制
TYPE-C接口设备的连接是通过检测CC1和CC2上的电平状态实现的。如下图所示,TYPE-C的接口中1是供电方,接口2是耗电方。当TYPE-C设备的供电方和耗电方通过TYPE-C线缆相连时,对于供电方,接口1通过检测CC1或CC2有下拉电阻,就认为有设备插入。同样的接口2通过检测CC1或CC2有......
usb设备速度检测
检测USB设备速度的流程描述:1.对于低速设备,在DM引脚上拉1.5K。2.对于全速设备,在DP引脚上拉1.5K。3.对于高速设备速度检测,则需要握手协议:a、USB主机检测到全速设备,即:DP引脚上拉1.5K。b、USB主机复位总线,即向总线发送SE0,此SE0持续时间不得小于2.5us。......
使用WinUSB检测USB设备是什么设备速率?高速、低速、全速
WinUSB提供了检测USB设备的速率代码,详见:// Device Information types#define DEVICE_SPEED 0x01// Device Speeds#define LowSpeed 0x01#def......
HID设备空闲态的状态检测
在HIDCLASS.SYSS中使用一个一个周期为1秒间隔的定时器来周期性地检查设备空闲检测。#define HID_IDLE_SCAN_INTERVAL 1scanTime = RtlConvertLongToLargeInteger(-10*1000*1000 * HID_IDLE_SCAN_......
LINUX usb-skeleton断开函数skel_disconnect
skel_disconnect函数很有特点,之所以这么说是我们达到了共鸣。在之前skel_probe函数中,其使用如下代码:struct usb_skel *dev;/* allocate memory for our device state and initialize it */dev ......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!