USB2.0(一):基础

news/2024/11/27 2:11:29/

一、总线标准

  • USB1.1:支持12Mbps全速率(FullSpeed)和1.5Mbps低速率( HalfSpeed)
  • USB2.0:支持480Mbps高速率(High Speed),兼容1.1
  • USB3.0:支持5Gbps超高速率(超速传输),兼容2.0

二、硬件结构

  1. USB2.0工作模式分为低速(1.5Mb/s)、全速(12Mb/s)、高速(480Mb/s);
    低速和全速是电压驱动型,高速是电流驱动型
  2. USB2.0 物理层为 4 根线,差分线:D+D-  电源线:VCC、GND
    其中 D+D- 共有 种状态:
    Chirp J State:D+ = 1, D- = 0
    Chirp K State:D+ = 0, D- =1
    SE0:D+ = D- = 0
    SE1:D+ = D- = 1
  3. ​usb低速设备,D- 端口上拉1.5K电阻至VCC,空闲状态(D+、D-)显示为01(Chirp J);
    usb全速设备,D+端口上拉1.5K电阻至VCC,空闲状态(D+、D-)显示为10(Chirp K);
    Chirp JChirp K 状态只出现在高速模式的速度检测握手协议中,即设备从全速识别为高速设备的状态转换过程中。

  4. Chirp J K
    高速模式是电流驱动,其 J / K 信号是由一个 17.78uA 的电流源向 D+D- 数据线产生
    当 USB主机进入高速模式后,主机和设备两端的 D-D+ 全部断开 D+ 数据线上的上拉 1.5K 电阻,并挂载 45Ω 的等效终端电阻(这两个电阻并联之后为约为22.5Ω),因而可以在D+ 或者D- 数据线上形成约为 400mV 的高速 J / K 信号。

    高速设备在连接到 USB主机时默认为全速模式,因而此时USB设备端还未挂接 45Ω 终端电阻,而是挂载了1.5K的上拉电阻,此时USB设备端的1.5K上拉电阻和主机端的 45Ω 并联后约45Ω,因此会在 D+D- 上会形成 800mV(17.78x45)的差分信号​​​​

三、握手过程

  1.  usb设备接入USB主机后,usb设备检测到 VBUS 电源后就会挂载上拉1.5K电阻;

    usb设备检测到 D+或者D-上有高电平产生,便认为已接入主机
    USB主机检测到D+或D-上电压从0V变化到2V以上,便确定usb设备已经连接主机
    USB主机确认usb设备连接后,发出一个复位信号,使设备进入初始状态
    复位信号(SE0状态)持续时间在10ms以上,在此时间内,系统完成整个高速握手协议

  2. usb设备检测到复位信号后,在 ≥2.5us且≤3ms 的时间内开始发起高速握手协议,确保本身1.5K的上拉电阻已经挂载,且45R 的等效对地电阻没有挂载,之后usb设备端向 D- 流入17.78mA的电流,然后USB主机端的45R 的等效对地电阻和下拉电阻15K 并联,总线上产生一个大约为800mV的电压,持续至少1ms,这就是Chirp K 信号,信号结束后,USB主机恢复SE0 状态

  3. USB主机检测到信号变化,便认为usb设备的Chirp K 信号结束


    如果主机检测到Chirp K 的信号没有持续2.5us以上,则认为检测不到,并会一直驱动总线为SE0 状态 直至复位信号结束,高速信号握手协议结束,主机和设备都会工作在全速模式。
    如果主机检测到Chirp K 信号持续2.5us以上,则认为是有效状态,开始发送 三对K/J 序列,发送的时间必须是在Chirp K信号结束后的100us内,每个单独发送的Chirp KChirp J状态都必须是连续的且持续时间是40~60us,如果中间USB总线持续3ms没有任何的状态,设备就会进入挂起模式,Chirp K/J信号需要持续发送直到复位信号结束前的100us~500us为止。

    主机端完成了三对K/J信号发送,设备端检测到三对K/J信号后,在500us内,将D+上的1.5K的电阻移除,并挂载高速的45R 的等效对地电阻,进入高速模式,此时与主机的45R并联等效电阻变成了22.5R,D+ D- 的电压变成400mV。


http://www.ppmy.cn/news/61873.html

相关文章

ScriptableObject上的prefab内容暂用,ScriptableObject详解

ScriptableObject是Unity引擎中的一种特殊类型,它允许你创建可扩展的、自定义的数据容器,用于在项目中存储和管理数据。它们非常适合存储那些不直接关联场景对象的数据,例如配置数据、游戏设置、AI行为树、技能和物品属性等。 ScriptableObj…

全方位揭秘!大数据从0到1的完美落地之运行流程和分片机制

一个完整的MapReduce程序在分布式运行时有三类实例进程: MRAppMaster: 负责整个程序的过程调度及状态协调MapTask: 负责Map阶段的整个数据处理流程ReduceTask: 负责Reduce阶段的整个数据处理流程 当一个作业提交后(mr程序启动),大概流程如下&#xff1…

家用洗地机哪款好?2023入门级智能洗地机

现代社会对卫生日益重视,尤其是在工业、商业和公共场所要求越来越高。传统清洁方式不能满足人们的需求,清洁工作效率低且卫生难以保证。而洗地机的出现,正是为了解决这些问题。它能够深入清洁地面,有效防止不必要的污垢、细菌和病…

【Linux】软件包管理器 yum和编辑器-vim的基本使用

文章目录 一、yum背景知识1.商业生态2.开源生态3.Linux软件生态本土化 二、yum的基本使用1.什么是软件包2.查看软件包3.安装软件4.卸载软件5.rzsz 三、vim的基本使用1.vim的基本概念2.vim的基本操作3.vim命令模式命令集4.vim末(底)行模式命令集5.操作总结 四、简单vim配置1.vim…

高级【IO】

目录 一.五种IO模型 (1)阻塞IO: (2)非阻塞IO (3)信号驱动IO: (4)IO多路转接 (5)异步IO 二.高级IO概念 1.同步通信、异步通信 2.阻塞、非阻…

Scala Option类型,异常处理,IO,高阶函数

Option类型 实际开发中, 在返回一些数据时, 难免会遇到空指针异常(NullPointerException), 遇到一次就处理一次相对来讲还是比较繁琐的. 在Scala中, 我们返回某些数据时,可以返回一个Option类型的对象来封装具体的数据,从而实现有效的避免空指针异常。S…

SpringBoot 自定义注解实现Redis缓存功能

背景 最近小A的公司要做一个大屏可视化平台,主要是给领导看的,领导说这个项目要给领导演示,效果好不好直接关系到能不能拿下这个项目,领导还补了一句“这项目至少是百万级的,大伙要全力以赴”,早上小A还想…

js高级知识汇总一

目录 1.怎么理解闭包? 2.闭包的作用? 3.闭包可能引起的问题? 4.变量提升 5.函数动态参数 6.剩余参数 ...(实际开发中提倡使用) 7.展开运算符 8.箭头函数 9.解构赋值(数组、对象) 10 创…