USB协议总结

news2024/11/13 12:22:52

1、简介

在了解USB协议之前,先了解下该总线协议出现的背景。在USB总线出现之前,计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接,不同设备的接口不能互用,扩展性很差。每次插拔设备都要关闭计算机,不支持热插拔,通信率也较低。

为了解决上述问题,就诞生了USB总线。USB是通用串行总线(Universal Serial Bus)的缩写,它就好像一条管道,管道里流过的东西只要符合USB协议,至于具体流的是什么东西,USB总线并不关心,可以是自来水,可以是污水,也可以是天然气,等等。对应到具体的设备上,只要是支持USB协议的设备,都可以连接计算机,如USB键盘、USB鼠标、USB摄像头、USB音响等。USB的出现简化了计算机与外围设备的连接,增强了扩展性,支持热插拔,且通信速度很快。

USB协议从诞生到至今,已经迭代了很多个版本,最新的是4.0协议,可直连CPU的PCIe总线,最大速度可大40Gbps,使用Type-C接口,兼容DP视频协议、PD快充协议等。

2、USB总线特点

2.1 主从模式

USB是主从模式的总线,主机称为Host,从机(也称为设备)称为Device。从机与从机之间、主机与主机之间(不包括USB4.0),不能互联。每次通信都是由主机发起,从机不能主动发起通信,只能被动的应答主机的请求。USB3.0及以后的USB协议,主机也可以和集线器(Hub)通信。为了增加灵活性,又出现了USB OTG(On The Go),USB OTG支持主从切换,同一个设备,在不同场合下,可以在主机和从机之间切换。USB OTG线中增加了一根USB ID线,当USB ID线上拉时,处于从机(设备)模式,当USB ID线接地时,处于主机模式。

2.2 总线结构

如下图所示,USB总线呈现出树状的拓扑结构。树的根节点是USB Host控制器,连接在USB Host控制器上的是USB根集线器(Root Hub)。USB集线器(Hub)可以将一个USB接口扩展成多个USB接口,扩展出的USB接口又可以通过USB集线器(Hub)扩展,每个USB接口都可以接USB设备。集线器只能扩展出更多的USB接口,而不能扩展出更多的带宽,所有USB设备共享USB Host控制器的带宽,当有多个USB设备需要较大带宽时,可以考虑将他们接到不同USB Host控制器上的根集线器上,以避免带宽不足。

2.3 电气特性

下图是USB3.2线缆的示意图,同时兼容USB2.0。USB使用差分信号传输数据,下图中的D+和D-是一对差分线,SSTX+和SSTX-是一对差分线,SSRX+和SSRX-是一对差分线。USB2.0只有一对差分线,即下图中的D+、D-,因此USB2.0是半双工的,不能同时收发数据。USB3.2拥有两对差分线,即SSTX+和SSTX及SSRX+和SSRX,因此USB3.2是全双工的,可同时收发数据。USB3.2和USB2.0使用不同的差分线传输数据,两者互不干扰,可同时工作。USB3.2线缆中保留了USB2.0的数据传输通道,实现了对USB2.0的兼容。USB主机可通过VBUS线向设备供电,最大可输出20V/5A。GND是地线。

3.USB传输基础

3.1.传输类型

控制传输(Control Transaction) 控制传输用于配置设备、获取设备信息、发送命令到设备、获取设备的状态。每个USB设备都有端点0的控制端点,当USB设备插入到USB主机拓扑网络中时,USB主机就通过端点0与USB设备通信,对USB设备进行配置,便于后续的数据传输。USB协议保证控制传输有足够的带宽。控制传输可靠,时间有保证,但传输的数据量不大。如USB设备的枚举过程就采用的是控制传输。 中断传输(Interrupt Transaction) 当USB主机请求USB设备传输数据时,中断传输以一个固定的速率传送少量的数据。中断端点的数据传输方式为中断传输,数据传输可靠,实时性高,这里的中断并不是USB设备产生中断,而是USB主机每隔一个固定的时间主动查询USB设备是否有数据要传输,以轮询的方式提高实时性。如USB鼠标采用的是中断传输。 批量传输(Bulk Transaction) 批量传输用于传输大量数据。USB协议不保证这些数据传输可以在特定的时间内完成,但保证数据的准确性。如果总线上的带宽不足以发送整个批量包,则将数据拆分为多个包传输。批量传输数据可靠,但实时性较低。如USB硬盘、打印机等设备就采用的是批量传输方式。 等时传输(Isochronous Transaction) 等时传输也可以传输大量数据,但数据的可靠性无法保证。采用等时传输的USB设备更加注重保持一个恒定的数据传输速度,对数据的可靠性要求不高。如USB摄像头就使用的是等时传输方式。

