USB协议学习

文章目录

    • USB发展背景
      • 发展变化
      • 速度等级
      • 通讯接口
    • 四种传输
    • 主设备 & 从设备
      • 主设备
      • 从设备
    • 连接与检测
      • 高速设备与主机连接
      • USB总线常见的几种状态
    • 枚举过程
      • 特点
    • 控制传输
    • 学习资料

USB发展背景

发展变化

  • USB1.1:规范了USB低全速传输;

  • USB2.0:规范了USB高速传输,采用NRZI(反向不归零)编码(NRZI采用8bit编码方式),位填充(在数据进行NRZI编码前,每6个连续的1信号之后都会插入1个0信号,以避免电平不能突变丢失同步);

  • USB3.0:采用8b/10b编码,增加一对超高速差分线,供电5V/0.9A

  • USB3.1:采用采用128b/132b编码,速度提高一倍,供电20V/5A,同时增加了A/V影音传输标准;

  • USB3.2:增加一对超高速传输通道,速度再次翻倍,只能在C型接口上使用。

速度等级

1.5Mbps / 12Mbps / 480Mbps / 5Gbps / 10Gbps / 20Gbps

通讯接口

四种传输

  • 控制传输:主机获取设备信息、状态,选择设备配置等,传输的数据量不大,但数据传输的正确性有很高的保障,一般适用于信息的获取、命令的控制、参数的配置等;

  • 中断传输:收发数据量少、周期性传输,USB会为中断传输保留一定的总线带宽,用于保证其能在规定的时间周期内得到分配,适用于键盘、鼠标等设备;

  • 批量传输:利用任何可获得的总线带宽进行数据传输,**对传输的时间和速率没有要求,但必须保证数据的正确性,**可在总线带宽比较紧张的时候为其他的传输方式让出时间,而将本身的传输延迟,但当总线比较空闲时,可以很快的速率传输来发送大量的数据,比较适用于存储类的产品、打印机、扫描仪等;

  • 等时传输:恒定速率、没有差错控制和重传机制的传输,不能保证每次传输都是成功的,比较适用于音/视频类的产品。

主设备 & 从设备

主设备和从设备之间的通讯物理通道:主设备分配的地址/默认地址0 + 从设备固有端点号。

主设备和从设备之间的时间长度单位:帧(1ms,低/全速)/微帧(125us,高速)。

主设备和从设备之间协议处理基本单位:事务处理。


主设备

USB主设备一般具有以下功能:

  • 检测从设备的插拔;
  • 管理主从通讯之间的控制流;
  • 管理主从通讯之间的数据流;
  • 记录主设备状态和从设备动作信息;
  • 控制主控制器和从设备之间的电气接口。

从设备

  • 集线器
    支持最多5个集线器(不包括主设备的根集线器)级联。

  • 功能设备
    内部包含有描述自身功能和资源需求的配置信息。

连接与检测

当端口没有设备连接时,其D+和D-的电压均为0V,当主机检测到此状态维持至少2.5us,则认为没有设备连接。

当低速设备连接到主机时,D-上的电压为3V,D+上的电压仍然为0V,当主机检测到该状态维持2ms,则认为有设备连接且当前设备为低速设备。


当全速设备连接到主机时,D+上的电压为3V,D-上的电压仍然为0V,当主机检测到该状态维持2ms,则认为有设备连接且当前设备为全速设备。

高速设备与主机连接

  • 高速设备先以全速设备结构和主机连接,它们之间做双向检测;
  • 主机输出总线复位信号期间,USB设备以是否可以产生Chip K信号来表明高速或全速身份;
  • 在Chip K信号后,主机是否产生KJ序列来表明高速主机身份或全速主机身份;
  • 匹配到高速主机和高速设备后,USB设备断开D+上的1.5K的上拉电阻,连接D+/D-上的高速终端电阻,进入默认的高速状态,否则以全速状态通信。

USB总线常见的几种状态

  • 正常工作:即总线正常活动,需要随时进行传输,总线上存在周期性(全速:1ms/次;高速:125us/次)的令牌包;
  • 总线复位:由主机控制器或集线器的下行端口产生,一般出现于主机和设备刚连接后,也出现于一些传输出错或异常的情况下;
  • 总线挂起:总线无活动大于3ms。

枚举过程

特点

  • 主设备连接识别从设备必须的过程;
  • 由多个控制传输构成;
  • 经过地址0(缺省地址)到其他地址(主设备分配地址)的通信;
  • 对于挂载多个USB从设备的系统,主设备逐一进行枚举操作。

控制传输

  • 所有USB从设备必须支持的传输方式,固定使用端点0通信;
  • 控制传输的方向是双向的;
  • 控制传输多用于主设备和从设备进行信息、功能、状态等方面的获取和修改。


学习资料

B站发现了一个很宝藏的课程,如果你想深入了解USB的话可以看看哦。

  • USB技术应用与开发

原文:USB协议学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt QRadioButton详解

