一 USB数据传输的过程
二 USB传输方式
1.块传输:适合对速度没要求,传输数据量大的设备
每个数据包长度高速的时候为512字节,低速设备最大64个字节;用 于主机与USB设备之间的批量数据传输,通常一次块传输需要分解成若干个块传输事务。显然,一次块传输的方向是单一的,对主机而言,要么是输入,要么是输 出。因此,一次块传输是由若干个IN事务或由若干个OUT事务组成的。对 于要进行输入的块传输,一般要执行若干个IN事务。每执行一个IN事务时,主机都首先发出IN令牌包。设备端点收到后做出响应,一般是回送一个数据包。如 果不能回送数据,则回送NAK包或STALL包。NAK表示设备暂时不能回送数据;STALL表示端点一直停着或需要IJSB系统软件进行干预;如果主机 收到合法数据包,则回以ACK握手包;如果主机在接收数据时发现有错,则不给设备任何回音。
对于要进行输出的块传输,一般要执行若干个
OUT事务。每执行一个OUT事务时,主机都首先发出OUT令牌包,接着发出数据包。设备在收到数据包后,根据情况回以握手包;回以ACK表示数据已接收
无误,并通知主机可开始下一个0UT事务,以便传送下一个数据包;回以NAK表示数据已接收无误,但是主机不要再送数据,因为设备暂时不能接收(如缓冲区
满);如果端点已终止,则回以STALL,通知主机不要再重发数据,因为设备出现了故障;如果接收时出现CRC校验错,则不发任何握手包。如果需要输入、输出同时进行,则需要使用2个端点。
2 中断传输 :用 于数据传输量小,无周期性,但对响应时间敏感,要求马上响应的数据传输。
中 断传输的名字暗示一个设备可以引起一个硬件中断,这个硬件中断将使主机进行快速 响应。但真实情况是中断传输和所有其他USB传输一样,只在主机访问设备时出现。之所以将其称为中断传输,是因为它可保证主机将在最短的延迟里响应或发送 数据。中断传输的特别之处在于主机将按照特定的周期访问可引起中断的端点(称为中断端点),看是否有中断情况发生。图10.39所示为中断传输事务的处理 过程。
对于要进行输入的中断传输,主机按照特定的周期执行IN事务,如果没有中断发生,中断端点回以NAK包;如果有中断情况发生,则
回送中断数据。主机收到数据后,发一个ACK包。对于要进行输出的中断传输,主机按照特定的周期执行OUT事务,在发送OUT令牌后,接着发送数据包。如
果没有中断发生,中断端点回以NAK包或STALL
包;如果有中断情况发生且接收数据无误,则回送ACK包。需要指出,在设备没有中断发生的情况下,主机一直会按照特定的周期执行OUT事务,并且所发送的
数据保持不变。当有中断发生时,才修改数据指针,指向下一个数据区。
一个中断传输由一个或多个IN事务或者一个或多个OUT事务组成。
一个中断传输用以下两种情况之一结束:当请求的数据量被传送完时,或者当数据包的长度小于规定的最大值(包括0长度包)时。中断传输的结束表示要传送的数
据已经到齐,接收方可以加以利用;而主机对中断端点周期性的查询还将继续进行下去,以便在下一个中断情况发生时,开始下一个中断传输。
3 等时传输:用于有周期性、传输速率不变的数据传输。等时传输在每帧中传送的字节数是一定的。一个等时传输由一个或多个连续帧里每帧一个IN或一个OUT事务所组成。图10.40表示了等时传输事务的处理过程。可以看出,等时传输的IN事务和OUT事务只包括令牌包和数据包两个阶段,没有握手包阶段,也不支持重试。
4 控制传输
控制传输至少由两个阶段组成,也可以是三个阶段:
①SETUP阶段:控制传输总是从SETUP阶段开始,这个阶段把信息发送给目标设备,定义对设备的请求类型(例如,读设备描述符)。
②数据阶段:这个阶段仅仅是为需要数据传输的请求定义的。例如,在数据阶段,读描述符请求把描述符的内容发送给主机。一些请求在SETUP阶段之外不需要数据传输。
③状态阶段:这个阶段总是用来报告被请求的操作的结果。