• 注册 / 登录
  • 切换到窄版
  • 查看: 1798|回复: 0

    USB接口基础知识

    [复制链接]

    676

    主题

    690

    帖子

    6808

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6808
    发表于 2023-8-20 23:21:03 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    前言

    USB:Universal Serial BUS(通用串行总线),是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、Microsoft 等多家公司联合提出的。

    标准 USB 共四根线组成:VCC、GND、D+、D-; 这两根数据线采用的是差分电压的方式进行数据传输的。

    USB 发展到现在已经有 USB1.0/1.1/2.0/3.0/4.0多个版本;目前用的最多的就是 USB1.1 和USB2.0,USB3.0、USB4.0目前已经开始普及。最新一代的USB是USB4,传输速度为40Gbit/s。物理接头USB Type-A、Type-B接头分正反面,新型USB Type-C接头不分正反,目前已近大规模用在手机设备上。

    一、USB概述

    USB在速度上远比并行端口(例如EPP、LPT)与串行接口(例如RS-232)等传统电脑用标准总线快上许多。USB 1.1(USB 2.0 FullSpeed)的最大传输速率为12Mbps,USB 2.0(USB 2.0 HiSpeed)为480Mbps,USB 3.0(USB 3.2 Gen1) 为 5Gbps,USB 3.1(USB 3.2 Gen2x1) 为 10Gbps,而USB 3.2(USB 3.2 Gen2x2)更达20Gbps,以及近期发表的USB 4.0,其速度可达40Gbps。

    USB的设计为非对称式的,它由一个主机控制器和若干通过集线器设备以树形连接的设备组成。一个控制器下最多可以有5级Hub,包括Hub在内,最多可以连接128个设备,因为在设计时是使用7比特寻址字段,二的七次方就等于128,一般人说USB连接127个是指连接(某一设备)时需扣除一个连接主机的USB接头,而一台计算机可以同时有多个控制器。和SPI-SCSI等标准不同,USB集线器不需要终结器。

    现USB标准中,按照速度等级和连接方式分为以下七种版本;注意USB-IF目前正式的主版本号只有USB 2.0和USB 3.2两个。

    1.png

    目前USB支持5种数据信号速率,USB设备应该在其外壳或者有时是自身上正确标明其使用的速率。USB-IF进行设备认证并为通过兼容测试并支付许可费用的设备提供基本速率(低速和全速)和高速的特殊商标许可。

    • 1.5 Mbps的低速速率。主要用于低速率人机接口设备,例如键盘、鼠标、游戏杆等等。
    • 12 Mbps的全速速率。在USB 2.0之前是曾经是最高速率,后起的更高速率的高速接口应该兼容全速速率。多个全速设备间可以按照先到先得法则划分带宽;使用多个等时设备时会超过带宽上限也并不罕见。所有的USB连接端口支持全速速率。
    • 480 Mbps的高速速率。并非所有的USB 2.0设备都是高速的。高速设备插入全速连接端口时应该与全速兼容。而高速连接端口具有所谓事务翻译器(Transaction Translator)功能,能够隔离全速、低速设备与高速之间数据流,但是不会影响供电和串联深度。
    • 5Gbps的超高速速率。相较于现有USB 2.0的480Mbps最高理论速度,USB 3.0可支持到5.0Gbps,是USB 2.0的10倍。若将USB 3.0应用到外置硬盘、U盘或蓝光刻录机等存储设备,将可大幅缩短资料传输时间。
    • 10Gbps的超高速速率+。USB 3.1 Gen2最高10Gbps理论速度,是USB 3.0的两倍。

    二、USB常见接口

    USB的连接器分为A、B两种,分别用于主机和设备;其各自的小型化的连接器是Mini-A, Mini-B 和 Micro-A, Micro-B,另外还有Mini-AB(可同时支持Mini-A及Mini-B)的插口;USB 3.1版本中导入支持正反面不区分插入的C型。下图是常见的USB硬件接口。

    2.png

    根据不同的协议,详细分类如下表所示。

    3.png

    其中Type-A是我们过去最常用的接口类型,Type-B常见于打印机上,而Type-C就是目前正在普及的,Micro-USB是过去安卓设备常采用的接口。

    综上,可将USB的接口分为以下三类:

    4.png

    1. Type A:Type-A就是我们最常见的大口,电脑上插鼠标、键盘、U盘的接口。目前主流接口已采用USB3.0接口,理论速度达到4Gbp/s,还有部分新主机的主板采用USB3.1甚至USB3.2,传输速度可达到10Gbp/s。

    2. Type B:Type-B接口形状上与A型有着明显的差异,常用于打印机、投影仪等大型设备上,电脑上不常见上。有些开发板也常用该类型接口用作串口调试口。从下图可以看到,Type-A和Type-B的引脚数目是相同的,仅仅是外形上的不同。这是设计者有意为之的,防止使用者连接到错误的设备上,导致短路。

    5.png

    3. Type C:Type-C是新一代的接口,没有正反面之分,常用于各种新型手机,部分耳机同样可接Type-C接口,同样是苹果笔记本的标配。相比A、B,有着以下优点:

    • Type-C支持正反插,虽然旧接口不容易差错,但可以避免某些莽夫“大力出奇迹”,直接把接口给搞坏。
    • Type-C往往支持PD快充,节约时间,时间就是金钱啊我的朋友。
    • 兼容性好,本身拥有更多的引口,可与DP、HDMI线可以实现4K超高清视频传输,不用扩展坞也能完成投屏。

    6.png

    三、USB设备分类

    USB通信设备(Communication devices)的定义由三个类组成:

    通信设备类(Communication Device Class, CDC):设备级定义,被主机用于识别(确定)含有几种不同类型接口的通信设备;
    通信接口类(Communication Interface Class):定义了一种通用机制,该机制可被用来使能处于USB总线上的所有类型的通信服务,即USB通信设备的控制功能;
    数据接口类(Data Interface Class):定义了一种通用机制,当一种数据不符合任何类的要求时,该机制使这种数据传输能通过USB块传输或同步传输类型在USB总线上进行,即通过USB块传输或同步传输类型去实现任何类型的数据传输的机制。

    通信接口类接口(Communication Interface ),设备通过通信接口通过定义好的申请(request)和通知(notification)实施设备控制以及可能的呼叫控制。因此通信接口时通信设备必须配置的接口,通信接口类一般需要一个控制端点(Control Endpoint,EP0)和一个可选的中断(Interrupt)端点。为了达到设备控制的目的,通信设备类在配置描述符中必须通过联合功能描述符(Union Functional Descriptor)将通信接口和数据接口组织起来。

    数据接口类接口(Data Interface Class),当通信设备需要传输的数据的数据格式不符合任何类的要求时就需要用数据接口来实现。一个通信设备可以包含0个或多个数据接口,数据接口上的数据格式则是主机和设备通过通信接口协商决定。数据接口子类需要一个方向为输入(IN)的块传输或同步传输类型端点和一个方向为输出(OUT)的块传输或同步传输类型端点。

    依附在总线上的设备可以是需要特定的驱动程序的完全定制的设备,也可能属于某个设备类别。这些类别定义设备的行为和接口描述符,这样一个驱动程序可能用于所有此种类别的设备。一般操作系统都为支持这些设备类别,为其提供通用驱动程序。设备分类由USB设计论坛设备工作组决定,并分配ID。

    如果一个设备类型属于整个设备,该设备的描述符的bDeviceClass域保存类别ID;如果它这是设备的一个接口,其ID保存在接口描述符的bInterfaceClass域。他们都占用一个字节,所以最多有253种设备类别。(0x00和0xFF保留)。当bDeviceClass设为0x00,操作系统会检查每个接口的bInterfaceClass以确定其类别。

    每种类别可选支持子类别 (SubClass)和协议子定义(Protocol subdefinition);这样可以用于主设备类型的不断修订。

    常用设备类别和ID有:

    8.png

    从上表可以看出,不同的类别使用了不同的协议,鼠标和键盘就是适应的HID,而USB转虚拟串口就是使用的CDC。

    四、常见USB设备类型

    1. USB CDC:CDC协议定义了一种使得USB总线能够支持任何通信设备的框架,如支持电信设备、多媒体网络设备等。

    CDC协议并非试图去重定义已经存在的那些通信设备连接和控制标准,而是去定义了一种确定设备与主机应该使用哪种现有协议的机制。CDC会尽可能的使用已存在的通信数据格式,而只是由USB通过恰当的描述符(descriptor)、接口(interface)和服务请求(request)定义去使这些数据格式能够在USB总线上传输。确切来说,CDC规范描述了一种包含USB接口、数据结构和服务请求的框架,在该框架下种类繁多的通信设备能够被定义和实现。

    通常一个CDC类设备由两个子类接口组成:一个通信接口类接口(Communication Interface Class)和0个或多个数据接口类接口(Data Interface Class)。主机主要通过通信接口类对设备进行管理和控制,而通过数据接口类传送数据。对于前面所述的不同CDC类模型,其所对应的接口的端点需求也是不同的,两个接口子类占有不同数量和类型的端点(Endpoints)。

    1.1 USB CDC ACM(虚拟串口)

    CDC-ACM (Abstract Control Model 抽象控制模型)允许任何通信设备提供串行通信接口(例如发送和接收AT命令的调制解调器设备)。该设备类型是在PSTN(Public Switched Telephone Network)中定义的。

    CDC-ACM驱动程序将USB设备作为虚拟调制解调器或虚拟COM端口暴露给操作系统。驱动程序可以通过ACM(通过不同通道分离数据和AT命令)或通过串行仿真(按原样传递AT命令和作为数据流的一部分)发送数据和AT命令。

    1.2 USB CDC ECM

    CDC-ECM(Ethernet Networking Control Model 以太网网络控制模型)用于在设备和主机之间交换以太网帧数据。CDC-ECM设备的一般用例是LAN/WLAN的点对点以太网适配器。

    1.3 USB CDC NCM

    CDC-NCM(Network Control Model 网络控制模型)协议用于在设备和主机之间交换高速以太网帧数据。这些以太网帧可以传送通过通信网络传输的IPv4或IPv6数据报。NCM设备的一般用例是支持3.5G/4G网络的无线网络适配器,例如:HSPA +和LTE。

    1.4 USB CDC EEM

    CDC-EEM(Ethernet Emulation Model 以太网仿真模型)是一种通过USB总线以低成本和高效率传输以太网帧的规范。与CDC ECM不同,EEM不会扩展USB总线上的接口,而是将USB总线视为移动以太网数据包的工具。EEM是较新的标准,比ECM稍微简单一些,可以获得更多的硬件支持。

    两者之间的差别是:ECM将网络接口扩展到目标(例如USB电缆调制解调器);EEM用于移动设备通过USB使用以太网与主机通信。但是,对于Linux gadget,与主机的接口是相同的(usbX设备),因此差异很小。

    1.5 USB CDC OBEX

    USB CDC-OBEX(Object Exchange 对象交换)符合WMC(Wireless Mobile Communication 无线移动通信)OBEX功能模型,支持USB上的OBEX应用程序。

    2. HID设备
    Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。

    3. Mass Storage设备
    USB大容量存储设备是一个协议,允许一个USB接口的设备与主计算设备相连接,以便在两者之间传输文件。对于主计算设备来说,USB设备看起来就像一个移动硬盘,允许拖放型文件传送。它实际上是由USB实施者论坛所通过许多通讯协议的汇总,这一标准提供了许多设备的界面。包括移动硬盘、闪存盘、移动光学驱动器、读卡器、数码相机、数码音乐播放器、PDA以及手机等等。

    4. RNDIS
    RNDIS(Remote Network Driver Interface Specification 远程网络驱动接口协议)是Microsoft专有协议,主要用于USB之上,在支持Microsoft RNDIS协议的Windows PC上提供类似CDC的通信功能。它提供了大多数Windows,Linux和FreeBSD操作系统版本的虚拟以太网链接。

    5. RmNet
    RmNet是高通公司为其手机平台开发的专有USB虚拟以太网框架。 RmNet通过薄层协议(TLP)提供更高的吞吐量,并允许服务质量流量控制。4G/5G模组常用此种协议。

    RmNet和CDC-ECM区别:更像是两种拨号方式的区别,RmNet获取公网IP,CCD-ECM获取局域网IP。

    在高通平台上,rmnet 也是属于CDC-ECM,他们具体的区别在于对于USB命令的封装以及使用的USB接口,端点定义方式不同。

    如果是使用RmNet,那么发起data call是通过QMI工具发的QMI命令,QMI工具为QMICM,QMICM集成了QMI命令。

    而通过标准的CDC-ECM发起data call,则是发送标准的ECM命令。如果是QMICM建立的data call,不走router的,所以它的IP地址获得的是公网IP。而通过标准的CDC-ECM建立的data call,是走router的,获得的IP地址是私有的IP如192.168开头

    四、USB供电协议

    USB不仅可以用于输出传输,也可以用于供电。

    阶段1:最开始我们电脑Type-A输出是5V@0.5A,后来Type-A 3.X增加到5V@0.9A

    阶段2:Type-A 引入 (Battery Charging) BC 1.2 充电协议,最大可以输出5V@1.5A

    这里所说的是规范设计电流和电压,所以理论上只会比这个标准高,另外总会有一些特立独行的厂家,比如用4针脚的Type-A接口,达到了供电3A以上。因为可承受电流大小和接口类型关系不大,只要线材够粗,接触铜片够大,电流就能大。

    阶段3:Type-C标准支持5V@3A,以及更高标准的快充协议 PD 和 QC

    QC (Quick Charge) 高通专门为骁龙处理器开发的,目前已经到了第4代,QC 3.0以及之前有Type-A接口,而QC 4.0因为纳入PD协议,只有Type-C接口。

    PD (Power Delivery) USB-IF 协会定义,之前主要是苹果在使用,最新的PD 3.0已经包含了QC 4.0等一系列其他快充协议,一定是Type-C接口。

    上述两种支持的最大电压/电流均为20V/5A,也就是100W的充电功率;除了最大支持,通常是5V,12V,20V@1.5A,2A,3A,5A的组合。

    除了以上两个公有协议,各家手机厂商还会有自己的私有快充协议请看 详解手机快充协议

    五、USB 端口颜色编码标识

    ✅黑色:USB1.0/2.0接口
    ✅蓝色:USB3.0接口
    ✅蓝绿色:USB3.1接口

    7.png

    注意

    ✅白色、黑色、蓝色、蓝绿色主要跟传输速度相关,
    ✅紫色、绿色、黄色、红色、橙色主要和充电相关。

    9.png

    结语

    USB 2.0,USB 3.0,USB 3.1 都属于 USB 的标准,最大的区分就是传输数据的速度;ype-A,Micro-B 以及 USB Type-C 是指接口的类型,也就是接口的不同样子。

    USB 是一个很大的模块,包括:USB spec、USB emulation、USB ADB、USB MTP、USB ACM、USB OTG 每个模块都要研究很久才能搞懂。USB 本身就是为了干掉其他乱七八糟接口而出现的,硬件简单了,软件协议设计的就会复杂一些。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-12-22 15:03 , Processed in 0.050309 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表