USB百科
+ -

USB通讯基础入门概述

2021-05-08 4682 0

USB系统组成

USB系统主要包括USB主机和USB设备两种设备。

USB主机:提供USB接口和接口管理功能的硬件、软件、固件的复合体。PC机或OTG设备,一个USB系统只能有一个主机.USB主机提的硬件主要包括USB主控制器和USB根集线器
USB设备:1.集线器HUB:扩展主机接口,设备可以通过其接入主机 2.功能设备,如U盘,USB摄像头,HID键盘鼠标等。

物理连接:即USB电缆,USB使用差分信号传输数据,USB全速/高速模式电缆必须外层屏蔽铜质传输线,且差分数据线双绞。一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+、D-是差分输入线,使用的是3.3V电压,而电源线与地线可向设备提供5V电压,最大电流500mA。

USB3.0采用了9线制,3.2更是多增加了一结差分收发引线。详见可见:USB引脚接线定义

USB拓扑结构

USB的物理拓扑结构是一种叫做菊花链的方式。
USB拓扑结构

每个USB系统只允许有一个HOST(主机)。允许的最大层数为7层(包含主机);每层的电缆最大长度为5米,电缆总长度为30米;每层最大允许接5个DEVICE(设备);

这里的每个系统是一根USB主控制器,也是一个USB根集线器,即一条USB总线。PC中可以有多块USB主控制器,所以也会有多根USB总本。

USB系统程序

  • 应用程序:应用程序运行与USB设备所连接的主机上。部分应用程序会由操作系统的主机提供,大部分应用程序由USB设备供应商提供。
  • 驱动程序:驱动程序服务于特定的操作系统,为USB设备提供支持。驱动程序通常由操作系统提供,独立于特定的应用程序和USB设备。
  • 主机端控制程序:包括硬件和软件,使USB设备能够被主机识别。

USB速度选择

这里主要介绍USB2.0的速度选择。

USB全速模式

USB全速模式是在D+线上上拉1.5K的电阻。
全速模式

USB低速模式

USB低速模式是在D-线上上拉1.5K的电阻。
低速模式

USB信号描述

USB信号描述

差分信号:
1: D+ > Voh(2.8V) and D- < Vol(0.3V)
0:D- > Voh and D+ < Vol

J状态:
Low Speed :Differential(差分信号) 0
Full Speed :Differential(差分信号) 1

K状态:
Low Speed :Differential(差分信号) 1
Full Speed :Differential(差分信号) 0

USB协议分层

USB在逻辑上被分为三层:信号层、协议层、数据传输层。
USB协议分层

设备速度的检测

高速设备

低速设备

USB信号的编码

USB中的数据采用反向不归零编码方式(NRZI:none-return to zero inverted),并对D+和D-线所处的不同状态定义成J和K两种状态。

数据状态 D+ D-
低速J状态 0 1
低速K状态 1 0

数据的编码/解码(反向不归零码)
USB信号的编码

说明:遇到0的边沿进行状态改变,如果是1保持原有状态

注:在数据进行NRZI编码前,每6个连续的1信号之后都会插入一个0信号,以免丢失同步。

USB 协议层

包是USB系统中信息传输的基本单位,所有的数据都是经过打包后再总线上传输的。

