通讯协议学习之路:USB协议协议理论

news2024/11/18 6:18:41

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。

后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374)

1、概述

USB,Universal Serial Bus(通用串行总线),是一种计算机与外围设备进行数据交互的通信协议。

1.1 USB协议

USB2.0 或 USB3.1, 指的是传输标准; 而USB Type-C 或 USB Type-A, 指的是物理接口。

1.2 USB充电协议

1.3 USB协议

1.3.1 Type-A

(1)标准的USB2.0协议传输结构是这样子的(设备端):

(2)USB3.0

  • USB协议采用的是差分传输模式
  • 在低速和全速模式下,采用电压传输模式,在高速下,采用电流传输模式。
  • 传输结构之所以采用两长两短的方式,是为了支持热拔插:
  • 当USB设备接入主机时,VCC和GND优先被接通;拔掉设备时,D-和D+数据线优先断电。

1.3.2 Type-C

Type-C相对于其它接口的优势:

  • 它无需区分正反
  • 最高可以支持5A大电流,
  • 在USB4标准支持下,最高可传输速率可达40Gbps。
  • 正确插入后发出声音。
  • 通过USB Power Delivery技术,可用于3C产品(如笔记本电脑、智能手机)的充电。
  • 增进的电磁干扰(EMI) 与射频干扰(RFI mitigation)特性。
  • 可选集成DisplayPort、HDMI、MHL[5][6]。
  • 可选集成Thunderbolt。
  • 可选集成USB4。

TYPE-C的高速应用,Type-C可用于:

  • USB1.1/2.0/3.0/3.1
  • HDMI
  • 以太网络
  • DisplayPort的
  • 功率
  • 音频
  • 有更多的千兆位通道。

1.3.3 USB2.0/3.0/3.1/3.2速率

Gen1和Gen2指代编码方式和Lanes内的速度,Gen1绑定了8b/10b和单lane内5 Gbit/s,Gen2绑定128b/130b与单lane内10G bits/s。

1个lane即2组差分对,一组差分对负责一个方向的传输。所以表里的带宽都是同时刻双向的带宽(当然实际中达不到)。

x1和x2指代有几个lane,真正的USB3.2 x2只能通过Type C接口达成,同时线材也必须支持USB3.2内所需的4个差分对。

(1)USB2.0

(2)USB3.0 (USB3.2 Gen1)

USB3.0为了提高传输速率,在不同形状的物理接口上都增加了新的针脚。为了保证向下兼容性,也保留了USB2.0原有的针脚;由于USB3.0发表时只有常见的Type-A与Type-B构型,并没有Type-C可选.

USB3.0新增了两组差分对,分别是SSTX与SSRX。每组差分对的速度都被提升到了5Gbit/s,编码方式为8b/10b,计算纠错/控制损耗,实际效率为80%。从针脚名称中的T与R便可以知道USB3.0可以同时发送与接收数据,是全双工接口

(3)USB3.1 (USB3.2 Gen2)

USB3.1相较于USB3.0,大致做了以下改进:

  • 仍然是两个差分对,全双工,但每个差分对速度被提升到10Gbps。
  • 编码从8b/10b更改为128b/130b,实际可用带宽更大,损耗从USB3.0的20%降到3%。
  • 引入了新的USB PD协议,供电能力大幅度提高。

下面是USB3.1的工作示意图,在Type-A与Type-B接口下,相较于USB3.0只是把差分对的速度提高了。

而在Type-C接口下,USB3.1工作示意图是这样的

(4)USB3.2 Gen1x2

(5)USB3.2 Gen2x2

1.3.4 ULPI/UTMI

ULPI协议的全称是UTMI+Low Pin Interface。从名字上就可以看出ULPI是UTMI的Low Pin版本。UTMI(USB2.0 Transceiver Macrocell Interface,USB2.0收发器宏单元接口)是一种用于USB controller和USB PHY通信的协议。相对于ULPI,UTMI有更多的控制信号,支持8bit/16bit 数据接口。前者PIN少,后者PIN多,所以如果用ULPI,PHY一般外部另接;用UTMI,PIN多,一般内置。

  • UTMI 接口信号

  • ULPI 接口信号

为什么要用NRZI? (1)没有归0步骤,节省了大量的数据带宽;(2)没有负电平,表示起来方便

如何自同步? NRZ编码本身并不带自同步功能,USB在协议中加入了同步头(SYNC),对于每一个USB Packet,都有一个同步域固定为0000_0001,这个域翻译成NRZI编码就是01010100,接收者通过这个同步头可以算出发送者的频率。

为什么需要Bit-Stuffing? SYNC可以解决同步的问题,但是如果发送端一直发1,那由NRZI编码后的电平会一直保持不变,从SYNC计算出来的频率只要有一点点偏差,累积后都会造成较大的误差,所以USB协议中采取了bit stuffing的机制来避免出现长时间的1。简单说,每6个连续的1之后,会强制插入一个0,使得发送信号强制出现翻转,接收方在收到翻转信号时可以调整频率,从而实现时钟同步。

参考文章:USB协议介绍_工作使我快乐的博客-CSDN博客

2、USB常见接口 

USB的连接器分为A、B两种,分别用于主机和设备;其各自的小型化的连接器是Mini-A, Mini-B 和 Micro-A, Micro-B,另外还有Mini-AB(可同时支持Mini-A及Mini-B)的插口。USB 3.1版本中导入支持正反面不区分插入的C型。下图是常见的USB硬件接口。

 根据不同的协议,详细分类如下表所示

其中Type-A是我们过去最常用的接口类型,Type-B常见于打印机上,而Type-C就是目前正在普及的,Micro-USB是过去安卓设备常采用的接口。

