USB--Universal Serial Bus,通用串行总线,是一种接口。
USB体系包括USB Host“主机”、USB Device“设备” 以及“物理连接”三个部分。
一个USB系统中仅有一个USB主机;设备包括USB功能设备和USB HUB,最多支持127个设备(原因是一个USB Host最多可以同时支持128个地址,地址0作为默认地址(感觉是分配给了Root Hub),只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个USB Host最多可以同时支持127个地址,也就是同时支持127个USB设备。实际应用中连接设备较多时,会用到USB Hub,而USB Hub也算是一个USB设备,它也是占用地址的,因此一个USB Host可以最多接127个USB设备的意思是,加上USB Hub的数量的,而实际可接的USB功能设备的数量肯定会小于127个)。至于为什么是128个地址,因为设计时使用7(bit)位寻址字段。
此图为USB体系结构图
对图的解释为:以Host-Root Hub为起点,最多支持7层,也就是说任何一个USB系统中最多可以允许5个USB Hub(不包括Root Hub,仅是外部的USB Hub)级联。一个复合设备将同时占据两层或更多的层。
解释中提到Root Hub及USB Hub,两者的区别在于:
一、Root Hub是一个特殊的USB Hub,它集成在Host controller里面,不占USB的地址。不过对于此,我还有个疑问:在我的笔记本(xp系统)上的设备管理器中会显示两个Generic USB Hub,两个USB Root Hub。在公司的小PC机(ubuntu 11.04)上显示的有两个Linux Foundation 1.1 root hub,两个Linux Foundation 2.0 root hub。
经google发现
Generic USB Hub应该是属于前面说的那种“外部USB Hub”,只不过它是直接级联到了Root Hub上,并集成到了PC里面。至于公司的小PC机,怎么会有4个Root Hub,没查出来,不过据我理解,因为机器可能不太具有“普通性”,它是提供了两个USB1.1标准的Root Hub,及两个USB2.0标准的Root Hub,提供的USB Root Hub比一般的pc机要多。
二、还提到复合设备,举个例子的话,就像是一个带麦克的摄像头,其实它是由两个usb功能设备组成,一个是麦克功能设备,一个是摄像头功能设备,而内部是集成了一个1扩2的usb hub芯片,因此,它的usb hub芯片占一层,它的麦克,摄像头的部分占下面一层,共占两层,而占用的usb地址为3个。
扩展一下,提到这些,又出来一点疑问:USB Host Controller与Root Hub是一对一的关系,还是一对多的关系?
即,如果一个arm机上有一个USB Host Controller的话,是不是也只能有一个Root Hub,还是说可以有两个甚至更多的Root Hub的问题。
还是google,找到oracle公司的一个doc--
<USB Host Controller and Root Hub>,里面说:The USB host controller has an embedded hub called the
root hub,可以看到它说的是一对一的关系,不过我查看了一下Raspi,里面仅列出一个Linux Foundation 2.0 root hub,而它本身有两个USB接口,感觉与oracle公司的doc矛盾。
继续google,
《请问usb root hub和 host controller只能有一对还是可以有多对?》里面提到ldd3上说"
All root hubs are assigned a unique number by the USB core. In our example, the root hub is called usb2, as it is the second root hub that was registered with the USB core. There is no limit on the number of root hubs that can be contained in a single system at any time."提到对于一个usb core(如果可以理解为host controller的话)可以接多个Root Hub,看来oracle也不十分可信,不过问题不算解决,待查更权威或有较多认同的说法。
对于树莓派,也可能是这种情况:一个USB Host Controller,一个Root Hub,然后这一个Root Hub可以出来两个usb接口。靠,找不到权威资料,卡到这里了。
USB采用的是轮询的广播机制,有点像局域网(好像是记不清了),所有的传输由主机发起,采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向(设备地址)或者来源的设备地址和端点(Endpoint??),从而保证只有一个设备对广播的数据包/令牌包作出响应。
数据包:USB总线上数据传输的最小单位,由三个部分组成,SYNC、数据及EOP。其中数据部分的格式会按情况采用不同的格式,但都以8位的PID(??)开始。PID指定数据包的类型(共16种)。令牌包即指PID为IN/OUT/SETUP的包。
端点(Endpoint):是USB设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限的,除默认端点外低速设备最多支持2组端点(2个输入,2个输出),高速和全速设备最多支持15组端点。(资料上是这么介绍的,但没看懂!!)
哇!处处是管道(Pipe)啊,这里也用到管道了,管道是主机与设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何USB设备一旦上电就存在一个信息管道,即默认的控制管道,USB主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。USB设备连接到Host时,Host必须
通过默认的控制管道对其进行
枚举(好NB),获得设备描述、进行地址分配、获得配置描述、进行配置。这是为什么USB设备支持即插即用。(枚举:)
USB版本对比:
USB版本 | 速率称号 | 最大传输距离(m) | 带宽(bps) | 速度(Bps) | 一般用途 |
USB3.0 | SuperSpeed | 约2.7 | 5G | 约500M | 大容量存储,视频传输 |
USB2.0 | Hi-Speed | 约4.8 | 480M | 约60M | 摄像头等 |
USB 1.1 | FullSpeed | | 12M | 约1.5M | |
USB 1.0 | LowSpeed | | 1.5M | 约187.5K | 人机接口设备,如:键盘、鼠标、游戏杆等 |
对于USB,是向下兼容的,如USB2.0会兼容USB1.1及USB1.0的版本。
usb通信过程:
host controller <--> root hub <--> function/device
host controller <--> root hub <--> hub <--> function/device
device controller 也叫做 function controller.
一般嵌入式设备既可以作为host,也可以作为device.
嵌入式设备可以作为host,要有host controller, root hub和外设通信。
嵌入式设备要作为usb设备,和pc机连接时,通过device controller和pc机通信。
USB OTG和USB HOST的区别
USB OTG 设备既能做主机,又能做设备。
USB HOST是指主机。
当OTG 插到 HOST 上,OTG 的角色 就是 device.
当device 插到 OTG 上,OTG 的角色就是 HOST.
一个基于计算机的usb系统可以在系统层次上被分为三个部分:即USB Host、USB device和USB的连接。
所谓USB连接实际上是一种usb device和usb host进行通信的方法。包括:
1、总线的拓扑(由一点分出多点的网络形式):即外设和主机连接的模式。
2、各层之间的关系:即组成 usb 系统的各个部分在完成一个特定的usb任务时,各自之间的分工合作。
3、数据流动的模式:即usb总线的数据传输方式。
4、usb的“分时复用”:因为usb提供的是一种共享连接方式,
HCI from wiki
EHCI from wiki
"The EHCI utilizes OHCI or UHCI controllers as “companion controllers”, where USB 2 devices are managed through the EHCI stack, and the port logic of the EHCI allows a USB 1 or 2 device to be routed to a port of a “companion” UHCI or OHCI controller, where the USB 1 and 2 devices are managed through the respective UHCI or OHCI stack. For example, a USB 2 PCIe host controller card that presents 4 USB “Standard A” connectors typically presents one 4-port EHCI and two 2-port OHCI controllers to system software. When a USB 2 device is attached to any of the 4 connectors, the device is managed through one of the 4 root hub ports of the EHCI controller. If a USB 1 device is attached to connectors 1 or 2 they will be routed to the root hub ports of one of the OHCI controllers for management, and USB 1 devices attached to connectors 3 or 4 will be routed to the root hub ports of the other OHCI controller. The EHCI dependence on separate host controllers for USB 1 and 2 devices results in complex interactions and dependencies between the EHCI and OHCI/UHCI drivers."
- 大小: 19.7 KB
分享到:
相关推荐
常用USB接口封装 MINI USB micro USB 3.1 Type C USB-C-SMD接口2D3D三维视图PCB封装库AD库(28个合集) Component Count : 28 Component Name ----------------------------------------------- Mini-USB N.layout...
USB4 规范合集(原版) 20220331 USB4 Specification 20220331 目录结构如下: ├TMU Simulation ├USB4 1.0 with errata and ECN through May 19, 2021 - CLEAN.pdf ├USB4 1.0 with errata and ECN through May 19...
MINI MICRO A型B型D型USB封装库USB type-c母座 AD元件库PCB封装库USB封装大全,PcbLib后缀文件,共计 45个封装文件,可以直接应用到你的项目设计中。 封装型号列表如下: TE_TYPE-C _CUI_UJ31-CH-G2-SMT-TR_UJ31-CH-...
USB扁口方口座MIN MICRO USB座 USB3.0座3D PCB封装库(AD库 3D封装库), 详细封装型号如下: Component Count : 16 Component Name ----------------------------------------------- USB_A/P_A USB_micro USB-A/S...
本资料包“STM32F407_USB_HS_usb.rar”专注于STM32F407在USB高速模式下的应用,提供了完整的开发环境和驱动程序,便于用户进行USB自定义程序的编写和调试。 USB高速模式是USB 2.0规范中的一种传输模式,最大数据...
USB Redirector是一款类似USB Network Gate的专业usb设备共享软件,可以为企业或家庭网络中的用户组织功能齐全的 USB服务器,允许用户通过本地网络、WLAN、或 Internet 远程使用共享USB设备,通过外网共享usb这种...
遍历USB设备,获取USB序列号 本文将介绍如何遍历USB设备,并获取USB序列号。通过Windows SDK编程系列文章,我们可以了解到如何使用CreateFile函数打开USB设备,然后使用DeviceIoControl函数与USB设备通讯,以获取...
USB Redirector是一款类似USB Network Gate的专业usb设备共享软件,可以为企业或家庭网络中的用户组织功能齐全的 USB服务器,允许用户通过本地网络、WLAN、或 Internet 远程使用共享USB设备,通过外网共享usb这种...
Micro-USB A型D型USB-Mini 接口等各类USB接口 3D封装库(STEP后缀)文件: kma-smt-5s-s-30tr.STEP kusb-sl-as1n-w-kycon.STEP KUSBVX-AS2N-W.STEP MICRO-USB-5pinmsbr-18.stp Micro-USB-DIP.STEP Micro-USB-SMD....
本合集包括了多份关于USB开发的重要资料,如《USB设备驱动开发深度解析-宋宝华.pdf》、《USB中文协议》、《USB结构体系.pdf》、《嵌入式Linux的USB驱动程序开发.pdf》、《linux设备驱动开发详解-usb篇.pdf》以及...
《USB开发大全,第5版》是Jan Axelson所著的一本详细探讨USB技术的开发者指南。本书详细介绍了USB技术从1.0版本到USB 3.1的演进历程,以及USB技术在嵌入式主机和On-The-Go模式下的应用。书中内容涵盖USB的基础知识、...
为了简化USB设备的开发和接入到PC系统,微软开发了WinUSB,可以将Winusb.sys作为设备功能驱动程序安装,并提供WinUSB API供应用程序访问设备。一直以来,除了USB HID设备,其他类型的设备在WINDOWS环境下需要安装...
CEPARK-USB开发板是一款专为学习USB技术设计的工具,它集成了多种USB设备的模拟电路,包括USB键盘、USB转串口、USB鼠标和USB MIDI键盘等。通过实际编程和硬件调试,学习者可以深入了解USB设备的工作原理,掌握USB...
STM32单片机USB 学习资料STM32F10x_USB_培训资料USB程序开发笔记等文档资料: 022525_STM32F10x_USB_学习培训资料.pdf CD00158241.pdf STM32 USB Mass Storage学习资料.pdf STM32的USB详解.pdf STSW-STM32121.zip ...
【基于WinUSB的上位机与USB通信】是一种在Windows操作系统环境下实现计算机(上位机)与USB设备间数据交互的技术。WinUSB是Microsoft提供的一个通用USB驱动模型,它允许开发者直接控制USB设备,而无需依赖特定的硬件...
USB调试助手,通常被称作UsbDebug,是一款专为开发者设计的实用工具,它能够帮助用户方便地进行Android设备的USB调试。USB调试是Android系统提供的一项功能,允许开发者通过计算机与Android设备进行交互,进行应用...
USB串口驱动是计算机与嵌入式系统之间通信的一种常见方式,尤其在STM32这样的微控制器应用中。本文将详细讲解USB串口驱动的工作原理、USB转接线的使用以及如何在STM32上实现USB串口通信。 首先,USB(Universal ...
USB(通用串行总线)技术是计算机领域中用于连接外部设备的一种标准接口技术。在个人计算机上,USB技术由于其便于使用、数据传输速度快、扩展性好以及支持热插拔等特点而变得尤为重要。如今,USB接口已经成为计算机...
在电子设计领域,接口的选择和布局至关重要,尤其是对于移动设备和小型电子产品,USB接口的应用非常广泛。本资源提供了三种常见的USB接口封装,分别是Mini USB、Micro USB以及它们在Altium Designer(AD)软件中的...
USB串口驱动,全称为USB to Serial Driver,是将USB接口转换为串行通信接口的驱动程序,使得计算机可以通过USB端口与各种采用串口通信的设备进行交互。USB-serial控制器是这种转换的核心硬件部分,它实现了USB协议与...