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(Universal Serial Bus,通用串行总线)是一种常见的计算机外部设备连接标准。
本协议旨在对USB协议进行详细分析,包括其基本原理、通信流程和数据传输规范等方面的内容。
二、背景随着计算机技术的不断发展,外部设备的种类和数量不断增加,传统的串口、并口等接口已经无法满足需求。
USB作为一种全球统一的接口标准,被广泛应用于计算机、手机、摄像头、打印机等各种设备中。
三、USB协议基本原理1. 总线拓扑结构:USB采用主从式拓扑结构,主机负责控制总线上的数据传输,从设备则根据主机的指令进行响应。
2. 传输速率:USB支持多种传输速率,包括低速(1.5Mbps)、全速(12Mbps)、高速(480Mbps)和超高速(5Gbps)。
3. 数据传输方式:USB协议定义了四种数据传输方式,分别是控制传输、批量传输、中断传输和等时传输,不同的传输方式适用于不同的设备和应用场景。
4. 插拔支持:USB接口支持热插拔功能,用户可以在不关闭计算机的情况下插拔USB设备。
四、USB通信流程1. 握手阶段:主机和从设备之间进行握手协商,确定通信参数和传输方式。
2. 数据传输阶段:根据传输方式进行数据传输,主机发送命令或数据包,从设备进行响应或返回数据。
3. 结束阶段:通信完成后,主机和从设备进行结束操作,释放资源并关闭连接。
五、USB数据传输规范1. 控制传输规范:控制传输用于主机与从设备之间的命令和控制信息的传输,包括设备的初始化、配置和状态查询等操作。
2. 批量传输规范:批量传输适用于大量数据的传输,如打印机的数据输出。
3. 中断传输规范:中断传输用于周期性的数据传输,如鼠标和键盘的输入。
4. 等时传输规范:等时传输用于对数据传输的实时性要求较高的应用,如音频和视频的传输。
六、USB协议分析工具1. USB协议分析仪:用于对USB通信进行实时监测和分析,可以捕获和解析USB数据包,帮助开发人员定位和解决通信问题。
usb协议深入解读

usb协议深入解读USB(Universal Serial Bus)是一种通用的串行总线标准,用于连接电脑与外部设备,如键盘、鼠标、打印机、存储设备等。
USB协议定义了电脑和外部设备之间的通信规则,保证了设备的互操作性和兼容性。
USB协议的工作原理是将数据分成小的信息包(packet),通过USB线缆传输。
数据传输分为Control、Bulk、Interrupt和Isochronous四种传输类型。
控制传输用于设备配置和命令交互,批量传输用于大容量数据传输,中断传输适用于延迟要求较高的设备,同步传输用于实时流媒体数据传输。
USB协议采用主从架构。
电脑作为主机(host),外部设备作为从设备(device)。
主机负责控制和管理设备的连接和通信,从设备根据主机的指令执行任务。
每个设备都有一个唯一的设备地址,主机通过唯一的地址识别和寻找特定的设备。
USB协议还定义了一种层次结构,包括物理层、总线层、设备层和应用层。
物理层负责USB线缆的传输、信号传输和电气特性。
总线层负责数据帧的传输、错误检测和纠正,以及设备的连接和断开管理。
设备层负责设备地址分配、设备功能描述和配置管理。
应用层根据设备的功能需求进行数据交换和通信。
USB协议还支持热插拔功能,即在不关机的情况下插入或拔出外部设备。
这得益于协议对设备的供电和识别机制。
当设备插入时,主机会为其提供所需的电源,然后通过设备描述符和配置描述符来识别设备的类型和功能。
通过热插拔功能,用户可以方便地连接和断开设备,无需重新启动电脑。
在USB协议中,还有一种特殊的设备称为HID(Human Interface Device),用于连接输入设备(如键盘、鼠标)和输出设备(如显示器)。
HID设备使用标准的USB报告描述符进行通信,主机通过解读报告描述符来识别和操作设备。
这种设计使得不同品牌的键盘和鼠标可以通用于各种操作系统和电脑设备。
需要注意的是,USB协议并不仅限于连接电脑和外部设备。
usb传输协议

