购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
USB基础知识

通用串行总线(Universal Serial Bus, USB)是由英特尔(Intel)、康柏(Compaq)、国际商业机器(International Business Machines, IBM)、微软(Microsoft)、北方电讯(Northern Telecom)等计算机与通信公司于1995年联合制定,并逐渐形成行业标准的数据通信方式,现如今已经广泛替代了笨重的串口(RS232、RS485)与并口,成为21世纪大量计算机和智能设备的标准扩展与必备接口之一。可以这么说,现在几乎每一台个人计算机(Personal Computer, PC)与安卓(Android)智能手机都配备了USB接口,相应的图标如图1.1所示。

图1.1 USB接口图标

为方便后续行文,我们先了解一下USB系统的基本架构,它由主机(Host)、设备(Device)与互连电缆(Interconnect)三部分组成,如图1.2所示。

图1.2 USB系统的基本架构

最常见的USB主机就是PC,它主导着整个USB系统的数据传输。USB设备实在太多了,日常生活中使用频繁的包括智能手机、U盘、移动硬盘、数码相机、打印机、游戏手柄、摄像头、网卡等。当然,作为工程师的你还可能会购买逻辑分析仪、示波器、噪声计等其他一些使用USB接口的仪器仪表。对于现阶段的我们,仅需要特别注意主机与设备之间的主要区别:主机可以向设备发送数据,设备也可以向主机发送数据,但 USB系统的数据传输只能由主机启动,设备只是根据主机的需要被动响应。在任何时候,USB系统仅允许存在一个主机 。通俗来讲,USB设备就是“傀儡”,它什么时候做什么完全取决于USB主机,不能擅自做主。我们进一步将 从主机往设备方向的数据传输 称为下行(Downstream)通信,反之则称为上行(Upstream)通信。也就是说,上行与下行的定义是 以主机为参考的

由于USB系统的数据传输存在于主机与设备之间,也就意味着: 设备与设备、主机与主机之间无法直接进行数据传输 ,这可能会带来一些应用上的不便。例如,我想将数码相机中的照片保存到移动硬盘,通常需要将它们都与PC连接后,再将照片复制到移动硬盘中。但如果在野外进行拍摄作业,也就意味着还需要另外携带一台主机(或存储空间足够大的存储卡)。为解决此问题,后来增加的USB OTG(On The Go)标准则允许设备切换成为主机,这样就能够实现数码相机与移动硬盘之间数据的直接传输,现在很多智能手机也支持USB OTG功能。

USB互连线缆通常包含4条线(USB OTG标准增加了一条区分主机与设备身份的信号线,本书不涉及),即用于电源供电的VBUS与GND,以及用于数据传输的 双向差分信号线 D+与D-(有时也称D+与D-,即Plus与Minus),如图1.3所示。

图1.3 USB连接电缆

那么USB为何能够风靡全球呢?当然是由于它易于使用,这主要体现在USB 安装配置便捷、兼容性好、传输速度快、端口扩展简易 供电简单 接口体积小 等方面。

安装配置便捷 主要体现在USB支持热插拔(Hot Swap)与即插即用(Plug and Play, PnP),这两点对于提升用户体验非常重要。USB接口支持热插拔,意味着在PC处于上电状态下可以随时断开或连接USB设备,而不会对PC或外部设备造成损伤,但以前的老式接口一般不允许这么做。使用过PS/2(Personal System 2)接口鼠标(或键盘)的读者应该知道,如果在PC开机后再插入PS/2接口鼠标,操作系统很有可能无法识别(需要重启)。有些主板还需要按指定颜色将鼠标插入指定的接口,插错了也是识别不了的,其他串口或并口也是如此。但使用USB鼠标(或键盘等其他USB设备)却不一样,PC开机后,随时插入,随时可以使用,而且PC所有的USB接口都可以任意插入(只要硬件接口类型对应即可,并不限定必须插入到哪一个USB接口),如图1.4所示。

图1.4 USB接口代替老式接口

USB接口的一些设计细节就是为了实现支持热插拔的,其内部共有4根金属导体(可以称为“金手指”),外侧两根较长的分别是供电电源线VBUS与GND,内侧两根较短的分别是数据线D+与D-,如图1.4(b)所示。当我们将USB设备插入主机时,外侧电源线首先连接并对设备进行供电,而中间的数据线能够在通电状态下进行数据交换。相反,当从主机拔出设备时,则先断开数据传输,确保数据不会因断电而丢失,然后再将设备电源切断,这样也就能够保证在插拔过程中对主机系统及USB设备不产生影响。而USB设备在与主机连接后能够马上使用,是因为支持PnP的Windows操作系统(本书如无特别说明,均针对Windows操作系统)会为插入的USB设备选择与加载合适的驱动程序(后续还会进一步详细讨论)。

