0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何适时的知道是否有外部USB设备插入电脑USB端口的呢?

中颖电子 来源:中颖电子 作者:中颖电子 2022-05-05 16:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

USB(UniversalSerialBus),其中文为通用串行总线,是一个外部总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人计算机和计算机周边配套的通信。标准USB接口通过四线实现主机跟设备之间的通信连接(Vdd/D+/D-/GND),每台主机最多可以连接127个外部设备,并且不会损失通信速度。常用的电脑周边USB设备有鼠标、键盘、U盘、音响、摄像头等等。那么一台主机(电脑),是如何适时的知道是否有外部USB设备插入电脑USB端口的呢?

一、USB端口及设备硬件架构

如下图所示,图(1)为USB主机接口内部示意图,图2为支持全速通信的USB设备端,图3为支持低速通信的USB设备端口。

251505de-cc4a-11ec-bce3-dac502259ad0.png

二、USB端口插入外部设备识别

1)全速/低速设备插入识别

USB支持三种类型的传输速率:1.5Mb/s的低速传输、12Mb/s的全速传输和480Mb/s的高速传输。当主控制器或集线器的下行端口上没有USB设备连接时,其D+和D-线上的下拉电阻使得这两条数据线的电压都是近地的(图1);当全速/低速设备连接以后,电流流过由集线器的下拉电阻和设备在D+/D-的上拉电阻构成的分压器。由于下拉电阻的阻值是15KΩ,上拉电阻的阻值是1.5KΩ,所以在D+/D-线上会出现大小为(Vcc*15/(15+1.5))的直流高电平电压。当USB主机探测到D+/D-线的电压已经接近高电平,而其它的线保持接地时,它就知道全速/低速设备已经连接了(D+为高电平,主机判定接入全速设备;如果检测D-为高电平,则接入的USB设备为低速设备)。

2)高速设备插入识别

高速设备初始是以一个全速设备的身份出现的,即和全速设备一样,D+线上有一个1.5k的上拉电阻。USB2.0的hub把它当作一个全速设备,之后,主机hub和设备通过一系列握手信号确认双方的身份。在这里对速度的检测是双向的,比如高速的hub需要检测所挂上来的设备是高速、全速还是低速,高速的设备需要检测所连上的hub是USB2.0的还是1.x的,如果是前者,就进行一系列动作切到高速模式工作,如果是后者,就以全速模式工作。

总结下来,高速设备的识别过程如下:

252cabb2-cc4a-11ec-bce3-dac502259ad0.png

1)D+/D-上拉电阻确定为全速/高速设备

2)主机hub检测到有设备插入,向主机通报,主机发送Set_Port_Feature请求让hub复位新插入的设备。设备复位操作是hub通过驱动数据线到复位状态SE0(Single-ended 0,即D+和D-全为低电平),并持续至少10ms(中颖设备中产生bus reset信号)。

3)如果是高速设备,看到复位信号后,通过内部的电流源向D-线持续灌大小为17.78mA电流。因为此时高速设备D+的1.5k上拉电阻还未撤销,在hub端,全速/低速驱动器形成一个阻抗为45欧姆(Ohm)的终端电阻,两个电阻并联后仍是45欧姆左右的阻抗,所以在hub端看到一个约800mV的电压(45欧姆*17.78mA),这就是Chirp K信号。Chirp K信号的持续时间是1ms~7ms。

4)在hub端,虽然下达了复位信号,并一直驱动着SE0,但USB2.0的高速接收器一直在检测Chirp K(D+位0,D-为1)信号,如果没有看到Chirp K信号,就继续复位操作,直到复位结束,之后就在全速模式下操作。如果只是一个全速的hub,不支持高速操作,那么该hub不理会设备发送的Chirp K信号,之后设备也不会切换到高速模式。

设备发送的ChirpK信号结束后100us内,hub必须开始回复一连串的KJKJKJ….(K/J为USB信号端口的两种状态,K状态D+为高D-为低,J状态D+为低D-为高)序列,向设备表明这是一个USB2.0的hub。这里的KJ序列是连续的,中间不能间断,而且每个K或J的持续时间在40us~60us之间。KJ序列停止后的100~500us内结束复位操作。hub发送ChirpKJ序列的方式和设备一样,通过电流源向差分数据线交替灌17.78mA的电流实现。

5)设备端确定上述高速流程后,断开D+上拉1.5k电阻并连接D+/D-上的高速终端电阻。

三、USB端口设备枚举

通过上述过程,主机只是知道有新的设备插入了,但是不知道插进来个什么东西,所以就开始询问它是什么设备,怎么用,负荷能力怎么样。这个时候就进入了USB协议的枚举过程。USB枚举过程简单来说如下:

1)获取设备描述符

地址:默认为0

主机:发送获取描述符指令包

设备:设备接到包后解析,然后按固定格式返回设备描述符信息

目的:主机获取USB设备的基础属性,比如数据传输方式,数据长度,设备最大电流负荷,USB版本,VID/PID等。

2)配置描述符

分配地址:主机给设备分配一个属于它的地址;

主机:给设备一个地址后,就开始询问设备的具体配置(配置描述符)。

设备:解析主机信息,上传设备配置信息;

目的:配置上传设备描述符、字符串描述符等;HID设备还要上传报告描述符。