3.2.传输要素

USB2.0主机控制器通过把时间在低速、全速模式下分成1毫秒宽的帧(frame),在高速模式下分成125微妙宽的微帧(microfranme),以此来管理传输。主机控制器将每个帧或微帧的一部分分配给各个传输。每个帧(或微帧)以带有时序参考的帧(Start-of-Frame,SOF)开始。超高速总线不使用SOF,但主机控制器仍可以在125微妙的总线时间内安排超高速传输。

USB传输可以安排在1个或多个帧或微帧中,每个传输包含多个事务,每个事务又进一步含有多个信息包(packets)。信息包必须在一个帧或微帧中传输完毕,不能跨帧或微帧。信息包分为4类,令牌类信息包确认事务类型,数据类信息包携带数据和状态代码,握手类信息包携带状态代码,最后一种是特殊类信息包。

USB传输由一个或多个事务(transaction)组成,这些事务可将数据载入端点或从端点取出。USB2.0事务开始于主机在总线上发送的令牌信息包(token packet)。令牌信息包含有目标端点号和方向。IN令牌信息包表示向端点请求数据信息包。OUT令牌信息包则是主机派发数据信息包的先行信息。除了数据,每个数据包还含有错误检查位和一个带有数据顺序值的信息包ID(PID)。许多事务还拥有握手信息包(handshake packet),数据的接收端用它来报告事务成功或失败。对于超高速传输事务,信息包类型和协议有所不同,但却含有相同的地址、错误检查和与数据相配合的数据顺序值。

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

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

相关文章

【Matlab】智能优化算法_麻雀搜索算法SSA

【Matlab】智能优化算法_麻雀搜索算法SSA 1.背景介绍2.数学模型3.文件结构4.伪代码5.详细代码及注释5.1 Get_Functions_details.m5.2 main.m5.3 SSA.m 6.运行结果7.参考文献 1.背景介绍 麻雀通常是群居的鸟类,有很多种类。它们分布在世界的大部分地区,喜…

TI毫米波雷达软硬件概述

TI毫米波雷达概述 1.TI毫米波雷达传感器芯片及分类:1.1 工业毫米波雷达传感器器件选型应用场景 1.2 汽车毫米波雷达选型使用场景 1.3 基于AWR2243 的 TI 级联雷达 :1.4 不喜欢看文字的也可以戳视频-> 2. TI软件入门概述:2.1 TI RadarToolb…

【C】指针详解(一篇文章带你玩转指针)

指针详解 指针是什么?指针和指针类型指针加减整数指针的解引用 野指针野指针的成因如何规避野指针 指针和数组的关系数组名是什么? 二级指针二级指针是什么?二级指针的运算 字符指针指针数组和数组指针指针数组数组名和&数组名数组指针数…

开源一款轻量线程池项目

基于Arrow的轻量线程池 大家好,我是光城,最近花了几周业余时间,开发出这款轻量线程池,代码也全部开源啦,欢迎大家star。 本线程池的设计与实现会有涉及非常多的知识,这些内容也都会以视频的方式分享在知识星…

分析气象数据:向Python Cartopy地图中添加循环点

大家好,在使用Python和Cartopy对气候数据进行可视化分析的过程中,有一个叫做循环点(cyclic point)的术语,它在地理空间栅格数据可视化领域中很重要。 1.循环点的定义和作用 有时,当我们试图绘制地理空间数…

性能测试的基本概念和重要指标