usb传输协议USB(Universal Serial Bus)是一种用于连接计算机与外部设备的通信协议。
USB传输协议规定了数据在USB总线上的传输方式和流程,是计算机和外部设备之间进行可靠、高效数据传输的基础。
USB传输协议基于主、从设备的关系进行通信。
主设备通常为计算机,它负责向从设备发送命令和数据,并接收从设备返回的响应。
从设备则是外部设备,如打印机、鼠标、键盘等,它们接受来自主设备的命令并向主设备发送数据。
USB传输协议通过4个信号线来进行通信:数据线D+,数据线D-,电源线和地线。
数据线D+和D-负责传输数据,电源线提供供电,地线用于返回电路的闭环。
通过在D+和D-上施加不同的电压,可以表示不同的数据状态,从而实现数据传输。
USB传输协议定义了各种传输类型:控制传输、批量传输、中断传输和异步传输。
控制传输是最常用的传输类型,用于传输设备的控制命令和配置信息。
批量传输适用于大量数据的传输,如打印机中的打印数据。
中断传输适用于频繁但数据量较小的传输,如鼠标点击事件。
异步传输适用于对传输延迟要求较低的实时应用,如音频数据传输。
USB传输协议通过包(packet)的方式进行数据传输。
每个包由报头和数据组成,报头包含了数据包的大小、类型和错误检测等信息。
数据包可分为同步包和数据包,同步包用于同步主、从设备之间的时钟,数据包用于传输实际的数据。
USB传输协议还规定了数据的传输方式。
传输可分为控制传输、批量传输和中断传输三种方式。
控制传输通过控制管道进行,控制命令和配置信息的传输必须使用控制传输。
批量传输通过批量管道进行,适用于大数据量的传输。
中断传输通过中断管道进行,适用于实时性要求较高的传输。
USB传输协议还包括错误检测和纠正机制,以保证数据传输的可靠性。
在数据包中,每个字节都附带有校验位,用于检测数据传输过程中是否发生错误。
如果检测到错误,协议会进行错误处理,如重新发送数据包或请求重传。
总之,USB传输协议是计算机和外部设备之间进行数据传输的基础。
usb 协议

