usb基础知识
帧: 是一个时间概念,在USB中,一帧就是1MS,包含了一系列总线动作。USB
将一帧分为好几份,每份就是USB的一个传输动作。
上行:设备到主机为上行,主机到设备为下行。
2、数据在USB中的发送是由低位到高位发送的。
3、USB的数据格式:
数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。
域:
名称 | 值 | 意义 |
同步域(SYNC) | 固定为0000 0001 | 用于同步 |
标识域(PID) | 四位标识符+四位标识符反码 | 表明包的类型和格式,共16种 |
地址域(ADDR) | 7位地址 | 设备在主机上的地址(注1) |
端点域(ENDP) | 4位 | |
帧号域(FRAM) | 11位 | 每个帧都有其编号,最大为0x800 |
数据域(DATA) | ||
校验域(CRC) |
注:1、地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此可以知道为什么一个USB主机只能接127个设备的原因。
2、端点域有4位,所以一个设备最多有16个端点。
包:
令牌包 | SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)(输入、输出、设置) SYNC+PID+11位FRAM+CRC5(五位的校验码)(帧起始包) |
数据包 | SYNC+PID+0~1023字节+CRC16 |
握手包 | SYNC+PID |
特殊包 |
事务:
IN:令牌包、数据包、握手包
OUT:令牌包、数据包、握手包
SETUP:令牌包、数据包、握手包 这8个字节的内容就是标准的USB设备请求命令(共有11条
传输:
传输由IN、OUT、SETUP中的事务构成,有中断传输、批量传输、控制传输、
同步传输、控制传输,其中中断传输和批量转输的结构一样,同步传输有最简单的结构,而控制传输是最重要的也是最复杂的传输。
1、 中断传输:由OUT事务和IN事务构成,用于键盘、鼠标等HID设备的数据传输中
2、 批量传输:由OUT事务和IN事务构成,用于大容量数据传输,没有固定的传输速率,也不占用带宽,当总线忙时,USB会优先进行其他类型的数据传输,而暂时停止批量转输。
3、 同步传输:由OUT事务和IN事务构成,有两个特殊地方,第一,在同步传输的IN和OUT事务中是没有返回包阶段的;第二,在数据包阶段所有的数据包都为DATA0
4、 控制传输:最重要的也是最复杂的传输,控制传输由三个阶段构成(初始设置阶段、可选数据阶段、状态信息步骤),每一个阶段可以看成一个的传输,也就是说控制传输其实是由三个传输构成的,用来于USB设备初次加接到主机之后,主机通过控制传输来交换信息,设备地址和读取设备的描述符,使得主机识别设备,并安装相应的驱动程序,这是每一个USB开发者都要关心的问题
令牌包:
0x01输出(OUT)启动一个方向为主机到设备的传输,并包含了设备地址和标号
0x09输入(IN)启动一个方向为设备到主机的传输,并包含了设备地址和标号
0x05帧起始(SOF)表示一个帧的开始,并且包含了相应的帧号
0x0d设置(SETUP)启动一个控制传输,用于主机对设备的初始化
数据包:
0x03偶数据包(DATA0),
0x0b奇数据包(DATA1)
握手包:
0x02确认接收到无误的数据包(ACK)
0x0a无效,接收(发送)端正在忙而无法接收(发送)信息
0x0e错误,端点被禁止或不支持控制管道请求
特殊包0x0C前导,用于启动下行端口的低速设备的数据传输
usb基础知 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)