新闻中心

EEPW首页>嵌入式系统>设计应用> USB协议架构及驱动架构

USB协议架构及驱动架构

作者: 时间:2016-12-15 来源:网络 收藏

1. USB协议

1.1 USB主机系统

在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。

本文引用地址://m.amcfsurvey.com/article/201612/330442.htm

1.2 USB设备系统

USB设备按功能分为两部分:集线器(Hub)和功能部件。从下图可知,主机通过根集线器连接到各种外围设备(集线器和功能部件)。

1.3 主机和设备之间通信模型

主机与设备之间的通信模型


上图展示了USB主机和USB设备之间的数据传输过程。在设备端,USB设备将非USB格式的数据进行打包处理,转换成USB格式的数据包,然后传递到链路层,经过硬件处理、传递到物理层,由物理层通过PHY以数据流的形式传输到主机。

USB主机在USB设备和USB主机之间发起的传输过程,稳为事务。每次事务以2到3个数据包的形式进行USB总线传输。每个数据包包含2到3个步骤:
1) USB主机控制器向USB设备发出命令
2) USB控制器和USB设备之间传递读写请求,其方向取决于第一部分的命令是读还是写
3) 握手信号。
USB主机控制器向USB设备发送事务类型请求,通过分组标识符来进行识别。

1.4 USB分组标识

主机和设备之间进行操作,通过分组标识(PID)来进行传输。数据包传输格式一般由:PID、数据/控制信息、CRC校验码组成。
常见的PID主要包括令牌、数据、握手等类型组成。PID码以特定的方式组成,如下表所示:

PID分组码是数据传输流程中的重要元素。无论硬件还是软件,都要对PID分组码进行分析,从而做出正确响应。USB主机和设备严格按照PID分组码信息进行信息交互。

1.5 数据包传输模式

当USB设备连接到集线器,集线器状态将发生相应的变化,并将状态变化信息传递给USB主机。USB主机通过根集线器向USB设备发送命令,获取USB设备的各种信息,包含USB设备传输类型、ID号、Product、USB速度等信息。
USB主机和USB设备之间的数据传输共有四种类型:控制传输、批量传输、中断传输和同频传输。与之对应,USB主机和USB设备之间有四种事务:控制事务、批量事务、中断事务和同步事务。


1.5.1 批量(Bulk)传输


作用:主要用于非实时性传输,数据包较大而延时要求较低。
特点:数据传输准备即可,采用批量传输模式的USB从机设备,如U盘
数据传输分三个阶段:
a)令牌阶段:主机发送请求,USB设备依据请求PID来判断IN或OUT传输
b)数据传输阶段:依据令牌阶段的IN或OUT传输,来决定数据传输为DATA0或DATA1来进行数据传输
c)握手阶段:接收信息的一方发送ACK信号以表示接收成功;若为NAK,表示发送失败;STALL表示不可预知的错误

1.5.2 控制(Control)传输


作用:USB传输过程必须支持的传输模式。USB主机为了获取设备描述符、ID、Product等信息,向USB设备发送相应的PID命令。
特点:唯一可以进行IN/OUT传输的传输模式。
数据宽度:控制传输方式可以以8、16、32或64字节的数据进行传输,这取决于设备的传输速度。
USB主机和设备之间必须支持控制传输,通过端点0进行数据传输。控制传输分为令牌、数据传输和握手阶段。

1.5.3 中断传输事务


作用:按照一定时刻轮询设备是否有中断传输请求
特点:查询频率取决于端点的模式结构,从1到255ms不等
中断传输主要用于实时性要求非常高的从机设备,如键盘操纵杆和Mouse等
传输过程也分为令牌阶段、数据传输和握手阶段

1.6 USB描述符

USB协议中共定义了以下四种描述符:
1) 设备描述符
2) 配置描述符
3) 接口描述符
4) 端点描述符

其关系如下图所示:

1.6.1 设备描述符

每个USB设备都有一个唯一的设备描述符,如下表所示:

1.6.2 配置描述符

每个USB设备都有默认的配置描述符,支持至少一个接口,每个配置描述符如下表:

1.6.3 接口描述符

设备应至少支持一个接口,如:块传输数据接口,部分设备可能支持其它的接口。复合设备可以支持额外接口,以支持音频和视频功能。标准中并没有定义此类接口。接口可能有多个可选设置,主机将会检查每个可选的设置。


1.6.4 端点描述符

每个设备至少支持控制端点0。USB设备应该支持三类端点:控制端点、输入端点和输出端点。

2. OTG协议

OTG设备采用Mini-AB插座,相对于传统的USB数据线,Mini-AB接口多了一根数据线ID,ID线是否接入将Mini-AB接口分为Mini-A和Mini-B接口两种类型。在OTG设备之间数据连接的过程中,通过OTG数据线Mini-A和Mini-B接口来确定OTG设备的主从:接入Mini-A接口的设备默认为A设备(主机设备);接入Mini-B接口的设备,默认为B设备(从设备)。

A设备和B设备无需交换电缆接口,即可通过主机交换协议(HNP)实现A、B设备之间的角色互换。同时,为了节省电源,OTG允许总线空闲时A设备判断电源。此时,若B设备希望使用总线,可以通过会话请求协议(SRP)请求A设备提供电源。

2.1 HNP(主机交换)协议

当Mini-A接口接入A设备并确定A设备为主机时;若B设备希望成为主机,则A设备向B设备发送SetFeature命令,允许B设备进行主机交换。B设备检测到总线挂起5ms后,即挂起D+并启动HNP,使总线处于SE0状态。此时A设备检测到总线处于SE0状态,即认为B设备发起主机交换,A设备进行响应。待B设备发现D+线为高电平而D-线为低电平(J状态),表示A设备识别了B设备的HNP请求。B设备开始总线复位并具有总线控制权,主机交换协议完成。

2.2 SRP(会话请求)协议

对于主机,要求能响应会话请求;对于设备,仅要求能够发起SRP协议。OTG设备,不仅要求发起SRP,而且还能响应SRP请求。
SRP分为数据线脉冲调制和电压脉冲调两种方式,B设备发起SRP必须满足以下两个条件:
1) B设备检测到A设备低于其有效的电压阈值,同时B设备低于有效的电压阈值。
2) B设备必须检测到D+和D-数据线至少在2ms的时间内低于有效阈值,即处于SE0状态。

数据线脉冲调制会话请求:B设备必须等到满足以上两个条件后,将数据线接入上拉电阻一定的时间,以备A设备过滤数据线上的瞬间电压。与此同时,B设备上拉D+以便于在全速模式下进行初始化操作。A设备在检测到D+变为高电平或D-变为低电平时产生SRP指示信号。

Vbus脉冲调制会话请求:B设备同样需等待满足上述两个初始化条件,然后B设备通过对电容充电以提高总线电压,待达到总线上的电压阈值,唤醒A设备。在充电过程中,一定要保证充电的电压峰值在一定的范围以避免烧坏A设备。

3. USB驱动架构

USB驱动架构如下图所示:

3.1 USB主机端驱动

USB核心(USBD)是整个USB驱动的核心部分,从上图可知,一方面USBD对接收到USB主机控制器的数据进行处理,并传递给上层的设备端驱动软件;同时也接收来自上层的非USB格式数据流,进行相应的数据处理后传递给USB主机控制器驱动。


上一页 1 2 下一页

评论


技术专区

关闭