本文简单介绍USB2.0传输的一些概念,为方便了解EZ-USB的USB中断和端点。由于EZ-USB的串行引擎隐藏了USB收发的诸多细节,因此本文只是对USB的传输的关键概念做介绍,具体的细节需要参见USB2.0协议。
一、USB拓扑结构
USB是一种主从拓扑结构,主机叫Host,从机(设备)叫Device。
一个主机连接一个根集线器(root hub),根集线器可以再扩展出其他的集线器(hub)和主控制器(host controller),主控制器即对应着主机的USB插口。
因此,从设备到主机的数据叫做输入数据,从主机到设备的数据叫做输出数据。
二、包
USB传输数据是由一个一个的包(package)传输的,每个包再细分成一个一个域。包的具体构成及操作(如同步、位填充、校验等)被USB串行引擎隐藏,这里略去不介绍。
每个包中都有一个8bit的域,用来表示正在传输的包的类型,叫做PID (package ID)。
USB2.0协议一共规定了16个包,分为四个大类,如下表所示:
PID类型 | PID名字 |
令牌类(Token) | IN OUT SOF SETUP |
数据类(Data) | DATA0 DATA1 DATA2 DATAM |
握手类(HandShake) | ACK NAK STALL NYET |
特殊类(Special) | PRE ERR SPLIT PING |
2.1 令牌包
令牌包用来启动一次USB传输事务(有关USB事务的概念见第三章)。
·输入令牌包(IN):通知设备,本次USB事务是要输入一个数据包。即本次USB事务中的数据包是输入的。
·输出令牌包(OUT):通知设备,本次USB事务是要输出一个数据包。即本次