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

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

3天内不再提示

USB设备枚举过程

漫谈嵌入式 来源:漫谈嵌入式 2023-06-25 10:08 次阅读

USB 设备状态切换

前面介绍了USB 设备的状态如下:

Attached

Powered

Default

Address

Configured

Suspended

34cf887e-11d0-11ee-962d-dac502259ad0.png

设备插入后,先进入【attached】 状态,然后hub 端口配置进入【powered】 状态;主机发起复位信号,设备进入【Default】状态,然后分配设置地址,设备配置。

35194fae-11d0-11ee-962d-dac502259ad0.png

USB 设备识别

USB 内部连接

35478112-11d0-11ee-962d-dac502259ad0.png

1):高速数据传输。产生高速K/J 信号。D+/D- 上电流为17.78ma。

(2):用于低速获取全速传输。产生SE0

(3):差分数据接收。用于接收高速数据。

(4):传输数据包检测。当接受差分信号低于数据阈值VHSSQ,数据无效

(5):低速差分数据接收。用于接收低速数据

(6):高速端口检测。当连接器电压大于625mv 必须指示设备断开。当电压小于525mv 设备连接

(7):单端接收。用于LS/FS

(8):下拉电阻(15k)。上游端口使用。一般 Host端

(9):上拉电阻(1.5k)。下游端口使用。Device

USB 硬件连接

低速设备

35aed5ec-11d0-11ee-962d-dac502259ad0.png

全速/高速设备

35dfe8a8-11d0-11ee-962d-dac502259ad0.png

整个usb 系统对于上游端口(一般是hub 或者host),D+ D- 连接着RPD(15k)

对于下游端口,一般是usb device。根据速度模式不同匹配不同的终端电阻。LS 设备 D- 连接着RPU(1.5k)。FS/HS D+ 连接着RPU(1.5k)

可以看到LS 与 FS 信号电平完全相反。

从硬件分布可以看到。一个usb设备 可以同时支持LS/FS,HS/FS,但是不能同时支持LS 和 HS

对于HS 与 FS 的区分,依赖于高速握手信号(handshake)和 终端电阻RS(45)的挂载及切换。

设备断开与连接

设备断开:

360c2a44-11d0-11ee-962d-dac502259ad0.png

设备连接:

对于高速设备,它先作为全速设备被识别出来,然后再被识别为高速设备。工作于高速模式时,D+的上拉电阻是断开的,所以对于工作于高速模式的USB设备,无法通过D+的引脚电平变化监测到它已经断开。

工作于高速模式的设备,D+、D-两边有RS 45欧姆的下拉电阻,用来消除反射信号:

36713272-11d0-11ee-962d-dac502259ad0.png

当断开高速设备后,Hub发出信号,得到的反射信号无法衰减,Hub监测到这些信号后就知道高速设备已经断开。

36a90224-11d0-11ee-962d-dac502259ad0.png

速度枚举

36e18ab8-11d0-11ee-962d-dac502259ad0.png

设备插入,进入powered 状态

首先进入FS 检测。USB device 进入IDLE 状态

主机驱动产生SE0

Device responds Chirp K 信号。

Host 回应Chirp K 和 Chirp J 对至少保持3对

移除D+ 上RPU 并挂载高速设备终端电阻RS (45Ω),产生高速 J/K 信号

进入HS IDLE 状态。

SOF

整个过程D+ D- 上电平变化。

全速 IDLE:D+ 为高电平,D- 低电平

全速ChirpJ:17.78ma * (15k || 45Ω) ≈ 800mv

高速J:17.78ma * (45Ω || 45 Ω) ≈ 400mv

高速 IDLE:D+, D- 接近低电平

高速握手信号Handshake

高速握手信号是用来进行速度协商,区分FS/HS。当检测到以下行为时将进入高速握手:

如果一个设备从suspend 状态恢复时,则在设备检测到SE0 支持不少于2.5us 立即进入高速握手。---- 挂起

如果设备正在从全速设备进行复位,则设备在检测到SE0 不少于2.5us 不超过3ms 内,立即进入高速握手 ---- 上电

如果设备从高速状态进行复位,那么设备在恢复到全速状态之前等待不少于3ms。设备对总线状态进行采样,并检查se0,不少于100us,立即进入高速握手。---- 复位

总结

371114ea-11d0-11ee-962d-dac502259ad0.png37562c60-11d0-11ee-962d-dac502259ad0.png

整个USB 高速设备枚举流程大致如下:

设备上电,Attached 检测,在100ms 内Vbus > 4.01 V

Hub poweron, 100ms 内D+/D- 电平稳定

主机发出复位信号SE0, 持续10ms(10ms 完成速度枚举)

SE0 期间进行高速握手信号

维持D+ 设备发出Chirp K

hub 回应Chirp K 和 Chirpj 对

移除上拉电阻,并挂载高速45Ω等效对地电阻,产生高速J/K 信号

设备准备接收Set_Address 请求

开始描述符获取(设备描述符/配置描述符/...)

主机可访问设备






