USB基础简介
一、USB2.0
1、意义
1.易用(热插拔、即插即用)
2.易扩充(USBHub可同时操作127个设备、兼容USB1.1)
3.高速(相对)
2、分类(按传输速率)
1.USB2.0 LowSpeed(1.5Mbps,适用于交互设备)
2.USB2.0 FullSpeed(12Mbps,适用于电话、音频)
3.USB2.0 HighSpeed(480Mbps,适用于海量存储、视频)
备注:USB2.0
是取代
USB1.1
的,而
USB3.0
是
USB2.0
的补充协议
四、USB系统逻辑结构
b.如果Hub支持2.0规范,则将上电设备的状态置为SE0
c.如果设备是高速设备则会往D-线反向灌17.78mA的电流,在D-上形成一个800mV的电平(设备此时整体阻抗约45欧姆),称为Chirp K信号
d.Hub如果支持高速设备,则通过交替向D+和D-线灌17.78mA电流的方式,形成3对维持60us左右的ChirpJ与Chirp K信号对,表明自己支持高速设备
e.此时设备与Hub交换速率信息过程完毕。如果满足设备与Hub都是高速的条件,设备将在500us之内通过调节自身阻抗使系统整体阻抗降低到22.5欧姆
f.设备恢复到J状态,此时由于整体阻抗的变化,D+信号线上的电平已经变成了400mV,系统进入高速通信状态
六 、USB2.0传输协议
注:此后提到“包”这个概念的时候,将不再包括SYNC和EOP
类型 |
子类型 |
PID值 |
描述 |
Token |
OUT |
0001 |
Out事务开始 |
IN |
1001 |
In事务开始 |
|
SOF |
0101 |
帧事务开始 |
|
SETUP |
1101 |
建立事务开始 |
|
Data |
DATA0 |
0011 |
偶同步位数据包 |
DATA1 |
1011 |
奇同步位数据包(两者总是交错的) |
|
DATA2* |
0111 |
用于高速设备微帧同步传输的数据包,MDATA为切分后的数据包 |
|
MDATA* |
1111 |
||
Handshake |
ACK |
0010 |
确认包 |
NAK |
1010 |
不确认,不能发送或不能接收 |
|
STALL |
1110 |
端点挂起,或一个请求不被支持 |
|
NYET* |
0110 |
设备接收无响应(实际已确认) |
|
Special |
PRE |
1100 |
仅用于低速,启动低速设备数据传输 |
ERR* |
1100 |
以高速总线传送全速或低速事务时切分事务出错的握手 |
|
SPLIT* |
1000 |
以高速总线传送全速或低速事务时切分事务 |
|
PING* |
0100 |
主机询问设备是否有空间接收数据 |
4、包格式
注:此讲义在此后将忽略PING事务,在高速USB传输中,OUT事务前一搬都会有不间断的PING事务,直到PING事务以ACK握手,OUT事务才产生
14、中断传输
偏移 |
字段 |
长度 |
值类型 |
作用 |
0 |
bmRequestType |
1 |
位图 |
请求特征(方向、种类、对象) |
1 |
bRequest |
1 |
值 |
具体请求 |
2 |
wValue |
2 |
值 |
值型参数 |
4 |
wIndex |
2 |
索引 |
索引或偏移型参数 |
6 |
wLength |
2 |
值 |
数据阶段长度 |
功能 |
bmRequestType |
bRequest |
wValue |
wIndex |
wLength |
数据要求 |
分配地址 |
00H |
05H |
地址 |
0 |
0 |
无 |
获取设备描述符 |
80H |
06H |
01H |
0 |
描述符长度 |
IN,设备描述符 |
获取配置描述符 |
80H |
06H |
02H |
0 |
描述符长度 |
IN,配置描述符+接口描述符+端点描述符(可选) |
获取字符串描述符 |
80H |
06H |
03H |
指定的字符串索引 |
字符串描述符长度 |
IN,指定的字符串描述符 |
配置设备 |
00H |
09H |
配置值 |
0 |
0 |
无 |
设置设备特性 |
00H |
03H |
特性值 |
0 |
0 |
无 |
设置接口特性 |
01H |
03H |
特性值 |
接口号 |
0 |
无 |
设置端点特性 |
02H |
03H |
特性值 |
端点号 |
0 |
无 |
偏移 |
字段 |
长度 |
类型 |
描述 |
0 |
bLengh |
1 |
常量 |
描述符自身的长度(12H) |
1 |
bDescriptorType |
1 |
常量 |
描述符类型(01H) |
2 |
bcdUSB |
2 |
BCD码 |
USB版本号(USB2.0取{00H,02H}) |
4 |
bDeviceClass |
1 |
值 |
00H:接口指定 01H~FEH:标准定义的设备类型 FFH:厂商自定义设备类型 |
5 |
bDeviceSubClass |
1 |
值 |
若设备类型为0,则此字段必须为0 |
6 |
bDevicePortocol |
1 |
值 |
00H:接口指定 01H~FEH:标准定义的协议 FFH:厂商自定义协议 |
7 |
bMaxPacketSize0 |
1 |
值 |
缺省通道最大包长,即端点0最大包长(8、16、32、64) |
8 |
idVendor |
2 |
BCD码 |
VID(合法VID值必须由USB-IF授权) |
10 |
idProduct |
2 |
BCD码 |
PID(厂商自订) |
12 |
bcdDevice |
2 |
BCD码 |
设备发型号 |
14 |
iManufacturer |
1 |
索引 |
描述厂商信息的字符串描述符索引 |
15 |
iProduct |
1 |
索引 |
描述产品信息的字符串描述符索引 |
16 |
iSerialNumber |
1 |
索引 |
产品序列号字符串描述符索引 |
17 |
bNumConfigurations |
1 |
值 |
可能拥有的配置描述符数量 |
偏移 |
字段 |
长度 |
类型 |
描述 |
0 |
bLengh |
1 |
常量 |
描述符自身的长度(09H) |
1 |
bDescriptorType |
1 |
常量 |
描述符类型(02H) |
2 |
wTotalLength |
2 |
值 |
配置信息总长度(包括配置、接口、端点、类描述符) |
4 |
bNumberInterface |
1 |
值 |
此配置支持的接口个数 |
5 |
bConfigurationValue |
1 |
值 |
与设备配置请求中选定该配置的值相同 |
6 |
iConfiguration |
1 |
索引 |
描述该配置的字符串描述符索引 |
7 |
bmAttributes |
1 |
位图 |
配置特性: 可配置在此配置下的设备是否为自供电;是否可远程唤醒主机 |
8 |
MaxPower |
1 |
值 |
该值乘以2的结果为在此配置下设备的耗电量。 |
23、接口描述符
偏移 |
字段 |
长度 |
类型 |
描述 |
0 |
bLengh |
1 |
常量 |
描述符自身的长度(09H) |
1 |
bDescriptorType |
1 |
常量 |
描述符类型(04H) |
2 |
iInterfaceNumber |
1 |
索引 |
该接口在该配置中的索引(该配置中的第一个接口该值为0,该配置中的第二个接口该值为1…) |
3 |
iAlternateSetting |
1 |
索引 |
当前接口所使用的设置索引(当前接口若使用第一种设置该值为0;第二种设置该值为1…) |
4 |
bNumberEndpoints |
1 |
值 |
该接口所使用的非零端点数量 |
5 |
bInterfaceClass |
1 |
值 |
该接口的类型 0:保留 1~254:USB定义的接口类型(8:MassStrorage、3:HID) 255:厂商自定义 |
6 |
bInterfaceSubClass |
1 |
值 |
子类型 该值在不同的bInterfaceClass中有不同定义(6:SCSI、4:UFI) |
7 |
bInterfaceProtocol |
1 |
值 |
协议类型,该值在不同的bInterfaceClass中有不同定义(50H:Bulk Only、0:CBI) |
8 |
iInterface |
1 |
索引 |
描述此接口的字符串描述符索引值 |
偏移 |
字段 |
长度 |
类型 |
描述 |
0 |
bLengh |
1 |
常量 |
描述符自身的长度(07H) |
1 |
bDescriptorType |
1 |
常量 |
描述符类型(05H) |
2 |
bmEndpointAddr |
1 |
位图 |
Bit3~0:端点号(0~15) Bit6~4:保留(0) Bit7:方向(控制传输类型的端点此处忽略) Out:0 In:1 |
3 |
bmAttributes |
1 |
位图 |
Bit0、1表示传输类型: 00=控制传输 01=同步传输 10=批量传输 11=中断传输 其他位全保留 |
4 |
wMaxPacketSize |
2 |
值 |
对于中断、控制、批量传输,该字段表述该端点下传输的最大数据包的大小; 对于同步传输该字段为每次传输的数据净负荷预留时间 |
6 |
bInterval |
1 |
值 |
中断、同步传输:两次请求包的帧数间隔,同步必须为1,中断可取1~255 控制、批量传输:忽略 |
25、字符串描述符
偏移 |
字段 |
长度 |
类型 |
描述 |
0 |
bLengh |
1 |
值 |
描述符自身的长度(2x + 2, x为支持的语言数) |
1 |
bDescriptorType |
1 |
常量 |
描述符类型(03H) |
2 |
wLANGID[0] |
2 |
值 |
语言ID |
4 |
wLANGID[1] |
2 |
值 |
语言ID |
6 |
… |
… |
… |
… |
2x+ 2 |
wLANGID[x] |
2 |
值 |
语言ID |
USB基础简介的更多相关文章
- 现代3D图形编程学习-基础简介(2) (译)
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...
- 现代3D图形编程学习-基础简介(1) (译)
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...
- USB基础知识概论(版本:v0.9.2)
源: USB基础知识概论
- 1.CSS基础简介
一.基础简介 1.简介 CSS(Cascading Style Sheet)可译为“层叠样式表”或“级联样式表”,它定义如何显示 HTML 元素,用于控制Web页面的外观.通过使用CSS实现页面的内容 ...
- 1.bootstrap基础简介
一·基础简介 1.Bootstrap,来自 Twitter,是一个用于快速开发 Web 应用程序和网站的前端框架,是目前最受欢迎的前端框架. Bootstrap 是基于 HTML.CSS.JavaSc ...
- (转)USB协议简介
USB协议简介 USB是一种协议总线,即主机与设备之间的通信需要遵循一系列约定.协议内容较多,这里仅作一些简单介绍,深入学习,可参看USB规范(WWW.usb.org). 为了理解协议 ...
- Android MediaPlayer 基础简介
本文链接: Android MediaPlayer 基础简介 简单介绍MediaPlayer的基本概念,状态,常用的方法与监听器. 什么是MediaPlayer MediaPlayer类可以用来播放音 ...
- USB2.0学习笔记连载(二):USB基础知识简介
USB接口分为USB A型.USB B型.USBmini型.USBmicro型.USB3.0其中每种都有相应的插座和插头. 图1 图2 上图是USBA型接口,图1为插座,图2为插头.插座指向下行方向, ...
- 【Python】函数基础简介
一.函数 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括号( ...
随机推荐
- poj 1204
http://poj.org/problem?id=1204 大意:给出一个棋盘puzzle,,和w个模式串,,在棋盘中寻找模式串..棋盘中任意一格有8个方向可以走.. 解题思路: AC自动机 + 枚 ...
- 在windows下的QT编程中的_TCHAR与QString之间的转换
由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef ...
- Niagara技术文档汇总
Niagara技术文档汇总http://wenku.baidu.com/view/ccdd4e2c3169a4517723a38f.html Niagara讲解要点http://wenku.baidu ...
- Poj 1002 487-3279(二叉搜索树)
题目链接:http://poj.org/problem?id=1002 思路分析:先对输入字符进行处理,转换为标准形式:插入标准形式的电话号码到查找树中,若有相同号码计数器增加1,再中序遍历查找树. ...
- 一次搞定cocos2d-x的 Android.mk 文件
cocos2d-x 打 android 包时要修改 Android.mk 文件,但每次修改很麻烦,如果源文件很多的话就坑死了,也可以写一个脚本来自动生成这个文件,但每次还要重新生成一下,将其修改下面的 ...
- CSS3中的border-radius
以前在CSS2的基础上做圆角还能算得上是门学问!!各种图片.各种嵌套(<精通CSS——高级web标准解决方案>中有介绍,过程在这就不说了,网上一查就查得到,总之就是:没用CSS3之前觉得很 ...
- 移动端rem,scale动态设置
pt:物理像素(电容屏上像素块个数) px:逻辑像素.设备独立像素 高清屏:1px = 4pt 普通屏:1px = 1pt dpr:设备像素比:(某一方向上)物理像素/逻辑像素 通常设置1rem=屏幕 ...
- BZOJ 3544: [ONTAK2010]Creative Accounting( BST )
题意 : 一段序列 , 求一段子序列和取余 M 的最大值 其实是一道水题... 前缀和 , 然后就是找 ( sum( r ) - sum( l ) ) % M 的最大值 . 考虑一个 sum( r ) ...
- linux 下搭建 ftp
最近为了方便目标板与PC机上LINUX之间的通讯,就在LINUX搭建了FTP,工作不难,写个总结.主要经过以下几个步骤: 1.检查是否安装了vsftpd服务器 可以用rpm -q vsftpd命令来查 ...
- oracle_SQL中ROWID与ROWNUM的使用(转)
转自:http://www.360doc.com/content/12/0802/11/219024_227802569.shtml rownum: ROWNUM是对结果集加的一个伪列, 即先查到结果 ...