QRadioButton 是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选按钮通常呈现给用户一个“多选一”的选择,即在一组单选按钮中,一次只能选中一个按钮。 重要方法 QRadioButton(QWidget…

内核——全局句柄表

实验环境:win7 x32 首先引入一段基础概念; 1.在windows下所有的资源都是用对象的方式进行管理的(文件、进程、设备等都是对象),当要访问一个对象时,如打开一个文件,系统就会创建一个对象句柄,通过这个句柄…

windows系统类似于linux的nohup命令后台启动jar服务

一、首先新建一个后缀名为.bat文件 二、将jar包放在与jar包同一个路径下 三、编写.bat文件 echo off start javaw -Xms512m -Xmx1024m -XX:PermSize256m -XX:MaxPermSize512m -XX:MaxNewSize512m -jar xxxxx-22900.jar >> StartupLog.log 2>&1 & exit 四…

PC端查看历史消息,鼠标向上滚动加载数据时页面停留在上次查看的位置

在工作中,碰到PC端类似聊天框,鼠标向上滚动,触顶时分页获取数据;但是将接口获得的数据连接到循环数组数据前面时,由于数据变化,滚动条会直接滚动到最顶端,显然这个效果不友好。最好的效果就是&a…

随着飞行汽车的亮相,在环保方面有什么保护措施吗

飞行汽车具备环保潜力,采用电动或混合动力系统减少污染,并拓展应用场景。多家企业布局,沃飞长空作为国内eVTOL(电动垂直起降航空器)研发的领先企业,在环保这一点做的非常到位,AE200采用纯电动力系统,零碳排放,静默飞行…

【Excel】常用公式记录

这里写自定义目录标题 根据身份证号获取年龄 根据身份证号获取年龄 替换公式中的 A2 TEXT(SUMPRODUCT(DATEDIF(TEXT(IF(LEN(A2)15,19,0)&MID(A2,7,LEN(A2)/2-1),“#0-00-00”),NOW(),{“y”,“ym”,“md”})*{10000,100,1}),“00岁零00个月零00天”)

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 云直播服务-》鉴权直播 -》播放 ,左键单击可以拉取矩形框,放大选中…

Android笔记(三十一):Deeplink失效问题

背景 通过deeplink启动应用之后,没关闭应用的情况下,再次使用deeplink会失效的问题,是系统bug导致的。此bug仅在某些设备(Nexus 5X)上重现,launchMode并且仅当应用程序最初通过深层链接启动并再次通过深层…

人工智能能改变哪些行业?深入分析应用场景与前景

人工智能(AI)技术的发展历程可追溯到20世纪50年代。最初,AI的概念是由计算机科学家阿兰图灵提出的,他设想了一种能够模拟人类思维的机器。随后,在1956年的达特茅斯会议上,人工智能作为一门独立学科正式诞生…

【缓存与加速技术实践】Redis数据类型

文章目录 Redis 数据类型String 数据类型List 数据类型Hash 数据类型Set 数据类型Sorted Set 数据类型 Redis 数据类型 Redis支持五种主要的数据类型: String(字符串)、List(列表)、Hash(散列)…

【java】以<内存图>的形式理解数组的增删

数组 数组在内存里地址连续 定义一个数组,数组中的数据类型一样(二进制串位数相同),故可以直接通过下标获取数组中的内容。 基本类型存的是值,引用类型存的是地址 数组的下标从0开始。 初始值: Int :0 char &am…

Swift 开发教程系列 - 第1章:Swift 简介与开发环境配置

在开始开发 Swift 应用之前,了解 Swift 语言的背景和设置开发环境非常重要。接下来,我们将逐步介绍 Swift 的基本概念,并带你完成开发环境的安装和项目创建。 1.1 Swift 简介 Swift 是由 Apple 开发的一种现代化编程语言,于 201…

时代变了!Megabit兆比特英伟达纳入道琼斯指数,英特尔被取代

△英特尔VS英伟达市值对比(截至今年2月) 最新消息,英伟达将在2024年11月8日替代英特尔成为道琼斯工业平均指数的组成成员。 Megabit兆比特自成立以来,Megabit凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 这是历史最悠久的美…

算法竞赛(Python)-大事化小,小事化了(分治)

文章目录 前言一、数乘型分治1 疯狂的细胞分裂 二 矩阵乘法的分治1 神秘数字 三 、线性结构问题的分治1 自助餐厅(1)2 自助餐厅(2) 四 、树形结构的分治1 二叉树的最大深度 前言 分治思想:将一个大问题分词几个小问题&…

React.js教程:从JSX到Redux的全面解析

文章目录 介绍react脚手架jsx语法和react组件jsx的基本语法jsx的行内样式jsx的类名classNameif条件渲染map循环渲染创建组件方法 可视区渲染 (React- virtualized)React-redux 介绍 javascript库,起源于Facebook的内部项目,类似于vue特点 声明式组件化 …

使用Jupyter Notebook进行数据科学项目

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Jupyter Notebook进行数据科学项目 Jupyter Notebook 简介 安装 Jupyter Notebook 创建和管理 Notebook 编写和运行代码 示例…

在校大学生考了个PMP证书

作为一个大学生,大学生活其实还是蛮充实的,尤其是现在大环境不好,很多同学都会趁着在校期间多考几个证书,多去大厂实习攒经验啥的,我也不例外。 偶然了解到PMP这个证书跟我毕业之后的工作有关系,这不&…

21、基于AT89C52的电子密码锁proteus仿真设计

一、仿真原理图: 二、仿真效果: 三、相关代码: 1、定时中断: void Time0(void ) interrupt 1 using 1 { count++; if(count == 50) { count = 0; buffer = keyScan(); if(buffer < 16) { value[index++…

【HarmonyOS】鸿蒙应用设置控件通用样式AttributeModifier, @Styles

【HarmonyOS】鸿蒙应用设置控件通用样式AttributeModifier&#xff0c; Styles 前言 在鸿蒙中UI开发经常需要对控件样式进行统一的封装&#xff0c;在API早前版本&#xff0c;一般是通过 Styles进行样式封装复用&#xff1a; Entry Component struct Index {build() {Column(…

【MySQL】可重复读级别下基于Next Key Lock解决幻读

昨天读到了一篇文章[1]&#xff0c;里面讲&#xff0c;面试官说mysql的可重复读级别下有解决幻读的方式&#xff0c;最后公布了答案&#xff0c;是在sql后面加for update。这么说倒是没错&#xff0c;但是这种问法给我一种奇怪的感觉&#xff0c;因为for update无论在哪个隔离级…