兼容性好 也是注重用户体验的重要表现。USB的最初版本为1.0,之后依次经历了1.1、2.0、3.0、3.1、3.2、4.0等版本,兼容性好就意味着 新版本兼容旧版本 (通俗地说,如果旧版本能用,那么新版本也能用), 即向后兼容(Backward Compatibility) 。例如,你有一个旧的USB鼠标,其USB总线版本为1.0,那么即便与USB 2.0主机连接,同样可以正常使用,是不是非常方便!实际上,USB 2.0的低速与全速分别对应USB 1.0与USB 1.1版本,只不过更换了一个名称而已。各种USB总线版本及其特点如表1.1所示,其中,“bps”表示比特率(bit per second),即单位时间内传输的比特数。

表1.1 各种USB总线版本及其特点

从严格意义上来讲,USB 2.0就代表着“支持高速模式”,至少当提到“USB 2.0主机”时通常是如此。但是由于USB向后兼容的特性,很多厂商给不支持高速模式的USB芯片或设备也冠名了“USB 2.0”,只是会换成类似“与USB 2.0规范全速兼容”的宣传方式(本质是USB 1.1),本书使用的STM32F103x系列单片机就是这样。换句话说,在实际应用中,我们无法仅从“USB 2.0”字样获得芯片或设备真正支持的速率。 本书如无特别说明,所述内容均针对USB 2.0

USB 3.0及以上版本的命名比较多,普通用户不容易分辨清楚,因为官方在发布USB 3.1时进行了一次版本重命名,也就是将原来的USB 3.0更改为USB 3.1 Gen 1,表示第一代(Generation)USB 3.1;原来的USB 3.1则更改为USB 3.1 Gen 2,表示第二代USB 3.1。如果这还不足以让你感到混乱,官方在发布USB 3.2时又开始了新一轮如表1.1所示版本的重命名。简单地说,USB 3.0、USB 3.1 Gen 1、USB 3.2 Gen 1是一个“东西”,USB 3.1、USB 3.1 Gen 2、USB 3.2 Gen 2也是一个“东西”。也就是说,以后没有USB 3.0、USB 3.1的官方说法了,USB 2.0后面直接就是USB 3.2,本书描述过程中也同样遵循最新官方命名规则。如果某个商家使用类似“我这个USB 3.1接口铁定比别家USB 3.0接口的数据传输速率要快呀”之类的说法对你进行连番营销轰炸,请务必打起十二分精神,可不要被“忽悠”了。

刚刚提到的“官方”指的是USB开发者论坛(USB Implementers Forum, USB-IF),它是由USB规范制定公司建立的非营利性组织,致力于推广并发展USB技术,其官方网站为www.usb.org,本书涉及的所有USB相关规范均可从该网站免费下载。

值得一提的是,现如今USB 1.1与USB 1.0设备已经越来越少了,支持更高传输速率的USB4(不是USB 4.0,之间也没有空格)也将不再兼容。

传输速度快 也是USB应用广泛的主要因素之一,它的数据传输速率也许不是所有总线中最快的,但对于大多数应用已经足够。USB 2.0版本支持低速、全速与高速三种速率规格,相应的理论最大数据传输速率分别为1.5Mbps、12Mbps与480Mbps,更加令人兴奋的是,最新的USB4规范支持的传输速率可达到40Gbps。虽然USB实际有效数据传输量小于理论最大传输速率(因为总线状态、控制与错误监测等功能也需要一定的数据开销),但USB 2.0最大传输速率仍然可超过50Mbps(总线空闲时最快传输类型的理论值),远高于一般的串口。

供电简单 能够简化USB设备的硬件设计。以往我们使用的串口或并口只是单纯地作为通信之用,这意味着产品需要单独的电源输入,增加了系统的复杂度(你至少得增加电源电路)。而从表1.1可以看到,USB接口都可以向外提供一定功率的电源。例如,USB 2.0的输出电压为5V,输出电流的最大值为500mA,如果USB设备消耗的功率不超2.5W,则可以使用USB接口直接供电,USB鼠标与键盘就是典型应用。从USB 3.2 Gen 1开始,USB接口的供电功率进一步提升到了4.5W,USB 3.2 Gen 2则将电力传输协议进行了重新设计,支持USB功率传输(Power Delivery, PD)的设备可以提供最大100W的输出功率,可以实现快速充电的功能。

端口扩展能力 对于很多用户也很重要。以前的PC通常最多会各配置一个并口与RS232串口,假设使用并口连接打印机,那如何连接其他也使用并行接口的产品呢?如果不嫌麻烦,就拔下来重新插入。即便具备高技术水平的你有能力设计一个并口扩展模块,但对于大多数普通人而言却并不太现实。更何况,最新的PC已经不再提供串口与并口了。

