USB总结

本文详细介绍了USB技术的基础知识,包括USB插入检测机制、设备的枚举过程、描述符的获取、传输方式(控制、中断、同步和批量)以及带宽管理策略。重点阐述了USB设备如何通过控制传输进行枚举,并解释了不同类型的传输在带宽使用上的特点。
摘要由CSDN通过智能技术生成


概念基础:

1、USB插入检测

在USB集线器的每个下游端口的D+和D-上分别接了一个15KΩ的下拉电阻到地,这样当悬空时为低电平。而USB设备端接了一个1.5KΩ的上拉电阻到3.3V(全速设备和高速设备上拉电阻在D+上,低速设备上拉电阻在D-上)。因此,当设备插入集线器时,经过两个电阻的分压,电平为3V,集线器检测到这个状态后,报告给USB主控制器,这样就检测到设备的插入了。集线器在根据检测到被拉高的数据线是D+还是D-来判断插入的是什么类型速度的设备。

2、描述符及关系

在主机获取描述符时,首先获取设备描述符,然后再获取配置描述符,然后根据配置描述符中配置集合的长度,一次性将配置描述符、接口描述符、类特殊描述符(如果有)、端点描述符一次读回。

设备描述符记录的主要信息有:设备所使用的USB协议版本号、设备类型、端点0的最大包大小、厂商ID(VD)、产品ID(PID)、设备版本号、厂商字符串索引、产品字符串索引、设备序列号索引、可能的配置数等。

配置描述符主要记录的信息有:配置所包含的接口数、配置的编号、供电方式、是都支持远程唤醒、电流需求量等。

接口描述符记录的信息有:接口的编号、接口的端点数、接口所使用的类、子类、协议等。

端点描述符记录的主要信息有“端点号及方向、端点的传输类型、最大包长度、查询时间间隔等。

字符串描述符主要是提供一些方便人们阅读的信息,它不是必须的。

3、设备的枚举过程

设备枚举过程全部使用控制传输。

控制传输分为3个过程:建立过程、可选的数据过程、状态过程。

a、USB主机检测到USB设备后,先对设备进行复位,设备地址变为0;

b、主机通过地址0端点0向设备发送获取描述符的请求,设备收到请求后,将描述符返回主机。

c、主机对设备又一次复位,进入设置地址过程;

d、主机使用新地址再次获取设备描述符

e、主机获取配置描述符或获取配置描述符集合。配置描述符集合包括配置描述符,接口描述符、类特殊描述符、端点描述符等。接口描述符、类特殊描述符、端点描述符是不能单独获取的,必须跟随配置描述符以一个集合的方式一并返回。

4、USB包结构及传输过程

1)The Setup Packet

Step包数据格式

 

1. Setup Token

Sync

PID

ADDR

ENDP

CRC5

EOP

Address & Endpoint Number

2. Data0 Packet

Sync

PID

Data0

CRC16

EOP

Device Descriptor Request

3. Ack Handshake

Sync

PID

EOP

Device Ack. Setup Packet

 

数据包格式

 

1. In Token

Sync

PID

ADDR

ENDP

CRC5

EOP

Address & Endpoint Number

2. Data0 Packet

Sync

PID

Data0

CRC16

EOP

Last 4 bytes + Padding

3. Ack Handshake

Sync

PID

EOP

 

Host Acknowledges Packet

 

握手包格式

 

1. Out Token

Sync

PID

ADDR

ENDP<

================================================================================ MICROSOFT 基础类库 : BulkTranferMFC 项目概述 =============================================================================== 应用程序向导已为您创建了此 BulkTranferMFC 应用程序。此应用程序不仅演示 Microsoft 基础类的基本使用方法,还可作为您编写应用程序的起点。 本文件概要介绍组成 BulkTranferMFC 应用程序的每个文件的内容。 BulkTranferMFC.vcxproj 这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 BulkTranferMFC.vcxproj.filters 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。 BulkTranferMFC.h 这是应用程序的主头文件。 其中包括其他项目特定的标头(包括 Resource.h),并声明 CBulkTranferMFCApp 应用程序类。 BulkTranferMFC.cpp 这是包含应用程序类 CBulkTranferMFCApp 的主应用程序源文件。 BulkTranferMFC.rc 这是程序使用的所有 Microsoft Windows 资源的列表。它包括 RES 子目录中存储的图标、位图和光标。此文件可以直接在 Microsoft Visual C++ 中进行编辑。项目资源包含在 2052 中。 res\BulkTranferMFC.ico 这是用作应用程序图标的图标文件。此图标包括在主资源文件 BulkTranferMFC.rc 中。 res\BulkTranferMFC.rc2 此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。 ///////////////////////////////////////////////////////////////////////////// 应用程序向导创建一个对话框类: BulkTranferMFCDlg.h、BulkTranferMFCDlg.cpp - 对话框 这些文件包含 CBulkTranferMFCDlg 类。此类定义应用程序的主对话框的行为。对话框模板包含在 BulkTranferMFC.rc 中,该文件可以在 Microsoft Visual C++ 中编辑。 ///////////////////////////////////////////////////////////////////////////// 其他功能: ActiveX 控件 该应用程序包含对使用 ActiveX 控件的支持。 ///////////////////////////////////////////////////////////////////////////// 其他标准文件: StdAfx.h, StdAfx.cpp 这些文件用于生成名为 BulkTranferMFC.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 Resource.h 这是标准头文件,可用于定义新的资源 ID。Microsoft Visual C++ 将读取并更新此文件。 BulkTranferMFC.manifest Windows XP 使用应用程序清单文件来描述特定版本的并行程序集的应用程序依赖项。加载程序使用这些信息来从程序集缓存中加载相应的程序集,并保护其不被应用程序访问。应用程序清单可能会包含在内,以作为与应用程序可执行文件安装在同一文件夹中的外部 .manifest 文件进行重新分发,它还可能以资源的形式包含在可执行文件中。 ///////////////////////////////////////////////////////////////////////////// 其他注释: 应用程序向导使用“TODO:”来指示应添加或自定义的源代码部分。 如果应用程序使用共享 DLL 中的 MFC,您将需要重新分发 MFC DLL。如果应用程序所使用的语言与操作系统的区域设置不同,则还需要重新分发相应的本地化资源 mfc110XXX.DLL。 有关上述话题的更多信息,请参见 MSDN 文档中有关重新分发 Visual C++ 应用程序的部分。 /////////////////////////////////////////////////////////////////////////////
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值