到此,主机就已经完全识别了端口插入的设备是什么,将怎么工作。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 下拉电阻
    +关注

    关注

    4

    文章

    154

    浏览量

    21241
  • usb
    usb
    +关注

    关注

    60

    文章

    8372

    浏览量

    281695
  • 通信连接
    +关注

    关注

    0

    文章

    7

    浏览量

    6327
  • 中颖电子
    +关注

    关注

    5

    文章

    179

    浏览量

    8228

原文标题:主机识别USB设备原理简介

文章出处:【微信号:SINO_25181447,微信公众号:中颖电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    插入U盘设置为主机模式,插入电脑设置为从机模式?芯源的USB支持吗?

    插入U盘设置为主机模式,插入电脑设置为从机模式?芯源的USB支持吗?
    发表于 11-18 07:42

    USB2534D USB 2.0高速4端口集线器控制器技术解析

    应用的高级特性。USB2534D完全符合USB 2.0规范和USB 2.0链路电源管理附录,将作为全速集线器或全速/高速集线器连接到上游端口。4端口
    的头像 发表于 09-29 10:54 507次阅读
    <b class='flag-5'>USB</b>2534D <b class='flag-5'>USB</b> 2.0高速4<b class='flag-5'>端口</b>集线器控制器技术解析

    电脑无法识别K230,MTP USB设备无法启动怎么解决?

    用其他人的电脑尝试了,舍友电脑没安装过杂七杂八的东西,也没用过K230,连上去就能识别,便携设备那一栏是叫 CanMV 也有虚拟U盘 怀疑是电脑
    发表于 07-29 09:38

    使用CYUSB3014-BZXI通过USB 3.0端口下载固件失败的原因?

    当将我们的定制主板连接到我的台式电脑时,它无法被识别或仅被检测为 USB 2.0 设备 - 即使使用 USB 3.0 端口也是如此。问题原来
    发表于 07-16 07:25

    USB设备设备ID号按照什么逻辑进行分配?

    这样分配的。 我想要多个USB设备插入时,第一个设备ID号应该为0,第二个设备ID号应该为1,以此类推。 问题1: 请问,
    发表于 07-16 06:29

    STM32H747的USB无法连接到电脑电脑提示“未知USB设备,(设备描述符请求失败)”,怎么解决?

    USB部分电路抄的 arduino GIGA RI WiFi。通过BOOT0拉高强制进入DFU 和 正常上电链接都不行,电脑显示一致。“未知USB设备,(
    发表于 07-11 08:24

    CY7C65215-32LTXI插入USB查到PC上无法识别到USB端口怎么解决?

    目前的现象就是板子通过USB查到PC上无法识别到USB端口,没有任何反应,电源都是正常的.帮看下电路图设计是否问题,谢谢!
    发表于 05-28 06:47

    TPS2540 USB 充电端口控制器数据手册

    TPS2540/40A 和 TPS2541/41A 是限流 USB 端口电源开关与 USB 2.0 高速数据线 (D+/D-) 开关和 USB 充电
    的头像 发表于 05-26 14:14 583次阅读
    TPS2540 <b class='flag-5'>USB</b> 充电<b class='flag-5'>端口</b>控制器数据手册

    TPS2540A USB 充电端口控制器和 2.5A 电源开关数据手册

    TPS2540/40A 和 TPS2541/41A 是限流 USB 端口电源开关与 USB 2.0 高速数据线 (D+/D-) 开关和 USB 充电
    的头像 发表于 05-26 14:01 760次阅读
    TPS2540A <b class='flag-5'>USB</b> 充电<b class='flag-5'>端口</b>控制器和 2.5A 电源开关数据手册

    CYUSB3014 USB 3.0故障的原因?

    我正在编写一个基本应用程序,它可以将固件数据写入 EEPROM(通过 Enpoint 0),并有 2 个批量端点与主机应用程序通信(请参阅下面的源代码)。 如果我将设备插入 USB 2.0
    发表于 05-13 07:05

    是否可以与USB2.0集线器 (CYUSB2302) 共享USB2通道SS线路直接到USB3.0端口

    我们的SoM iMX8提供一个USB3.0 接口。 但在我们的应用中我们需要一个完整的USB3.0 端口以及USB2.0端口。 在路由
    发表于 05-08 07:38

    如何将CYPD3125用于DRP USB端口

    电源时),该端口确实作为主机工作。 我是否错误地配置了我的设备? 我正在使用的当前配置和我的 CYPD3125 原理图如下所示。 港口信息: 设备 ID 超快速视频输出 DFP
    发表于 05-06 11:02

    为什么 USB-PD 需要 TDS 保护

    智能手机、智能手表、耳机、游戏机、WIFI 适配器、平板电脑和笔记本电脑都至 少具备一个 USB 端口。以前每个设备都需要一个专用充电器因此
    发表于 04-25 16:18

    如何区分usb-typec是插入电脑还是插入其他电源?

    使用的是01的板子,要做成在usb插入电脑时,使用uvc相机, usb插入电源时使用显示屏播放 如何判断
    发表于 04-24 08:23

    DPP6401是否支持USB烧录固件更新?

    现在用DPP6401光机厂说可以USB烧录固件升级,现在电脑无法检测到USB设备,是DPP6401正常启动后插入
    发表于 02-26 06:12