USB协议基础知识笔记
usb协议
功能层: 控制传输、中断传输、块传输(批量传输)、同步传输
设备层:管理USB设备、分配地址、读取设备描述符
总线接口层:采用NRZI编码-反向非归零编码(0将前一个电平翻转,1不翻转)
电气特性
电压:4.75~5.25V
电流:USB2.0高输出功率最大500mA、低输出功率最大100mA、 USB3.0最大输出900mA
USB事务
usb事务处理是主机和设备数据通信的基础。由: 令牌阶段、数据阶段、握手阶段组成。
常用字段
同步字段(SYSC): 每个信息包以SYSC开始,低速/全速同步字段长度为8位,数据为10000000B,从低位开始发送。高速同步字段长度为32位,数据为80000000H。
包标志字段(PID):字段长度为8位,低4位类型字段和高4位校验字段组成,校验字段是类型字段的补码,可验证数据的正确性。4种信息包类型: 令牌包、握手包、特殊包和数据包。
包类型 PID[3:0] 二进制 包名 说明 令牌包 1001 OUT PID 数据从主机发送到设备 0001 IN PID 数据从设备发送到主机 0101 SOF PID 作为帧的开始信息 1101 SETUP PID 主机向设备发送的配置信息 握手包 0010 ACK PID 接收方正确接收到数据 1010 NACK PID 接收方未能正确接收到数据 1110 STALL PID 使用的端点被挂起 0110 NYET PID 接收方没有任何响应 数据包 0011 DATA0 PID 数据包为偶数据包 1011 DATA1 PID 数据包为奇数据包 0111 DATA2 PID 高速同步事务专用数据包 1111 MDATA PID SPLIT事务专用数据包 特殊包 1100 PRE PID 令牌,主机发送先导包,使能低速通信 1011 ERR PID 握手信息,SPLIT事务中的错误握手信号 1000 SPLIT PID 高速SPLIT事务的令牌信息 0100 PING PID 数据流量检测控制
地址字段: 长度为7位,共128个地址值。地址0缺省,实际只有127个地址。在USB上电的时候主机先通过缺省地址0和usb设备进行通信,配置完成后,主机重新为设备分配一个地址。
端点字段: 长度为4位,总共可表示16个端点。低速:3个端点, 高速/全速:16个端点。,端点0是所有USB设备必须的,主要在设备上电初期和USB主机进行通信、完成配置。
帧号字段: 长度为11位,最大值07FFH,表示当前帧的帧号,每个帧发送的时候,该字段加1
数据字段: 最大长度1024字节,长度由传输类型和程序的需要决定。首先传输低字节,再传输高字节。
CRC字段: 循环冗余校验字段。一般在发送方进行位填充之前进行。令牌包一般采用5位CRC校验;数据包采用16位CRC校验。
令牌包
IN令牌包: PID字段+ADDR字段+ENDP字段+CRC字段 数据从 设备 到 主机
PID: 数据从设备发送至主机
ADDR:USB设备地址
ENDP: 发送数据的端点号
CRC: ADDR和ENDP字段进行校验
OUT令牌包: PID +ADDR + ENDP + CRC 数据从 主机 到 设备
SETUP令牌包: PID + ADDR + ENDP + CRC 数据从主机 到 设备, 配置信息
PING令牌包: PID +ADDR + ENDP + CRC 数据从 设备 到 主机, 握手信号传输
PRE令牌包: PID 低速数据传输先导包,在开始发送数据之前必须先发送该包(主机与集线器之间进行传输)。
数据包: PID + 数据字段 + 16位CRC PID指定数据包DATA0-DATA2或MDATA。数据字段的长度根据协议规定:低速最大长度8字节,全速最大长度 1023字节,高速最大长度1024字节
握手包:PID 接收方反馈状态给发送方
事务处理
IN事务处理
主机发送IN令牌包: SYNC+IN+EOP
设备发送数据包: SYNC+数据包+EOP
主机发送握手包: SYNC+确认+EOP
OUT事务处理
主机发送OUT令牌包: SYNC+OUT+EOP
主机发送数据包: SYNC+数据包+EOP
设备发送握手包: SYNC+确认+EOP
3.SETUP事务处理(利用其对设备进行配置,常用于建立阶段)
主机发送SETUP令牌包: SYNC+SETUP+EOP
主机发送数据包: SYNC+DATA0+EOP
设备发送握手包: SYNC+确认+EOP
4.PING事务处理(主要用于高速数数据传输中)
主机发送PING令牌包: SYNC+PING+EOP
设备发送握手包: SYNC+确认+EOP
5.SOF事务处理
主机主动发送。低速或者全速usb传输,每隔1ms产生一个SOF令牌包,对于高速传输,每
隔125us产生一个小帧,每隔7个小帧,产生一个SOF令牌包,不需要握手包。
USB设备的状态
连接状态: usb总线开始向usb设备供电,直到电源稳定。
上电状态: usb设备处于上电状态,当没有被复位
缺省状态: usb设备响应usb主机发出的复位信号,进行复位操作,复位结束后,设备进入缺省状态。该状态下:电流小于100mA,并且使用缺省的设备地址对一些usb事务进行处理。
地址状态: 复位结束后,usb主机重新为设备分配一个唯一的地址。
配置状态: 主机发出setconfiguration请求。
挂起状态: usb设备在3ms内没有检测到总线活动,自动进入挂起状态,保持原有的地址和配置。
USB数据传输
块传输: 适用于传输大量且对传输时间和传输速率没有要求的场合。数据包长度 -- 全速端点,可以是8、16、32、64字节;高速端点只能是512字节。数据量如果超过最大的数据包长,主控制器会将其分成多个块事务处理。处理过程:
令牌 >> 数据 >> 握手
第一个数据包为DATA0,第二个应该是DATA1,之后可以是DATA0/DATA1
中断传输: 适用于传输少量或对数据处理有周期要求的场合。数据长度 -- 低速端点最大数据包长度8字节;全速端点最大为64字节;高速端点为1024字节。
同步传输: 只能用于全速、高速设备。适用于传输大量、速率恒定的,且对周期有要求的数据。例如:音频、视频等。数据长度 -- 全速端点最大为1023字节;高速端点最大为1024字节
控制传输: 主要用于传输少量的,对传输时间和传输速率均无要求、但必须保证传输的数据。数据长度 -- 低速端点最大为8字节;全速端点可谓8、16、32、64字节;高速端点只能是64字节。
建立阶段 + 数据阶段 + 状态阶段
USB设备配置
设备描述符:表示USB设备的总体信息,一个USB设备只有一个设备描述符。固定18字节。
配置描述符: USB设备可以有一个或者多个配置,每个配置必须有一个配置描述符。固定9字节。
字符串描述符: 可选。用于保存供应商的名称、产品序列等文本信息。
接口描述符: 接口为端点的集合,负责完成该USB设备的特定功能。固定9字节。
端点描述符: 指出端点的特性。固定7字节。
设备限定描述符: 设备既需要告诉传输也需要全速传输,则必须支持设备限定描述符。固定10字节。
其他速率配置描述符: 既采用高速传输又采用全速传输,则必须支持该描述符。固定9字节。
USB协议基础知识笔记的更多相关文章
- USB协议基础知识
ref : https://blog.csdn.net/u010142953/article/details/82627591 USB 基本知识 USB的重要关键概念: 1. 端点:位于USB设备 ...
- USB入门基础知识(转)
源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...
- 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
第41章 HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...
- 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识
第35章 FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...
- 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识
第33章 SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...
- 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识
第25章 DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
第16章 UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- Java多线程基础知识笔记(持续更新)
多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...
随机推荐
- UVA - 1218 Perfect Service (树形DP)
思路:dp[i][0]表示i是服务器:dp[i][1]表示i不是服务器,但它的父节点是服务器:dp[i][2]表示i和他的父亲都不是服务器. 转移方程: d[u][0] += min(d[ ...
- Spring 代理对象,cglib,jdk的问题思考,AOP 配置注解拦截 的一些问题.为什么不要注解在接口,以及抽象方法.
可以被继承 首先注解在类上是可以被继承的 在注解上用@Inherited /** * Created by laizhenwei on 17:49 2017-10-14 */ @Target({Ele ...
- ActiveMq笔记1-消息可靠性理论
原博客:http://shift-alt-ctrl.iteye.com/blog/2020182 https://mp.weixin.qq.com/s/h74d6LtGB5M8VF0oLrXdCA 我 ...
- java调用shell脚本,并获得结果集的例子
/** * 运行shell脚本 * @param shell 需要运行的shell脚本 */ public static void execShell(String shell){ try { Run ...
- 【java学习笔记】Properties
Properties:可以持久化的映射,规定键和值的类型是String. Properties对象必须放到.properties文件中,其中properties文件默认为西欧编码,也因此不存储中文. ...
- 网络基础Cisco路由交换三
热备份路由协议HSRP:Cisco私有协议 确保了当网络边缘设备或接入链路出现故障时,用户通信能迅速并透明地恢复,以此为ip网络提供余性,通过使用同意虚拟ip地址和虚拟mac地址,LAN网段上的两台或 ...
- WIN2003+IIS6+FastCGI+PHP5.3的安装配置
本文所用的软件的下载地址 fastcgi的下载地址:http://download.microsoft.com/download/E/0/C/E0C0709A-66E5-4113-9A6C-A5F65 ...
- yii学习笔记--快速创建一个项目
下载yii框架 下载地址:http://www.yiiframework.com/ 中文网站:http://www.yiichina.com/ 解压文件
- AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植
移植完成声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前 ...
- Javascript和JQuery中常用的随机数产生函数
无论在普通Js框架或者JQuery中都可以使用的,函数如下,使用方法简介: 1)获取0-100的随机数--getRandom(100); 2)获取0-999的随机数--getRandom(999); ...