主机如果是批量写数据请求,则数据阶段为一个或者多个OUT事务; 数据阶段是由一到多个IN/OUT事务组成。这是由于有时候存在一个事务传不完的数据,所以可能存在多个连续IN/OUT事务的情况,在同一次数据传输阶段中事务类型(读写)必定相同。 注:批量传输的事务和同步传输类似,都有只有1个数据阶段,都是使用IN事务或者OUT事务进行传输,只是两种传输的
一次批量传输(Transfer)由 1 次到多次批量事务传输(Transaction)组成。 翻转同步:发送端按照 DATA0-DATA1-DATA0-…的顺序发送数据包,只有成功的事务传输才会导致 PID 翻转,也就是说发送端只有在接收到 ACK 后才会翻转 PID,发送下一个数据包,否则会重试本次事务传输。同样,若在接收端发现接收到到的数据包不是按...
Data In事务:主要从设备读取数据; Data OUT事务:主要向设备发送数据。 回顾下前面我讲的传输、事务、包的关系,"某领导和一个早起的程序员进行了一次交流,说了5件事"。其实这里的"这次交流"就相当于USB的一次传输,"说了5件事"就相当于这次传输过程中的5个事务,当然每件事肯定有若干句对话,就相当于每个事务里...
一次批量传输(Transfer)由 1 次到多次批量事务传输(Transaction)组成。 翻转同步:发送端按照 DATA0-DATA1-DATA0-…的顺序发送数据包,只有成功的事务传输才会导致 PID 翻转,也就是说发送端只有在接收到 ACK 后才会翻转 PID,发送下一个数据包,否则会重试本次事务传输。同样,若在接收端发现接收到到的数据包不是按...
传输事务(Transaction)与传输(Transfer)。 前面的笔记中,大家都对包(Packt)有了一定的概念,知道USB是通过各种数据包进行传输的,换句话说,包是 USB数据传输的最小(基本)单位,不可分割,数据要被正确传输,必须打包传输。 包的基本格式如下: 因为是半双工,必须使用一种机制协调主机和设备的通信(不然主机和设备同时发...
USB协议的数据传输过程在事务层(Transaction Layer)进行,该层负责处理USB总线上的基本数据交换单元——事务。以下是USB事务层和数据传输过程的详细说明: 1. USB事务的基本结构 令牌包(Token Packet):每个事务开始时发送一个令牌包,用于定义事务类型(IN、OUT或SETUP)以及目标设备和端点。令牌包中的方向位指示了数据的...
控制传输一般在USB枚举的时候见得多,控制传输包含三个阶段:Setup阶段、Data阶段、Status阶段,其中Data阶段是可选的。Setup阶段:由一个SETUP事务组成,SETUP事务的组成如下,Setup阶段必须使用DATA0 Data阶段:由若干个IN事务或者OUT事务组成,此阶段是可选的,有时候并不需要Data阶段,比如SetAddress。Data阶段的IN/...
在主机控制器和 USB HUB 之间还有另外一种传输——分离传输(Split Transaction),它仅在主机控制器和 HUB之间执行,通过分离传输,可以允许全速/低速设备连接到高速主机。 分离传输对于USB 设备来说是透明的、不可见的。 分离传输:顾名思义就是把一次完整的事务传输分成两个事务传输来完成。其出发点是高速传输和全速/...
除了控制传输,还有以下传输事务: 为了更好的理解上面的各种数据包,可以看如下内容:令牌包: 数据包: 握手包: 通过传输事务的机制,从机可以通过PID判断接下来是接收数据还是发送数据,这样主机和从机在传输数据时就不会产生冲突,而接收方在正确接收到数据后需要发送一个ACK握手包进行回应。但是传输过程中不总是如此顺利...
SETUP:表示控制传输中设置事务的开始。 IN:表示主机正在向设备请求数据(读取示例)。 OUT:指示主机在将数据发送到设备(写入示例)。 SOF:指示帧的开始。 此类型的令牌数据包包含一个 11 位的帧号。 主机发送 SOF 数据包。 发送此数据包的频率取决于总线速度。 对于全速总线,主机每隔 1 毫秒发送一次数据包;对于高...