USB系列四:USB数据传输类型(重要)

本章包括知识点如下,也是学习USB比较重要的一部分。

USB的块传输方式

USB的中断传输方式

USB的同步传输方式

USB的控制传输方式

USB总线技术协议具有极大的灵活性,可以针对不同的应用场合需求来采用最适合的数据传输方式。USB标准中规定了4种传输类型,分别为块传输、中断传输、同步传输和控制传输。设计者可以根据传输数据量的大小、传输速率的高低、容错性以及对实时性的要求来进行选择。本章便主要介绍USB的数据传输,以及USB块传输、USB中断传输、USB同步传输和USB控制传输的实现

USB数据传输概述

USB数据传输是一个比较复杂的协议过程,需要软件、驱动程序和硬件的配合。典型的USB数据传输,如下图所示。首先,我们来分析一下USB数据传输所涉及的几个主要部分。

从协议处理的角度来看,数据编码、解码及传输是由各个程序及驱动程序来完成的,

主要包括如下4个部分:

USB主机程序:用户直接操作的程序,往往具有人机交互界面。但有些场合也可以没有人机交互界面的USB主机程序,例如标准USB鼠标和标准USB键盘。

USB总线驱动程序:负责USB主机程序的请求响应。

USB主控制器驱动程序:处理USB数据传输的事务处理。

USB功能设备程序:负责USB设备的核心功能实现。

从硬件处理的角度来看,USB数据编码、解码及数据传输是由多个USB芯片来完成的,主要包括如下3类芯片:

USB主控制器芯片:集成在计算机主板上,负责USB主机的功能实现。

USBHUB芯片:往往集成在计算机主板上,或者也可以由外置USBHUB来实现,负责扩展USB接口数量。

USB功能设备芯片。集成在用户所使用的USB设备中,是完成USB数据传输的核心器件。

完整的USB数据传输是上述程序与硬件的合理分工协作来完成的。当USB设备连接到USB总线之后,USB设备便可以在软件及硬件的支持下实现与USB主机的高速数据通信。

USB的数据传输类型

在USB总线接口技术协议中,共支持面向用户的数据传输类型:控制传输(ControlTransfer)、块传输(BulkTransfer)、中断传输(InterruptTransfer)和同步传输(IsochronousTransfer)。这4种数据传输类型在端点类型、数据包长度、传输速率的高低以及实时性要求等方面有各自的特点,如表6.1所示。用户可以根据实际场合的需求来选择合适的数据传输方式。例如,对于USB鼠标和键盘,要求对每一次用户操作都能够及时给予响应,因此可以采用中断传输;而对于视频播放设备,要求对实时性好,因此可以采用同步传输。

一、USB块传输

USB块传输(BulkTransfer)是USB接口协议中最重要的一种数据传输方式,可以用于全速、高速和超速USB设备。USB块传输适合于传输大量的数据,要求传输的正确性,但对传输时间、传输速率和实时性均无要求。一般来说,USB块传输常应用于数据采集卡、USB打印机、USB扫描仪等设备,因为这些设备要求必须保证数据传输的正确性,但对传输速率并没有非常严格的要求,这正是USB块传输的优势。

1、USB块传输方式

在USB总线接口技术协议中,USB块传输采用了灵活的传输机制,保证了在发送大量数据的同时而不会堵塞USB总线。可以从总线带宽紧张和空闲两个角度来分析:

当USB总线带宽紧张的时候,USB块传输会自动为其他传输类型让出自己所占用的帧/小帧时间。此时,USB块传输自身的数据传输将被延迟。这时,块传输的传输速率比较低、占用的传输时间长。

当USB总线空闲的时候,USB块传输将可以更多地使用总线带宽。这时,块传输的传输速率比较高、占用的传输时间短。正是由于USB块传输的这种机制,导致其传输时间和传输速率得不到保障。但是USB块传输通过差错控制和重试机制可以保证数据传输的正确性和可靠性。

2、块传输的数据包长度

在USB总线接口技术协议中,通过块端点描述符中的wMaxPacketSize字段来指定USB块传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于全速端点,最大数据包长度可以是8字节、16字节、32字节或者64字节。

对于高速端点,最大数据包长度只能为512字节。

对于超速端点,最大数据包长度最大为1024字节。

如果在某一次数据上传或者下传中,USB块传输的数据量大于块端点所支持的最大数据包长度,那么USB主控制器将会把该传输分成多个块事务处理,每个块事物具有指定的数据包长度。此时,前面的每个块数据的长度为最大长度,最后一个块事务负责传输剩余的数据,其长度可以小于或者等于最大长度。

3、块事务处理

USB块传输中将一次数据传输划分为多个块事务进行处理,而一个完整的USB块事务处理过程包括令牌、数据和握手3个阶段,如图6.2所示。每个阶段的主要功能如下:

令牌阶段:最主要是规定了数据传输的方向,IN或者OUT。

数据阶段:包含了上传或下传的数据包。

握手阶段:用于在数据传输的末尾,报告本次数据传输的状态。

