USB学习笔记

1 篇文章 0 订阅
USB学习笔记
1   USB协议
1.1   概述
480Mbps(高速)  12Mbps(全速)  1.5Mbps(低速)
1.2   协议
PID(packet identifier)

Token   IN
        OUT
        SOF
        SETUP


Data    DATA0
        DATA1
        DATA2
        MDATA


Handshake    ACK
             NAK
             NYET
             STALL


Special    PING
           ...
           	

包格式(packet format),有四种数据包格式:
(1) Token packet format


                 8          7          4           5
PID:包类型,8bit。IN、OUT、SETUP、PING
ADDR:USB设备地址,7bit
ENDP:endpoint编号,4bit
CRC:校验码,5bit

(2) SOF packet format


                 8             11             5
PID:包类型,8bit。SOF
FrameNumber:帧号,11bit
CRC:校验码,16bit

(3) Data packet format


                 8       0 ~ 8192       16
PID:包类型,8bit。DATA0、DATA1、DATA2、MDATA
DATA:数据,0~8192 bit
CRC:校验码,16bit

(4) Handshake packet format


                 8
PID:包类型,8bit。ACK、NAK、STALL、NYET


各字段位域表示
1 PID位域
lsb                                                msb
PID0  PID1  PID2  PID3  PID0  PID0  PID1  PID2  PID3
可以看出,PID自带校验(因此,CRC的计算对象都不包含PID)

2 ADDR位域
lsb                                              msb
ADDR0  ADDR1  ADDR2  ADDR3  ADDR4  ADDR5  ADDR6


3 ENDP位域
lsb                      msb
ENDP0  ENDP1  ENDP2  ENDP3


4 DATA位域
lsb                          msb
D7    D0  D1  D2  D3  D4  D5  D6  D7     D0
Byte N          Byte N+1                  Byte N+2




1.3   传输类型(Transfer Type)
1. 控制传输(Control Transfer),适用于USB连接时枚举设备
2. 批量传输(Bulk Transfer),适用于大容量数据传输,不允许有数据错误,有ACK。U盘
3. 中断传输(Interrupt Transfer),适用于延时要求小,数据量小的数据传输。鼠标、游戏柄等设备
4. 同步传输(Isochronous Transfer),适用于音视频数据传输,实时性要求高,允许有错包,无ACK。摄像头

一次传输(Transfer)由一到多次的事务(transactions)组成。
1.4   事务(transactions)
	事务由令牌(Token)、数据(Data)、握手(Handshake)包组成。
一次事务包括1个Token Packet、1个Data Packet、1个Handshake Packet,有的事务不含Data Packet,只有1个Token Packet和1个Handshake Packet。
1.4.1   Bulk Transactions
一次批量事务,由1个IN/OUT/PING packet、1个DATA0/DATA1 packet、1个ACK/NAK/STALL/NYET packet组成。

Bulk Transaction
PING包机制
在全速/低速USB体系中,当发送OUT包时,若Device回复NAK,Host将等待一段时间再次发送OUT包,在此时间内host是被独占的。这样USB总线的带宽利用率很低。因此,在高速USB体系中,引入了PING机制。

每次OUT事务之前,Host向Device发送一个PING包,询问Device是否准备好足够的空间接收接下来的数据,Device有3种回复,ACK,表示ready;NAK,表示Device还没有足够空间;STALL,表示Device故障。如果host收到NAK,host将处理其他事物,过特定时间之后再次发送PING包。这样就提高了USB总线带宽的利用率。

1.4.2   Control Transfer
控制传输分为Setup Stage、Data Stage、Status Stage三部分。
1.1 Setup Stage
Setup Stage由1个Setup Packet、1个DATA0 Packet、1个ACK packet组成

