分享

USB总线介绍

 袁先森lemon 2019-04-07

USB发展史

USB(universal serial bus),通用串行总线,是一种外部总线标准。用于规范电脑与外部设备的连接和通讯。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。自1996年堆出后,已经成功替代了串口和并口。成为当今个人电脑和大量智能设备的必备接口之一。

USB1.0出现在1996年,速度只有1.5Mbps。1998年升级为USB1.1,速度也提升到了12Mbps,称之为full speed。

USB2.0规范是由USB1.1规范演变而来的。它的传输速率达到了480Mbps,称之为high speed。

USB3.0提供了十倍于USB2.0的传输速度和更高的节能效率,被称之为super speed。

USB硬件接口

1.标准A口

2.标准B口

3.mini-usb

4.micro-usb

USB信号线

USB接口有4根线。两根电源线,两根信号线。USB接口的输出电压和电流是+5V 500mA。当数据线D+和D-的电压差大于200mV是表示输出为1,电压差小于200mV输出为0。

USB电源线:标有VCC,Power,5V或者5VSB

USB数据线(正):标有DATA+,USBD+,PD+或者USBDT+

USB数据线(负):标有DATA-,USBD-,PD-或者USBDT-

USB地线:标有GND或者Ground

  1. USB系统构架

    1、usb系统拓扑结构

我们根据上图来阐述usb系统的拓扑结构

对于每个usb系统来说,都有一个称为host控制器的设备,该host控制器和一个根hub作为一个整体。这个根hub可以连接设备或者子hub,每个子hub又可以连接设备或者子hub。一条usb总线上最多可以接127个设备。

  1. USB主控制器

    USB主控制器负责处理主机与设备之间的电气和协议层的互联。常见的USB主控制器规格有:

    OHCI:主要是非PC系统上的USB芯片,比如用于arm

    UHCI:大多是intel和via主板上的usb控制器芯片。遵循usb1.1规格。

    ECHI:是由intel等几个厂商研发,兼容OHCI、UHCI,遵循usb2.0规范。

  2. USB HUB

    每个USB Host控制器都会自带一个USB Hub,被称为根(root)Hub。这个根Hub可以接子(sub)Hub,每个Hub上挂载USB设备。通过外接USB Hub,可以插更多的USB设备。当USB设备插入到USB Hub或从上面拔出时,都会发出电信号通知系统。

  3. USB设备

    USB设备就是插在USB总线上工作的设备,广义上讲USB Hub也算是USB设备。

2、USB设备逻辑结构

在USB设备的逻辑组织中,包括设备、配置、接口和端点4层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零或多个端点。

每个usb设备都可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从中选定一个),配置由多个接口组成。在usb协议中,接口由多个端点组成,代表一个基本的功能,是usb设备驱动程序控制的对象,一个功能复杂的usb设备可以具有多个接口,而接口是端点的汇集。

例如:一个usb播放器带有音频、视频功能,还有旋钮和按键

配置1:音频(接口)+旋钮(接口)

配置2:音频(接口)+视频(接口)+按钮(接口)

配置3:视频接口+旋钮(接口)

音频接口、视频接口、按钮接口、旋钮接口均需要一个驱动程序。

Sub设备中 唯一可寻址部分是设备端点。它是位于usb设备或主机上的一个数据缓冲区,用来存放和发送usb的各种数据。主机和设备的通信最终作用于设备上的各个端点,它是主机与设备通信的一个逻辑终端。

每个usb设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备是给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可得兼。

基于pnp机制,设备被枚举时,它必须向主机报告各个端点的特性,包括端点号,通信方向,端点支持的最大包大小,宽带要求等(其中端点支持的最大包大小叫做数据有效负载)。每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除端点0外,其余的端点在设备配置前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。

我们打个比喻,usb总线类似于高速公路,收发的数据类似于汽车,usb端点类似于高速公路收费口的入口或者出口。

  3USB设备描述符

在每一个usb设备的内部,集成了usb配置寄存器,它通过固定格式的数据记录usb设备的信息,通过这些数据usb主机就可以获取usb设备的类型、生产商等信息。这些固定格式的数据,我们称之为usb描述符。标准的usb设备有5中usb描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口描述符使用了几个端点,就有几个端点描述符。

4.   USB数据传输

1、数据传输方式:针对设备对系统资源需求的不同,在USB规范中规定了4种不同的数据传输方式:等时传输、中断传输、控制传输、 批量传输。

控制传输:控制传输主要用来传输设备控制指令、设备状态查询及确认命令。当usb设备收到这些数据和命令后,将依据先进先出的原则按队列方式处理到达的数据。

中断传输:中断传输并不是我们之前所知道的中断,它的意思是以一个固定的时间间隔去查询usb设备有没有数据需要传输,如果有就传输,没有就等到下一个时间间隔再来查询。之所以需要主机来查询,是因为usb设备不能主动发起任何的传输,只有主机主动发起命令才能进行传输。

等时传输:以固定的传输速率,连续不断地在主机与usb设备之间传输数据,在传送数据发生错误时,usb设备并不处理这些错误,而是继续传送新的数据。该方式用来连接对数据的正确性要求不高而对时间极为敏感的外部设备。

批量传输:用来传输要求正确无误的数据。通常打印机、扫描仪和数码相机以这种方式与主机连接。

2、传输的组织结构

Usb的数据传递首先是基于传输的:中断传输、批量传输、等时传输和控制传输。

一次传输由一个或多个事务构成,事务可分为:in事务、out事务、setup事务

一个事务由一个或多个包(packet)构成,包可分为令牌包(setup),数据包(data),握手包(ack)和特殊包

一个包由多个域构成,域可分为:同步域(SYNC),标识域(PID),地址域(ADDR),端点域(ENDP),帧号域(FRAM),数据域(DATA),校验域(CRC)。

5、USB设备枚举

概念:USB设备在正常工作以前,第一件要做的就是枚举。枚举就是让host认得这个usb设备,并且为该设备准备资源,建立好主机与设备之间的数据传递机制。

流程:

    1. 获取设备描述符
    2. 复位
    3. 设置地址
    4. 再次获取设备描述符
    5. 获取配置描述符
    6. 获取接口、端点描述符
    7. 获取字符串描述符
    8. 选择设备配置

6、linux usb系统

USB基础知识介绍(来源于国嵌) - 小白 - 小白的博客

从主机侧来看,最底层是usb主控制器,其上运行usb主控制器驱动,再上是usb核心层,然后是usb设备驱动(插入主机的u盘、鼠标等设备驱动)。因此主机侧的usb驱动包括两类:usb主控制器驱动和usb设备驱动。前者控制插入其中的usb设备,后者控制usb设备与主机通信。他们之间的usb核心负责usb驱动管理和协议处理的工作,向上上下都可以提供编程接口。

从设备侧来看,最底层是usb设备控制器(UDC),一条usb总线上只能有一个usb主控制器,但可以有多个usb设备控制器。其上运行UDC驱动,再往上是一个接口层,其功能就相当于usb核心,向上向下口可以提供接口,然后是gadget驱动。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多