对于用户来说,可以操作的块事务处理对象是块端点(EP)。块事务处理端点是单向的,一个端点要么是IN端点,要么是OUT端点。但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN块端点用于USB主机接收数据,另一个OUT块端点则可以用于USB主机发送数据。

二、USB中断传输

USB的中断传输(InterruptTransfer)可用于低速、全速、高速和超速设备。USB中断传输适用于传输少量或者中量的数据,要求具有固定的事务处理周期。一般来说,USB中断传输常应用于USB鼠标、USB键盘等HID人机交互设备中,因为这些设备要求响应快,具有固定的事务处理周期,但对数据的需求比较低,这正是USB中断传输的优势。

1、USB中断传输方式

在USB总线接口技术协议中,USB中断传输采用了固定的传输机制。USB总线为中断传输特意保留了总线带宽,这样可以保证USB中断传输具有固定的事务处理周期和快速的响应时间。但是,预留的总线带宽不能太多,否则将影响其他传输类型的传输效率。另外,USB总线并不是采用固定的传输速率来完成的。

正是由于USB中断传输的这种机制,导致其不能传输大量的数据。USB协议中还使用差错控制和重试机制来确保中断传输的正确性和可靠性。

2、中断传输的数据包长度

在USB总线接口技术协议中,通过中断端点描述符中的wMaxPacketSize字段来指定USB中断传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于低速端点,最大数据包长度必须小于等于8字节。

对于全速端点,最大数据包长度必须小于等于64字节。

对于高速端点,最大数据包长度必须小于等于1024字节。对于超速端点,最大数据包长度必须小于等于1024字节。

如果在某一次数据上传或者下传中,USB中断传输的数据量大于中断端点所支持的最大数据包长度,那么USB主控制器将会把该传输分成多个中断事务处理,每个中断事物具有指定的数据包长度。此时,前面的每个中断数据的长度为最大长度,最后一个中断事务负责传输剩余的数据,其长度可以小于或者等于最大长度。

3、中断事务处理

USB中断传输中将一次数据传输划分为多个中断事务进行处理,而一个完整的USB中断事务处理过程包括令牌、数据和握手3个阶段,如图6.5所示。每个阶段的主要功能如下:

令牌阶段:最主要是规定了数据传输的方向,IN或者OUT。

数据阶段:包含了上传或下传的数据包。

握手阶段:用于在数据传输的末尾,报告本次数据传输的状态。

对于用户来说,可以操作的中断事务处理对象是中断端点(EP)中断事务处理端点是单向的,一个端点要么是IN中断端点,要么是OUT中断端点但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN中断端点用于USB主机接收数据,另一个OUT中断端点则可以用于USB主机发送数据。

三、USB同步传输

USB同步传输(IsochronousTransfer)是USB接口协议中林一个重要的数据传输方式,可以用于全速、高速和超速USB设备。USB同步传输适合于传输大量的、速率恒定的、且对服务周期有要求的数据,但对正确性没有十分严格的要求。一般来说,USB同步传输常应用于音频和视频类设备,如MP3、VCD和DVD等音视频播放设备,因为这些设备需要实时性比较好,也就是数据必须及时发送和接收,而对数据的正确性可以有一定的容忍。

1、USB同步传输方式

在USB总线接口技术协议中,USB同步传输与USB中断传输有点类似,同样采用了保留总线带宽的方式。这样,通过在USB总线上保留同步传输的总线带宽,可以保证同步传输能在每帧/小帧中都能得到服务。也就是说,同步传输的传输速率是非常准确的。因此,USB同步传输时间是确定的、可以预测的。

在USB同步数据传输过程中,发送方连续不断地发送数据,接收方则连续不断地接收数据。在整个数据传输过程中,没有表征本次数据传输的状态握手阶段。

但是由于固定了传输速率,那么USB同步传输取消了差错控制和重试机制,这样将导致数据的正确性无法得到保障。因此,对于用户来说,要根据实际的应用场合来谨慎选择USB同步传输方式

2、同步传输的数据包长度

在USB总线接口技术协议中,通过同步端点描述符中的wMaxPacketSize字段来指定USB同步传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于全速端点,最大数据包长度必须小于等于1023字节。

对于高速端点,最大数据包长度必须小于等于1024字节,且高速带宽端点可在每小帧中进行2个或3个高速同步事务。

对于超速端点,最大数据包长度必须小于等于1024字节,且超速带宽端点可在每小帧中进行2个或3个超速同步事务。

如果在某一次数据上传或者下传中,USB同步传输的数据量大于同步端点所支持的最大数据包长度,那么USB主控制器将会把该传输分成多个同步事务处理,每个同步事物具有指定的数据包长度。此时,前面的每个同步数据的长度为最大长度,最后一个同步事务负责传输剩余的数据,其长度可以小于或者等于最大长度。USB设备中默认同步端点最大数据包长度为0字节,因此如果需要使用非零的数据包长度,可以通过设备配置的方式来实现。

