USB基本结构与特性
第二章 USB基本结构与特性
?2.1 引言
本章主要是对USB的基本结构和特性作初步的介绍,是否了解这些知识对于USB应用与
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
至关重要,只有清楚地理解这些概念才能进行更好的设计。 ?2.2 USB1.1协议总览
USB是一种电缆总线,支持在主机和各式各样的即插即用的外设之间进行数据传输。USB1.1是一个传输率可达12Mb/s的串行接口,并由不同类型的外设一起分享这个串行总线接口,而且一个USB主机可以对应于高达127个外设。其中,USB主机是整个总线上的主控者,负责对各个外设发出各种命令。USB是以令牌包为基础的通信协议,当主机在总线上发布一种令牌包,此时一定会有一个符合其地址的设备根据这个令牌包做出相应的操作。此外,12Mb/s的总线带宽将被分割,所有位于总线上的设备会以一定的时间间隔来分享它。USB仅含有四条线,两条是电源线(Vcc与GND),两条是以差分方式产生的信号线(D+与D-)。 ?2.3 USB系统模型
USB系统以USB主机为核心,以外围的USB设备为功能,组成了系统模型。即,USB提供的是主机和设备中间的一种数据通信服务。主机是USB的核心,每一次USB数据通信都必须是由主机来发起的,主机管理着每个USB设备。见图2-1,图中的Hub是一类特殊的USB设备,它是一组USB的连接点,主机中有一个被嵌入的Hub叫根Hub(root Hub)。根Hub提供若干个连接点。
图2-1 USB系统模型
?2.4 USB主机
图2-2 USB主机结构
[7,8]图2-2
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示了一个比较完整的USB主机组成部分:
1(USB主控制器/根Hub
USB主控制器芯片提供USB的收发物理层,实现USB电缆上差模信号与数字信号的转换并提供端点的物理存储机制,还能根据USB的传输机制自动管理各个端点的存储与数据交换。此外,USB主控制器还需提供与外围控制CPU的接口电路,通过并行或串行的方式连接到CPU的总线上,从而建立与CPU的通信。而根Hub是USB的第一级Hub,提供USB的物理接口,供外围设备连接使用。
2(USB系统软件
USB系统软件主要由USB核心驱动程序和USB主控制器驱动程序组成。USB核心驱动程序是整个软件体系的核心部分,用来解释USB设备类驱动程序发送来的命令并将其划分为一系列的USB事务,然后发送给USB主控制器驱动程序。USB主控制器驱动程序负责最底层的驱动任务,控制和管理硬件底层,并负责将USB事务发送给USB主控制器芯片,最终将串行数据发送到电缆上。
3(用户软件和USB设备类驱动程序
USB设备类驱动程序,它把用户要求的USB命令发送给USB的主控制器硬件,同时初始化内存缓冲区,存储所有USB通信中的数据。而用户软件主要是指用户与USB系统之间的一种界面,主要完成用户对于USB的控制,以及实时地进行一些数据的交互。
?2.5 USB设备
图2-3 USB设备结构
[9]见图2-3,与USB主机相对应,USB设备也同样分为3个层次:
1(设备接口
设备接口是最底层的物理实体,以USB接口控制器作为核心,是USB发送和接收数据的接口。它通过电缆直接与USB主机交换串行数据,并能够实现串行数据到并行数据的转换。
2(USB逻辑设备
处于中间层次的USB逻辑设备,是USB协议栈的主体,处理总线接口和不同端点之间的数据,实现USB的各种基本行为。
以上的2个部分是所有USB设备所共同的部分。
3(功能单元
USB设备各自的特点是通过第3层次功能单元来提供的,它实现特定USB设备的类协议。
?2.6 USB数据通信
图2-4 域、包、事务和传输关系图
由图2-4可知,USB数据传输都是由很多个事务来完成,而每一笔事务又是由底层包组成。按照包在传输中的作用不同,包可以分为4类:令牌包、数据包、
[10]。要了解USB数据传输就握手包和特殊包。包又分解成更小的单元,即“域”
需要从数据域来谈起。
一、数据域的
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
域是USB中对一系列有统一意义的二进制数的称呼。域可分为以下7种类型。USB的传输顺序是由LSB(最低位)到MSB(最高位)逐位传输的。
1.同步(SYNC)域
SYNC域的长度的定义为8bit,是一个数据分组的前导,是用来产生同步的作用,所以它的数值是固定的,为00000001。
2.标识(PID)域
一个PID包括一个4bit的包类型域和一个4bit的校验域(由4bit包类型域的反码组成)。PID紧跟在SYNC后面,用来指出数据包的类型,并且可以据此推断出包格式和包所应用的检错方式。
USB主机和设备都要首先对接收到的PID域进行解码。如果任意一个接收到的PID的检验域出现错误或者其解码后为一个未定义的值,就认为其受到了破坏。那么该PID及包的其余部分都将被包接收器忽略。PID可以分成四个包:令牌包、数据包、握手包和特殊包,其中所传输的前两个比特用于指示包类型。
3.地址(ADDR)域
功能设备ADDR通过其地址在主机的唯一性。ADDR由7bit组成,最多可寻址127个外设。
4.端点(ENDP)域
一个附加的4bit端点域允许对那些需要不止一个子信道的功能模块进行更灵活地寻址。所有的功能设备必须支持一个控制端点0。低速率设备中每个功能模块最多可以支持两个端点地址;全速率功能模块最多可支持16个端点。很多USB接口芯片本身已经确定了端点的是数量和属性,用户只能按照即定的端点进行编程。
5.帧标号(FrameNumber)域
帧标号域占11bit,每过一帧主机都要对其加1,当达到最大值0x7FF后,帧标号域就开始循环,而且只在一帧起始向SOF令牌发送。帧号只能在帧起始包中传递,在同步传输中具有重要的意义。
6.数据(Data)域
数据域的范围可以从0到1023Byte,在不同的传输类型中数据域的长度各不相同。
7.循环冗余检验(CRC)域
CRC用于对令牌包和数据包中所有非PID域进行保护。根据分组类型的不同,CRC有不同数目的位所组成。其中,对于数据包是16bit,而对于令牌包是5bit。 二、包格式
1.令牌包
常用的令牌包的格式如图2-5所示。令牌包可分为:IN、OUT、SETUP及SOF。对于OUT和SETUP处理操作而言,地址域和端点域标识接收后续数据包唯一的端点;对于IN处理操作而言,这些数据域将唯一的标识一个即将发送一个数据包的端点。
图2-5 令牌包的数据格式
帧起始包(SOF)如图2-6,是整个USB总线动作的一个时间划分。主要用于全速率功能设备中,它们都必须对SOF分组进行接收和解码。
图2-6 帧起始包的数据格式
2.数据包
图2-7 数据包的数据格式
数据包如图2-7所示,不同的PID可以区分两种类型的数据包:DATAO和DATA1。CRC数据仅对包中的数据域进行计算。
3.握手包
握手包仅含一个PID。共有三种握手包:确认包ACK,无效包NAK和错误包STALL。
4.特定包
这个特定包拥有独自的PID类型名称PRE,仅用于主机想要从高速传输变成低速传输时所送出来的。
?2.7 USB数据传输类型
USB的传输,是USB面向用户的,最高级的数据结构。针对设备对系统资源需求的不同,USB共有4种数据传输类型:控制传输、中断传输、同步传输和批量传输。
1.控制传输:此方式的数据传输量较小,主要用来做设备配置,获取设备状态及传输一些指令。所有的USB外设都必须具有此种传输方式。从优先级别来说,它的级别高于其它几种方式。
2.中断传输:该方式传送的数据量较小,但这些数据需要及时处理,以达到实时的效果。这种方式主要用于键盘、鼠标、游戏杆等外设。
3.同步传输:该方式用于需要连续传输,而且对数据的正确性要求不高,但对时间极为敏感的外设。同步传输以固定的传输速率连续不断的在主机和USB外设之间传输数据,在传输数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。所以在此方式下数据包结束时没有CRC校验。
4.批量传输:该方式主要用于大量非周期数据的传输,在这种方式下,主控制器会保证数据准确无误的传输,所以每个数据包结束时有CRC校验,但是主机不会保证频宽。此种方式的优先级别最低。
?2.8 USB描述符
USB设备利用描述符来报告其属性。一个描述符是具有一个确定格式的一个数据结构,使用描述符可以对单独的配置的属性进行简洁地存贮。
图2-8
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
USB描述符层次图
如图2-8所示,USB设备有以上这些描述符,这些描述符之间具有一定的关系,设备描述符是最高级的描述符,而端点描述符是最低级的描述符。每一个设备只有一个设备描述符,但设备描述符可以包含多个配置描述符;而一个配置描述符又可包含多个接口描述符;一个接口使用了几个端点,就有几个端点描述符。字符串描述符是可选的。
?2.9 USB设备标准请求命令
控制传输是最重要和结构最复杂的一种传输类型。控制传输的“初始设置步骤”中包含了1个8个Byte的DATA0数据包,这8Byte的数据包是主机用来发送控制阶段中的请求命令,而这些请求命令是主机配置USB设备的关键。 一、 USB的设备请求命令格式
所有的USB设备都是通过“设备的缺省控制通道(Default Control Pipe)”工作在控制传输方式下对主机的请求命令发出响应,请求命令及请求命令的参数通过Setup包发向设备,由主机负责设置Setup包内的每个域的值。见表2-1。
域 偏移量 大小 描述
请求特征: 0 bmRequestType 1
D7:传输方向 0=主机至设备;1=设备至主机
D6,5:种类 0=标准;1=类;2=厂商;3=保留
D4,0:接受者 0=接口;2=端点;3=其他
4,31=保留
具体请求(参见表2-2) 1 bRequest 1
字长域,根据不同的请求含义不同 2 wValue 2
字长域、根据不同的请求含义不同.典型用于传4 wIndex 2
送索引或偏移
如有数据传送阶段,此为数据Byte数 6 wLength 2
表2-1 USB设备请求命令格式
二、USB的标准设备请求命令
这部分描述所有USB设备都定义的标准设备请求命令,见表2-2。不管设备是否被分配了非缺省地址或设备当前是被配置了的,它们都应当对标准请求命令产生响应。
如果某种原因,使设备产生一个错误状态此时不能通过缺省控制通道来与主机通信,设备必须被Reset来清除错误状态,并重启缺省通道。
bmRequestType bRequest wValue wIndex wLength Data
000000001 CLEAR_FEATURE 特性选择0 0 无
OOOOOOO1B 符 接口号
00000010B 端点号
10000000B GET_CONFIGURATION 0 0 1 配置值
10000000B GET_DESCRIPTOR 描述表种0或语言描述表描述表
类和索引 标志 长
10000001B GET_INTERFACE 0 接口号 1 可选设
置
1OOOOOOOB GET_STATUS 0 0 2 设备,接
10000001B 接口号 口或端
10000010B 端点号 点状态
00000000B SET_ADDRESS 设备地址 0 0 无
00000000B SET_CONFIGURATION 配置值 0 0 无
00000000B SET_DESCRIPTOR 描述表种0或语言描述表描述表
类和索引 标志 长
OOOOOOOOB SET_FEATURE 特性选择0 0 无
00000001B 符 接口号
00000010B 端点号
OOO0OOO1B SET_INTERFACE 可选设置 接口号 0 无
10000010B SYNCH_FRAME 0 端点号 2 帧号
表2-2 USB标准设备请求命令
?2.10 USB设备枚举、配置
[11,12,13]所有的USB设备接入USB系统,在使用之前,都要经历枚举配置阶段。 1(动态插接与拔开
USB设备必须在任意时刻允许被插接与拔开。提供连接点或端口的集线器应当负责汇报端口的状态改变情况。当主机探测到连接操作后,会使得所连的集线器端口生效,设备也会因此而复位,一个被复位的USB设备有如下特性;对缺省USB地址发生响应;没有被配置;初始状态不是挂起。当设备从一个集线器端口移去时,集线器会使得原来连接的端口失效,并且通知主机设备己移去。 2(地址分配
当USB设备连接以后,由主机负责给此设备分配一个唯一的地址,这个操作是在设备复位及端口使能操作以后。
3(配置
USB设备在正常被使用以前,必须被配置,由主机负责配置设备。主机一般会从USB设备获取配置信息后再判定此设备有哪些功能。
4(数据传送
数据可能以四种方式在USB设备端结点与主机之间传送。
5(电源管理
USB总线电源是一个有限的资源,在设备枚举(Device Enumeration)阶段,主机估测电源的需求。如果电源的需求超过USB总线所能提供的电量,主机软件则不能选择那个配置。USB设备应将电源需求量限制在一个单元(100mA)以下,直到被配置。中止(挂起)的设备,不管是否已经配置过了,它都会进入节能工作。低电压设备或高电压设备工作低电压下时,它们所允许的挂起电流限制为500uA,如果一个设备被初始设置为高电压并且具有远程唤醒功能,则在挂起期间,它的电流可达到2.5mA。根据设备的连接端口的电源负载能力而定,USB设备在配置了
BUS汲取达5个单元的电量。 以后可从V
6(请求处理
所有的请求只能由主机发出,设备响应此请求,做出适当的处理。 7(请求错误
如果一设备收到一个请求,它或是在设备中无定义,或是不适用于当前设置,或是数值不对,这时就会产生一个请求错误。设备在下一个数据传输阶段或状态交换阶段(Status Stage)返回一个表明错误的STALL PID信号。