审核编辑:刘清

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

    关注

    5

    文章

    360

    浏览量

    30621
  • 连接器
    +关注

    关注

    98

    文章

    14519

    浏览量

    136527
  • USB设备
    +关注

    关注

    0

    文章

    57

    浏览量

    16335
  • RPU
    RPU
    +关注

    关注

    0

    文章

    7

    浏览量

    6816

原文标题:USB 设备枚举过程

文章出处:【微信号:漫谈嵌入式,微信公众号:漫谈嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32H750 FATFS文件系统挂载USB驱动,USB驱动枚举过程一直处于ready状态是为什么?

    就是FATFS文件系统挂载USB驱动,读写U盘,我一直不成功USB驱动枚举过程一直处于ready 状态,文件系统挂载不成功!请问大家有知道怎么解决的吗?或者类似案列参考一下!谢谢!
    发表于 03-27 06:52

    调试USB hots的时候,枚举过不去,为什么?

    调试USB hots的时候,枚举过不去,第一步的状态都不对。我看数据是中断函数USBH_OTG_ISR_Handler返回的,请问哪位有相关说明发一下,现在总是触发gintsts.b.sofintr中断。谢谢!
    发表于 04-10 07:28

    USB入门总结(1)枚举(转载)

    有新的设备插入了,但是不知道插进来个什么东西,所以就开始询问它是什么设备,怎么用,负荷能力怎么样。这个时侯就进入了枚举过程。因为刚刚插入的设备没有分配地址,就用默认地址0,首先发送一个
    发表于 11-17 08:27

    USB枚举过程是怎样的?

    USB枚举过程是怎样的?谁能描述下?谢谢
    发表于 11-21 15:34

    USB HID设备枚举失败,返回STALL(请大侠们帮帮手,急)

    : 插入USB接口,计算机可以识别为HID设备,如下图所示: 但查看设备状态为“该设备无法启动。(代码10)”,如下图所示: 用Bus Hound监控,
    发表于 05-01 14:34

    圈圈教你玩USB(全书)

    机制1.7USB的描述符及其之间的关系1.8USB设备枚举过程1.9USB的包结构及传输过程1
    发表于 01-07 12:14

    USB枚举和HID枚举实例

    在说枚举过程之前,先把一些必须了解的说明白一.USB包结构和分类包的共同特点是,都是以同步域开始,接着是PID,最后以EOP结束,而设备端则靠SEI(串行接口引擎,硬件上实现)来进行这些底层的处理
    发表于 07-06 06:02

    USB设备检测过程USB总线枚举有哪些步骤

    )。USB 总线枚举过程中,USB 设备需要经历后 4 个状态,如图 6-12 所示。USB 集线器负责监测
    发表于 11-09 09:30

    USB枚举失败

    我使用的芯片是STM32F105,Full-speed模式,ST官网的USB-OTG的库,现在枚举过程总是失败,电脑设备管理器已经可以显示USB人体输入
    发表于 05-10 06:23

    FAQ0094 AT32 USB 不断开连接, USB 设备重新枚举操作

    本帖最后由 贪玩 于 2022-5-20 18:32 编辑 USB 不断开连接, USB 设备重新枚举操作Questions:USB
    发表于 02-07 20:24

    使用MFC枚举USB设备的程序免费下载

    本文档的主要内容详细介绍的是使用MFC枚举USB设备的程序免费下载。
    发表于 07-25 17:36 1次下载
    使用MFC<b class='flag-5'>枚举</b><b class='flag-5'>USB</b><b class='flag-5'>设备</b>的程序免费下载

    USB设备枚举过程的详细资料说明

    USB设备在正常工作以前,第一件要做的事就是枚举枚举就是让HOST认得这个设备,并且为该设备
    发表于 05-09 08:00 3次下载
    <b class='flag-5'>USB</b><b class='flag-5'>设备</b><b class='flag-5'>枚举过程</b>的详细资料说明

    电脑是如何识别你插上了USB设备

    次当插上鼠标或者U盘的时候,电脑是怎么知道是什么设备的呢?这里用到的就是枚举了。枚举,其实就是让HOST认识这个USB涉笔,并且为该设备准备
    的头像 发表于 07-14 10:25 2.2w次阅读
    电脑是如何识别你插上了<b class='flag-5'>USB</b><b class='flag-5'>设备</b>

    CDC设备枚举过程解析

    本篇笔记将详述 CDC设备枚举过程,让大家对整体的枚举过程有个概念。
    的头像 发表于 10-09 11:43 2751次阅读
    CDC<b class='flag-5'>设备</b><b class='flag-5'>枚举过程</b>解析

    USB枚举过程

    每当一个`USB`外设接入主机后,系统会提示用户`USB`设备接入了,并不停的查找对应的驱动文件,如果找到驱动文件,则加载对应驱动;如果没有找到,则提示用户没有对应的驱动,需要用户主动去配置驱动。
    的头像 发表于 06-25 14:14 2572次阅读
    <b class='flag-5'>USB</b>的<b class='flag-5'>枚举过程</b>