3、同步事务处理

USB同步传输中将一次数据传输划分为多个同步事务进行处理,而一个完整的USB同步事务处理过程包括令牌和数据两个阶段,而没有握手阶段,如图6.8所示。每个阶段的主要功能如下:

令牌阶段:最主要是规定了数据传输的方向,IN或者OUT。

数据阶段:包含了上传或下传的数据包。

对于用户来说,可以操作的同步事务处理对象是同步端点(EP)。同步事务处理端点是单向的,一个端点要么是IN端点,要么是OUT端点。但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN同步端点用于USB主机接收数据,另一个OUT同步端点则可以用于USB主机发送数据。

五、USB控制传输

USB控制传输(ControlTransfer)是USB接口协议中最基本的一种数据传输方式,可以用于低速、全速、高速和超速USB设备。USB控制传输适合于传输少量的数据,严格要求传输的正确性,但对传输时间、传输速率和实时性均无要求。一般来说,USB设备必须支持USB控制传输方式

在USB上电时,任何USB设备都必须在端点0的缺省管道中支持控制传输。USB的系统软件通过该管道来访问USB设备的状态,并对其进行配置。例如,在USB设备连接到USB总线后,USB主机便通过端点0来获取USB设备的配置信息,同时还可以下载固件程序,这就是典型的USB控制传输。除了端点0以外,其他端点也可以支持控制传输。

1、USB控制传输方式

在USB总线接口技术协议中,同样为USB控制传输保留了一定的总线带宽。除此之外,USB主机控制器还可以为其动态地调整控制传输所需的帧/小帧时间,以确保USB控制传输能够尽快得到传输。

正是由于USB控制传输的这种机制,导致其传输数据量比较少。但是USB控制传输通过差错控制和重试机制可以保证数据传输的正确性和可靠性。

在现代的USB设计中,USB控制传输往往用作USB主机和USB设备之间的配置信息通信,包括设备的地址、设备描述符和接口描述符等。这正是USB控制传输的优势。当然,用户也可以进行一些自定义操作,用来传输数据量少的其他用途数据。

2、控制传输数据包长度

在USB总线接口技术协议中,通过控制端点描述符中的wMaxPacketSize字段来指定USB控制传输所采用的最大数据包长度。而不同的端点,所支持的最大数据包长度是不同的。

对于低速端点,最大数据包长度必须为8个字节;

对于全速端点,最大数据包长度可以选择8字节、16字节、32字节或者64字节;

对于高速端点,最大数据包长度其只能为64字节。

对于超速端点,最大数据包长度最大为512字节。

在USB设备上电时,USB主机的系统软件将首先通过控制传输读取设备描述符的前8个字节,从中获取其缺省控制端点0所支持的最大数据包长度。此后,在所有的控制事务中都将使用这个最大长度。在USB设备配置结束后,其余控制端点才能使用。

3、控制事务处理

USB控制传输同块传输、中断传输和同步传输不同,其采用了另外一种事务处理方式。USB控制传输的控制事务处理包含建立、数据和状态三个阶段,每个阶段都由特定的事务组成。控制事务处理的格式,如图6.11所示。

令牌阶段:USB主机采用SETUP事务向USB设备发送控制请求。

数据阶段:负责传输具有USB定义格式或设备类、供应商自定义格式的数据。

握手阶段:USB设备向主机报告控制事务建立阶段和数据阶段的传输结果。

对于用户来说,可以操作的控制事务处理对象是控制端点(EP)。控制事务处理端点是单向的,一个端点要么是IN端点,要么是OUT端点。但是,USB协议允许可以使用多个端点。例如,如果使用两个端点,一个IN控制端点用于USB主机接收数据,另一个OUT控制端点则可以用于USB主机向外发送数据。

相关推荐

  1. USB简介系列-04

    2024-05-10 10:54:03       37 阅读
  2. USB连接器

    2024-05-10 10:54:03       32 阅读
  3. <span style='color:red;'>USB</span> (5)

    USB (5)

    2024-05-10 10:54:03      7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 10:54:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 10:54:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 10:54:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 10:54:03       18 阅读

热门阅读

  1. 替换掉Springboot框架中的Tomcat,使用undertow

    2024-05-10 10:54:03       16 阅读
  2. https忽略ssl证书校验

    2024-05-10 10:54:03       8 阅读
  3. STM32 定时器最佳分频

    2024-05-10 10:54:03       9 阅读
  4. npm i 与npm install的区别,接上回的npm ERR! code 128

    2024-05-10 10:54:03       11 阅读
  5. 木钻:muzuan.cn

    2024-05-10 10:54:03       10 阅读
  6. PELCO-D相机云台控制协议

    2024-05-10 10:54:03       11 阅读
  7. 如何在Linux中安装Docker Compose

    2024-05-10 10:54:03       8 阅读
  8. 统计中的oracle和population什么意思?

    2024-05-10 10:54:03       9 阅读
  9. git修改版本发布时间

    2024-05-10 10:54:03       11 阅读