写在开始的话
最近因为工作的需要,需要了解USB体系相关知识,以前喜欢记笔记的,长时间不写字了,也懒得去写了,所以就想到了写博客,记录学习USB的过程中的个人理解。至目前(2014年11月),USB3.0规范在嵌入式设备中还没有普及,我只学习USB2.0及以前的规范。所以博客中仅仅记会录USB2.0及以前的规范相关理解,主要以USB2.0体系为主。
从体系开始——体系简介
USB是一种支持热插拔的高速串行总线,使用差分信号来传输数据,到USB2.0规范,它最高支持480Mbps(USB2.0)的传输速率,支持USB2.0的设备称为高速设备。其他还有全速设备(USB1.1),速率为12Mbps,低速设备(USB1.0),速率为1.5Mbps。
USB支持总线供电和自供电两种供电方式,总线供电模式下,设备可以从总线上最大获取500mA的电流。USB接口的供电电压为5V,对于总线供电的设备,在枚举动作完成之前最多可以从总线上获取100mA的电流。
USB被设计成向下兼容的,当低速和全速设备连接到高速主机上时,主机可以通过分离传输来支持他们。这样改总线上传输最高速度等级由最慢的设备决定。设备包括主机,HUB,USB功能设备。
USB体系包括“主机”,“设备”,以及“物理连接”。主机提供USB接口,并提供管理结构的软件。主机可以是PC机,嵌入式设备等。一个USB系统中只能有一个主机。包括USB功能设备和HUB,一个USB系统中可以有127个设备。因为一个USB HOST最多同时支持128个地址,0地址为默认地址,在设备枚举时临时使用。以HOST-ROOT HUB为起点,最多支持七层,也就是说任何一个USB系统最多支持5个HUB级联。
USB系统层次结构图
USB采用轮询广播机制传输数据,所以的传输都是由主机发起。任何时刻USB系统内只允许一个数据包在传输。USB采用“令牌包”——“数据包”——“握手包”的传输机制。在令牌包中指定数据的来源或去向的设备地址和端点(Endpoint),来保证设备对广播的数据包或令牌包做出响应。握手表示传输是否成功。</