usb 协议USB 协议。
USB(Universal Serial Bus)是一种用于连接计算机和外部设备的通用接口标准。
USB协议是一种用于数据传输和电源供应的通信协议,它已经成为连接各种外部设备的主流标准。
USB协议的发展历程,从1.0到3.2版本,不断地提高了数据传输速度和电源供应能力,为用户提供了更好的使用体验。
USB 1.0协议于1996年发布,最初的传输速率为1.5Mbps和12Mbps,适用于键盘、鼠标等低速设备。
USB 2.0协议于2000年发布,提高了传输速率至480Mbps,适用于大容量存储设备、打印机等高速设备。
USB 3.0协议于2008年发布,传输速率提高至5Gbps,USB 3.1协议更是将速率提升至10Gbps,满足了用户对高速数据传输的需求。
USB 3.2协议更是将速率提升至20Gbps,为用户提供了更快的数据传输体验。
USB协议的发展不仅提高了数据传输速度,还不断完善了电源供应能力。
USB PD(Power Delivery)协议的出现,使得USB接口不仅可以传输数据,还可以为设备提供更高功率的电源供应,满足了移动设备、笔记本电脑等设备对于快速充电的需求。
除了数据传输和电源供应,USB协议还支持热插拔功能,用户可以在不关闭电源的情况下连接或拔出设备,方便快捷。
此外,USB协议还支持多种设备的连接,通过USB集线器可以连接多个设备,实现设备的扩展和共享。
总的来说,USB协议的不断发展和完善,为用户提供了更快速、更便捷、更高效的数据传输和电源供应方式。
随着USB 4.0协议的推出,传输速率更是将达到40Gbps,USB协议将继续发挥重要作用,成为连接各种外部设备的主流标准。
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),即通用串行总线接口协议,是一种计算机硬件接口标准。
它是由美国英特尔、微软等公司于1994年发起,并于1996年正式发布的一种串行通信接口。
USB接口协议旨在为计算机和外部设备提供一种高效、可靠、易用的数据传输方式。
二、USB接口协议的发展历程自1996年USB接口协议发布以来,它经历了多个版本的迭代更新。
目前,主要有以下几个版本:B 1.0:1996年发布,最高传输速率为12Mbps;B 2.0:2000年发布,最高传输速率为480Mbps;B 3.0:2008年发布,最高传输速率为5Gbps;B 3.1:2014年发布,最高传输速率为10Gbps;B 3.2:2017年发布,最高传输速率为20Gbps。
三、USB接口协议的主要特点1.高速传输:USB接口协议具有较高的数据传输速率,能够满足大部分外部设备的传输需求;2.兼容性强:USB接口协议适用于各种操作系统,如Windows、Mac OS、Linux等;3.热插拔:USB接口支持热插拔,方便用户在不关机的情况下更换设备;4.供电灵活:USB接口可以为外部设备提供电源,满足设备的供电需求;5.拓展性强:USB接口协议有多种扩展规范,如USB Type-C、USB PD (Power Delivery)等。
四、USB接口协议的应用领域USB接口协议广泛应用于各种电子设备中,如电脑、手机、平板、数码相机、MP3/MP4、U盘等。
它为这些设备之间的数据传输提供了便捷、高效的方式。
五、USB接口协议的未来发展趋势随着科技的不断进步,USB接口协议将继续发展,主要趋势包括:1.更高的传输速率:未来USB接口协议可能将进一步提高传输速率,满足更高速率设备的需求;2.更广泛的兼容性:USB接口协议将继续完善,以适应更多类型设备的连接需求;3.更强的拓展性:USB接口协议将拓展至更多领域,如无线充电、数据加密等;4.更简化的使用体验:USB接口协议将提供更加简化的使用体验,如自动识别设备、即插即用等。
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协议进行了详细的分析和解读,包括协议的基本原理、数据传输流程、协议规范等内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USB协议简介USB是一种协议总线,即主机与设备之间的通信需要遵循一系列约定。
协议内容较多,这里仅作一些简单介绍,深入学习,可参看USB规范(WWW.usb.org)。
为了理解协议中的名称,先看图10.32。
该图突出了主机上的客户软件和USB逻辑设备(编程涉及的设备)之间的通信流(Communication Flow),该通信流跨越了USB驱动程序USBD、主控制器驱动程序UHCD、主控制器等硬件接口及其连接。
端点(Endpoints)是USB 设备的惟一可识别的部分,是主机和设备之间通信流的终点。
每一个逻辑设备有若干个独立端点,每一个端点在设计时被分配一个惟一的由设备确定的标识符,称之为端点号。
如图10.32所示,将用于通信流流动的通道称为管道(Pipe),这是忽略了许多中间环节的很形象的称呼,对于理解USB系统中的信息传输很有帮助。
图中把3个端点看成了一个接口,关于接口的说明安排在后面。
1.包格式包的概念在前面已经介绍了,包是帧的基本成分。
常用的包有令牌包、数据包和握手包。
对于高速传输,还定义了事务分割专用令牌包(事务分割开始令牌包和事务分割完成令牌包)。
1)令牌包格式在USB系统中,所有的通信都是由主机发出相应的令牌所引起的。
令牌包格式图10.33所示。
其中PID为包标识,ADDR为设备地址,ENDP为端点号,CRC5是对ADDR和ENDP 域进行校验的5位CRC校验码,校验多项式为:G(X)=X5+X2+1。
2)数据包格式数据包用于主机与设备之间的数据传输。
数据包格式如图10.34所示。
其中PID为包标识,DATA为数据位,最多为8 192个位,DA TA应是字节的整数倍。
CRCl6是对DATA域进行校验的16位CRC校验码,校验多项式为:G(X)=X16+X15+X2+1.3)握手包格式握手包用来指示数据被成功接收、命令被接收或被拒绝等事务状态。
握手包格式如图10.35所示。
握手包仅由PII)组成。
有四种常用握手包(ACK、NAK、STALL和NYET)和一个专用握手包,握手包的类型是通过PID的编码来体现的。
·ACK包表示接收器已成功接收数据。
·NAK包表示接收设备不能接收数据或发送设备不能发送数据。
·STALL包表示端点已终止或不支持控制管道请求。
·NYET包表示接收器还没有任何响应。
4)帧开始包SOF(Start Of Frame)在全速或低速时,主机每隔1 ms±0.0005 ms发出一个帧开始包SOF,在高速时,每隔125 μs±0.0625μs发出一个SOF,以表示开始一个新帧。
SOF包的格式如图10.36所示。
其中FmmeNumber为帧编号,每发一帧后FrameNumber加l,当11位都为1(即3FFH)时再加1又回到0。
在SOF包中对FrameNumber域进行CRC校验。
2.PID域格式上面的几种包的开始都是PID域。
PID域的格式如图10.37所示。
低4位用来标识不同的包,高4位分别为低4位的非。
这样安排是为了保证对PID可靠的译码,从而也使得包的其他部分能得到正确解释。
表lO.20表示了PID编码和对应的PID类型。
其中第3列是PID的低4位,即PID编码。
表中有两种数据包PID,都用于数据的传输,以它们开头的两种数据包除了包PID部分有一位(及与它对应的反向位)不同外,其他部分都相同。
设置这两种数据包是为了使发送方和接收方保持同步,这涉及到一些细节,将在10.3.6小节中介绍。
在图10.38~10.40中不妨将它们看成一种数据包。
3.USB传输的处理过程前面已经提到USB系统中有四种传输:一个传输通常要分解成若干个事务;而一个事务的处理一般要经历令牌包、数据包和握手包三个阶段,但也有一些事务的处理没有数据包阶段或没有握手包阶段,还有一些事务只有令牌包阶段。
下面对这四种传输的处理过程分别作一些介绍。
1)块传输用于主机与USB设备之间的批量数据传输,通常一次块传输需要分解成若干个块传输事务。
显然,一次块传输的方向是单一的,对主机而言,要么是输入,要么是输出。
因此,一次块传输是由若干个IN事务或由若干个OUT事务组成的。
图10.38所示是块传输事务处理过程示意图。
图中的PING包和NYET包仅用于高速传输设备,初学者暂时可以不考虑。
对于要进行输入的块传输,一般要执行若干个IN事务。
每执行一个IN事务时,主机都首先发出IN令牌包。
设备端点收到后做出响应,一般是回送一个数据包。
如果不能回送数据,则回送NAK包或STALL包。
NAK表示设备暂时不能回送数据;STALL表示端点一直停着或需要IJSB系统软件进行干预;如果主机收到合法数据包,则回以ACK握手包;如果主机在接收数据时发现有错,则不给设备任何回音。
对于要进行输出的块传输,一般要执行若干个OUT事务。
每执行一个OUT事务时,主机都首先发出OUT令牌包,接着发出数据包。
设备在收到数据包后,根据情况回以握手包;回以ACK表示数据已接收无误,并通知主机可开始下一个0UT事务,以便传送下一个数据包;回以NAK表示数据已接收无误,但是主机不要再送数据,因为设备暂时不能接收(如缓冲区满);如果端点已终止,则回以STALL,通知主机不要再重发数据,因为设备出现了故障;如果接收时出现CRC校验错,则不发任何握手包。
需要指出,IN事务和OUT事务不仅在块传输事务中用到,在其他几种传输事务中也要用到,当然,处理的过程可能有所不同。
2)中断传输用于数据传输量小,无周期性,但对响应时间敏感,要求马上响应的数据传输。
中断传输的名字暗示一个设备可以引起一个硬件中断,这个硬件中断将使主机进行快速响应。
但真实情况是中断传输和所有其他USB传输一样,只在主机访问设备时出现。
之所以将其称为中断传输,是因为它可保证主机将在最短的延迟里响应或发送数据。
中断传输的特别之处在于主机将按照特定的周期访问可引起中断的端点(称为中断端点),看是否有中断情况发生。
图10.39所示为中断传输事务的处理过程。
对于要进行输入的中断传输,主机按照特定的周期执行IN事务,如果没有中断发生,中断端点回以NAK包;如果有中断情况发生,则回送中断数据。
主机收到数据后,发一个ACK 包。
对于要进行输出的中断传输,主机按照特定的周期执行OUT事务,在发送OUT令牌后,接着发送数据包。
如果没有中断发生,中断端点回以NAK包或STALL包;如果有中断情况发生且接收数据无误,则回送ACK包。
需要指出,在设备没有中断发生的情况下,主机一直会按照特定的周期执行OUT事务,并且所发送的数据保持不变。
当有中断发生时,才修改数据指针,指向下一个数据区。
一个中断传输由一个或多个IN事务或者一个或多个OUT事务组成。
一个中断传输用以下两种情况之一结束:当请求的数据量被传送完时,或者当数据包的长度小于规定的最大值(包括0长度包)时。
中断传输的结束表示要传送的数据已经到齐,接收方可以加以利用;而主机对中断端点周期性的查询还将继续进行下去,以便在下一个中断情况发生时,开始下一个中断传输。
3)等时传输用于有周期性、传输速率不变的数据传输。
等时传输在每帧中传送的字节数是一定的。
一个等时传输由一个或多个连续帧里每帧一个IN或一个OUT事务所组成。
图10.40表示了等时传输事务的处理过程。
可以看出,等时传输的IN事务和OUT事务只包括令牌包和数据包两个阶段,没有握手包阶段,也不支持重试。
4)控制传输控制传输提供了一种方法来配置USB设备,并对它的操作的某些方面进行控制。
每个设备必须设置一个缺省的控制端点(通常是O号端点)。
控制端点用来配置设备、控制设备状态以及设备操作的某些方面。
控制端点响应一些通过控制传输发送过来的USB特殊请求。
例如,当系统检测到设备时,系统软件必须读取该设备的描述符,以确定其类型和操作特性。
控制传输至少由两个阶段组成,也可以是三个阶段:①SETUP阶段:控制传输总是从SETUP阶段开始,这个阶段把信息发送给目标设备,定义对设备的请求类型(例如,读设备描述符)。
②数据阶段:这个阶段仅仅是为需要数据传输的请求定义的。
例如,在数据阶段,读描述符请求把描述符的内容发送给主机。
一些请求在SETUP阶段之外不需要数据传输。
③状态阶段:这个阶段总是用来报告被请求的操作的结果。
在SETUP阶段,一个SETUP事务被用来向控制端点传输信息。
SETUP事务类似于一个OUT事务,只是包标识PID是SETUP,而不是OUT。
图10.41所示为SETUP事务的执行过程。
SETUP事务的数据阶段总是利用DATA0 PID。
如果接收正确,控制端点则回以ACK包;如果接收不正确或数据丢失,则不回送任何握手包。
控制传输的数据阶段不是必需的。
如果需要有这个阶段,则它由一个或多个IN事务或者一个或多个OUT事务组成。
数据阶段的所有事务的方向必须是一致的,即都是IN事务或都是OUT事务。
数据阶段传送的数据量及方向是在SETUP阶段规定的。
如果数据量超过了预先确定的数据包规模,则数据的发送需要多个能携带最大包的事务(IN或OUT),剩下的部分(不足最大包规模)再安排一个事务。
控制传输的状态阶段是该传输的最后一个阶段,它只需要一个事务。
状态阶段的数据流方向应该与前面的阶段不同,并且总是利用DA TAl PID.例如,如果数据阶段执行的是OUT 事务,则状态阶段就是一个IN事务。
如果一个控制传输没有数据阶段,则状态阶段由一个IN事务组成。
图10.42所示为控制读传输、控制写传输以及没有数据阶段的控制传输的事务排列顺序、触发位的值(在括号内)及数据PID的类型。
上面介绍的传输及传输事务的处理过程反映了USB系统中数据传输的过程。
注意到一帧(或微帧)中包括了四种传输事务,所以实际的传输过程要比这里所讲的复杂。
4.数据触发技术在USB系统中采用了数据触发技术。
数据触发是一种机制,用来确保数据传输的发送方和接收方之间保持同步,对于需要大量事务的一次长传输过程尤为重要。
数据触发机制可以使握手包出错情况下发送方和接收方之间能重新同步。
数据触发仅仅支持中断传输、块传输和控制传输。
支持数据触发机制的发送方和接收方在每一次数据传输时都必须具有触发位。
当双方都认为数据传输已经正确完成以后,都会把自己的触发位转换为和原来相反的状态。
两种类型的数据包(DA TAO和DA TAl)被交替传送,并且包的接收方将会把它和触发位作比较,以确定接收的包是否正确。
发送方使用的数据包类型和它的触发位当前状态保持一致(例如,如果触发位为0,则数据包用DA TA0)。
下面仅以OUT事务为例来理解数据触发机制。
例10.1 图10.43所示为无错误的OUT事务的处理过程和触发位的变化情况。