Setup Transaciton
Setup Stage的DATA数据类型为DATA0
1.2 Data Stage
Data Stage的数据传输方向是固定的,要么是IN,要么是OUT。数据方向(IN or OUT)和大小,是在Setup Stage中指定的。
Data Stage的IN或OUT数据传输与bulk transaction中的IN或OUT数据传输机制是一致的,Data Stage的DATA数据类型是由DATA0、DATA1交替组成。
1.3 STATUS stage
Status Stage是控制传输的最后一个传输事务。它是一个DATA1传输事务,其方向与Data Stage的方向相反。如果没有DATA stage,它是一个IN方向的DATA1传输事务。










Control Transfer
1.4.3   Iterruput Transaction
中断事务和批量事务(Bulk Transaction)类似,不过它不包含PING packet。

Interrupt Transaciton
1.4.4   Isochronous Transaction
一次同步事务,由1个IN/OUT packet和1个DATA packet组成,没有Handshake packet。它的实时性要求最高,数据的正确性要求不高,因此没有握手回应包。

Isochronous Transaction

1.5   USB数据传输
一次USB传输(Transfer)由一到多次USB事务(Transaction)组成,一次USB事务(Transaction)由2个或3个Packet组成,Packet是USB传输的最小单位。

传输过程中,Packet中不允许被打断,一次事务(Transaction)也不允许被打断。(一次事务中的DATA、Handshake包中都没有ADDR和ENDP位域,若被打断,包由哪个USB设备接收?)

一次USB事务(Transaction)必须在帧内传输,不允许跨镇。一次USB传输(Transfer)可以在多个帧内完成



1.6   设备(Device)
1. 设备状态(Device State)
Detach、Attach、Suspend
2. USB枚举(USB enum)
控制传输、0端点、双向传输,具体过程:
Host获取设备描述符,Get Descriptor
Hos设置地址,Set Address
Host重新获取设备描述符,Get Descriptor
Host获取设备配置信息,Get Configuration
3. 标准请求

4. 类请求

5. 厂商请求


2   组合设备驱动实现简要说明
2.1   USB组合设备概述
USB组合设备(USB Composite Device),通过将不同的Interface定义为不同的类来实现多个功能的组合。
2.2   USB组合设备的枚举
USB组合设备与单一设备,在枚举时的主要区别体现在“设备描述符(Device Descriptor)”和“配置描述符(Configuration Descriptor)”。
2.2.1   设备描述符(Device Descriptor)

USB单一和组合设备的“设备描述符”
USB规范定义,Class Code值为0时,表示配置描述符(Configuration Descriptor)中的每个接口(Interface)指定了它自己的类别(Class),不同接口(Interface)在功能上都是独立的(即组合设备)。规范规定,Class Code为0时,SubClass Code亦为0.。
2.2.2   配置描述符(Configuration Descriptor)
在配置描述符(Configuration Descriptor)中,指定了本配置描述符提供了几个接口(Interface),即此 USB设备可被枚举成多少个功能设备。
枚举的时候,配置描述符(Configuration Descriptor)后面紧跟的是接口(Interface Descriptor)描述符及其端点(Endpoint Descriptor)描述符。如下图所示:

配置描述符数据示意图
下图是一个可实现两个功能(USB网卡和USB串口)的USB组合设备的配置描述符数据示意图:

USB组合设备的配置描述符
2.3   USB组合设备的驱动程序
对比USB组合设备和单一设备的驱动程序,区别主要体现在设备信息文件(INF)中的device-id字段,如下图所示:

USB单、组合设备的INF文件主要区别
USB设备插入PC,枚举,获取设备、配置、字符串等描述符之后,开始为各Interface选择相应的驱动进行安装。例如:
对于1st Interface,在用户指定目录下,搜索包含USB\Vid_xxxx&Pid_yyyy&MI_00的INF文件,找到之后,再安装该INF文件中指定的驱动文件(后缀名为sys的文件)。以此类推,继续搜索其他Interface对应的INF文件并安装相应的驱动文件。
3   附录
3.1   Universal Serial Bus Specifications

3.2   INF文件编写

3.3   常用设备类型及其UID

3.4   USB设备驱动安装步骤及相关注册表







  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值