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 之内,主机就可以检测到设备已经断开。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* 也是从其他地方搞过来的,花了不少积分,我就1分奉献了吧,绝对是好书~ */ 第1章USB概述及协议基础 1.1USB是什么 1.2USB的特点 1.3USB的拓扑结构 1.4USB的电气特性 1.5USB的线缆、插头及插座 1.6USB的插入检测机制 1.7USB的描述符及其之间的关系 1.8USB设备的枚举过程 1.9USB的包结构及传输过程 1.9.1USB的包结构及包的分类 1.9.2令牌包 1.9.3数据包 1.9.4握手包 1.9.5特殊包 1.9.6如何处理数据包 1.10USB的四种传输类型 1.10.1USB事务 1.10.2批量传输 1.10.3中断传输 1.10.4等时传输 1.10.5控制传输 1.10.6端点类型与传输类型的关系 1.10.7传输类型与端点支持的最大包长 1.11本章小结 第2章硬件系统设计 2.1方案及芯片的选定 2.2D12引脚功能说明 2.3D12与AT89S52的连接 2.4串口部分电路 2.5按键部分 2.6指示灯部分 2.7IDE接口部分 2.8单片机部分 2.9元件安装 2.10电路调试 2.11测试程序的编写和调试 2.11.1建立一个工程 2.11.2为工程添加源文件 2.11.3KEIL工具栏及仿真介绍 2.11.4按键驱动的编写 2.11.5串口驱动的编写 2.11.6PDIUSBDl2读写函数及读ID的实现 2.12本章小结 第3章USB鼠标的实现 3.1USB鼠标工程的建立 3.2USB断开与连接 3.3USB中断的处理 3.4读取从主机发送到端点O的数据 3.5USB标准请求 3.5.1USB标准设备请求的结构 3.5.2GET_DESCRIPTOR请求 3.5.3SET_ADDRESS请求 3.5.4SETCONFIGURATION请求 3.6设备描述符的实现 3.7设备描述符的返回 3.8设置地址请求的处理 3.9配置描述符集合的结构 3.9.1配置描述符的结构 3.9.2接口描述符的结构 3.9.3端点描述符的结构 3.9.4HID描述符的结构 3.10配置描述符集合的实现以及返回 3.11字符串及语言ID请求的实现 3.12设置配置请求的实现 3.13报告描述符的结构及实现 3.14报告的返回 3.15BusHound工具的简介 3.16本章小结 第4章USB键盘的实现 4.1USB键盘工程的建立 4.2设备描述符的实现 4.3配置描述符集合的实现 4.3.1配置描述符 4.3.2接口描述符 4.3.3HID描述符_ 4.3.4端点描述符 4.4字符串描述符 4.5报告描述符 4.6输入和输出报告的实现 4.7 USB键盘实例的测试 4.8再谈USBHID的报告描述符 4.9带鼠标功能的USB键盘(方法一) 4.10带鼠标功能的USB键盘(方法二) 4.11多媒体USB键盘 4.12本章小结 第5章用户自定义的USBHID备 5.1MyUsbHid工程的建立 5.2描述符的修改 5.3报告的实现 5.4对用户自定义的USBHID设备的访问 5.5访问HID设备时所用到的相关函数 5.5.1 获取HID设备的接口类GUID的函数 5.5.2获取指定类的所有设备信息集合的函数 5.5.3从设备信息集合中获取一个设备接口信息的函数 5.5.4获取指定设备接口详细信息的函数 5.5.5打开设备的函数 5.5.6获取HID设备属性的函数 5.5.7从设备读取数据的函数 5.5.8往设备写数据的函数 5.5.9通过控制端点O读取报告的函数 5.5.10通过控制端点O发送报告的函数 5.5.11关闭句柄的函数 5.5.12需要包含的库文件 5.6访问USBHID设备的上位机软件的实现 5.6.1上位机程序编写的思路 5.6.2查找及打开HID设备的代码 5.6.3读输入报告线程的代码 5.6.4写输出报告的代码(发送LED的状态) 5.6.5写输出报告线程的代码 5.6.6线程的创建以及设备插拔事件的注册 5.6.7对设备状态改变事件的处理 5.7软件界面以及使用方法 5.8本章小结 第6章USB转串口 6.1串口家族历史 6.2串口接头的引脚分布及功能 6.3USB转串口的实现方法 6.4设备描述符 6.5字符串描述符 …… 第7章USBMIDI键盘 第8章U盘 第9章自定义USB设备及驱动开发 第10章USB过滤驱动开发 附录第3章实例的完整调试信息 参考文献 后记 ……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值