微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > USB学习系列之四——USB包结构

USB学习系列之四——USB包结构

时间:12-14 来源:互联网 点击:

前导包,PRE只能使用在全速模式中。一般情况下集线器不会将全速信号发送给低速设备,只有当接收到PRE令牌包之后,才打开其低速端口。

PRE令牌包结构:同步域 +PID +EOP。

当需要传送低速事务时,主机首先发送一个PRE令牌包(以全速模式发送)。对于全速设备,将会忽略这个令牌包。集线器在接收到这个令牌包之后,打开其连接了低速设备的端口,接着主机就会以低速模式给低速设备发送令牌包和数据包等。

(2)PING:令牌包结构同OUT令牌包。但是PING令牌包后不发送数据,而是等待设备返回ACK或者NAK,以判断设备是否能够传送数据。在USB2.0中的高速环境中才会使用PING令牌包,且只被使用在批量传输和控制传输事务中。

(3)SPLIT:高速事务分裂令牌包,通知集线器将高速数据包转化为全速或者低速数据包发送给其下面的端口。

(4)ERR:在分裂事务中表示错误使用。高速分裂事务的过程比较复杂,而且主要是由集线器完成,所以不详细说明。

9.数据包的处理

一般的USB接口芯片都会完成如CRC校验、位填充、PID识别、数据包切换、握手等协议的处理。当USB接口芯片正确接收到数据时,入股偶有空间保存,则它将数据保存并返回ACK,同时,设置一个标志表示已经正确接收到数据;如果没有空间保存数据,则会自动返回NAK。

收到输入请求时,如果有数据需要发送,则发送数据,并等待接收ACK。只有当数据成功发送出去之后,才设置标志位,表示数据已经成功发送;如果没有数据需要发送,则它自动返回NAK。

通常只需要根据芯片提供的一些标志,准备需要发送的数据到端点,或者从端点读取接收到的数据即可。所要发送和接收的数据指的是数据包中的数据,至于同步域、包标识、地址、端点、CRC等是看不到的,在BUSHound中抓到数据也是如此,仅是数据包;并且在BUSHound中只能看到成功传输的数据,即只有ACK确认过的数据包。由于控制传输比较特殊,SETUP包也会有相应的标志供我们使用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top