(完整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已经成为最常用的设备接口之一。
- 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。