端点:
端点位于USB外围设备中,并且所有通信数据的源或目的基于这些端点并且是可寻址的FIFO。
每个USB外围设备都有唯一的地址,最多可以包含16个端点。 主机通过发出设备地址和每次数据传输的端点编号,将数据发送到特定的端点(FIFO )。
每个端点的地址为0到15,一个端点的地址对应于一个方向。 因此,端点2-IN和端点2-OUT完全不同。 因为每个设备都有默认的双向控制端子0,所以端子0-IN和端子0-OUT不存在。
USB的4种传输模式
传输控制、批量传输、中断传输、同步传输
USB有上述四种传输类型。 枚举期间,外围设备指定主机上每个端点支持的传输类型。
从USB设备驱动程序向USB控制器传送驱动程序请求被称为事务,
有四种类型的事务:批量事务、控制事务、中断事务和isochronous事务。
包含在包中的部分:
每个事务分解成几个数据包,通过USB总线传输。 每个传输必须经过两个或三个部分,其中第一部分——USB控制器向USB设备发出指令,
第2部分——在USB控制器和USB设备之间传递读写请求。 其方向主要看第一部分的命令是读取还是写入,可能没有第二部分。
第三部分——握手信号。
批量传输事务
作用:主要用于数据的大量数据传输和数据接受,无带宽和间隔要求时;
特点:要求保证传输。 打印机和扫描仪是这种类型的设备
传输速度非常慢,适用于大量延迟传输,可以在所有其他类型的数据传输完成之前发送和接收数据。
批量数据传输分为三个阶段。
第一部分——令牌阶段。
主机端发出Bulk的令牌请求。
如果令牌是IN请求,则为从设备到主机的请求
如果令牌是出站请求,则是从主机到设备的请求。
第二部分——数据传输阶段。
根据以前请求的令牌类型,数据传输是输入方向和输出方向。 传输数据时,用DATA0和DATA1令牌拿着数据交替传输。
数据传输格式DATA1和DATA0,这两种数据是重复数据,在1个数据丢失时补充0,以防止数据丢失。
第三部分——握手段阶段。
如果数据为IN方向,则握手信号应该由Host侧发出;
数据为OUT方向时,握手信号应该从设备侧发送。
握手信号是ACK,可以表示正常响应。
NAK,表示传输不正确。
STALL表示主机发生了意外错误。
如图所示。
图批量传输
图Bulk传输时的令牌
控制(控制)传输
作用: USB系统软件主要用于进行查询配置,向USB设备发送公共命令;
特点:控制传输为双向传输,数据量通常较小; 数据传输是无损的。
数据宽度:控制传输方案可以包括8、16、32和64字节的数据,这取决于设备和传输速率。
控制传输典型地用于主计算机和USB外围设备之间的端点0(EP0 )之间的传输
控件传输也分为三个阶段:令牌阶段、数据传输阶段和握手阶段,如下图所示。
图控制传输事务
中断事务的传输
作用:主要用于查询定时查询装置是否传输中断数据;
特点:设备端点模式器的结构决定查询频率在255ms之间。
典型的APP应用程序是这种类型的键盘操纵杆和鼠标,用于传输少量分布式、不可预测的数据
(数据量少)
中断模式的传输是单向的,对主机来说只有输入(IN )模式
中断事务也分为三个阶段:令牌阶段、数据传输阶段和握手阶段,如下图所示。
中断事务的传输
同步传输事务
作用:用于时间紧张、容错的流数据传输和需要一定数据传输率的实时APP应用。 例如,进行即时通话的网络电话。
特点:保证传输同步性。 保证每秒一定的传输量。
(与Bulk传输不同)同步传输允许一定的误码率。 这样就符合了视频会议等传输的需要。 因为视频会议首先保证实时性,在一定的条件下允许一定的错误率。 )
要同步传输事务,只有两个阶段:令牌阶段和数据阶段。 因为不关心数据的正确性,所以没有握手阶段
如下图所示。
图同步传输事务