资讯详情

图解USB标准之架构概览

前面写了一些SPI/I2C/RS-有朋友留言分享485等文章。USB今天,我们将从系统标准层面进行梳理和总结。看看有没有朋友喜欢。首先从系统层面进行梳理。个人学习习惯于先从整体上触摸一般,然后逐渐深化感兴趣的细节。

USB这是一个复杂的协议栈。如果文章中发现错误,请帮助纠正。

注:本文主要参考USB2.0规范第4章,尽可能清楚地总结标准中的一些重要点。我觉得很多朋友可能对阅读英语标准有点抵触,所以整理这篇文章也是一个原因,希望对朋友有所帮助。

1d6910eba832aeea2c8fa2f03cd2cbc5.png

总线拓扑

说到总线拓扑,大家一定看过这张图:

USB标准上说USB总线拓扑是一种,拓扑图延申请的一些要点:

  • 所谓星型是针对的Hub一个Hub下面可以挂Hub或者设备,顶层是USB主机控制器

  • USB主机控制器通常伴随着根集线器Root Hub。

  • Hub级联最多5层

  • 总线上最大允许连接127个设备。

  • Hub级联遵循向下兼容,USB2.0主机或高速Hub可以连接USB1.1Hub。

  • 一个USB分层星型结构,只有一个USB主机控制器

  • 电缆最长不超过5米

这种最大的7层星形结构代表一个USB总线,一个USB分层星型结构,只有一个USB主机控制器,但并不是说一台电脑只有一台USB例如,我的电脑内部有两条总线USB主控制器 Root Hub,从Windows可见设备管理器:

七层拓扑图中的第二层只画了一个Hub,这并不意味着真正的第二层只能有一层Hub,但是这张图不能显示更详细的总线连接关系USBTrace看软件:

第一条总线有4个端口,第二条总线的根集线器有18个端口,其中计算机内部有8、9、10个端口USB设备占用了。我这台笔记本对外有两个USB界面,U盘分别插入这两个端口,然后使用USBTrace可以推断这两个端口都属于第二条总线Port 3以及Port 4:

那么Hub长什么样?比如下面是7口USB Hub来源于示意图USB2.0标准:

物理接口

电气概览

USB 信号和电源通过四线电缆传输。信号发生在每个点对点网段的两条线上。

  • VBUS/GND:供电

  • D /D-:USB差分信号线。

有三种数据速率:

  • 高速模式 high-speed:480 Mb/s,常缩写为HS模式

  • 全速模式 full-speed:12 Mb/s,常缩写为FS模式

  • 低速模式 low-speed:1.5 Mb/s,常缩写为LS模式

至于数据编码模式,这里就不管了。

机械概览

机械部分的主要定义USB电缆的颜色定义和线号是什么尺寸的连接器。电缆的抗拉强度等。主要从以下几个方面进行标准化:

  • 主要连接器类型规范,主要分为A、B系列。定义公头、母头。

  • 电缆规范。高速/全速电缆由信号双绞线制成,VBUS、GND 它由整个屏蔽组成。当高速/全速电缆与低速设备一起使用时,电缆必须满足所有低速设备的要求。双绞线不能用于低速设备。双绞线能有效抵抗共模噪声。

  • 机械尺寸及材料要求。

连接器脚号 信号名 线芯颜色
1 VBUS 红色
2 D- 白色
3 D 绿色
4 GND 黑色
外壳 屏蔽 屏蔽层
    • A/B系列插座规范

    • A/B系列插头规范

    • 电缆尺寸材料规范,这里就不罗列了,知道在哪里查就可以了。

    • 电气、机械和环境合规性标准

    • 接地规范,屏蔽层必须焊接在插头的外壳接地。

    • 插座PCB尺寸规格。因此,如果需要绘制连接器,请参考6.9节的尺寸。

    • Logo位置

    • 线芯颜色规格。

    • USB Logo尺寸规范。

协议概述

USB采用主从通信模式,是轮询总线。所有数据传输都是由主机控制器启动的。USB这里不总结标准中最难啃的部分。

健壮设计

标准关于协议的健壮性,又称鲁棒性,设计了以下几个方面:

  • 从信号完整性的角度来看:使用差分驱动器、差分接收器和信号电缆的屏蔽处理。差分收发策略在抗共模干扰方面具有显著作用,屏蔽层具有两个作用:一是有效减少USB线通过无线电波干扰外界;二是能有效隔离外界无线干扰USB干扰信号线和电源线。

  • CRC报纸验证。如果报纸中的数据出现错误,可以检测到并进行相应的处理。

  • 热插拔检测及相应硬件设备的系统配置管理。该设计有助于改善用户体验,用户可以随时插入,而无需关闭插入。

  • 通信自恢复机制是利用对数据丢失或数据损坏的超时检测来实现的,以增强协议的强度。

  • 对流数据进行流量控制,确保硬件缓冲区管理同步和底层收发。

  • 数据管与控制管分离

配置管理

USB支持热插拔。所谓热插拔,就是系统需要正确识别设备的加载驱动程序。断开后,系统需要从软件层面识别到设备已从总线移除。这里所谓的系统可能是带操作系统的计算机,也可能是没有操作系统的嵌入式设备。

例如,以下U盘插入移除过程:

连接检测