每个包由6部分组成:同步字段(SYNC)、包标识符(PID)、地址字段(ADDR)、数据字段(DATA,包括帧号)、检验字段(CRC)、包结束(EOP)。
USB包

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB 设置特性请求SetFeature
ID请求码说明3SET_FEATURE用来启用或激活命令接收者的某些特性SetFeature请求用于设置或使能USB设备、接口或端点的特性值,和CLEAR_FEATURE请求相对应。SetFeature请求同样没有数据阶段。bmRequestType(1)b......
USB音箱 工作抓包分析
USB音响打开Length Phase Data -------- ----- ------------------------------ -------------- CTL ......
USB传输过程中的延迟
USB传输过程中的延迟可分为包间延迟、USB线缆上的延迟和USB集线器延迟。在数据传输时,USB主机和USB设备能够计算整个数据传输时间,这个数据传输的时间由发送方发数据信息包结束时开始计算,直到接收到接收方的应答信号为止。USB包间延迟USB数据传输的包间延迟只存在于一个USB数据流管理中的各......
USB3.2超高速兼容USB2.0数据收发的双总线架构
超高速USB体系和以前的USB版本的功能一致,都是通过USB线缆将USB主机USB外设相连,进行数据交互的。所与连接到该条USB总线上的所有设备在主机控制器协调下,共享带宽。USB总线允许外部设备被接入(attached),配置,使用或移除。USB3.2是双总线架构,其中一条总线用于向后兼容USB2......
USB超高速3.0协议与USB2.0协议的差异
超高速在框架层级是向后兼容 USB 2.0 的。然而, USB 2.0 和超高速协议还是有一些根本性的差异:USB 2.0 使用三部分事务交易(令牌,数据和握手),而超高速对这相同的三部分的使用是不相同的。对于输(OUTs),令牌被列入数据包;而对于输入(INs),令牌则被握手所取代。USB 2.0......
linux下UsbMon-WireShark之USB协议抓取分析
usbmon配置使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko :make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- CONFIG_USB_MON=m M=./drivers/usb/ ......
USB 2.0 协议中J、K、SE0状态的定义
USB 2.0协议中经常会看到以下术语:Chirp K、KJ序列、SE0。这里的状态是根据低速、全速/高速下设备D+和D-上不同的电平信号来决定的。1、J态、K态、SE0,SE1信号转换状态状态Low speed (D+ pull-up)Low speed (D− pull-up)......
USB 设置描述符SetDescriptor
ID请求码说明7SET_DESCRIPTOR修改设备中有关的描述符,或者增加新的描述符SetDescriptoret用于设置USB的描述符,在SetDescriptor请求的数据阶段,主机将向USB设备发送指定的描述符类型 。bmRequestType(1)bRequest(1)wValue(2)w......
USB3.0硬件编码格式-8B/10B编码
1.编码技术基础理论 在高速的串行数据传输中,传送的数据被编码成自同步的数据流,就是将数据和时钟组合成单一的信号进行传送,使得接收方能容易准确地将数据和时钟分离,而且要达到令人满意的误码率,其关键技术在于串行传输中数据的编码方法。 目前, 高速接口正在被广泛应用于包括 SATA、 SAS、 高速......
USB超高速 超高速端点伴随描述符
在接口中描述的每个超高速端点都紧跟着一个超高速端点伴侣描述符( EndpointCompanion descriptor)。这个描述符包含只给超高速端点定义的附加端点特性。这个描述符总是 作 为 配 置 描 述 符 信 息 的 一 部 分 在GetDescriptor(Configuration) ......
为什么我的USB设备如U盘从一个端口换到另一个端口会重新安装驱动?
在 Windows 2000和更高版本的操作系统中,当 USB 设备从一个端口移到另一个端口时,将创建一个新的物理设备对象 (PDO)。 如果硬件报告了唯一的 USB 序列号,则不会创建新的 PDO。若要重复使用同一 PDO 并确保设备不会改变,无论设备是否已重新插入相同的端口或新端口,硬件供应商必......
USB-UAC麦克风 音频控制接口
音频控制接口描述符描述了设备的结构(拓扑结构),并通过特定类请求对音频的控制。UAC麦克风 音频控制接口描述符偏移地址字段长度值描述0bLength10x09接口描术符的长度1bDescriptorType10x04描述符的类型接口描述符2bInterfaceNumber10x00接口ID号3bA......
USB与其它总线相比的优点是什么
USB 的设备可以接在 PC 上的任意的 USB 接口上. 而使用 Hub 还可以扩展使更多的USB设备连接到系统中 USB的Hub 有一个上行的端口(到host) 有多个的下行端口(连接其它的设备). 从而可以使整个的系统可以扩展的连接 127 个外设. 其中 Hub 也算外设.对于US 系统来说......
USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
站内大事
2018年9月,开始筹建,初始为个人博客。2019年11月,网站进行版本更新,并修改站名为字节流,使用新的域名www.bytekits.com【域名已经作废】, 交将原来个人博客的技术文章重新编辑并入。2019年11月,增加【C/C++技巧】,此为本人原来在公司内部的技术培训内容。2019年11月,......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!