这里写自定义目录标题 一、什么是性能测试二、为什么要学习性能三、性能测试与功能测试的区别1、性能测试和功能测试的区别?2、性能测试是在什么时候做?3、我们在做我们的产品的时候,我们只做功能不做性能可不可以?4、性能测试主要是这几个方…

金融计量学第2课堂-金融时间序列线性模型

量化策略开发,高质量社群,交易思路分享等相关内容 一、相关性和平稳性 1、相关性 (1)皮尔森相关系数 皮尔森相关系数是最常见、最常用的一个相关系数计算方法。作为衡量两个随机变量x和y线性相关程度的重要指标,在这…

赋能智能智造-RK3568智能主板助力机器人产业高速发展

机器人作为现代制造业的重要一环,正在以惊人的速度推动着生产效率和智能化水平的提升,它们在生产线上的准确操作和高效工作,为企业带来了巨大的竞争优势。关于工业机器人的编程和控制技术,在过去几年中已经有了很多发展和新的应用…

十.Redis持久化

十.Redis持久化 一:RDB持久化二:AOF持久化三:扩展 redis持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么服务进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久…

《Spring系列》第18章 监听器Listener

前言 陆续阅读了Spring Boot源码中,有不少地方都用到了监听器。每次看到监听器的代码都一头雾水,不懂其中的设计理念,这次决定肝一篇监听器的博文。 一、监听器 1.概述 何为监听器?就是用来监听程序执行的。监听器可以做什么事…

青岛大学_王卓老师【数据结构与算法】Week05_03_队列的定义和特点_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

Vue3通透教程【十七】Vite构建TS版本Vue项目

文章目录 🌟 写在前面🌟 创建TS版本的Vue3项目🌟 插件安装🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章&#…

DocFastSearchTool(文档快速搜索工具)开发日志

目录 项目介绍 项目调研背景 项目需求分析 开发环境 项目涉及基础知识点 项目设计 设计基础 项目框架or架构 项目框架的搭建 系统工具模块--遍历目录 SQLite数据库 在Windows上安装SQLite SQLite命令 SQLite-C/C的API 安装SQLite源码 数据库操作的重要接口 连接…

PB从入坑到放弃(三)数据窗口

PB从入坑到放弃(三)数据窗口 写在前面一、 数据窗口画板1.1 Design 视窗1.1.1 General tab页设置1.1.2 Generation tab页设置1.1.3 Prefixes tab页设置 1.2 Preview 视窗1.2.1 查找数据1.2.2 翻页1.2.3 增加、删除数据 1.3 Control List 视窗1.4 Data 视…

学生成绩分析项目

数据采集 导入必要的库 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns加载数据集 df pd.read_csv(D:\\桌面\\数据\\student_marks.csv)显示数据框的前几行 # 显示数据框的形状 print("Shape of the dataframe:", df.shape)#显示…

pycharm最新版默认菜单栏等工具不见了

原因 pycharm2022.3新版本,默认使用新UI(如下图),这让很多小伙伴来说不太适应,我还是习惯旧版本的界面。在网上搜了许多恢复旧版本界面的教程,说的解决方案都是由于“手贱把菜单栏给隐藏了”,这…

C语言“教父“

在中国,"C语言教父"一般指的是C语言网的创始人黄老师。他通过C语言网为广大学习者提供了丰富的学习资源和知识分享平台,包括大量的C语言教程、C语言题目以及相应的文档、资源等等,为C语言的推广、教学做出了巨大的贡献和推动作用

Go自带库的使用说明

Go 中的时间操作 Golang中与时间有关的操作,主要涉及到 time 包,核心数据结构是 time.Time,如下: type Time struct {wall uint64ext int64loc *Location }1、获取时间相关函数 1.1 获取当前时间 // 返回当前时间&#xff0c…

腾讯云TRTC服务实现小程序语音/视屏会议

腾讯云TRTC服务的入门 TRTC 是腾讯云主打全平台互通的多人音视频通话和低延时互动直播解决方案。TRTC服务有多种客户端的支持,对于IOS、Android、React native等都支持的比较好,我们主要在于 IOS、Android、Web三端进行处理,其中 TRTC Web S…

HarmonyOS学习路之开发篇—流转

流转概述 介绍 随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备…