所有的USB设备必须通过集线器USB端口连接到总线。从总线拓扑图可以看出,总线上有一个位于金字塔顶部的主控制器。从上图也可以看出,即使在计算机内部USB设备也是通过的Hub当端口连接到总线时,计算机内的许多设备也将被使用USB主线互联,如内置蓝牙设备。

主控制器位于顶部,设备通过集线器端口连接到总线,那么主控制器如何知道设备插入呢?这是因为集线器有报告USB设备在其端口之一上的连接或移除的状态位。主控制器查询集线器检索这些状态位。在设备插入时,主控制器启用端并通过设备的控制管道在默认地址对USB设备进行寻址。主机为设备分配一个唯一的USB地址,然后确定新连接的USB设备是集线器还是功能设备。主机使用分配的USB地址和端点编号0为USB设备建立其控制管道的端点。

  • 如果新连接的USB设备是集线器,如果这个新连接的集线器的端口上有USB 设备,则对每个连接的USB设备执行上述识别操作。

  • 如果连接的USB设备是一个功能设备,则连接通知将由适用于该功能的主机软件处理。如果是基于通用操作系统的计算机系统,则由一般驱动程序处理,如果主机控制器是单片机类嵌入式设备,则由单片机程序负责处理。

断开检测

同样移除时,从标准设计角度来看,也需要考虑两种情况。

如果是设备从集线器移除,集线器会禁用该端口并向主机提供设备移除的指示。然后主机控制器从软件层面做相应的移除处理。

如果是集线器移除,需要从软件层面移除该集线器所有端口的USB设备或级联集线器,当然如果集线器又连集线器,则有点递归的意思。

总线枚举

由于USB允许USB设备随时连接到USB总线或从USB总线断开,因此总线枚举是 USB的持续进行的过程。USB总线枚举还包括移除的检测和处理。

传输模式

。管道Pipe是一个底层软件及硬件逻辑概念,数据就像水一样从管道中的一侧流向另一侧,就对应着主机控制器与设备的两个端点endpoint。endpoint就像管道的两头,也是软件逻辑概念。将主机与设备侧的端点逻辑关联起来,就是所谓的管道了。当然这管道之所以能传输数据,是因为主端、设备端两侧相应的代码配合芯片内部硬件实现的。

数据流经由一侧的端点通过逻辑管道传输到另一侧端点,USB架构包含四种基本类型的数据传输:

  • 控制传输

  • 批量传输

  • 中断传输

  • 同步传输

下表是这四类传输在不同速度模式下支持的最大包长度,放在这里有一个整体概念:

速度模式 低速 全速 高速
控制传输 8 8/16/32/64 64
同步传输 不支持 1023 1024
中断传输 0~8 0~64 0~1024
批量传输 不支持 8/16/32/64 512

控制传输

控制传输,;并可用于其他设备自定义的传输目的,比如控制设备上的其他管道。

USB系统软件在设备首次连接时使用控制传输进行设备配置。其他驱动程序软件也可以选择以自定义方式使用控制传输。控制传输主要使用管道0,数据传输是无损的。

每个USB设备都必须有控制端点,支持控制传输来进行命令和状态的传输。此外,控制传输是双向传输。

批量传输

批量传输Bulk Transfer就像其名字一样,数据量相对较大,具有突发性。这种突发性可能来源于用户对USB设备的操作,比如对U盘的读写操作就会触发批量传输。批量传输这种突发性也就意味着是非周期性的,一般用于没有实时性要求、数据量比较大设备。比如用于打印机或扫描仪的数据。批量传输数据是连续的。通过在硬件中使用错误检测并采用前面所说的错误重传机制,可以在硬件级别确保可靠的数据交换。此外,大量数据占用的带宽可能会有所不同,具体取决于其他总线活动,这是由主机控制器动态仲裁管理的。

批量传输是单向的,使用单向大容量端点来实现。

中断传输

一般用于需要实时可靠的传输场景。此类数据可随时由设备传输,并以不低于设备指定的速率进行传输。中断数据通常由一个或多个字节的事件通知、字符或坐标组成。比如USB鼠标就是一个采用中断传输的实例。

同步传输

占用预先约定好的USB带宽以及传输延迟,也称为流式实时传输。所需要的带宽以及延迟要求,与特定设备的相关数据吞吐率以及端点的缓冲管理有关,比如用于音频会议USB耳麦,对于音频的采样率是有参数要求的。

带宽分配

USB标准定义了如何允许每种传输类型访问总线的规则。带宽分配主要在从两个方面进行规定:

  • 带宽在管道之间分配。当管道建立时,USB会为一些管道分配带宽。USB底层软硬件需要提供数据缓冲,带宽需求大的场景需要提供更大的缓冲区。

  • 带宽可以在许多不同的数据流之间分配。从而能实现将各种设备连接到USB总线。此外,可以同时支持具有宽动态范围的不同设备比特率需求。所谓宽动态范围是指其带宽需求是随着使用场景在动态变化的。

好了,先总结这么多,继续慢慢啃~。

推荐阅读  点击图片即可跳转

嵌入式入门必看,看看老鸟如何华丽蜕变!(干货分享帖)

C语言如何使用断言避免踩坑

6步!教你写一个mqtt调试助手

标签: usb连接器插头结构线缆连接器的接地结构ke母头偏脚外螺连接器脚侧插usb连接器防干扰的插头连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台