当前位置: 首页 > news >正文

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协议学习

相关文章:

USB协议学习

文章目录 USB发展背景发展变化速度等级通讯接口 四种传输主设备 & 从设备主设备从设备 连接与检测高速设备与主机连接USB总线常见的几种状态 枚举过程特点 控制传输学习资料 USB发展背景 发展变化 USB1.1:规范了USB低全速传输; USB2.0:…...

TDengine 数据订阅 vs. InfluxDB 数据订阅:谁更胜一筹?

在时序数据的应用场景中,数据的实时消费和处理能力成为衡量数据库性能和可用性的重要指标。TDengine 和 InfluxDB 作为时序数据库(Time Series Database)中的佼佼者,在数据订阅方面各有特点。但从架构设计、灵活性和系统负载上看&…...

用户批评 SAP 的人工智能战略

在2024年德语SAP用户组织(DSAG)年会上,SAP用户对公司云优先的AI创新策略表示不满。SAP决定将AI功能仅限于云客户,使使用本地部署(on-premises)系统的用户感到被忽视。这种“云优先”策略引发了SAP用户间的广…...

Jest进阶知识:React组件的单元测试

在现代前端开发中,组件是构建应用程序的基本单元。一个组件不仅拥有完整的功能,还能极大地提高代码的复用性。因此,在进行单元测试时,对重要组件进行测试是必不可少的。 Testing Library Testing Library 是一个专门用于测试 We…...

MATLAB——矩阵操作

内容源于b站清风数学建模 数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/ 目录 1.MATLAB中的向量 1.1向量创建方法 1.2向量元素的引用 1.3向量元素修改和删除 2.MATLAB矩阵操作 2.1矩阵创建方法 2.2矩阵元素的引用 2.3矩阵…...

智能数据驱动的风险管理:正大金融科技的创新实践

在不断变化的金融环境中,风险管理成为投资成功的关键因素。正大公司以数据驱动的智能风控体系为核心,通过深度学习、数据分析等技术创新,帮助投资者在复杂的市场条件下实现稳健操作和风险控制。本文将探讨正大如何利用科技手段提升风险管理效…...

贝尔不等式的验证

在量子计算机上运行一个实验,以演示使用Estimator原型违反CHSH不等式。 import numpy as npfrom qiskit import QuantumCircuit from qiskit.circuit import Parameter from qiskit.quantum_info import SparsePauliOpfrom qiskit_ibm_runtime import QiskitRuntim…...

GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含GR1详解)

前言 上个月的24年10.9日,我在朋友圈看到字节发了个机器人大模型GR2,立马去看了下其论文(当然了,本质是个技术报告) 那天之后,我就一直想解读这个GR2来着 然,意外来了,如此文《OmniH2O——通用灵巧且可全…...

伦敦金价格是交易所公布的吗?

今年以来,伦敦金价格波动可谓是波澜壮阔,盘中屡次刷新历史新高,目前已经冲上了2700的历史大关。面对高歌猛进的伦敦金价格,投资者除了进行交易之外,还有一点相关方面的知识是想了解的。例如,伦敦金价格是交…...

Oracle SQL Loader概念及用法

Oracle SQLLoader是Oracle数据库提供的一个高效的数据加载工具,它能够将外部数据(如CSV、DAT、Text等文件格式)快速加载到Oracle数据库中。以下是对Oracle SQLLoader的详细介绍: 一、主要功能 数据迁移:SQL*Loader常…...

ReactPress 是什么?

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 ReactPress 是什么? ReactPress 是使用React开发的开源发布平台,用户可以在支持React和MySQL数据库的服务器上架设属于自己的博客、网站。也可以把 ReactP…...

MR30分布式IO模块与高效PLC协同

在现代工业自动化领域中,数据采集与控制系统扮演着至关重要的角色。其中,可编程逻辑控制器(PLC)和分布式IO模块(Distributed I/O Modules)是这一领域的两大核心组件。本文将详细介绍MR30分布式IO模块与PLC如…...

成都睿明智科技有限公司共赴抖音电商蓝海

在这个短视频风起云涌的时代,抖音作为现象级的社交媒体平台,不仅改变了人们的娱乐方式,更悄然间重塑了电商行业的格局。在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司凭借其敏锐的市场洞察力和专业的服务能力,…...

Android15音频进阶之音频策略加载及使用(九十一)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…...

Spring设值注入

设值注入(Setter Injection)是Spring框架中依赖注入的一种方式,通过Setter方法将依赖对象注入到目标对象中。设值注入在对象创建后,通过调用Setter方法完成依赖注入。 设值注入的优点 灵活性:设值注入允许在对象创建…...

Spring整合Mybatis过程

配置文件 springConfig --> [jdbcConfig mybatisConfig] jdbc配置文件进行基本的数据库连接池配置 mybatis配置文件进行SqlSessionFactory Bean 和 MapperScannerConfigurer Bean的创建 在Spring容器启动时,系统会根据配置创建并初始化所有MyBatis所需的Bean…...

常见HR问题篇

系列文章目录 第一章 C/C语言篇第二章 计算机网络篇第三章 操作系统篇第四章 数据库MySQL篇第五章 数据库Redis篇第六章 场景题/算法题第七篇 常见HR问题篇 本系列专栏:点击进入 后端开发面经 关注走一波 秋招阶段,面过很多大中小厂,积攒了…...

调用数据集mnist(下载+调用全攻略)

1、下载mnist数据集请自取: 通过百度网盘分享的文件:mnist 链接:https://pan.baidu.com/s/1ia3vFA73hEtWK9qU-O-4iQ?pwdmnis 提取码:mnis 下载后把数据集放在没有中文的路径下。 # 本文将下载好的数据集放在C:\DeepLearning\…...

【基础语法】Java Scanner hasNext() 和 hasNextLine() 的区别

OJ在线编程常见输入输出练习中默认模板 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.…...

react使用Fullcalendar 实战用法

使用步骤请参考:react使用Fullcalendar 卡片式的日历: 需求图: 卡片式的日历,其实我是推荐 antd的,我两个都写了一下都能实现。 antd 的代码: antd的我直接用的官网示例:antd 日历示例 i…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...

CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...

Vuex:Vue.js 应用程序的状态管理模式

什么是Vuex? Vuex 是专门为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在大型单页应用中,当多个组件共享状态时,简单的单向数据流…...