(完整word版)通俗易懂的USB协议详解(转载)
USB协议详解
USB协议详解⼀个transfer(传输)由⼀个或多个transaction(事务)构成,⼀个transaction(事务)由⼀个或多个packet(包)构成,⼀个packet(包)由⼀个或多个sync(域)构成。
1.传输数据通信USB的数据通讯⾸先是基于传输(transfer)的,传输的类型有:中断传输、批量传输、同步传输、控制传输。
2.事务数据通讯⼀次传输由⼀个或多个事务(transaction)构成,事务可以分为:in事务、out事务、setup事务。
3.包数据通讯⼀个事务由⼀个或多个包(packet)构成,包可分为:令牌包(setup)、数据包(data)、握⼿包(ack)、特殊包。
4.域数据通讯⼀个包由多个域构成,域可分为:同步域(sync)、标识域(pid)、地址域(addr)、端点域(endp)、帧号域(fram)、数据域(data)、校验域(crc)。
USB传输传输分为四种类型:批量传输、等时(同步)传输、中断传输、控制传输。
1、批量(⼤容量数据)传输(Bulk Transfers): ⾮周期性,突发⼤容量数据的通信,数据可以占⽤任意带宽,并容忍延迟。
如USB打印机、扫描仪、⼤容量储存设备等。
批量输出事务:(1)主机先发出⼀个OUT令牌包(包含设备地址,端点号)。
(2)然后再发送⼀个DATA包,这时地址和端点匹配的设备就会收下这个数据包,主机切换到接收模式,等待设备返回握⼿包。
(3)设备解码令牌包,数据包都准确⽆误,并且有⾜够的缓冲区来保存数据后就会使⽤ACK/NYET握⼿包来应答主机(只有⾼速模式才有NYET握⼿包,他表⽰本次数据成功接收,但是没有能⼒接收下⼀次传输),如果没有⾜够的缓冲区来保存数据,就返回NAC,告诉主机⽬前没有缓冲区可⽤,主机会在稍后时间重新该批量传输事务。
如果设备检查到数据正确,但端点处于挂起状态,返回STALL。
如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。
USB协议中文详解
USB 体系简介
USB 体系包括主机、设备以及物理连 接三个部分。
主机是一个提供USB接口及接口管理 能力的硬件、软件及固件的复合体, 可以是PC,也可以是OTG设备。一 个USB 系统中仅有一个USB主机;
设备包括 USB功能设备和 USB HUB, 最多支持 127个设备;
物理连接即指的是USB 的传输线。 在USB 2.0系统中,要求使用屏蔽的 双绞线。
把多个功能设备通过内置的 USB HUB 组合而成的设备,比如带录音话筒 的 USB 摄像头等。 一个 USB HOST 最多可以同时支持 128 个地址,地址 0 作为默认地址, 只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127 个地址,如果一个设备只占用一个地 址,那么可最多支持 127个 USB 设备(含USB HUB)。
USB 接口扩展
USB HUB提供了一种低成本、低复杂度的USB 接口扩展方法。HUB 的上行PORT 面向 HOST,下行 PORT 面向设备(HUB 或功能设备)。 在下行 PORT 上,HUB 提供了设备连接检测和设备移除检测的能力, 并给各下行PORT供电。
HUB可以单独使能各下行PORT,不同PORT 可以工作不同的速度等 级(高速/全速/低速)。
转发器提供了从高速和全速/低速通讯的转换能力,通过 HUB 可以在 高速 HOST 和全速/低速设备之间进行匹配。
HUB 在硬件上支持 Reset、Resume、Suspend。
17
USB 体系简介
USB HOST 在USB体系中负责设备连接/移除的检测、HOST 和设备之 间控制流和数据流的管理、传输状态的收集、总线电源的供给。
24
USB的通讯协议通俗易懂
而使用自己外部电源的设备叫做自供电设备。为了避免混
淆,USB电缆中的线都用不同的颜色标记,如表16-1所
示。
引脚编号 信号名称
缆线颜色
1
Vcc
红
2
Data-(D-)
白
3
Data+(D+)
绿
4
Ground
黑
表《1嵌6-入1 U式S技B缆术线基的础信与号实与践颜》色
16.3 USB物理特性 16.3.1 USB接口
们通常被保存在USB设备的固件程序中。
《嵌入式技术基础与实践》
16.2 USB系统基本概念
• 16.2.2 USB设备
①设备
设备代表一个USB设备,它由一个或多个配置组成。设备描述 符用于说明设备的总体信息,并指明其所含的配置的个数。一个USB 设备只能有一个设备描述符。
②配置
一个USB设备可以包含一个或多个配置,如USB设备的低功耗 模式和高功耗模式可分别对应一个配置。在使用USB设备前,必须为 其选择一个合适的配置。配置描述符用于说明USB设备中各个配置的 特性,如配置所含接口的个数等。USB设备的每一个配置都必须有一 个配置描述符。
《嵌入式技术基础与实践》
16.1 USB概述
• USB网络采用阶梯式星形拓扑结构,如图
16-1。一个USB网络中只能有一个主机。
主机内设置了一个根集线器,提供了主机
上的初始附属点。
PC主机 (根集线器)
(根阶梯) 阶梯0集线器 (复 Nhomakorabea设备)游戏杆
USB设备 阶梯1
集线器
扫描仪
鼠标
USB设备 阶梯2
《嵌入式技术基础与实践》
16.2 USB系统基本概念
USB基本知识及通信协议共33页word资料
串口通信协议什么是串口串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
USB协议分析
USB协议分析协议名称:USB协议分析一、背景介绍USB(Universal Serial Bus)是一种用于连接计算机和外部设备的通用串行总线接口。
USB协议是为了提供一个标准的物理连接和通信方式,以实现不同设备之间的数据传输和通信。
本协议旨在对USB协议进行详细分析,包括协议的基本原理、通信流程、数据传输方式等内容。
二、协议分析1. USB协议基本原理USB协议采用主从结构,主要包括主机(Host)、设备(Device)和USB集线器(Hub)。
主机负责控制和管理整个USB系统,设备是连接到USB总线上的外部设备,而USB集线器则用于扩展USB接口数量。
2. USB协议通信流程a. 握手阶段:主机和设备之间进行握手,确定通信速率和协议版本。
b. 枚举阶段:主机对设备进行枚举,识别设备的类型和功能。
c. 配置阶段:主机与设备进行配置,包括分配地址和分配端点等。
d. 控制阶段:主机与设备之间进行控制命令的传输,包括读取设备描述符、发送控制命令等。
e. 数据传输阶段:主机与设备之间进行数据的读写操作,包括批量传输、中断传输和等时传输等。
3. USB协议数据传输方式a. 批量传输:用于大容量数据的传输,具有可靠性较高的特点。
b. 中断传输:用于周期性传输小量数据,具有低延迟的特点。
c. 等时传输:用于实时传输,对延迟要求非常高。
4. USB协议层次结构USB协议分为物理层、数据链路层、传输层和应用层。
a. 物理层:负责传输电气信号和电力供应。
b. 数据链路层:负责数据的可靠传输和错误检测。
c. 传输层:负责数据的分段和重组。
d. 应用层:负责数据的处理和应用。
5. USB协议相关标准a. USB 1.0:最初的USB标准,支持低速(1.5 Mbps)和全速(12 Mbps)传输。
b. USB 2.0:提升了传输速率,支持高速(480 Mbps)传输。
c. USB 3.0:引入了超速(5 Gbps)传输,提高了数据传输速率。
USB协议分析
USB协议分析协议名称:USB协议分析一、背景介绍USB(Universal Serial Bus)是一种用于计算机和外部设备之间传输数据和供电的通用接口标准。
USB协议是指USB接口设备之间进行通信和数据传输所遵循的规则和约定。
本协议旨在对USB协议进行详细分析,包括协议的基本原理、数据传输流程、协议规范等内容。
二、协议分析1. USB协议基本原理1.1 USB协议的起源和发展1.2 USB协议的基本特点和优势1.3 USB协议的工作原理和数据传输方式2. USB协议分层结构2.1 物理层2.2 数据链路层2.3 硬件层2.4 协议层3. USB协议数据传输流程3.1 控制传输3.2 批量传输3.3 中断传输3.4 同步传输3.5 异步传输4. USB协议规范4.1 USB设备类别和描述符4.2 USB管道和端点4.3 USB设备状态和控制4.4 USB传输类型和速度4.5 USB主机和设备通信5. USB协议的应用领域5.1 计算机外部设备5.2 嵌入式系统5.3 消费类电子产品5.4 工业自动化控制三、协议实施指南1. USB协议分析工具和软件1.1 USB协议分析仪1.2 USB协议分析软件2. USB协议分析步骤2.1 确定分析目标和需求2.2 准备USB协议分析工具和设备2.3 连接USB设备和分析工具2.4 进行USB协议分析和数据捕获2.5 分析和解读USB协议数据3. USB协议分析技巧和注意事项3.1 熟悉USB协议规范和相关文档3.2 关注USB协议数据的时序和流程3.3 注意USB协议数据的解析和分析方法3.4 掌握常见USB协议问题的排查和解决方法四、协议测试与验证1. USB协议测试方法和工具1.1 传输速度测试1.2 数据完整性测试1.3 设备兼容性测试2. USB协议验证步骤2.1 设计和实施USB协议验证计划2.2 进行USB协议验证和测试2.3 分析和评估USB协议验证结果2.4 提出改进和优化建议五、协议安全与保护1. USB协议安全威胁和风险1.1 信息泄露和数据篡改1.2 恶意代码传播和攻击1.3 物理安全和设备防护2. USB协议安全保护措施2.1 数据加密和身份认证2.2 安全策略和权限控制2.3 防火墙和入侵检测系统六、总结与展望本协议对USB协议进行了详细的分析和解读,包括协议的基本原理、数据传输流程、协议规范等内容。
USB协议分析
USB协议分析协议名称:USB协议分析一、引言USB(Universal Serial Bus,通用串行总线)是一种常用的计算机外部设备连接标准,用于在计算机和外部设备之间传输数据和供电。
本协议旨在对USB协议进行详细的分析,包括其工作原理、数据传输方式、电源供应规范等内容。
二、背景随着计算机技术的发展,人们对外部设备的需求不断增加,传统的串口和并口已经无法满足高速数据传输和供电的要求。
为了解决这一问题,USB协议应运而生,成为了现代计算机与外部设备之间最常用的连接标准。
三、USB协议的工作原理1. 物理层USB协议使用了一对差分信号线进行数据传输,其中包括数据线D+和D-,以及供电线VCC和地线GND。
通过差分信号线的使用,USB协议能够提供更高的传输速率和更低的噪声干扰。
2. 传输层USB协议使用了主从结构,其中主机(Host)负责控制和管理外部设备,外部设备(Device)则被动地响应主机的指令。
主机和外部设备之间的通信基于一种称为“请求-响应”(Request-Response)的机制,主机向外部设备发送请求,外部设备根据请求做出相应的响应。
3. 协议层USB协议定义了一系列的标准命令和数据传输格式,以确保主机和外部设备之间的互操作性。
常见的USB协议包括USB 1.0、USB 2.0、USB 3.0等版本,每个版本都有自己的特点和规范。
四、USB协议的数据传输方式1. 控制传输控制传输是USB协议中最基本的传输方式,用于主机和外部设备之间的命令和状态信息的传输。
控制传输使用了端点0(Endpoint 0),通过发送SETUP、IN 和OUT三种类型的数据包来完成数据的传输。
2. 批量传输批量传输用于传输大块的数据,主机和外部设备之间可以通过批量传输进行大容量数据的传输。
批量传输使用了Bulk端点,通过发送IN和OUT两种类型的数据包来实现数据的传输。
3. 中断传输中断传输用于传输周期性的小块数据,主机和外部设备之间可以通过中断传输实现实时的数据传输。
usb协议详解
usb协议详解USB(Universal Serial Bus)是一种计算机外部设备接口协议,广泛应用于各种计算机设备中,例如打印机、键盘、鼠标、数码相机等。
USB协议提供了一种简单、经济且易于使用的方式来连接和交流数据。
下面将对USB协议进行详细解析。
USB协议是一个层次结构的协议,分为物理层、传输层、逻辑层和应用层四个层次。
物理层是USB连接器的物理规范,其中包括连接器的形状、引脚定义、电气特性等。
目前常见的USB接口有USB-A、USB-B、Micro USB和USB-C等。
传输层确定数据在物理层上的传输方式,包括数据传输速率、帧结构、同步机制等。
USB的传输速率一般为480Mbps(高速USB 2.0),10Gbps(超速USB 3.1)。
逻辑层主要处理数据的控制和管理,包括设备的枚举、配置和通信。
当设备连接到主机时,主机会发送一个枚举请求,设备通过回应该请求来表明自己的身份。
主机配置设备之后,数据的传输就可以开始了。
应用层定义了设备与主机之间的通信方式和协议。
USB协议支持多种传输类型,包括控制传输、批量传输、中断传输和等时传输。
控制传输用于设备的配置、查询和控制;批量传输用于大容量的数据传输,例如打印机进行大量数据的传输;中断传输用于数据可中断的设备,例如鼠标传输鼠标点击和移动事件;等时传输则是实时传输,用于音视频设备。
USB协议还包括一些基本的数据结构和协议规范,例如描述符和设备请求。
描述符是一种数据结构,用于描述设备的功能和属性,包括设备描述符、配置描述符、接口描述符和端点描述符等。
设备请求则是用来进行设备配置和控制的命令,例如设备初始化、查询配置等。
总的来说,USB协议是一种标准化的外部设备接口协议,它提供了一种简化、统一和高性能的设备连接和数据通信方式。
通过USB协议,我们可以方便地连接各种设备,并进行数据的传输和控制。
在现代计算机应用中,USB已经成为最常用的设备接口之一。
USB协议分析
USB协议分析协议名称:USB协议分析一、背景介绍USB(Universal Serial Bus,通用串行总线)是一种用于计算机和外部设备之间进行数据传输和通信的标准接口协议。
USB接口广泛应用于计算机、手机、相机、打印机等各类电子设备中,为设备之间的连接和数据传输提供了便利。
二、协议目的本协议旨在对USB协议进行详细分析,包括其工作原理、数据传输方式、协议层次结构等方面的内容。
通过对USB协议的分析,旨在深入了解USB接口的工作机制,为相关领域的技术人员提供参考和指导。
三、协议内容1. USB协议的定义和作用USB协议是一种用于计算机和外部设备之间进行数据传输和通信的标准接口协议。
它提供了一种快速、简单和可靠的数据传输方式,支持多种设备的连接和通信。
2. USB协议的工作原理USB协议采用主从式架构,主机负责控制和管理整个USB系统,外部设备作为从设备与主机进行通信。
USB协议通过定义不同的传输类型和通信协议来适应不同设备的需求。
3. USB协议的物理层USB协议的物理层定义了USB接口的电气特性和连接方式,包括USB接口的引脚定义、电压规范和信号传输方式等。
4. USB协议的数据链路层USB协议的数据链路层负责数据帧的传输和错误检测,通过定义帧的结构和传输规则来保证数据的可靠传输。
5. USB协议的传输层USB协议的传输层定义了不同类型的数据传输方式,包括控制传输、批量传输、中断传输和等时传输等。
6. USB协议的应用层USB协议的应用层定义了设备的功能和通信协议,包括设备描述符、配置描述符、接口描述符等。
7. USB协议的控制传输USB协议的控制传输用于设备的初始化和配置,通过控制命令和状态信息的交换来实现设备的控制和管理。
8. USB协议的批量传输USB协议的批量传输用于大容量数据的传输,适用于需要高速传输的设备,如存储设备、摄像头等。
9. USB协议的中断传输USB协议的中断传输用于周期性的数据传输,适用于需要实时响应的设备,如键盘、鼠标等。
usb协议详解
usb协议详解USB协议详解。
USB(Universal Serial Bus)是一种用于连接计算机和外部设备的通用接口标准。
它的出现极大地方便了人们的生活和工作,成为了现代计算机设备中不可或缺的一部分。
USB协议作为USB接口的核心,对于理解USB接口的工作原理和应用具有重要意义。
本文将对USB协议进行详细解析,帮助读者更好地理解和应用USB接口。
首先,USB协议包括了物理层、数据链路层、传输层和应用层四个部分。
在物理层,USB接口采用了差分信号传输技术,能够有效地抵抗噪声干扰,提高数据传输的可靠性。
数据链路层负责数据的分组和错误检测,保证数据的完整性和正确性。
传输层则负责数据的传输和管理,包括数据的打包和解包,以及数据的流控等功能。
应用层则是USB协议的最上层,负责定义USB设备的功能和通信协议。
其次,USB协议定义了大量的标准设备类别,包括存储设备、打印设备、音频设备、视频设备等。
这些标准设备类别使得不同厂家生产的设备可以在不同的计算机上通用,大大提高了设备的兼容性和可扩展性。
此外,USB协议还定义了大量的通信协议,包括控制传输、批量传输、中断传输和等时传输等,这些传输方式适用于不同的数据传输场景,满足了各种设备的需求。
另外,USB协议还规定了设备的插拔管理、电源管理和配置管理等功能。
设备的插拔管理包括了设备的识别和初始化过程,保证设备可以正确地被计算机识别和使用。
电源管理则包括了设备的供电和节能管理,使得设备可以根据需要进行供电和节能,延长设备的使用寿命。
配置管理则包括了设备的配置和控制,使得设备可以根据不同的需求进行灵活的配置和控制。
最后,USB协议的发展也在不断地完善和演进。
USB 1.0、USB 2.0、USB 3.0和USB 3.1等不同版本的USB协议相继推出,不断地提高了USB接口的传输速度和功能特性。
同时,USB Type-C接口的出现也使得USB接口在连接方式和功能上有了更大的突破,成为了未来计算机设备的主流接口标准。
usb协议深入解读
usb协议深入解读
USB(通用串行总线)是一种广泛使用的计算机接口标准,主要用于连接计算机和其他外部设备。
它诞生于1994年,由微软、英特尔和惠普等公司联合开发。
USB协议是USB接口的通信协议,它定义了计算机如何与外部设备进行通信。
USB协议是一种分层协议,从上到下分为三层:应用层、传输层和物理层。
1.应用层:这一层主要负责处理应用程序的请求,例如文件传输、设备驱动程序等。
2.传输层:这一层负责将数据打包成包,并通过USB总线传输。
它提供了四种类型的传输方式:控制传输、批量传输、中断传输和同步传输。
每种传输方式都有其特定的用途和特性。
3.物理层:这一层负责实际的物理连接和信号传输。
它定义了USB设备的物理特性,如电压、电流等,并规定了USB设备的物理连接方式,如插头和插座的形状、尺寸等。
在USB协议中,数据是以数据包的形式传输的。
每个数据包都包含一个同步字段、一个包标识符字段、一个数据字段和一个校验字段。
同步字段用于同步数据包的开始和结束;包标识符字段用于标识数据包的类型;数据字段包含实际传输的数据;校验字段用于检查数据包的完整性。
USB协议还定义了设备的枚举过程,即计算机如何识别和配置外部设备。
枚举过程中,计算机通过发送请求给设备,获取设备的描述信息,然后根据这些信息对设备进行配置。
总的来说,USB协议是一种灵活、高效、易于使用的通信协议,它使得外部设备的连接和配置变得更加简单和方便。
随着USB标准的不断发展,现在USB接口已经成为计算机和其他设备的标配接口之一。
通俗易懂的USB协议详解
通俗易懂的USB协议详解USB(Universal Serial Bus)是一种用于计算机外部设备的通信接口标准。
它是一种快速、易用和多功能的连接标准,广泛应用于各种设备,如键盘、鼠标、打印机、存储设备等。
本文将详细解释USB协议的工作原理和通信过程。
USB的工作原理:USB协议使用主从架构,其中主机(Host)是发起数据传输的设备,而从机(Peripheral)是被动等待命令的设备。
通信过程包括主机发送命令和从机返回响应。
USB分为各个版本,每个版本都有自己的规范和特性。
USB1.0和1.1的数据传输速率为1.5Mbps和12Mbps,USB2.0提高到了480Mbps,USB3.0达到了5Gbps,USB3.1则有10Gbps的速率。
USB Type-C是一种新的接口规范,支持更高的传输速率和更多的功能。
USB传输类型:USB传输类型主要有三种:控制传输(Control Transfer)、批量传输(Bulk Transfer)和中断传输(Interrupt Transfer)。
控制传输是主机和从机之间交换控制命令的过程,用于配置从机和获取状态信息。
这种传输类型速度较慢,但可靠性高。
常见的示例是设备初始化和配置。
批量传输用于大容量数据的传输,速度较快,但可靠性较低。
常用于大容量存储设备和打印机等。
中断传输用于低延迟和实时数据传输。
它在通信过程中不需要确定发送/接受数据的时间间隔,但传输速率较低。
示例包括鼠标和键盘输入。
USB通信过程:握手阶段是主机向从机发送命令,并等待从机的响应。
主机发送一个命令包含特定的命名和数据,从机接收并处理命令,然后发送响应给主机。
握手阶段用于确保主机和从机都能够正常通信。
命令阶段是主机和从机之间的数据传输,用于配置设备和请求数据。
命令由特定的标识符和参数组成,从机根据命令执行相应的操作,并返回主机所需的数据。
数据传输阶段是指在命令阶段之后,如果需要传输大量数据时的过程。
usb,协议详解
竭诚为您提供优质文档/双击可除usb,协议详解篇一:usb-pd协议解说usbpowerdelivery快速充电通信原理本篇文章讲的快速充电是指usb论坛所发布的usbpowerdelivery快速充电规范(通过Vbus直流电平上耦合Fsk信号来请求充电器调整输出电压和电流的过程),不同于本人发布的另一篇文章所讲的高通quickcharger2.0规范,因为高通qc2.0是利用d+和d-上的不同的直流电压来请求充电器动态调整输出电压和电流实现快速充电的过程。
usbpd的通信是将协议层的消息调制成24mhz的Fsk信号并耦合到Vbus上或者从Vbus上获得Fsk信号来实现手机和充电器通信的过程。
如图所示,在usbpd通信中,是将24mhz的Fsk通过cac-coupling耦合电容耦合到Vbus上的直流电平上的,而为了使24mhz的Fsk不对powersupply或者usbhost的Vbus 直流电压产生影响,在回路中同时添加了zisolation电感组成的低通滤波器过滤掉Fsk信号。
usbpd的原理,以手机和充电器都支持usbpd为例讲解如下:1)usbotg的phy监控Vbus电压,如果有Vbus的5V电压存在并且检测到otgid脚是1k下拉电阻(不是otghost模式,otghost模式的id电阻是小于1k的),就说明该电缆是支持usbpd的;2)usbotg做正常bcsV1.2规范的充电器探测并且启动usbpd设备策略管理器,策略管理器监控Vbus的直流电平上是否耦合了Fsk信号,并且解码消息得出是capabilitiessource消息,就根据usbpd规范解析该消息得出usbpd充电器所支持的所有电压和电流列表对;3)手机根据用户的配置从capabilitiessource消息中选择一个电压和电流对,并将电压和电流对加在Request消息的payload上,然后策略管理器将Fsk信号耦合到Vbus 直流电平上;4)充电器解码Fsk信号并发出accept消息给手机,同时调整powersupply的直流电压和电流输出;5)手机收到accept消息,调整chargeric的充电电压和电流;6)手机在充电过程中可以动态发送Request消息来请求充电器改变输出电压和电流,从而实现快速充电的过程。
USB3.0协议详情(中文)
3.2 超速结构超速总线是一个分层的通讯结构,如如下图所示:协议层:协议层在主机和设备间定义了end-to-end〔端到端〕通讯规如此.超速协议在主机和设备端点<endpoint>之间提供给用数据信息交换.这个通讯关系叫做管道<pipe>.它是主机导向的协议,意味着主机决定什么时候在主机和设备间进展应用数据传输.设备可以通过一个特定端点向主机发起异步请求服务,所以它不是一个轮询协议〔USB2.0为轮询协议〕.数据可以连续突发传输,提高总线效率.对某些传输类型〔块传输〕,协议提供流控支持.SS设备可以异步发送,通知主机,设备的功能状态发生改变.而不是轮询的方式.设备端点可以通过设备异步发送的"ready〞包〔ERDY TP〕通知主机进展数据发送与接收,主机对于"ready〞通知,如果有有效的数据发送或者缓存接收数据,会添加管道.主机发送包含主机时间戳的特殊某某〔ITP〕到总线上,该值可以用于保持设备和主机同步〔如果需要的话〕.超速USB电源管理:链路电源管理的关键点是:·设备向主机发送异步"ready〞通知·包是有路由路径的,这样就允许不参与数据通讯的链路进入或仍旧停留在低电源状态.·如果包送到一个处于低电源状态的端口,这个端口会切换到退出低电源状态并指示这是个切换事件.设备:·超速需要支持的规定.HUB设备:因为,为支持USB3.0双总线结构,USB3.0 HUB在逻辑上是两个HUB的组合:一个USB2.0 HUB和一个USB3.0 HUB.连接到上游端口的电源和地线是共享的.集线器<HUB>参与到一个端到端的协议中,所承担的工作:·路由选择输出的包到下游端口.·输入包混合传递到上游端口·当不在低功耗状态下时,向所有下游端口广播时间戳包〔ITP〕,即为同步时间信息包.·当在一个低功耗状态的端口检测到包时,集线器将目标端口转变成退出低功耗状态,通知主机和设备〔带内〕包遭遇到了一个在低功耗状态的端口.主机<Hosts>:一个USB3.0主机通过主控器和USB设备互连.为了支持双总线结构超速〔USB3.0〕,这样可以同时管理每一个总线上主机和设备间的控制、状态和信息交换.主机含有几个根下行端口实现超速USB和USB2.0,主机通过这些端口:·检测USB设备的连接和移除;·管理主机和设备间的控制流;·管理主机和设备间的数据流;·收集状态和活动统计;·对连接的设备供电;USB系统软件继承了USB2.0的结构,包括:·设备枚举和配置;·规划周期性和异步数据传输;·设备和功能电源管理;·设备和总线管理信息.数据流模型:超速USB集成了USB2.0的数据流模型,包括:·主机和设备间的数据和控制交换通过管道〔pipe〕进展 ,数据传输在主机软件和指定的设备端点间进展.·设备可以有不止一个的活动管道,有两种类型的管道:流式管道〔数据〕和消息管道〔控制〕,流式管道没有USB2.0定义的结构,消息管道有指定的结构〔请求的结构〕.管道相关联的是数据带宽,传输类型〔见下面描述〕,端点属性,如传输方向与缓冲大小.·大多数管道在系统软件对设备进展配置后才存在,但是当设备上电在默认的状态后,一个消息管道即默认的控制管道总是存在的.提供权限访问设备的配置,状态和控制信息.·一个管道支持四种传输类型的一种<管道和端点属性一致>.·海量传输类型〔bulk〕在超速中进展了扩展,叫做流〔stream〕.流式提供在协议级支持在标准块传输管道中多路传输多个独立的逻辑数据流.第四章超速数据流模型SS保持相似的观念和机理,支持端点,管道和传输类型.参考USB2.0协议.端点的属性〔最大包尺寸〔端点缓存大小〕,突发大小等〕被记录在描述符中和SS Endpoint panion Descriptor.正如在USB2.0中,端点是使用三个参数组成的地址来验证〔设备地址,端点号和方向〕.所有的SS设备必须起码在默认控制管道〔端点0〕开始执行.4.2.1 管道一个超速管道是一个设备上的端点和主机软件的连接.管道代表拥有缓存空间的主机软件和设备端点之间传输数据的能力,和USB2.0有一样的过程.主要的区别在于当超速的非同步端点忙时,会返回一个没有准备好〔NRDY〕应答,当它想又要服务时必须发送准备好〔ERDY〕通知.主机在下一个传输类型限制下的有效时机中重新安排事务.4.3超速协议综述:正如在USB3.0结构总览那章中提到的,超速协议是利用双差分数据线的物理层.所有的USB2.0的类型都可以被高速协议支持.协议之间的区别在于下面要首先讨论的超速中使用的包的描述.4.3.1与USB2.0的区别:在框架上,超速是向后兼容USB2.0的,但是二者在协议上还是有一些重大的不同:·〔事务处理〕有三局部<令牌〔token〕、数据〔data〕和握手<handshake>>,超速也是这三局部但是用法不同〔令牌包集成在头包和DPH中,各种类型的握手包都是TP包形式〕;对于OUT事务,令牌被合并在数据包中;对于IN事务,令牌被握手包代替.·突发〔bursting〕,超速支持持续突发;·半双工<half-duplex>的广播总线,超速是dual-simplex〔全双工〕的非广播总线,支持同时进展IN、OUT transaction;·轮询模式,超速使用异步通知方式;·流能力,超速支持海量<bulk>端点的Stream方式;·同步传输<isochronous>间隔中没有进入低耗电状态的机制,超速如此允许同步传输服务间隔中自动进入低耗电状态〔不服务的时间段进入低功耗〕;SS主机在服务间隔前发送一个PING包到目标同步设备允许开始同步传输之前转变成电源活动状态.·通知主机自己在进入低耗电状态前可容忍的延迟时间〔设备通知主机自己进入低功耗状态的最长延迟时间〕,超速如此提供Latency Tolerance消息;·帧包/小帧包〔USB 2.0全速和高速模式〕.超速下,设备可以发送Interval Adjustment 消息给主机调整间隔125us一直到+/-13.333us;·主机导向〔主机初始化〕的,超速链路两端都支持电源管理;因此不管何时需要空闲,需要退出,需要通信,每个链路能独立的进入低电源状态.·USB2.0 仅在每个transaction进展end-to-end级别的错误检测、恢复、流控,超速在end-to-end〔数据包重试〕和链路级别〔头包重试〕分割这些功能.的事务处理<Transaction>超速全双工总线物理层允许同时进展双向的通信.超速协议允许收到握手包之前发送多个数据包〔突发〕.对于OUT传输,包含在USB2.0令牌包中的信息〔设备地址和端点信息〕被合并在数据某某里面,因此不需要额外令牌包.对于输入传输IN,超速主机发送一个握手包〔ACK〕给设备以请求数据〔和指示数据是否正确〕.设备可以通过返回数据或者返回STALL 握手包来应答,或者返回一个没准备好<NRDY>握手包延迟传输直到设备准备好了.广播方式,每个连接的设备解析每个包的地址、端点、方向信息来决定自己是否应该响应.超速包有路由信息,HUB决定每个包要送达哪个设备,只有一个例外,等时〔同步〕时间戳包〔Isochronous Timestamp Packet, ITP〕广播到每一个设备.USB2.0的查询方式已经被异步通知代替.超速传输通过主机发出一个请求来开始传输,后面跟随着设备的应答.如果设备能承受请求,它就接收数据或者发送数据;如果端点停止了,设备应该以STALL握手包响应;如果设备由于缺少缓存空间或者没有数据而不能承受请求,应该以NRDY应答告诉主机现在还不能处理请求.当等到设备能承受请求时,设备会主动发送一个端点准备好〔ERDY〕异步通知给主机然后主机会重新安排传输事务.单路传送和有限制的多点广播的包以与异步通知,都允许没有活跃传输包的链路进入一个降低功耗状态,上游和下游端口共同决定它们的链路进入一个低功耗状态,集线器会传递到上游端口.通过允许链路伙伴独立控制它们的链路电源状态,集线器将任意下游端口可见的最高链路电源状态传递到上游端口,使总线快速进入最低允许电源状态.超速包介绍:超速包以16字节的头部开始.一些包只包含有头部〔TP,LMP,ITP〕.所有的头部以用于决定包处理方式的包类型信息开始.头部有16位CRC保护,以2个字节链路控制字〔link control word〕完毕.依赖于类型,大多数包包含有路由信息〔路由字符〕和一个三参数的设备地址〔设备地址,端点号和方向〕.路由字符给主机用来指导包被发送到被指向的拓扑路径.设备发送的包被集线器默认路由选择,集线器总是把数据从任何可见的下游端口传到上游端口〔这一过程不需要路由信息〕.有四种根本类型的包:〔协议层〕·Link Management Packet<LMP>,只穿过一对直接连接的端口〔链路两端〕,主要用来管理链路.·Transaction Packet<TP,事务包>,穿过所有直接连接主机与设备的链路,用来控制流式数据包,配置设备和集线器等〔任何传输类型的事务处理都用到〕.注意一个Transaction Packet 是没有数据的.〔控制命令包,TP包就是一个某某〔DPH〕〕·Data Packet<DP>,穿过所有直接连接主机与设备的链路,数据包有两局部组成,一个和TP包相似的数据某某<DPH>和带有数据块加上用来确保数据完整性的32位CRC的数据包〔DDP〕·Isochronous Timestamp Packet<ITP>.它被主机用来多点广播到所有的活动的链路上. 4.4 对传输<transfer>的一般性描述:每一个发送给接收器的非同步数据包通过一个握手包〔ACK TP〕被应答〔同步端点不应答,非同步端点要为每个收到的数据包进展应答,以报告是否正确传输和是否要重传〕,但是由于超速有独立的发送与接收路径,所以发送器不必在发送下一个包之前为每次传输的数据包等待一个握手〔超速USB的一个特色:同时进展发送数据与接收应答,当设备检测到数据包错误时或者端点错误,没准备好等,都会通过在应答TP包中反响给主机,主机收到的应答TP 包中记录出错的包顺序号,于是主机从错误的那个顺序号开始重新发送包〕.超速保护所有的根本数据流和USB2.0定义的传输观点,包括传输类型,管道和根本数据流模式.和USB2.0的区别在这章被讨论,开始是协议层,然后是传输类型.USB2.0规X利用一系列事务处理的模式.这从本质上意味这主机是在开始下一次事务前完成这一次总线处理〔令牌,数据和握手〕.别离事务处理也坚持这一样模式,因为他们由完整的高速事务组成,类似所有其他事务在一样的模式下完成.超速通过实施发送与承受同步改善了USB2.0事务的协议.因此超速USB事务处理协议本质上是一个别离的事务处理协议,它允许在同一时间不止一个OUT总线事务处理〔设备可以多个〕和至多一个IN总线事务处理〔主机只有一个〕在总线上活动.设备对事务处理的应答的命令是确定在每个端点根底上〔例如,如果一个端点接收三个DP包,端点必须为每一个DP包返回ACK TP告知收到DP包〕.USB2.0协议要在继续下一个总线事务处理之前完成整个IN或OUT事务〔令牌,数据和握手包连续传输〕,所有的来自主机的传输本质上是广播到USB2.0总线上的每一个活动设备,与之比拟起来,超速协议不进展广播任何包〔ITP除外〕,包只穿过需要达到目标接收方的链路,主机通过发送握手请求〔ACK TP〕或者发送数据〔OUT〕开始所有的事务,设备以数据或者握手来应答.假设设备没有有效的数据〔IN〕或者不能承受数据<OUT>,它会以一种包〔NRDY〕来应答以指示不能进展此操作.之后,当设备准备好发送或者接收数据时,它会发送一个包给主机指示它已经准备好重新进展事务处理.除此之外,超速提供将链路转变成指定的低电源状态或者退出低电源状态的能力.低电源链路状态可以在软件使能以后由软件控制或者自发的硬件控制来进入.还提供一个自动将主机与设备之间的所有链路由非活动电源状态转变成活动电源状态的机制.设备在每个端点的描述符中记录每个端点的最大包尺寸.这个尺寸只指示负载数据块长度,不包括链路层和协议层的某某〔DPH〕.超速的带宽分配相似于USB2.0.4.4.1 Data Bursting〔突发数据〕突发数据通过消除在每个基于数据包应答的等待时间提高效率〔即无需等待应答就能处理数据〕.每个超速设备上的端点指示了它在必须等待一个明显握手之前能够发送/承受的包数量〔称之为最大数据突发大小〕.最大数据突发大小是一个每个端点各自的能力,一个主机从与端点相关的SuperSpeed Endpoint panion descriptor描述符决定一个端点的最大数据突发大小.主机在每个事务处理的根底之上能动态改变突发大小,直到最大突发大小被配置了.主机能使用不同突发大小的一个例子,不受限于,但是包括一个主机上的公平决策和中断流的重试. 当端点是OUT类型,主机能容易控制突发大小〔接收器必须总是能管理突发大小事务处理〕,当端点为IN类型,主机能基于每次事务处理限制端点突发大小,是通过在发送给设备的应答包中的一个域来限制.4.4.2 IN transfer〔输入传输〕:主机和设备应该延续传输类型和端点属性的约束.一个主机通过发送一个ACK确认请求包给设备〔IN〕开始请求一次传输.这个确认〔握手包〕包包含了数据包路由选择到想要的端点所需要的地址信息.主机告知设备它可以发送的数据包数量和期望来自于设备第一个包的序号〔0〕.在应答中,端点会发送正确的序列号的数据包给主机,主机发确实认包也暗中应答了之前成功收到的数据包〔以与请求下一个顺序号的数据包〕.注意:即使主机需要为每一个收到的数据包发送一个确认包,但是设备可以不需等待任何确认包就发送所需要的数据包数量.超速总线的一次IN传输由一个或多个IN事务处理组成,一个IN事务处理由一个或多个包组成〔比如主机发送ACK TP,设备发送DP或NRDY TP或STALL〕.当下面的任何条件发生,都能完毕IN传输:·所有数据已经成功传送;·设备端点发送一个短包〔比最大包尺寸小的包〕作为应答;·端点响应错误.〔Host发送IN packet之后,设备可以持续发送多个数据包,不需要等待每个包都得到host 确实认包〔ACK TP〕,因为超速是dual-simplex〔全双工〕的,但是设备收到的总的认可包数量应该和设备发送的数据包数量一样.〕4.4.3 OUT transfer:主机通过发送一个突发数据包给设备开始一次OUT传输,每一个数据包〔的DPH〕包含需要路由选择目标端点的地址信息,也包含数据包的顺序号〔作为区分不同发送顺序的数据包标号〕.对于一个非同步事务,设备返回一个确认包,其中包含下个要接收的数据包顺序号和隐含地应答当前数据包.注意:虽然设备需要为每个收到的数据包发一个确认包,但是主机不需等待一个应答就能发送最大的突发数据包数量给设备.OUT transfer在如下情况下时会完毕:·所有数据已经成功传送;·Host发送了一个短包;·端点响应错误.四种transfer类型:control、bulk、interrupt、isochronous transfer.用意同USB2.0,但是bulk 最大包大小增加为1024B,control端点最大包大小增加为512B.control 端点不支持burst,bulk 可以burst 1~16,bulk还增加了Stream能力;interrupt、isochronous可以burst 1~16〔当最大突发大小为1时,对于同步传输,其最大包大小能为0-1024之间任意大小,对于中断端点,最大包大小可以在1-1024之间任意大小;如果最大突发大小为>1时,最大包大小只能为1024〕.4.4.5 控制传输完全一样.这个规格的协议层章节详细描述了用于完成控制传输的包,总线事务处理和事务处理流程.设备架构那章定义了完整系列的设备使用的标准命令编码.每个设备需要启动默认控制管道作为一个消息管道.这个管道用来进展设备初始化和管理,用来访问设备描述符和向设备请求对其进展操作〔在设备级〕.控制传输必须维持一样的在USB2.0中定义的请求〔获取描述符等命令〕.超速系统会制造一个最好的条件情况支持主机与设备间的控制传输.正如USB2.0,功能和客户软件不能为控制传输主动要求指定带宽〔不是能分配10%的带宽吗?〕.4.4.5.1 控制传输包大小控制端点有一个固定的最大控制传输数据包大小为512字节〔同时反响了端点缓存大小〕.还有一个最大突发大小为1〔控制传输不支持突发数据?〕.这些最大值适用于在控制传输数据阶段的所有的数据事务处理.参考8.12.2章,详细描述了超速控制传输的建立〔setup〕与数据阶段〔data〕.超速设备在设备描述符的bMaxPacketSize域中必须记录一个09H的值.默认控制管道的默认最大包大小的解码规如此在9.6.1章被给出〔2的9次方=512B〕.默认控制管道必须支持最大顺序值为32〔在[0-31]X围的顺序值被使用〕.USB2.0与超速之间,设备到主机和主机到设备的数据阶段数据传输和完成一般没有什么改变.4.4.5.2 控制传输带宽需求设备没有方法为控制管道指示想要的带宽.主机通过权衡所有控制管道总线访问需求与在那些管道上挂起事务处理来提供一个最好的情况给客户软件和功能设备之间的传输.这个规如此跟USB2.0相似.超速需要保存有效的总线带宽给控制管道作为以下使用:·控制传输事务处理可能与其他被定义功能端点的事务处理一同被安排·控制传输的重试不能优先于其他最好情况的事务处理·如果有控制传输和块传输为多个端点挂起,根据一个主机控制器相关的公平规如此,不同端点的控制传输被选择服务.·当一个控制端点传输一个流控制事件,主机会移除来自于被安排的活动端点.一旦收到一个来自于设备准备好的通知,主机会对这个端点恢复传输.这些要求允许主机与设备间的控制传输周期性的通过有最好条件的超速总线移动数据.系统软件的任意操作行为在USB2.0 5.5.4定义.超速控制传输同样适用.4.4.5.3 控制传输数据流程超速保护消息格式和在USB2.0定义的控制传输的一般阶段流程.超速协议定义了对控制传输建立和状态阶段的一样改变.4.4.6 块传输此规格的8.12.1章详细描述了用来完成块传输的包,总线事务处理和事务处理流程.块传输类型是用来支持想要跟相当大的海量数据通信设备,传输能使用任何可用的超速带宽.超速块传输功能端点提供以下:·对基于有限带宽的超速总线访问·保证数据的发送,但是不保证带宽和发送时间超速维持下面的块传输管道特征:·对块传输管道通信流没有强制固定的数据结构·块传输管道是一个流式管道,因此总是有通信流进出主机.如果应用需要一个双向块传输通信流,必须使用两个块传输管道〔一个OUT,一个IN〕.标准USB块传输管道提供移动数据流的能力.超速增加了协议级支持多倍流模式的流式概念.4.4.6.1 块传输数据包大小块传输端点应该在端点描述符中设置最大数据包大小为1024字节.也要指定端点在超速总线上能够承受或发送的突发大小.可允许的块传输端点突发大小在1到16的X围.所有的超速块传输端点要支持[0-31]的顺序值.主机需要支持任何超速bulk传输端点和所有的bulk传输突发大小.主机要确保发送给端点的数据包的数量不能超过描述符中定义的最大包大小.此外,发送的突发数据包不能超过记录的最大突发大小.块传输功能端点发送的数据包,其数据域必须总是小于等于1024字节.如果块传输数据量超过1024,如此突发事务中所有数据包除了最后一次,都必须是1024字节大小?,最后一次是剩下的不足1024字节的数据.块传输可以持续多个总线事务处理.块传输在端点有以下情况时完成:·已经准确传输完了所期待的数据·传输了一个比1024字节少的数据包〔短包〕·应答STALL握手包4.4.6.2 块传输带宽需求正如USB2.0,块传输功能端点没有方法为块管道指定想要的带宽.块事务处理只发生在超速总线上有可用带宽的根底上.超速提供一个最好的条件在客户软件和功能设备间传输块数据.控制传输对总线操作比块传输更有优先权〔对总线操作的优先级,控制传输比拟高〕.当有多个端点的bulk传输挂起时,主机会根据一个公平访问原如此提供事务处理的机会给每个端点,这就是主机依赖性操作.所有在系统中挂起的块传输竞争一样的有效总线时间.端点和客户软件不能为块传输假定配置一个指定的服务率〔总线带宽不能为块传输主动分配〕.总线时间被提供给客户软件,由于其他设备被插入到系统或者从系统中移除或者因为块传输被其他功能端点需要,端点能被改变.客户软件不能假定在块传输和控制传输之间的顺序,即在一些情形中,块传输能在控制传输的前面进展.主机在带有块传输端点的事务处理中能使用任何在1和记录的最大的突发大小,更高效的利用有效总线带宽.例如,可能有比有效总线带宽更多的块传输,所以主机可以每次使用事务中更小的数据突发,以提供公平服务给所有挂起的块数据流〔因为块传输多,有效带宽少,所以为了能公平给所有等待的块传输机会,主机会使用事务处理中比拟小的数据突发大小,从而将有效带宽充分平均分配给所有块传输〕.当一个块传输端点传输一次流控制事件〔在8.10.1章定义〕时,主机会从安排的活动端点中移除它,主机会基于接收到来自于设备的准备好通知恢复端点的传输.4.4.6.3 块传输数据流程块事务处理为数据可靠传输使用标准的突发序列,在8.10.2章定义.块端点通过一次适宜的控制传输〔SetConfiguration, SetInterface, ClearEndpointFeature〕被初始化成最初的发送/承受顺序号和突发大小值〔8.12.1.2 和8.12.1.3〕.同样,主机在已经成功完成了上面提到的适宜的控制传输后,配置块传输管道初始的发送/接收序列号和突发大小值.超速块管道的停止条件跟USB2.0定义的块端点一样同样有副作用.从停止条件中恢复也跟USB2.0一样.块管道停止条件包括STALL握手包作为一次事务处理的应答或者由于发送错误主机事务处理的重试次数消耗完的应答.4.4.7 中断传输中断传输类型用来支持带有轮询服务间隔需要高可靠性传输小数量数据的设备.这个规格的协议层章详细描述了与中断传输相关的包,总线事务和事务处理流程.超速中断传输类型一般提供以下方面:·能保证最大的服务间隔·能保证在下一次服务间隔中尝试重新传输在每个服务周期中为中断端点尝试中断传输,保存一定带宽保证在每个服务间隔尝试传输.一旦传输成功,就不尝试另外一次传输〔在此周期内〕,直到下一个轮询服务周期到来〔保证每个服务周期中尝试一次中断传输〕.如果端点以没有准备好的通知或者一个指示不能接收任何包的ACK应答,如此主机不会在此次服务中尝试另外一次到端点的传输,除非接收到准备好的通知.然后主机必须在收到〔准备好〕通知后的2个服务周期内服务端点.端点服务周期的请求在它的端点描述符中描述.超速维持中断管道下面的特性:·没有数据内容结构用于中断管道通信流·中断管道是一条流式管道,因此总是单向的.。
通俗易懂的usb协议详解
通俗易懂的usb协议详解通俗易懂的USB协议详解USB(Universal Serial Bus)是一种通用的串行总线,它是连接计算机与外部设备的一种标准接口。
它的出现简化了计算机与外设之间的连接方式,成为广泛使用的接口之一。
那么,USB协议是什么,它是如何工作的呢?USB协议是一种规范,用于控制计算机与外部设备之间的通信。
它包含了多种协议,每种协议都有其特定的功能。
USB协议分为四个层次:物理层、数据链路层、传输层和应用层。
这四个层次协同工作,来完成计算机与外设之间的数据传输。
物理层是指USB接口的物理连接。
USB接口的类型分为A、B、C、Micro-USB、Mini-USB等多种,每种接口都有其特定的应用场景。
例如,A接口用于连接计算机、鼠标、键盘等设备,B接口用于连接打印机、扫描仪等设备,而C接口逐渐成为了新一代的通用接口。
数据链路层是指USB接口的数据传输方式。
USB协议采用的是异步传输方式,即数据的传输不需要时钟信号的同步控制。
在数据传输前,数据被分为若干个数据包,每个数据包包含有标识符和数据信息。
数据包的标识符用于标记数据包的类型和传输方向,数据信息则是实际的数据内容。
传输层是指USB协议中的传输协议,包括了控制传输协议(Control Transfer Protocol)、批量传输协议(Bulk Transfer Protocol)、中断传输协议(Interrupt Transfer Protocol)和等时传输协议(Isochronous Transfer Protocol)等。
每种传输协议都有其适用的场景和特点。
例如,控制传输协议用于发送设备控制命令,批量传输协议适用于大容量数据的传输,中断传输协议适用于对数据传输时延要求较高的场景,等时传输协议适用于对数据传输实时性要求较高的场景。
应用层是指USB接口与应用程序之间的通信。
USB协议支持各种操作系统和应用程序,应用程序通过USB接口与外部设备进行通信。
USB协议详解
USB协议详解B2.0 协议USB 协议,由于涉及内容太多,所以在此一个文档中解释清楚,是不现实的。
此处能做的和要做的,就是对于USB 协议简明地介绍一下关于USB 本身协议部分的内容。
当前最新的USB 协议,已经发展到USB3.0 了。
但是主流的USB 设备和技术,还是以USB 2.0 居多。
所以此文,主要是以USB 2.0 为基础来解释USB 协议的基础知识,当然,会在相关内容涉及到USB 3.0 的时候,也把USB 3.0 的相关内容添加进来。
关于USB 2.0 和USB 3.0 等USB 的协议规范,可以去官网下载:usb/developers/docs/其实,说实话,不论是谁,如果开始看USB 协议的时候,发现单独对于USB 2.0 规范本身这一个文档来说,竟然都有650 页,而如果再加上,新的USB 3.0 规范的482 页,和其他一些辅助的USB 相关的规范定义等文档,即使你是英语为母语的人,如果要看完这么多页的协议规范,估计也会吐的,更别说我们中国人了。
所以,此处,就来简单以USB 2.0 规范为例,分析一下,具体其都主要包含哪些内容,然后你会发现,其实和USB 协议本身相关的内容,相对则不会那么多,大概只有97 页左右的内容,是我们所要关心的。
下面就来分析看看,USB 2.0 的规范中,具体都包含了哪些内容:B 协议的版本和支持的速度USB 协议,也像其他协议一样,经历过很多个版本,但是正式发布出来的,主要有4 个。
其中,从开始的USB 1.1,发展到后来的USB 2.0,以及最新的协议版本是USB 3.0.不过这三个版本都是针对的是有线的(corded)设备来说的,在USB 2.0 和USB 3.0 之间,发布过一个是针对无线设备的USB 协议,叫做USB Wireless,也被称为USB 2.5。
其中,USB 1.1 中所支持的速度是低速(Low Speed)的1.5Mbits/s,全速(Full Speed)的12Mbits/s,而USB 2.0 提高了速度至高速(High Speed)的480Mbits/s,而最新的USB 3.0,支持超高速(Super Speed)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Usb详解USB作为一种串行接口,应用日益广泛。
如同每个工程设计人员必须掌握I2C,RS232这些接口一样,我们也必须掌握usb.但是usb的接口协议实在有点费解,linux uhci驱动作者之一Alan Stern曾经就说过“The USB documentationis downright evil. Most of it is just crap, written by a committee. You're better off ignoringmost of it ”。
本文将从整体上介绍usb协议,包括usb host ,usb hub,usb function。
希望能给读者一个总体上的了解。
也因此,文章将分成相应的三部分讲解。
一。
usb function1。
初识b是一种串行接口协议,它靠d+,d-两条数据线构成的差分线来进行数据传输,这让我们非常感兴趣它到底和我们通常熟悉两线rs232/485有何区别。
了解这种区别有助于我们对usb作一个深入的了解。
那么让我们回想一下到底一个两线rs232的数据是如何传送的,如图一:在这里我们的重点在于,我们发现要在串行口传送数据一个最体码的要求恐怕就是:要知道数据传输何时开始,何时结束。
即如何delimit.那么rs232怎么做的。
显然,在idle(空闲)时,即无数据传送时,数据线处于高电平,等到有数据开始传送,发送方首先拉低数据线(start),表示数据传输开始,接受端也因为这个“start”信号开始准备接受即将到来的数据,类似一次握手,随后,在两者之间的数据传送开始,结束后主方再次拉高数据线,表示结束传输,自此两者重新进入Idle状态。
等待下一轮传送开始。
了解了rs232,那么我们自然想到usb如何做到这个呢,既然是串行位流传输,也理所当然的解决这个问题。
没错,Usb协议必然要解决这个问题,让我们作一个类似rs232的比较吧!类似于rs232,usb的传输桢如图二:(这里我们暂时忽略这个传输所代表的意义)为了说明问题,我们对一些问题简化,我们定义这样几个状态:假设D+,D-分别表示usb信号线的电平信号。
那么对于usb full speed function(high speed ,low speed是不同的),我们定义差分数据线上可能出现的四个状态:Data J state:D+=1,D-=0;Data K state:D+=0,D-=1;SE0:D+=D-=0;SE1:D+=D-=1;那么上面的图中,相应的也可表示为图三:这个对usb full speed function来说,idle状态将处于Data J state,se0表示一桢结束。
看这个图是不是很像我们熟悉的rs232。
没错!!!他们确实很相似。
在无数据传输时,它们都处于Idle状态,当要开始传输数据时,先发一个sync(同步信号,rs232为start,usb为一sync字节,见协议说明)信号进行“握手”,而后开始传输,当传输要结束时,发一stop信号(usb为一个se0状态表示要结束传输),最后又进入idle态等待新的传输。
不过,你可能更加注意到,他们还是不同的。
不同在于usb是按packet进行传输的,就是说它传输的最小单位是packet,而rs232是按字节传送的,也即它的最小传送单位是字节。
既然是按pakcet传送,想想我们相较于rs232的按字节单位传输,我们可以得到哪些“好处”。
想想看,pakcet的好处不就在于我们可以灵活的定义数据的传送格式,传送方式,从而可以适应各种各样的串行设备,这不就是所谓的“通用串行总线”吗?简介:从本节开始,我们将介绍usb的传输机制。
这节先介绍usb现有传输方式的背景知识,做为对下节将要展开的四种传输类型,描述符,等相关知识的一个导引。
2。
usb传输。
我们在上一节中了解到了usb的“packet”的感念,了解到了usb传送一个packet总是以sync开始,以eop 结束,这个称为delimiter,即标记packet的始末。
有了packet,我们就可以在usb总线上传输数据了。
但是这还不够,比如数据传送方向,即传回usb主机还是传下usb从机,数据传送的地址,数据传送的类型(这些后面我们将会知道)这些信息在传输之前是必须搞清楚的,那么这个信息如何得知呢,看来这就需要我们定一套基于packet 的“协议”了。
主机与从机在传输中均遵循这套“协议”,那么这些问题就可以迎刃而解。
事实上,usb的一次数据传输总是遵循这样的“协议”的:首先,主机发第1个packet给从机,声明数据传送方向,数据传输地址,数据传输类型。
其次,主机发第2个至第n个packet载有实际数据最后,从机返回一个packet是一个ACK包,报告数据传输的结果,比如接受出错或成功等信息,这样主机就可以借此了解到这次传输情况,从而有可能来作出相应措施如决定是否重发。
这里我们考虑的是主机发数据给从机的情况,那么从机发数据给主机时,是不是也可以这样呢?当然可以,比如从机要发数据给主机时,也可以采取同主机类似的方式:首先,从机发第1个packet给主机,声明数据传送方向,数据传输地址,数据传输类型。
其次,从机发第2个至第n个packet载有实际数据最后,主机返回一个packet是一个ACK包,报告数据传输的结果,比如接受出错或成功等信息,这样从机就可以借此了解到这次传输情况,从而有可能来作出相应措施如决定是否重发。
基本上可以归结为一个“三段式”传输这里有人可能注意到了,对这样一个传输机制,从机和主机的功能将是一样的,因为这样的实现机制,从机可能在某一时刻是主机,某一时刻又可能是从机,因为他们要实现同样的功能。
这样实现起来的复杂性也将是一样的。
注:这里概念或许容易混淆,其实,我们这里的主机(master)和从机(slaver)是一个transceiver,即可收可发。
相应的,在某一时刻,master在发数据,我们称其为transmitter,在接受时我们称为receiver.对slaver同样。
我们可能还注意到了,usb这种按pakcet传输的方式在实现时已经很复杂了(至少比rs232要复杂多吧),至少我们目前看来主从机功能一样这样的实现方式似乎还是可行,但是后面我们谈到usb host时将会了解到host 的功能是如何的复杂,以至于让一个usb function 也带上如此的功能成本和实现复杂性将陡然上升。
作为面向广范应用的usb,这是我们不允许的。
我们期望的是一个使用usb 的udisk,使用usb的光驱,使用usb的耳麦等等这些东西不要因为usb而变得昂贵,复杂。
正是因为这个原因,usb从机的传输发式便由上面的方式改成了下面的方式进行:首先,主机发第1个packet给从机,声明数据传送方向,数据传输地址,数据传输类型。
其次,从机收到主机送来的第一个packet后,再发第2个至第n个packet载有实际数据最后,主机返回一个packet是一个ACK包,报告数据传输的结果,比如接受出错或成功等信息,这样从机就可以借此了解到这次传输情况,从而有可能来作出相应措施如决定是否重发。
而对于usb 主机传输方式保持不变。
对于这样的改变,我们马上就有疑问了:这个改变的传输方式是和未改变之前的等价吗。
当然,不全等价。
问题在哪里?仔细观察一下便知,两者区别在于第一个packet是由谁发起的。
未改变之前,第一个packet总是由要传送数据的一方发起,而改变之后的第一个Packet总是由主机发起。
这样,就变成如果从机要发送数据给主机时,总是由主机发起(第一个packet),然后从机开始传送。
可能初次接触我们会感觉怪怪的,怎么从机要给主机发送数据前反而要主机先发packet给从机。
这样行吗?我们要说这样是可以的,因为通常一次传输交互的产生,并非无来由的产生,这些都是由程序员控制的,控制usb何时收,何时发,及发给谁!!!这里我们就注意到了,usb function(总是作为从机)的功能一下从原来与主机具有相同功能的tranceiver变成了现在仅具发送(或接收)功能的transmitter(或Receiver)实现的复杂性及成本可想而知也就相应得减小了。
简介:本节介绍usb full speed function的四种传输类型。
上节中我们了解到了usb host与usb function之间采用的是一种“非对称”的传输,也就是说,无论usb接受数据还是发送数据,都是由usb host首先发起。
即传输的第一个packet总是由usb host发出的。
这个packet 将声明本次即将进行的数据传输方向,数据传输地址和数据传输类型。
控制传输(Control Transfers): 或许你已经注意到了,一个usb host端口并不是仅仅支持一个Usb function.如图1,通过usb hub,一个usb host端口可以连接usb鼠标,usb键盘,Usb写字板......。
要连接这么多东西在同一个usb host上,我们通常会有一个基本问题,即usb host如何识别这些被连接在它的端口上的设备呢。
正如通常的主从式通讯系统一样,如rs485多机通讯,我们通常是用一个特定的地址标志每一个从设备。
对这里的usb,我们采用同样的方法,将为每个挂接在该usb host上的usb function指定一个特定地址,通过这个特定地址来识别每个usb function.看来这将是一个usb function在数据传输之前必须解决的问题--得到它的地址分配。
这个“地址指定”的过程需要usb host通知usb function才能完成,这个交互过程就是一个控制式传输。
通过这个“控制式传输”,usb host将指定地址给usb function ,以为即将进行的正式通讯做好准备工作。
这里细心的读者可能已经注意到了,既然usb host总要分配地址给usb function才能进行正式的数据传输工作,那么usb host将如何与一个初始时未分配地址的usb function进行交互来分配地址呢。
这里,是这样解决的:usb协议保留了一个“通用地址”0,usb host 通过这个地址0来和初始未分配地址的usb function进行通讯,进行一些初始的准备工作,诸如这里的为它非配一个特定地址。
后面我们就会了解到,usb除了配置地址外,还有一些其它参数需要事先主从双方达成共识。
这些参数也都是通过控制式传输完成的。
一个Usb 的控制式传输如图二:一个Usb的控制式传输分为两个或三个阶段进行传输:setup stage,data stage(视情况而定),status stage。