综上,可将USB的接口分为以下三类:

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

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

相关文章

服务CPU异常飙高问题分析和解决

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

R语言提取文字(字符串)中的内容--正则式(1)

科学研究中有时候咱们收集到的数据很乱,不能马上进行分析,如SEER数据,用过都知道,咱们需要对数据进行清洗,从数据中提取咱们需要的东西,才能进行分析,这时候有个有用的东西叫正则式,…

中文编程工具开发语言编程案例:会员VIP管理系统软件实例

中文编程工具开发语言编程案例:会员VIP管理系统软件实例 中文编程工具开发语言编程案例:会员VIP管理系统软件实例。 软件功能: 1、系统设置:参数设定,账号及权限设置,系统初始化,卡类型设置&a…

通讯协议学习之路:IrDA协议协议理论

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374) 序、…

Flutter的Invalid use of a private type in a public API警告

文章目录 问题描述有问题的源码 问题原因解决方法 问题描述 自己在写Flutter 应用时发现了一个Invalid use of a private type in a public API警告。 发现很多官方的例子也有这个问题。 有问题的源码 有问题的源码如下: class MyTabPage extends StatefulWid…

window系统如何管理多版本node

何时需要切换node版本 如果你正在维护一个旧项目,同时也在进行新项目,两个项目所依赖的node版本害不同,那么你可以就需要经常切换node版本。项目中可能依赖于某些npm包,而这些包对特定版本的Node有要求。需要满足这些要求以确保依…

UE4 UltrDynamicSky与场景物体进行交互

找到材质 找到其最父类的材质 把这个拖过去连上即可

Nvm管理NodeJs版本

文章目录 Nvm管理NodeJs版本一、前言1.简介2.环境 二、正文1.卸载NodeJs2.安装Nvm3.配置国内镜像4.Nvm使用5.其它1)报错12)报错2 Nvm管理NodeJs版本 一、前言 1.简介 Node Version Manager(nvm)可通过命令行快速安装和使用不同…

【数据库】拼接字段 使用别名

拼接字段 使用别名 e . g . e.g. e.g. Vendors 表包含供应商名和电话信息,name 和 mobile;需要输出这两个属性的值的组合作为供应商的基本信息组合。 SELECT concat(name, _, mobile) FROM Vendors; -- 语句通过 MySQL 环境下测试,其他 DBMS…

【CMN】Components组件汇总

CMN 700由各种类型的设备组成,包括路由器模块、CHI节点和网桥。所需要的组件取决于系统的需求,有些组件是可选的,或者只有在满足某些需求时才会使用。CMN 700可以集成到一个完整的SoC系统中,该系统还包括其他这里未描述到的设备。…

4.6 IPv6

思维导图: 4.6 IPv6 **IPv6简介** - IP 是互联网的核心协议。 - IPv4 是20世纪70年代末期设计的,到2011年2月其地址耗尽。 - 2014-2015年间,我国逐步停止向新用户分配IPv4地址,开始全面部署IPv6。 - IPv6 目的:解决I…

JDK安装后Path和java_home环境变量

1.Path环境变量 1.1Path环境变量用于记住程序路径,方便在命令行窗口的任意目录启动程序 举例:在命令行窗口的任意目录下启动QQ Path环境部变量的位置在:我的电脑->属性->高级系统设置->高级->环境变量 2.2Path环境变量的原理 …

(1)(1.7) GY-US42声纳

文章目录 前言 1 连接方式 2 参数说明 前言 GY-US042v2 声纳是一款非常便宜的短程(最多 4m)测距仪,主要设计用于室内,但也成功用于室外的 Copter。与许多气压计相比,它能更稳定地控制 4m 以下的高度。 1 连接方式…

《动手学深度学习 Pytorch版》 9.5 机器翻译与数据集

机器翻译(machine translation)指的是将序列从一种语言自动翻译成另一种语言,基于神经网络的方法通常被称为神经机器翻译(neural machine translation)。 import os import torch from d2l import torch as d2l9.5.1 …

【Linux】nginx基础篇 -- 介绍及yum安装nginx

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

1024程序节特辑:一文读懂小程序支付流程

小程序支付流程 概述前置准备登录流程调用wx.login()向微信服务器发送请求 支付流程调用wx.requestPayment()部分后台处理逻辑支付功能要求 支付流程面试题 主页传送门:📀 传送 概述 小程序支付是由微信支付推出的一种便捷支付方式,通过扫码…

快速实现 RPC 微服务:使用 go-micro 从零开始

大家好,我是木川 本文将演示如何从 0 到 1 使用 go-micro 框架实现 RPC 微服务,包括服务端和客户端,客户端发送一个名字到服务端,服务端返回问候语。 一、创建项目 创建项目目录,使用 go mod 初始化 mkdir goexamples …

前端课后作业

2023.10.20 1、用列表实现如下效果 2、用表格实现如下效果 3、用表单实现如下效果 (学到16集完成)

阿里云10M带宽服务器价格、下载和上传速度限制说明

阿里云服务器10M带宽价格表年付85折,10M带宽一年优惠价5355元,10M带宽下载速度1280KB/秒,即1.25M/秒,阿腾云atengyun.com分享腾讯云服务器10M公网带宽优惠价格、流量价格、上传速度和下载速度限制: 目录 云服务器10M…

【小笔记】为什么语义相似度要用余弦相似度而不用欧式距离?

【学而不思则罔,思而不学则殆】 2023.10.20 语义相似度 相似文本,可以是语义上相似,可以是字符串相似,因此文本相似度包含了语义相似度。 传统的基于统计的文本相似度计算方法,如词频,词出现与否来表示文…