再如,以往进行单片机开发时会使用串口,但是通常PC只会携带一个,很有可能出现不够用的情况。现在应用非常广泛的 USB转串口设备 却可以将串口取而代之,能够接入的 USB转串口设备 的数量仅取决于USB可用接口,而USB可用接口则可以通过USB集线器(Hub)轻松进一步扩展,它与网络集线器的功能相似。例如,学校每个寝室都有很多人,每个人都有一台PC,但网络电缆只有一根,怎么办?用网络集线器就可以解决这个问题!USB集线器存在的意义也是相似的,相应的扩展连接如图1.5所示。

USB设备按功能可分为两大类:一类为 USB集线器 (Hub),另一类为 USB功能 (Function) 设备 。前面提到USB设备(除USB集线器外)都属于 功能设备 ,它们都各自提供了一些特定的功能。例如,U盘能够存储数据,示波器能够采集数据。大多数情况下,我们所做的开发工作都是针对USB功能设备的。本书如无特别说明,涉及的“设备”就是指功能设备。

理论上,USB主机可以通过USB集线器扩展最多127个下行接口,但USB集线器的 级联层数 也是有限制的,USB 1.1与USB 2.0分别最多可支持4层与6层(不含最后一级功能设备),主机的根集线器(Root Hub)也视为一层,USB 2.0的扩展拓扑结构如图1.6所示。

图1.5 USB集线器扩展连接

图1.6 USB 2.0的扩展拓扑结构

这是一种阶梯式星形(Tiered Star)拓扑的USB扩展结构,每一个星形中心就是一个USB集线器(控制芯片),而每个USB集线器都只有一个上行口,进行扩展时只需要将其 与上一级USB集线器的下行口连接 即可。组合(Compound)设备则是将一个或多个功能设备与集线器组合在一起,其本质也是将功能设备与集线器下行口连接,我们可以将其理解为不可拆卸的功能(Non-removable Function)设备。例如,现在推出一个自带U盘的集线器,它将U盘功能设备与集线器的某一个下行口连接(在产品外面看不到),其他下行口则开放给用户作为集线器使用,这就是一个组合设备。

一般厂家在设计USB 2.0集线器产品时会使用同一款芯片,但是比较常用的USB集线器控制芯片只有4个或7个下行口(也就是我们所说的“1拖4”与“1拖7”),为了扩展更多的下行口,只能采用多个USB集线器控制芯片级联的方式,但是在扩展时要注意: 下行接口的总数量不能超过127个,并且集线器级联的层数不能大于5 (对于USB 2.0主机,因为根集线器也占用了一层)。图1.7(a)为正确的“1拖32”集线器级联方案,图1.7(b)扩展的下行接口数量虽然没有超过127个,但USB集线器的级联层数已经超过5,属于错误的级联方式。

图1.7 正确与错误的USB集线器级联方式

尽管USB的优点很多,但也不是完美的,它的传输距离有限,一般不大于5m,但是对于一般的应用已经足够了,而且可以通过级联集线器的方式进一步扩展传输距离。另外,USB的易用性是以更复杂的协议为代价的,开发过程相较于以往的串并行接口更复杂一些,而本书的目的就是为了轻松解决该问题,你不必有任何学习上的负担。

USB物理接口的具体类型有很多种,它们都有自己适用的不同场合。USB 2.0常用的母口(Female)连接器也称为插座(Receptacle),如图1.8所示。绝大多数PC配备的都是呈矩形的A型(Type A)母口,而呈方形的B型(Type B)母口则多用于设备(如打印机、投影仪、扫描仪等)。迷你(Mini)母口的使用已经越来越少了,微(Micro)B型母口的应用则越来越多(A型母口已经淘汰),因为其体积更小,在本书尚未出版前,它也是绝大多数安卓智能手机的标配接口。另外,公头与母口是配对使用的,也称为插头(Plug),不匹配的公头是无法与母口连接的,具体规格可以参考USB 2.0规范,此处不再赘述。

图1.8 USB 2.0常用的母口连接器

USB 3.2又增加了几种连接器,如图1.9所示。其中,A型与B型接口与USB 2.0是兼容的,只不过增加了USB 3.2独有的两对差分线(分别输入与输出)引脚。微B(A)型接口看似有些“奇葩”,其实它由两部分组成,主要是为了兼容USB 2.0的微B(A)型接口,因为较长的那部分与USB 2.0标准的微B(A)型接口定义是一致的,但是由于其体积比较大,这种接口的应用非常少。C型接口应该是大势所趋,其体积与USB 2.0微B型接口相似,但支持更多可用于USB 3.2的数据线,而且接口没有正反方向区分(Reversible)。在本书尚未出版前,已经有不少厂家开始将这种接口应用于智能手机,但是这并不意味着一定支持USB 3.2规范,它只不过使用了物理接口中用于USB 2.0的数据线而已。

图1.9 USB 3.2对应的母口连接器 tccDV2NukUzYmYy3Ki81q8mxvluQy+pY7kaOCsNp65oDE8XtWxNCwAYeMqbv28eE

点击中间区域
呼出菜单
上一章
目录
下一章
×